List of usage examples for com.google.gson JsonElement isJsonObject
public boolean isJsonObject()
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(); }