Example usage for com.google.gson JsonElement isJsonObject

List of usage examples for com.google.gson JsonElement isJsonObject

Introduction

In this page you can find the example usage for com.google.gson JsonElement isJsonObject.

Prototype

public boolean isJsonObject() 

Source Link

Document

provides check for verifying if this element is a Json object or not.

Usage

From source file:com.ibm.common.activitystreams.internal.ASObjectAdapter.java

License:Apache License

/**
 * Method deserialize.//from   w ww.  j a v a 2  s  .  c o  m
 * @param element JsonElement
 * @param type Type
 * @param context JsonDeserializationContext
 * @return ASObject 
 * @throws JsonParseException
 * @see com.google.gson.JsonDeserializer#deserialize(JsonElement, Type, JsonDeserializationContext) 
 **/
public final ASObject deserialize(JsonElement element, Type type, JsonDeserializationContext context)
        throws JsonParseException {

    JsonObject obj = (JsonObject) element;
    ASObject.AbstractBuilder<?, ?> builder = null;
    Model propMap = null;
    TypeValue tv = null;

    if (knowsType(type)) {
        builder = builderFor(type);
        propMap = modelFor(type);
    } else {
        if (obj.has("objectType")) {
            tv = context.deserialize(obj.get("objectType"), TypeValue.class);
            @SuppressWarnings("rawtypes")
            Class<? extends ASObject.AbstractBuilder> _class = schema.builderForObjectTypeOrClass(tv.id(),
                    (Class) type);
            if (_class != null) {
                propMap = schema.forObjectClassOrType(_class, tv.id());
                if (!_class.isInterface()) {
                    try {
                        builder = _class.getConstructor(String.class).newInstance(tv.id());
                    } catch (Throwable t) {
                        try {
                            builder = _class.newInstance();
                            builder.set("objectType", tv);
                        } catch (Throwable t2) {
                            builder = Makers.object(tv);
                        }
                    }
                } else
                    builder = Makers.object(tv);
            } else {
                builder = Makers.object(tv);
                propMap = schema.forObjectClassOrType(ASObject.Builder.class, tv.id());
            }
        } else {
            if (obj.has("verb") && (obj.has("actor") || obj.has("object") || obj.has("target"))) {
                builder = activity();
                propMap = schema.forObjectClassOrType(Activity.Builder.class, "activity");
            } else if (obj.has("items")) {
                builder = collection();
                propMap = schema.forObjectClassOrType(Collection.Builder.class, "collection");
            } else {
                @SuppressWarnings("rawtypes")
                Class<? extends ASObject.AbstractBuilder> _class = schema.builderFor((Class) type);
                if (_class != null) {
                    if (!_class.isInterface()) {
                        try {
                            builder = _class.newInstance();
                        } catch (Throwable t) {
                            builder = object();
                        }
                    } else
                        builder = object();
                }
                if (builder == null)
                    builder = object(); // anonymous
                propMap = schema.forObjectClass(builder.getClass());
                propMap = propMap != null ? propMap : schema.forObjectClass(ASObject.Builder.class);
            }
        }
    }

    for (Entry<String, JsonElement> entry : obj.entrySet()) {
        String name = entry.getKey();
        if (name.equalsIgnoreCase("objectType"))
            continue;
        Class<?> _class = propMap.get(name);
        JsonElement val = entry.getValue();
        if (val.isJsonPrimitive())
            builder.set(name, _class != null ? context.deserialize(val, _class)
                    : primConverter.convert(val.getAsJsonPrimitive()));
        else if (val.isJsonArray()) {
            builder.set(name,
                    LinkValue.class.isAssignableFrom(_class != null ? _class : Object.class)
                            ? context.deserialize(val, LinkValue.class)
                            : convert(val.getAsJsonArray(), _class, context, builder()));
        } else if (val.isJsonObject())
            builder.set(name, context.deserialize(val, propMap.has(name) ? propMap.get(name) : ASObject.class));
    }
    return builder.get();

}

From source file:com.ibm.common.activitystreams.internal.ASObjectAdapter.java

License:Apache License

/**
 * Method processArray.//  w  w w. j  a v  a  2  s.c  om
 * @param arr JsonArray
 * @param _class Class<?>
 * @param context JsonDeserializationContext
 * @param list ImmutableList.Builder<Object>
 */
private void processArray(JsonArray arr, Class<?> _class, JsonDeserializationContext context,
        ImmutableList.Builder<Object> list) {
    for (JsonElement mem : arr) {
        if (mem.isJsonPrimitive())
            list.add(_class != null ? context.deserialize(mem, _class)
                    : primConverter.convert(mem.getAsJsonPrimitive()));
        else if (mem.isJsonObject())
            list.add(context.deserialize(mem, _class != null ? _class : ASObject.class));
        else if (mem.isJsonArray())
            list.add(convert(mem.getAsJsonArray(), _class, context, builder()));
    }
}

