List of usage examples for com.google.gson.reflect TypeToken get
public static <T> TypeToken<T> get(Class<T> type)
From source file:org.apache.cloudstack.network.opendaylight.api.resources.NeutronNetworksNorthboundAction.java
License:Apache License
@SuppressWarnings("unchecked") public <T> T createNeutronNetwork(final NeutronNetworkWrapper newNetworkWrapper) throws NeutronRestApiException { try {/* w w w.j a v a 2s .c o m*/ String uri = NeutronNorthboundEnum.NETWORKS_URI.getUri(); StringRequestEntity entity = new StringRequestEntity(gsonNeutronNetwork.toJson(newNetworkWrapper), JSON_CONTENT_TYPE, null); String bodystring = executePost(uri, entity); T result = (T) gsonNeutronNetwork.fromJson(bodystring, TypeToken.get(NeutronNetworkWrapper.class).getType()); return result; } catch (UnsupportedEncodingException e) { throw new NeutronRestApiException("Failed to encode json request body", e); } }
From source file:org.apache.cloudstack.network.opendaylight.api.resources.NeutronNodesNorthboundAction.java
License:Apache License
@SuppressWarnings("unchecked") public <T> T updateNeutronNodeV1(final String nodeId, final String ipAddress, final int port) throws NeutronRestApiException { String uri = NeutronNorthboundEnum.NODE_PORT_PER_NODE_URI.getUri(); uri = MessageFormat.format(uri, nodeId, ipAddress, String.valueOf(port)); String bodystring = executePut(uri); T result = (T) gsonNeutronNode.fromJson(bodystring, TypeToken.get(NeutronNodeWrapper.class).getType()); return result; }
From source file:org.apache.cloudstack.network.opendaylight.api.resources.NeutronNodesNorthboundAction.java
License:Apache License
@SuppressWarnings("unchecked") public <T> T updateNeutronNodeV2(final String nodeType, final String nodeId, final String ipAddress, final int port) throws NeutronRestApiException { String uri = NeutronNorthboundEnum.NODE_PORT_PER_TYPE_URI.getUri(); uri = MessageFormat.format(uri, nodeType, nodeId, ipAddress, String.valueOf(port)); String bodystring = executePut(uri); T result = (T) gsonNeutronNode.fromJson(bodystring, TypeToken.get(NeutronNodeWrapper.class).getType()); return result; }
From source file:org.apache.cloudstack.network.opendaylight.api.resources.NeutronPortsNorthboundAction.java
License:Apache License
@SuppressWarnings("unchecked") public <T> T createNeutronPort(final NeutronPortWrapper newPortWrapper) throws NeutronRestApiException { try {// w w w. ja v a 2 s.co m String uri = NeutronNorthboundEnum.PORTS_URI.getUri(); StringRequestEntity entity = new StringRequestEntity(gsonNeutronPort.toJson(newPortWrapper), JSON_CONTENT_TYPE, null); String bodystring = executePost(uri, entity); T result = (T) gsonNeutronPort.fromJson(bodystring, TypeToken.get(NeutronPortWrapper.class).getType()); return result; } catch (UnsupportedEncodingException e) { throw new NeutronRestApiException("Failed to encode json request body", e); } }
From source file:org.apache.zeppelin.display.RuntimeTypeAdapterFactory.java
License:Apache License
public <R> TypeAdapter<R> create(Gson gson, TypeToken<R> type) { if (type.getRawType() != baseType) { return null; }//w w w . ja v a 2s. c o m final Map<String, TypeAdapter<?>> labelToDelegate = new LinkedHashMap<String, TypeAdapter<?>>(); final Map<Class<?>, TypeAdapter<?>> subtypeToDelegate = new LinkedHashMap<Class<?>, TypeAdapter<?>>(); for (Map.Entry<String, Class<?>> entry : labelToSubtype.entrySet()) { TypeAdapter<?> delegate = gson.getDelegateAdapter(this, TypeToken.get(entry.getValue())); labelToDelegate.put(entry.getKey(), delegate); subtypeToDelegate.put(entry.getValue(), delegate); } return new TypeAdapter<R>() { @Override public R read(JsonReader in) throws IOException { JsonElement jsonElement = Streams.parse(in); JsonElement labelJsonElement = jsonElement.getAsJsonObject().remove(typeFieldName); String label = (labelJsonElement == null ? null : labelJsonElement.getAsString()); @SuppressWarnings("unchecked") // registration requires that subtype extends T TypeAdapter<R> delegate = (TypeAdapter<R>) labelToDelegate.get(label); if (delegate == null) { throw new JsonParseException("cannot deserialize " + baseType + " subtype named " + label + "; did you forget to register a subtype?"); } return delegate.fromJsonTree(jsonElement); } @Override public void write(JsonWriter out, R value) throws IOException { Class<?> srcType = value.getClass(); String label = subtypeToLabel.get(srcType); @SuppressWarnings("unchecked") // registration requires that subtype extends T TypeAdapter<R> delegate = (TypeAdapter<R>) subtypeToDelegate.get(srcType); if (delegate == null) { throw new JsonParseException( "cannot serialize " + srcType.getName() + "; did you forget to register a subtype?"); } JsonObject jsonObject = delegate.toJsonTree(value).getAsJsonObject(); if (jsonObject.has(typeFieldName) && !srcType.getSimpleName().equals("OldInput")) { throw new JsonParseException("cannot serialize " + srcType.getName() + " because it already defines a field named " + typeFieldName); } JsonObject clone = new JsonObject(); if (!srcType.getSimpleName().equals("OldInput")) { clone.add(typeFieldName, new JsonPrimitive(label)); } for (Map.Entry<String, JsonElement> e : jsonObject.entrySet()) { clone.add(e.getKey(), e.getValue()); } Streams.write(clone, out); } }.nullSafe(); }
From source file:org.arl.fjage.remote.GenericValueAdapterFactory.java
License:BSD License
public <T> TypeAdapter<T> create(final Gson gson, TypeToken<T> type) { final Class<T> rawType = (Class<T>) type.getRawType(); if (!rawType.equals(GenericValue.class)) return null; final GenericValueAdapterFactory parent = this; return new TypeAdapter<T>() { @Override/* w w w . j a v a 2 s.co m*/ public void write(JsonWriter out, T value) throws IOException { if (value == null) { out.nullValue(); return; } Class type = ((GenericValue) value).getType(); if (type == null) { out.nullValue(); return; } if (Number.class.isAssignableFrom(type)) out.value((Number) ((GenericValue) value).getValue()); else if (type.equals(String.class)) out.value((String) ((GenericValue) value).getValue()); else if (type.equals(Boolean.class)) out.value((Boolean) ((GenericValue) value).getValue()); else { out.beginObject(); out.name("clazz").value(type.getName()); out.name("data"); TypeAdapter delegate = gson.getAdapter(TypeToken.get(type)); Object v = ((GenericValue) value).getValue(); delegate.write(out, v); out.endObject(); } } @Override public T read(JsonReader in) throws IOException { JsonToken tok = in.peek(); if (tok == JsonToken.NULL) { in.nextNull(); return null; } if (tok == JsonToken.NUMBER) { String s = in.nextString(); try { if (s.contains(".")) return (T) new GenericValue(Double.parseDouble(s)); else return (T) new GenericValue(Long.parseLong(s)); } catch (NumberFormatException ex) { return (T) new GenericValue(null); } } if (tok == JsonToken.STRING) return (T) new GenericValue(in.nextString()); if (tok == JsonToken.BOOLEAN) return (T) new GenericValue(in.nextBoolean()); if (tok != JsonToken.BEGIN_OBJECT) return null; TypeToken tt = null; GenericValue rv = null; in.beginObject(); while (in.hasNext()) { String name = in.nextName(); if (name.equals("clazz")) { try { Class<?> cls = Class.forName(in.nextString()); tt = TypeToken.get(cls); } catch (Exception ex) { // do nothing } } else if (name.equals("data") && tt != null) { TypeAdapter delegate = gson.getAdapter(tt); rv = new GenericValue(delegate.read(in)); } else in.skipValue(); } in.endObject(); return (T) rv; } }; }
From source file:org.arl.fjage.remote.MessageAdapterFactory.java
License:BSD License
@SuppressWarnings("unchecked") public <T> TypeAdapter<T> create(final Gson gson, TypeToken<T> type) { final Class<T> rawType = (Class<T>) type.getRawType(); if (!Message.class.isAssignableFrom(rawType)) return null; final TypeAdapter<T> delegate = gson.getDelegateAdapter(this, type); final TypeAdapter<Performative> perfDelegate = gson.getAdapter(TypeToken.get(Performative.class)); final TypeAdapter<AgentID> aidDelegate = gson.getAdapter(TypeToken.get(AgentID.class)); final TypeAdapter<GenericValue> gvDelegate = gson.getAdapter(TypeToken.get(GenericValue.class)); final MessageAdapterFactory parent = this; return new TypeAdapter<T>() { @Override//from w w w . j a v a 2s .c o m public void write(JsonWriter out, T value) throws IOException { if (value == null) out.nullValue(); else { out.beginObject(); out.name("clazz").value(value.getClass().getName()); out.name("data"); if (value instanceof GenericMessage) { GenericMessage msg = (GenericMessage) value; out.beginObject(); out.name("msgID").value(msg.getMessageID()); out.name("inReplyTo").value(msg.getInReplyTo()); out.name("perf"); perfDelegate.write(out, msg.getPerformative()); out.name("recipient"); aidDelegate.write(out, msg.getRecipient()); out.name("sender"); aidDelegate.write(out, msg.getSender()); out.name("map"); delegate.write(out, value); out.endObject(); } else delegate.write(out, value); out.endObject(); } } @Override public T read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull(); return null; } T rv = null; Class<?> cls = null; in.beginObject(); while (in.hasNext()) { String name = in.nextName(); if (name.equals("clazz")) { String className = in.nextString(); try { cls = classloader != null ? Class.forName(className, true, classloader) : Class.forName(className); } catch (Exception ex) { // do nothing } } else if (name.equals("data")) { if (cls == null) rv = delegate.read(in); else if (cls.equals(GenericMessage.class)) { GenericMessage msg = new GenericMessage(); in.beginObject(); while (in.hasNext()) { String fname = in.nextName(); if (fname.equals("msgID")) msg.setMessageID(in.nextString()); else if (fname.equals("inReplyTo")) msg.setInReplyTo(in.nextString()); else if (fname.equals("perf")) msg.setPerformative(perfDelegate.read(in)); else if (fname.equals("recipient")) msg.setRecipient(aidDelegate.read(in)); else if (fname.equals("sender")) msg.setSender(aidDelegate.read(in)); else if (fname.equals("map")) { in.beginObject(); while (in.hasNext()) { String key = in.nextName(); GenericValue value = gvDelegate.read(in); msg.put(key, value); } in.endObject(); } else in.skipValue(); } in.endObject(); rv = (T) msg; } else { TypeAdapter<?> delegate1 = gson.getDelegateAdapter(parent, TypeToken.get(cls)); rv = (T) delegate1.read(in); } } else in.skipValue(); } in.endObject(); return rv; } }; }
From source file:org.brunocvcunha.digesteroids.cast.DigesteroidsDefaultCaster.java
License:Apache License
@SuppressWarnings("unchecked") @Override/* ww w . j av a 2s . c o m*/ public <T> T cast(Object value, Type targetType, String source) { if (value == null) { return null; } TypeToken<T> typeToken = (TypeToken<T>) TypeToken.get(targetType); Class<T> toClazz = (Class<T>) typeToken.getRawType(); log.debug("Handling value conversion (" + value.getClass() + " / " + value.toString() + ") to " + toClazz); if (toClazz.isAssignableFrom(String.class)) { return (T) string(value); } if (toClazz.isAssignableFrom(Byte.class)) { return (T) Byte.valueOf(value.toString()); } if (toClazz.isAssignableFrom(Short.class)) { return (T) Short.valueOf(value.toString()); } if (toClazz.isAssignableFrom(Integer.class)) { return (T) Integer.valueOf(Double.valueOf(value.toString()).intValue()); } if (toClazz.isAssignableFrom(Long.class)) { return (T) Long.valueOf(Double.valueOf(value.toString()).longValue()); } if (toClazz.isAssignableFrom(Double.class)) { return (T) Double.valueOf(value.toString()); } if (toClazz.isAssignableFrom(Date.class)) { return (T) date(value); } // throw new IllegalArgumentException("Need to convert value (" + value.getClass() + " / " + value.toString() + ") to " + toClazz); if (value instanceof String) { try { return gson.fromJson((String) value, targetType); } catch (Exception e) { //it's ok log.debug("Exception trying to convert string to type", e); } } return gson.fromJson(gson.toJson(value), targetType); }
From source file:org.brunocvcunha.digesteroids.Digesteroids.java
License:Apache License
/** * Convert given original object to targetType, using the mappings from the source parameter. * @param source Source name/* w w w . jav a 2 s . co m*/ * @param original Original data * @param targetType Target type * @return Converted object * @throws InstantiationException Can not create instance of target object * @throws IllegalAccessException Access violation * @param <T> Type to return */ public <T> T convertObjectToType(String source, Object original, Type targetType) throws InstantiationException, IllegalAccessException { if (original == null) { return null; } TypeToken<T> typeToken = (TypeToken<T>) TypeToken.get(targetType); Class<T> targetClass = (Class<T>) typeToken.getRawType(); T target = targetClass.newInstance(); // at this point, we starting doing comparisons for (Field entryField : targetClass.getDeclaredFields()) { entryField.setAccessible(true); DigesterMapping reference = null; try { DigesterMapping[] references = entryField.getAnnotationsByType(DigesterMapping.class); for (DigesterMapping candidate : references) { if (candidate.source().equalsIgnoreCase(source)) { reference = candidate; break; } } } catch (Exception e) { // it's ok } if (reference != null) { log.debug("Found reference, using field: " + reference.value() + ". Field name: " + entryField.getName() + ", Base Class: " + targetClass + ", object: " + original.getClass()); PropertyDescriptor descriptor; Method writerMethod; try { descriptor = new PropertyDescriptor(entryField.getName(), targetClass); writerMethod = descriptor.getWriteMethod(); } catch (Exception e) { e.printStackTrace(); log.warn("Exception converting record: ", e); continue; } Type valueType = writerMethod.getGenericParameterTypes()[0]; log.debug("Reference for field " + entryField.getName() + " - " + reference); Object resolvedValue = resolveValue(original, reference, valueType); if (resolvedValue != null) { try { if (reference.trim() && resolvedValue instanceof String) { resolvedValue = ((String) resolvedValue).replaceAll("", " ") .replaceAll("[\\s\\t]", " ").trim(); } invokeSetter(target, writerMethod, resolvedValue); } catch (Exception e) { e.printStackTrace(); } } } } return target; }
From source file:org.brunocvcunha.digesteroids.Digesteroids.java
License:Apache License
/** * @param originalData Original data to resolve * @param reference Reference annotation * @param valueType Value to return//from ww w .j av a 2s. com * @return Value resolved based on the annotation * @throws InstantiationException Can not create instance of target object * @throws IllegalAccessException Access violation */ public Object resolveValue(Object originalData, DigesterMapping reference, Type valueType) throws InstantiationException, IllegalAccessException { TypeToken<?> typeToken = TypeToken.get(valueType); Class<?> targetClass = typeToken.getRawType(); Object resolvedValue = null; if (reference.refType() == ReferenceTypeEnum.NORMAL) { resolvedValue = resolveValueNormal(reference.source(), originalData, reference.value(), valueType, targetClass); } else if (reference.refType() == ReferenceTypeEnum.PASS_THROUGH) { resolvedValue = resolveValuePassthrough(reference.source(), originalData, valueType, targetClass); } else if (reference.refType() == ReferenceTypeEnum.JSON_PATH) { resolvedValue = resolveValueJsonPath(originalData, reference.value()); } else if (reference.refType() == ReferenceTypeEnum.HTML_ID) { resolvedValue = resolveValueHTMLId(originalData, reference.value(), reference.htmlText(), reference.textNode(), reference.attribute()); } else if (reference.refType() == ReferenceTypeEnum.HTML_CSS) { resolvedValue = resolveValueHTMLCss(originalData, reference.value(), reference.htmlText(), reference.textNode(), reference.attribute()); } else if (reference.refType() == ReferenceTypeEnum.HTML_XPATH) { resolvedValue = resolveValueHTMLXPath(originalData, reference.value(), reference.htmlText(), reference.textNode(), reference.attribute()); } else if (reference.refType() == ReferenceTypeEnum.HARDCODE) { resolvedValue = reference.value(); } // make sure that it's the type Object returnValue = caster.cast(resolvedValue, valueType); if (reference.rule() != null && !reference.rule().isInterface()) { return reference.rule().newInstance().apply(returnValue); } return returnValue; }