List of usage examples for com.google.gson.stream JsonReader endArray
public void endArray() throws IOException
From source file:org.bimserver.client.ClientIfcModel.java
License:Open Source License
@SuppressWarnings({ "unchecked", "rawtypes" }) private void processDownload(Long download) throws BimServerClientException, UserException, ServerException, PublicInterfaceNotFoundException { WaitingList<Long> waitingList = new WaitingList<Long>(); try {/* w ww. j a v a 2s.c om*/ InputStream downloadData = bimServerClient.getDownloadData(download, getIfcSerializerOid()); boolean log = false; // TODO Make this streaming again, make sure the EmfSerializer getInputStream method is working properly if (log) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); if (downloadData instanceof SerializerInputstream) { SerializerInputstream serializerInputStream = (SerializerInputstream) downloadData; serializerInputStream.getEmfSerializer().writeToOutputStream(baos); } else { IOUtils.copy((InputStream) downloadData, baos); } FileOutputStream fos = new FileOutputStream(new File(download + ".json")); IOUtils.write(baos.toByteArray(), fos); fos.close(); downloadData = new ByteArrayInputStream(baos.toByteArray()); } else { ByteArrayOutputStream baos = new ByteArrayOutputStream(); if (downloadData instanceof SerializerInputstream) { SerializerInputstream serializerInputStream = (SerializerInputstream) downloadData; serializerInputStream.getEmfSerializer().writeToOutputStream(baos); } else { IOUtils.copy((InputStream) downloadData, baos); } downloadData = new ByteArrayInputStream(baos.toByteArray()); } JsonReader jsonReader = new JsonReader(new InputStreamReader(downloadData, Charsets.UTF_8)); try { jsonReader.beginObject(); if (jsonReader.nextName().equals("objects")) { jsonReader.beginArray(); while (jsonReader.hasNext()) { jsonReader.beginObject(); if (jsonReader.nextName().equals("__oid")) { long oid = jsonReader.nextLong(); if (jsonReader.nextName().equals("__type")) { String type = jsonReader.nextString(); EClass eClass = (EClass) Ifc2x3tc1Package.eINSTANCE.getEClassifier(type); if (eClass == null) { throw new BimServerClientException("No class found with name " + type); } if (jsonReader.nextName().equals("__state")) { String state = jsonReader.nextString(); IdEObject object = null; if (containsNoFetch(oid)) { object = getNoFetch(oid); } else { object = (IdEObject) Ifc2x3tc1Factory.eINSTANCE.create(eClass); ((IdEObjectImpl) object).eSetStore(eStore); ((IdEObjectImpl) object).setOid(oid); add(oid, object); } if (state.equals("NOT_LOADED")) { ((IdEObjectImpl) object).setLoadingState(State.TO_BE_LOADED); } else { while (jsonReader.hasNext()) { String featureName = jsonReader.nextName(); boolean embedded = false; if (featureName.startsWith("__ref")) { featureName = featureName.substring(5); } else if (featureName.startsWith("__emb")) { embedded = true; featureName = featureName.substring(5); } EStructuralFeature eStructuralFeature = eClass .getEStructuralFeature(featureName); if (eStructuralFeature == null) { throw new BimServerClientException("Unknown field (" + featureName + ") on class " + eClass.getName()); } if (eStructuralFeature.isMany()) { jsonReader.beginArray(); if (eStructuralFeature instanceof EAttribute) { List list = (List) object.eGet(eStructuralFeature); List<String> stringList = null; if (eStructuralFeature.getEType() == EcorePackage.eINSTANCE .getEDoubleObject() || eStructuralFeature .getEType() == EcorePackage.eINSTANCE .getEDouble()) { EStructuralFeature asStringFeature = eClass .getEStructuralFeature( eStructuralFeature.getName() + "AsString"); stringList = (List<String>) object.eGet(asStringFeature); } while (jsonReader.hasNext()) { Object e = readPrimitive(jsonReader, eStructuralFeature); list.add(e); if (eStructuralFeature.getEType() == EcorePackage.eINSTANCE .getEDouble()) { double val = (Double) e; stringList.add("" + val); // TODO this is losing precision, maybe also send the string value? } } } else if (eStructuralFeature instanceof EReference) { int index = 0; while (jsonReader.hasNext()) { if (embedded) { List list = (List) object.eGet(eStructuralFeature); jsonReader.beginObject(); String n = jsonReader.nextName(); if (n.equals("__type")) { String t = jsonReader.nextString(); IdEObject wrappedObject = (IdEObject) Ifc2x3tc1Factory.eINSTANCE .create((EClass) Ifc2x3tc1Package.eINSTANCE .getEClassifier(t)); if (jsonReader.nextName().equals("value")) { EStructuralFeature wv = wrappedObject.eClass() .getEStructuralFeature("wrappedValue"); wrappedObject.eSet(wv, readPrimitive(jsonReader, wv)); list.add(wrappedObject); } else { // error } } else if (n.equals("oid")) { // Sometimes embedded is true, bot also referenced are included, those are always embdedded in an object long refOid = jsonReader.nextLong(); if (containsNoFetch(refOid)) { IdEObject refObj = getNoFetch(refOid); AbstractEList l = (AbstractEList) object .eGet(eStructuralFeature); while (l.size() <= index) { l.addUnique(refObj.eClass().getEPackage() .getEFactoryInstance() .create(refObj.eClass())); } l.setUnique(index, refObj); } else { waitingList.add(refOid, new ListWaitingObject( object, eStructuralFeature, index)); } } jsonReader.endObject(); } else { long refOid = jsonReader.nextLong(); if (containsNoFetch(refOid)) { IdEObject refObj = getNoFetch(refOid); AbstractEList l = (AbstractEList) object .eGet(eStructuralFeature); while (l.size() <= index) { l.addUnique(refObj.eClass().getEPackage() .getEFactoryInstance() .create(refObj.eClass())); } l.setUnique(index, refObj); } else { waitingList.add(refOid, new ListWaitingObject( object, eStructuralFeature, index)); } index++; } } } jsonReader.endArray(); } else { if (eStructuralFeature instanceof EAttribute) { Object x = readPrimitive(jsonReader, eStructuralFeature); if (eStructuralFeature.getEType() == EcorePackage.eINSTANCE .getEDouble()) { EStructuralFeature asStringFeature = object.eClass() .getEStructuralFeature( eStructuralFeature.getName() + "AsString"); object.eSet(asStringFeature, "" + x); // TODO this is losing precision, maybe also send the string value? } object.eSet(eStructuralFeature, x); } else if (eStructuralFeature instanceof EReference) { if (embedded) { jsonReader.beginObject(); if (jsonReader.nextName().equals("__type")) { String t = jsonReader.nextString(); IdEObject wrappedObject = (IdEObject) Ifc2x3tc1Factory.eINSTANCE .create((EClass) Ifc2x3tc1Package.eINSTANCE .getEClassifier(t)); if (jsonReader.nextName().equals("value")) { EStructuralFeature wv = wrappedObject.eClass() .getEStructuralFeature("wrappedValue"); wrappedObject.eSet(wv, readPrimitive(jsonReader, wv)); object.eSet(eStructuralFeature, wrappedObject); } else { // error } } jsonReader.endObject(); } else { long refOid = jsonReader.nextLong(); if (containsNoFetch(refOid)) { IdEObject refObj = getNoFetch(refOid); object.eSet(eStructuralFeature, refObj); } else { waitingList.add(refOid, new SingleWaitingObject(object, eStructuralFeature)); } } } } } } if (waitingList.containsKey(oid)) { try { waitingList.updateNode(oid, eClass, object); } catch (DeserializeException e) { LOGGER.error("", e); } } } } } jsonReader.endObject(); } jsonReader.endArray(); } jsonReader.endObject(); } catch (IfcModelInterfaceException e1) { LOGGER.error("", e1); } finally { jsonReader.close(); } } catch (IOException e) { LOGGER.error("", e); } catch (SerializerException e) { LOGGER.error("", e); } finally { waitingList.dumpIfNotEmpty(); bimServerClient.getServiceInterface().cleanupLongAction(download); } }
From source file:org.bimserver.client.ClientIfcModel.java
License:Open Source License
@SuppressWarnings({ "unused", "resource" }) public void getGeometry(IfcProduct ifcProduct) { try {//from ww w .j a va2 s. co m Long downloadByOids = bimServerClient.getBimsie1ServiceInterface().downloadByOids( Collections.singleton(roid), Collections.singleton(ifcProduct.getOid()), getJsonGeometrySerializerOid(), true, false); InputStream downloadData = bimServerClient.getDownloadData(downloadByOids, getJsonGeometrySerializerOid()); JsonReader jsonReader = new JsonReader(new InputStreamReader(downloadData)); jsonReader.beginObject(); if (jsonReader.nextName().equals("geometry")) { jsonReader.beginArray(); while (jsonReader.hasNext()) { jsonReader.beginObject(); if (jsonReader.nextName().equals("material")) { String material = jsonReader.nextString(); if (jsonReader.nextName().equals("type")) { String type = jsonReader.nextString(); if (jsonReader.nextName().equals("coreId")) { String coreid = jsonReader.nextString(); if (jsonReader.nextName().equals("primitive")) { String primitive = jsonReader.nextString(); if (jsonReader.nextName().equals("positions")) { jsonReader.beginArray(); while (jsonReader.hasNext()) { double position = jsonReader.nextDouble(); } jsonReader.endArray(); if (jsonReader.nextName().equals("normals")) { jsonReader.beginArray(); while (jsonReader.hasNext()) { double normal = jsonReader.nextDouble(); } jsonReader.endArray(); if (jsonReader.nextName().equals("nrindices")) { int nrindices = jsonReader.nextInt(); } } } } } } } jsonReader.endObject(); } jsonReader.endArray(); } jsonReader.endObject(); } catch (Exception e) { LOGGER.error("", e); } }
From source file:org.bimserver.deserializers.JsonDeserializer.java
License:Open Source License
@SuppressWarnings({ "rawtypes", "unchecked" }) @Override//from w ww . j a va 2 s . c o m public IfcModelInterface read(InputStream in, String filename, long fileSize) throws DeserializeException { IfcModelInterface model = new IfcModel(); WaitingList<Long> waitingList = new WaitingList<Long>(); JsonReader jsonReader = new JsonReader(new InputStreamReader(in)); try { jsonReader.beginObject(); if (jsonReader.nextName().equals("objects")) { jsonReader.beginArray(); while (jsonReader.hasNext()) { jsonReader.beginObject(); if (jsonReader.nextName().equals("__oid")) { long oid = jsonReader.nextLong(); if (jsonReader.nextName().equals("__type")) { String type = jsonReader.nextString(); EClass eClass = (EClass) Ifc2x3tc1Package.eINSTANCE.getEClassifier(type); if (eClass == null) { throw new DeserializeException("No class found with name " + type); } IdEObject object = (IdEObject) Ifc2x3tc1Factory.eINSTANCE.create(eClass); // ((IdEObjectImpl) object).setDelegate(new // ClientDelegate(this, object, null)); ((IdEObjectImpl) object).setOid(oid); model.add(object.getOid(), object); while (jsonReader.hasNext()) { String featureName = jsonReader.nextName(); boolean embedded = false; if (featureName.startsWith("__ref")) { featureName = featureName.substring(5); } else if (featureName.startsWith("__emb")) { embedded = true; featureName = featureName.substring(5); } EStructuralFeature eStructuralFeature = eClass.getEStructuralFeature(featureName); if (eStructuralFeature == null) { throw new DeserializeException( "Unknown field (" + featureName + ") on class " + eClass.getName()); } if (eStructuralFeature.isMany()) { jsonReader.beginArray(); if (eStructuralFeature instanceof EAttribute) { List list = (List) object.eGet(eStructuralFeature); List<String> stringList = null; if (eStructuralFeature.getEType() == EcorePackage.eINSTANCE .getEDoubleObject() || eStructuralFeature.getEType() == EcorePackage.eINSTANCE .getEDouble()) { EStructuralFeature asStringFeature = eClass.getEStructuralFeature( eStructuralFeature.getName() + "AsString"); stringList = (List<String>) object.eGet(asStringFeature); } while (jsonReader.hasNext()) { Object e = readPrimitive(jsonReader, eStructuralFeature); list.add(e); if (eStructuralFeature.getEType() == EcorePackage.eINSTANCE .getEDouble()) { double val = (Double) e; stringList.add("" + val); // TODO // this // is // losing // precision, // maybe // also // send // the // string // value? } } } else if (eStructuralFeature instanceof EReference) { int index = 0; while (jsonReader.hasNext()) { if (embedded) { List list = (List) object.eGet(eStructuralFeature); jsonReader.beginObject(); if (jsonReader.nextName().equals("__type")) { String t = jsonReader.nextString(); IdEObject wrappedObject = (IdEObject) Ifc2x3tc1Factory.eINSTANCE .create((EClass) Ifc2x3tc1Package.eINSTANCE .getEClassifier(t)); if (jsonReader.nextName().equals("value")) { EStructuralFeature wv = wrappedObject.eClass() .getEStructuralFeature("wrappedValue"); wrappedObject.eSet(wv, readPrimitive(jsonReader, wv)); list.add(wrappedObject); } else { // error } } jsonReader.endObject(); } else { long refOid = jsonReader.nextLong(); waitingList.add(refOid, new ListWaitingObject(object, eStructuralFeature, index)); index++; } } } jsonReader.endArray(); } else { if (eStructuralFeature instanceof EAttribute) { Object x = readPrimitive(jsonReader, eStructuralFeature); if (eStructuralFeature.getEType() == EcorePackage.eINSTANCE.getEDouble()) { EStructuralFeature asStringFeature = object.eClass() .getEStructuralFeature( eStructuralFeature.getName() + "AsString"); object.eSet(asStringFeature, "" + x); // TODO // this // is // losing // precision, // maybe // also // send // the // string // value? } object.eSet(eStructuralFeature, x); } else if (eStructuralFeature instanceof EReference) { if (eStructuralFeature.getName().equals("GlobalId")) { IfcGloballyUniqueId globallyUniqueId = Ifc2x3tc1Factory.eINSTANCE .createIfcGloballyUniqueId(); globallyUniqueId.setWrappedValue(jsonReader.nextString()); object.eSet(eStructuralFeature, globallyUniqueId); } else if (embedded) { jsonReader.beginObject(); if (jsonReader.nextName().equals("__type")) { String t = jsonReader.nextString(); IdEObject wrappedObject = (IdEObject) Ifc2x3tc1Factory.eINSTANCE .create((EClass) Ifc2x3tc1Package.eINSTANCE .getEClassifier(t)); if (jsonReader.nextName().equals("value")) { EStructuralFeature wv = wrappedObject.eClass() .getEStructuralFeature("wrappedValue"); wrappedObject.eSet(wv, readPrimitive(jsonReader, wv)); object.eSet(eStructuralFeature, wrappedObject); } else { // error } } jsonReader.endObject(); } else { waitingList.add(jsonReader.nextLong(), new SingleWaitingObject(object, eStructuralFeature)); } } } } if (waitingList.containsKey(oid)) { waitingList.updateNode(oid, eClass, object); } } } jsonReader.endObject(); } jsonReader.endArray(); } jsonReader.endObject(); } catch (IOException e1) { e1.printStackTrace(); } catch (IfcModelInterfaceException e1) { e1.printStackTrace(); } finally { try { jsonReader.close(); } catch (IOException e) { e.printStackTrace(); } } return model; }
From source file:org.bimserver.emf.SharedJsonDeserializer.java
License:Open Source License
@SuppressWarnings("rawtypes") public IfcModelInterface read(InputStream in, IfcModelInterface model, boolean checkWaitingList) throws DeserializeException { if (model.getPackageMetaData().getSchemaDefinition() == null) { throw new DeserializeException("No SchemaDefinition available"); }/*from w ww .j a v a2 s . com*/ WaitingList<Long> waitingList = new WaitingList<Long>(); final boolean log = false; if (log) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { IOUtils.copy(in, baos); File file = new File("debug.json"); System.out.println(file.getAbsolutePath()); FileUtils.writeByteArrayToFile(file, baos.toByteArray()); } catch (IOException e) { e.printStackTrace(); } in = new ByteArrayInputStream(baos.toByteArray()); } JsonReader jsonReader = new JsonReader(new InputStreamReader(in, Charsets.UTF_8)); int nrObjects = 0; try { JsonToken peek = jsonReader.peek(); if (peek != null && peek == JsonToken.BEGIN_OBJECT) { jsonReader.beginObject(); peek = jsonReader.peek(); while (peek == JsonToken.NAME) { String nextName = jsonReader.nextName(); if (nextName.equals("objects")) { jsonReader.beginArray(); while (jsonReader.hasNext()) { nrObjects++; processObject(model, waitingList, jsonReader, null); } jsonReader.endArray(); } else if (nextName.equals("header")) { IfcHeader ifcHeader = (IfcHeader) processObject(model, waitingList, jsonReader, StorePackage.eINSTANCE.getIfcHeader()); model.getModelMetaData().setIfcHeader(ifcHeader); } peek = jsonReader.peek(); } jsonReader.endObject(); } } catch (IOException e) { LOGGER.error("", e); } catch (IfcModelInterfaceException e) { LOGGER.error("", e); } finally { LOGGER.info("# Objects: " + nrObjects); try { jsonReader.close(); } catch (IOException e) { LOGGER.error("", e); } } boolean checkUnique = false; if (checkUnique) { for (IdEObject idEObject : model.getValues()) { for (EStructuralFeature eStructuralFeature : idEObject.eClass().getEAllStructuralFeatures()) { Object value = idEObject.eGet(eStructuralFeature); if (eStructuralFeature instanceof EReference) { if (eStructuralFeature.isMany()) { List list = (List) value; if (eStructuralFeature.isUnique()) { Set<Object> t = new HashSet<>(); for (Object v : list) { if (t.contains(v)) { // LOGGER.error("NOT UNIQUE " + idEObject.eClass().getName() + "." + eStructuralFeature.getName()); } t.add(v); } } } } } } } if (checkWaitingList && waitingList.size() > 0) { try { waitingList.dumpIfNotEmpty(); } catch (BimServerClientException e) { e.printStackTrace(); } throw new DeserializeException("Waitinglist should be empty (" + waitingList.size() + ")"); } return model; }
From source file:org.bimserver.emf.SharedJsonDeserializer.java
License:Open Source License
@SuppressWarnings({ "rawtypes", "unchecked" }) private IdEObject processObject(IfcModelInterface model, WaitingList<Long> waitingList, JsonReader jsonReader, EClass eClass) throws IOException, DeserializeException, IfcModelInterfaceException { IdEObjectImpl object = null;/*from w w w. j a v a2 s. c o m*/ jsonReader.beginObject(); if (jsonReader.nextName().equals("_i")) { long oid = jsonReader.nextLong(); if (jsonReader.nextName().equals("_t")) { String type = jsonReader.nextString(); if (eClass == null) { eClass = model.getPackageMetaData().getEClassIncludingDependencies(type); } if (eClass == null) { throw new DeserializeException("No class found with name " + type); } if (model.containsNoFetch(oid)) { object = (IdEObjectImpl) model.getNoFetch(oid); } else { if (eClass == StorePackage.eINSTANCE.getIfcHeader()) { object = (IdEObjectImpl) StoreFactory.eINSTANCE.createIfcHeader(); } else { object = (IdEObjectImpl) model.create(eClass, oid); } } if (jsonReader.nextName().equals("_s")) { int state = jsonReader.nextInt(); if (state == 1) { object.setLoadingState(State.LOADED); while (jsonReader.hasNext()) { String featureName = jsonReader.nextName(); boolean embedded = false; if (featureName.startsWith("_r")) { featureName = featureName.substring(2); } else if (featureName.startsWith("_e")) { embedded = true; featureName = featureName.substring(2); } EStructuralFeature eStructuralFeature = eClass.getEStructuralFeature(featureName); if (eStructuralFeature == null) { throw new DeserializeException( "Unknown field (" + featureName + ") on class " + eClass.getName()); } if (eStructuralFeature.isMany()) { jsonReader.beginArray(); if (eStructuralFeature instanceof EAttribute) { List list = (List) object.eGet(eStructuralFeature); List<String> stringList = null; if (eStructuralFeature.getEType() == EcorePackage.eINSTANCE.getEDoubleObject() || eStructuralFeature.getEType() == EcorePackage.eINSTANCE .getEDouble()) { EStructuralFeature asStringFeature = eClass .getEStructuralFeature(eStructuralFeature.getName() + "AsString"); stringList = (List<String>) object.eGet(asStringFeature); } while (jsonReader.hasNext()) { Object e = readPrimitive(jsonReader, eStructuralFeature); list.add(e); if (eStructuralFeature.getEType() == EcorePackage.eINSTANCE.getEDouble()) { double val = (Double) e; stringList.add("" + val); // TODO // this // is // losing // precision, // maybe // also // send // the // string // value? } } } else if (eStructuralFeature instanceof EReference) { int index = 0; AbstractEList list = (AbstractEList) object.eGet(eStructuralFeature); while (jsonReader.hasNext()) { if (embedded) { JsonToken peek = jsonReader.peek(); if (peek == JsonToken.NUMBER) { long refOid = jsonReader.nextLong(); processRef(model, waitingList, object, eStructuralFeature, index, list, refOid); } else { jsonReader.beginObject(); String nextName = jsonReader.nextName(); if (nextName.equals("_t")) { String t = jsonReader.nextString(); IdEObject wrappedObject = (IdEObject) model .create(model.getPackageMetaData().getEClass(t), -1); if (jsonReader.nextName().equals("_v")) { EStructuralFeature wv = wrappedObject.eClass() .getEStructuralFeature("wrappedValue"); wrappedObject.eSet(wv, readPrimitive(jsonReader, wv)); list.add(wrappedObject); } else { // error } } else if (nextName.equals("_i")) { // Not all are embedded... long refOid = jsonReader.nextLong(); processRef(model, waitingList, object, eStructuralFeature, index, list, refOid); } jsonReader.endObject(); } } else { long refOid = jsonReader.nextLong(); processRef(model, waitingList, object, eStructuralFeature, index, list, refOid); } index++; } } jsonReader.endArray(); } else { if (eStructuralFeature instanceof EAttribute) { Object x = readPrimitive(jsonReader, eStructuralFeature); if (eStructuralFeature.getEType() == EcorePackage.eINSTANCE.getEDouble()) { EStructuralFeature asStringFeature = object.eClass() .getEStructuralFeature(eStructuralFeature.getName() + "AsString"); if (asStringFeature != null) { object.eSet(asStringFeature, "" + x); // TODO } // this // is // losing // precision, // maybe // also // send // the // string // value? } object.eSet(eStructuralFeature, x); } else if (eStructuralFeature instanceof EReference) { if (eStructuralFeature.getName().equals("GlobalId")) { IfcGloballyUniqueId globallyUniqueId = Ifc2x3tc1Factory.eINSTANCE .createIfcGloballyUniqueId(); globallyUniqueId.setWrappedValue(jsonReader.nextString()); object.eSet(eStructuralFeature, globallyUniqueId); } else if (embedded) { jsonReader.beginObject(); if (jsonReader.nextName().equals("_t")) { String t = jsonReader.nextString(); IdEObject wrappedObject = (IdEObject) model.create( model.getPackageMetaData().getEClassIncludingDependencies(t), -1); if (eStructuralFeature.getEAnnotation("dbembed") != null) { for (EStructuralFeature eStructuralFeature2 : wrappedObject.eClass() .getEAllStructuralFeatures()) { String fn = jsonReader.nextName(); if (fn.equals(eStructuralFeature2.getName())) { wrappedObject.eSet(eStructuralFeature2, readPrimitive(jsonReader, eStructuralFeature2)); } else { throw new DeserializeException( fn + " / " + eStructuralFeature2.getName()); } } object.eSet(eStructuralFeature, wrappedObject); } else { if (jsonReader.nextName().equals("_v")) { EStructuralFeature wv = wrappedObject.eClass() .getEStructuralFeature("wrappedValue"); wrappedObject.eSet(wv, readPrimitive(jsonReader, wv)); object.eSet(eStructuralFeature, wrappedObject); } } } jsonReader.endObject(); } else { long refOid = jsonReader.nextLong(); boolean isInverse = false; EntityDefinition entityBN = model.getPackageMetaData().getSchemaDefinition() .getEntityBN(object.eClass().getName()); if (entityBN != null) { // Some entities like GeometryInfo/Data are not in IFC schema, but valid Attribute attributeBN = entityBN .getAttributeBNWithSuper(eStructuralFeature.getName()); if (attributeBN != null) { if (attributeBN instanceof InverseAttribute) { isInverse = true; } } } if (!isInverse) { if (model.contains(refOid)) { object.eSet(eStructuralFeature, model.get(refOid)); } else { waitingList.add(refOid, new SingleWaitingObject(-1, object, (EReference) eStructuralFeature)); } } } } } } } else { // state not_loaded } if (waitingList.containsKey(oid)) { waitingList.updateNode(oid, eClass, object); } model.add(object.getOid(), object); } else { LOGGER.info("_s expected"); } } else { LOGGER.info("_t expected"); } } else { LOGGER.info("_i expected"); } jsonReader.endObject(); return object; }
From source file:org.cgiar.ccafs.marlo.utils.StringTypeAdapter.java
License:Open Source License
@Override public String read(JsonReader jsonReader) throws IOException { if (jsonReader.peek() == JsonToken.NULL) { jsonReader.nextNull();//from w ww .j a va 2 s . c o m return null; } try { String value = jsonReader.nextString(); return value; } catch (IllegalStateException e) { String values = ""; jsonReader.beginArray(); while (jsonReader.hasNext()) { if (values.length() < 1) { values = jsonReader.nextString(); } else { values = values + "," + jsonReader.nextString(); } } jsonReader.endArray(); return values; } }
From source file:org.cyanogenmod.changelog.ChangelogParser.java
License:Open Source License
/** * Read a Collection of ChangeInfo JSON entities * See http://review.cyanogenmod.org/Documentation/rest-api.html * @param reader the JsonReader to use//from ww w .j ava 2s.co m * @return a List of Changes * @throws IOException */ private List<Change> parseChangeInfoList(JsonReader reader) throws IOException { List<Change> changes = new LinkedList<>(); reader.beginArray(); while (reader.hasNext()) { Change newChange = parseChangeInfo(reader); // check if its a legit change if (newChange.isDeviceSpecific()) changes.add(newChange); } reader.endArray(); return changes; }
From source file:org.eclipse.lsp4j.jsonrpc.json.adapters.CollectionTypeAdapter.java
License:Open Source License
@Override public Collection<E> read(JsonReader in) throws IOException { JsonToken peek = in.peek();/* w w w.j a v a 2 s . c om*/ if (peek == JsonToken.NULL) { in.nextNull(); return null; } else if (peek == JsonToken.BEGIN_ARRAY) { Collection<E> collection = constructor.get(); in.beginArray(); while (in.hasNext()) { E instance = elementTypeAdapter.read(in); collection.add(instance); } in.endArray(); return collection; } else { Collection<E> collection = constructor.get(); E instance = elementTypeAdapter.read(in); collection.add(instance); return collection; } }
From source file:org.eclipse.lsp4j.jsonrpc.json.adapters.MessageTypeAdapter.java
License:Open Source License
/** * Convert the json input into the parameters object corresponding to the call * made by method.//from w w w. j a va2 s.com * * If the method is not known until after parsing, call * {@link #parseParams(Object, String)} on the return value of this call for a * second chance conversion. * * @param in * json input to read from * @param method * method name of request * @return correctly typed object if the correct expected type can be * determined, or a JsonElement representing the parameters */ protected Object parseParams(JsonReader in, String method) throws IOException, JsonIOException { JsonToken next = in.peek(); if (next == JsonToken.NULL) { in.nextNull(); return null; } Type[] parameterTypes = getParameterTypes(method); if (parameterTypes.length == 1) { return fromJson(in, parameterTypes[0]); } if (parameterTypes.length > 1 && next == JsonToken.BEGIN_ARRAY) { List<Object> parameters = new ArrayList<Object>(parameterTypes.length); int index = 0; in.beginArray(); while (in.hasNext()) { Type parameterType = index < parameterTypes.length ? parameterTypes[index] : null; Object parameter = fromJson(in, parameterType); parameters.add(parameter); index++; } in.endArray(); while (index < parameterTypes.length) { parameters.add(null); index++; } return parameters; } return new JsonParser().parse(in); }
From source file:org.eclipse.packagedrone.repo.channel.apm.ChannelReader.java
License:Open Source License
private List<ValidationMessage> readValidationMessages(final JsonReader jr) throws IOException { final List<ValidationMessage> result = new LinkedList<>(); jr.beginArray();//from ww w .j a va 2 s .c o m while (jr.hasNext()) { result.add(readValidationMessage(jr)); } jr.endArray(); return result; }