From source file:com.ibm.common.activitystreams.internal.LinkValueAdapter.java

License:Apache License

/**
 * Method deserialize./* www. j a  va  2 s .  co m*/
 * @param el JsonElement
 * @param type Type
 * @param context JsonDeserializationContext
        
        
        
 * @return LinkValue * @throws JsonParseException * @see com.google.gson.JsonDeserializer#deserialize(JsonElement, Type, JsonDeserializationContext) */
public LinkValue deserialize(JsonElement el, Type type, JsonDeserializationContext context)
        throws JsonParseException {
    checkArgument(el.isJsonArray() || el.isJsonObject() || el.isJsonPrimitive());
    if (el.isJsonArray()) {
        LinkValue.ArrayLinkValue.Builder builder = linkValues();
        for (JsonElement aryel : el.getAsJsonArray())
            builder.add(context.<LinkValue>deserialize(aryel, LinkValue.class));
        return builder.get();
    } else if (el.isJsonObject()) {
        JsonObject obj = el.getAsJsonObject();
        if (obj.has("objectType")) {
            TypeValue tv = context.deserialize(obj.get("objectType"), TypeValue.class);
            Model pMap = schema.forObjectType(tv.id());
            return context.deserialize(el, pMap != null && pMap.type() != null ? pMap.type() : ASObject.class);
        } else {
            return context.deserialize(el, ASObject.class);
        }
    } else {
        JsonPrimitive prim = el.getAsJsonPrimitive();
        checkArgument(prim.isString());
        return linkValue(prim.getAsString());
    }
}

From source file:com.ibm.common.activitystreams.internal.MultimapAdapter.java

License:Apache License

/**
 * Method arraydes.// ww w  .  jav a2  s.co m
 * @param array JsonArray
 * @param context JsonDeserializationContext
        
 * @return ImmutableList<Object> */
protected static ImmutableList<Object> arraydes(JsonArray array, JsonDeserializationContext context) {
    ImmutableList.Builder<Object> builder = ImmutableList.builder();
    for (JsonElement child : array)
        if (child.isJsonArray())
            builder.add(arraydes(child.getAsJsonArray(), context));
        else if (child.isJsonObject())
            builder.add(context.deserialize(child, ASObject.class));
        else if (child.isJsonPrimitive())
            builder.add(primConverter.convert(child.getAsJsonPrimitive()));
    return builder.build();
}

From source file:com.ibm.common.activitystreams.internal.MultimapAdapter.java

License:Apache License

/**
 * Method deserialize./*from   www  . ja  v  a  2  s .c  om*/
 * @param json JsonElement
 * @param typeOfT Type
 * @param context JsonDeserializationContext
        
        
        
 * @return Multimap * @throws JsonParseException * @see com.google.gson.JsonDeserializer#deserialize(JsonElement, Type, JsonDeserializationContext) */
public Multimap deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
        throws JsonParseException {
    ImmutableMultimap.Builder mm = ImmutableMultimap.builder();
    JsonObject obj = json.getAsJsonObject();
    for (Map.Entry<String, JsonElement> entry : obj.entrySet()) {
        String key = entry.getKey();
        JsonElement val = entry.getValue();
        if (val.isJsonArray()) {
            for (JsonElement el : val.getAsJsonArray()) {
                if (el.isJsonArray())
                    mm.put(key, arraydes(el.getAsJsonArray(), context));
                else if (el.isJsonObject())
                    mm.put(key, context.deserialize(el, ASObject.class));
                else if (el.isJsonPrimitive())
                    mm.put(key, primConverter.convert(el.getAsJsonPrimitive()));
            }
        } else if (val.isJsonObject()) {
            mm.put(key, context.deserialize(val, ASObject.class));
        } else if (val.isJsonPrimitive()) {
            mm.put(key, primConverter.convert(val.getAsJsonPrimitive()));
        }
    }
    return mm.build();
}

From source file:com.ibm.common.activitystreams.internal.NaturalLanguageValueAdapter.java

License:Apache License

/**
 * Method deserialize.//www.  j  av  a 2 s.  c om
 * @param element JsonElement
 * @param type1 Type
 * @param context JsonDeserializationContext
        
        
        
 * @return NLV * @throws JsonParseException * @see com.google.gson.JsonDeserializer#deserialize(JsonElement, Type, JsonDeserializationContext) */
