Example usage for com.google.gson.reflect TypeToken get

List of usage examples for com.google.gson.reflect TypeToken get

Introduction

In this page you can find the example usage for com.google.gson.reflect TypeToken get.

Prototype

public static <T> TypeToken<T> get(Class<T> type) 

Source Link

Document

Gets type literal for the given Class instance.

Usage

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;
}