public NLV deserialize(JsonElement element, Type type1, JsonDeserializationContext context)
        throws JsonParseException {
    checkArgument(element.isJsonPrimitive() || element.isJsonObject());
    if (element.isJsonPrimitive()) {
        JsonPrimitive prim = element.getAsJsonPrimitive();
        checkArgument(prim.isString());
        return NLV.SimpleNLV.make(prim.getAsString());
    } else {
        try {
            JsonObject obj = element.getAsJsonObject();
            NLV.MapNLV.Builder builder = NLV.MapNLV.make();
            for (Entry<String, JsonElement> entry : obj.entrySet())
                builder.set(entry.getKey(), entry.getValue().getAsString());
            return builder.get();
        } catch (Throwable t) {
            throw new IllegalArgumentException();
        }
    }
}

From source file:com.ibm.common.activitystreams.internal.TypeValueAdapter.java

License:Apache License

/**
 * Method deserialize./*  w w w .  j a  v  a 2  s . c  o  m*/
 * @param el JsonElement
 * @param type Type
 * @param context JsonDeserializationContext
        
        
        
 * @return TypeValue * @throws JsonParseException * @see com.google.gson.JsonDeserializer#deserialize(JsonElement, Type, JsonDeserializationContext) */
public TypeValue deserialize(JsonElement el, Type type, JsonDeserializationContext context)
        throws JsonParseException {
    checkArgument(el.isJsonPrimitive() || el.isJsonObject());
    if (el.isJsonPrimitive()) {
        JsonPrimitive prim = el.getAsJsonPrimitive();
        checkArgument(prim.isString());
        return type(prim.getAsString());
    } else {
        JsonObject obj = el.getAsJsonObject();
        if (obj.has("objectType")) {
            TypeValue tv = context.deserialize(obj.get("objectType"), TypeValue.class);
            Model pMap = schema.forObjectType(tv.id());
            return context.<ASObject>deserialize(el, pMap.type() != null ? pMap.type() : ASObject.class);
        } else {
            return context.<ASObject>deserialize(el, ASObject.class);
        }
    }
}

From source file:com.ibm.common.activitystreams.legacy.MediaLinkAdapter.java

License:Apache License

public MediaLink deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
        throws JsonParseException {

    checkArgument(json.isJsonObject());
    JsonObject obj = (JsonObject) json;/*from w  ww  .j  a va2s. c o  m*/
    MediaLink.Builder builder = LegacyMakers.mediaLink();
    for (Map.Entry<String, JsonElement> entry : obj.entrySet()) {
        String name = entry.getKey();
        JsonElement val = entry.getValue();
        if (val.isJsonPrimitive())
            builder.set(name, primConverter.convert(val.getAsJsonPrimitive()));
        else if (val.isJsonArray())
            builder.set(name, context.deserialize(val, Iterable.class));
        else if (val.isJsonObject())
            builder.set(name, context.deserialize(val, ASObject.class));
    }
    return builder.get();
}

From source file:com.ibm.common.activitystreams.util.AbstractDictionaryObjectAdapter.java

License:Apache License

public X deserialize(JsonElement element, Type type1, JsonDeserializationContext context)
        throws JsonParseException {
    checkArgument(element.isJsonObject());
    try {//from w w  w  .j a va2 s  .  c o m
        JsonObject obj = element.getAsJsonObject();
        B builder = builder();
        for (Entry<String, JsonElement> entry : obj.entrySet())
            builder.set(entry.getKey(), context.<Y>deserialize(entry.getValue(), klass));
        return builder.get();
    } catch (Throwable t) {
        t.printStackTrace();
        throw new IllegalArgumentException();
    }
}

From source file:com.ibm.common.geojson.as2.GeoAdapter.java

License:Apache License

@Override
public GeoObject deserialize(JsonElement element, Type type, JsonDeserializationContext context)
        throws JsonParseException {
    GeoObject.Builder geo = null;/* w ww  .j a v  a  2 s.  com*/
    checkArgument(element.isJsonObject());
    JsonObject obj = element.getAsJsonObject();
    checkArgument(obj.has("type"));
    GeoObject.Type et = Enums.getIfPresent(GeoObject.Type.class, obj.get("type").getAsString().toUpperCase())
            .orNull();
    checkArgument(et != null);
    switch (et) {
    case FEATURE:
        geo = GeoMakers.feature();
        break;
    case FEATURECOLLECTION:
        geo = GeoMakers.featureCollection();
        type = Feature.class;
        break;
    case GEOMETRYCOLLECTION:
        geo = GeoMakers.geometryCollection();
        type = Geometry.class;
        break;
    case LINESTRING:
        geo = GeoMakers.linestring();
        type = Position.class;
        break;
    case MULTILINESTRING:
        geo = GeoMakers.multiLineString();
        type = LineString.class;
        break;
    case MULTIPOINT:
        geo = GeoMakers.multipoint();
        type = Position.class;
        break;
    case MULTIPOLYGON:
        geo = GeoMakers.multiPolygon();
        type = Polygon.class;
        break;
    case POINT:
        geo = GeoMakers.point();
        type = null;
        break;
    case POLYGON:
        geo = GeoMakers.polygon();
        type = LineString.class;
        break;
    }

    for (Map.Entry<String, JsonElement> entry : obj.entrySet()) {
        JsonElement el = entry.getValue();
        String name = entry.getKey();
        if ("crs".equals(name)) {
            CRS.Builder cb = new CRS.Builder();
            JsonObject o = el.getAsJsonObject();
            if (o.has("type"))
                cb.type(o.get("type").getAsString());
            if (o.has("properties")) {
                JsonObject p = o.get("properties").getAsJsonObject();
                for (Map.Entry<String, JsonElement> e : p.entrySet()) {
                    cb.set(e.getKey(), context.deserialize(e.getValue(), Object.class));
                }
            }
            geo.crs(cb.get());
        } else if ("properties".equals(name)) {
            geo.set("properties", context.deserialize(el, Map.class));
        } else if ("bbox".equals(name)) {
            BoundingBox.Builder bb = new BoundingBox.Builder();
            float[] points = context.deserialize(el, float[].class);
            bb.add(points);
            geo.boundingBox(bb.get());
        } else if ("features".equals(name)) {
            Feature[] features = context.deserialize(el, Feature[].class);
            FeatureCollection.Builder fcb = (FeatureCollection.Builder) geo;
            for (Feature f : features)
                fcb.add(f);
        } else if ("coordinates".equals(name)) {
            switch (et) {
            case LINESTRING: {
                LineString.Builder lsb = (LineString.Builder) geo;
                float[][] positions = context.deserialize(el, float[][].class);
                boolean ring = ring(positions);
                if (ring)
                    lsb.linearRing();
                for (int n = 0; n < positions.length; n++) {
                    if (!ring || (ring && n < positions.length - 1))
                        lsb.add(toPosition(positions[n]));
                }
                break;
            }
            case MULTIPOINT: {
                MultiPoint.Builder lsb = (MultiPoint.Builder) geo;
                float[][] positions = context.deserialize(el, float[][].class);
                for (float[] pos : positions)
                    lsb.add(toPosition(pos));
                break;
            }
            case MULTILINESTRING: {
                MultiLineString.Builder mlb = (MultiLineString.Builder) geo;
                float[][][] positions = context.deserialize(el, float[][][].class);
                for (float[][] lines : positions) {
                    LineString.Builder lsb = GeoMakers.linestring();
                    boolean ring = ring(lines);
                    if (ring)
                        lsb.linearRing();
                    for (int n = 0; n < lines.length; n++) {
                        if (!ring || (ring && n < lines.length - 1))
                            lsb.add(toPosition(lines[n]));
                    }
                    for (float[] pos : lines)
                        lsb.add(toPosition(pos));
                    mlb.add(lsb);
                }
                break;
            }
            case POLYGON: {
                Polygon.Builder mlb = (Polygon.Builder) geo;
                float[][][] positions = context.deserialize(el, float[][][].class);
                for (float[][] lines : positions) {
                    LineString.Builder lsb = GeoMakers.linestring();
                    for (float[] pos : lines)
                        lsb.add(toPosition(pos));
                    mlb.add(lsb);
                }
                break;
            }
            case MULTIPOLYGON: {
                MultiPolygon.Builder mpb = (MultiPolygon.Builder) geo;
                float[][][][] positions = context.deserialize(el, float[][][][].class);
                for (float[][][] polygons : positions) {
                    Polygon.Builder pb = GeoMakers.polygon();
                    for (float[][] lines : polygons) {
                        LineString.Builder lsb = GeoMakers.linestring();
                        for (float[] pos : lines)
                            lsb.add(toPosition(pos));
                        pb.add(lsb);
                    }
                    mpb.add(pb);
                }
                break;
            }
            case POINT:
                Point.Builder pb = (Point.Builder) geo;
                float[] position = context.deserialize(el, float[].class);
                pb.position(toPosition(position));
                break;
            default:
                break;
            }
        } else if ("geometries".equals(name)) {
            Geometry[] geos = context.deserialize(el, Geometry[].class);
            GeometryCollection.Builder fcb = (GeometryCollection.Builder) geo;
            for (Geometry<?, ?> g : geos)
                fcb.add(g);
        } else {
            if (el.isJsonArray()) {
                geo.set(name, context.deserialize(el, Object.class));
            } else if (el.isJsonObject()) {
                geo.set(name, context.deserialize(el, GeoObject.class));
            } else if (el.isJsonPrimitive()) {
                JsonPrimitive p = el.getAsJsonPrimitive();
                if (p.isBoolean())
                    geo.set(name, p.getAsBoolean());
                else if (p.isNumber())
                    geo.set(name, p.getAsNumber());
                else if (p.isString())
                    geo.set(name, p.getAsString());
            }
        }
    }

    return geo.get();
}