List of usage examples for com.google.gson.stream JsonReader setLenient
public final void setLenient(boolean lenient)
From source file:org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream.java
License:Open Source License
public JsonParserStream parse(final JsonReader reader) { // code copied from gson's JsonParser and Stream classes final boolean lenient = reader.isLenient(); reader.setLenient(true); boolean isEmpty = true; try {/* ww w . j a va 2s. c o m*/ reader.peek(); isEmpty = false; final CompositeNodeDataWithSchema compositeNodeDataWithSchema = new CompositeNodeDataWithSchema( parentNode); read(reader, compositeNodeDataWithSchema); compositeNodeDataWithSchema.write(writer); return this; } catch (final EOFException e) { if (isEmpty) { return this; } // The stream ended prematurely so it is likely a syntax error. throw new JsonSyntaxException(e); } catch (final MalformedJsonException | NumberFormatException e) { throw new JsonSyntaxException(e); } catch (final IOException e) { throw new JsonIOException(e); } catch (StackOverflowError | OutOfMemoryError e) { throw new JsonParseException("Failed parsing JSON source: " + reader + " to Json", e); } finally { reader.setLenient(lenient); } }
From source file:org.openecomp.sdc.be.model.tosca.converters.JsonConverter.java
License:Open Source License
@Override public String convert(String value, String innerType, Map<String, DataTypeDefinition> dataTypes) { StringReader reader = new StringReader(value); JsonReader jsonReader = new JsonReader(reader); jsonReader.setLenient(true); JsonElement jsonElement = jsonParser.parse(jsonReader); if (jsonElement.isJsonPrimitive()) { return value; }//from w w w .j a va 2 s . co m return gson.toJson(jsonElement); }
From source file:org.openecomp.sdc.be.model.tosca.converters.ToscaJsonValueConverter.java
License:Open Source License
@Override public Object convertToToscaValue(String value, String innerType, Map<String, DataTypeDefinition> dataTypes) { StringReader reader = new StringReader(value); JsonReader jsonReader = new JsonReader(reader); jsonReader.setLenient(true); JsonElement jsonElement = jsonParser.parse(jsonReader); if (jsonElement.isJsonPrimitive()) { return value; }/*from w w w .j av a2s .c o m*/ return handleComplexJsonValue(jsonElement); }
From source file:org.openecomp.sdc.be.model.tosca.converters.ToscaListValueConverter.java
License:Open Source License
@Override public Object convertToToscaValue(String value, String innerType, Map<String, DataTypeDefinition> dataTypes) { if (value == null) { return null; }/*from w ww . j av a 2s.c om*/ try { ToscaPropertyType innerToscaType = ToscaPropertyType.isValidType(innerType); ToscaValueConverter innerConverter = null; boolean isScalar = true; if (innerToscaType != null) { innerConverter = innerToscaType.getValueConverter(); } else { DataTypeDefinition dataTypeDefinition = dataTypes.get(innerType); if (dataTypeDefinition != null) { ToscaPropertyType toscaPropertyType = null; if ((toscaPropertyType = isScalarType(dataTypeDefinition)) != null) { innerConverter = toscaPropertyType.getValueConverter(); } else { isScalar = false; innerConverter = ToscaMapValueConverter.getInstance(); } } else { log.debug("inner Tosca Type is null"); return value; } } JsonElement jsonElement = null; try { StringReader reader = new StringReader(value); JsonReader jsonReader = new JsonReader(reader); jsonReader.setLenient(true); jsonElement = jsonParser.parse(jsonReader); } catch (JsonSyntaxException e) { log.debug("convertToToscaValue failed to parse json value :", e); return null; } if (jsonElement == null || true == jsonElement.isJsonNull()) { log.debug("convertToToscaValue json element is null"); return null; } if (jsonElement.isJsonArray() == false) { // get_input all array like get_input: qrouter_names return handleComplexJsonValue(jsonElement); } JsonArray asJsonArray = jsonElement.getAsJsonArray(); ArrayList<Object> toscaList = new ArrayList<Object>(); final boolean isScalarF = isScalar; final ToscaValueConverter innerConverterFinal = innerConverter; asJsonArray.forEach(e -> { Object convertedValue = null; if (isScalarF) { log.debug("try to convert scalar value {}", e.getAsString()); if (e.getAsString() == null) { convertedValue = null; } else { JsonElement singleElement = jsonParser.parse(e.getAsString()); if (singleElement.isJsonPrimitive()) { convertedValue = innerConverterFinal.convertToToscaValue(e.getAsString(), innerType, dataTypes); } else { convertedValue = handleComplexJsonValue(singleElement); } } } else { JsonObject asJsonObject = e.getAsJsonObject(); Set<Entry<String, JsonElement>> entrySet = asJsonObject.entrySet(); DataTypeDefinition dataTypeDefinition = dataTypes.get(innerType); Map<String, PropertyDefinition> allProperties = getAllProperties(dataTypeDefinition); Map<String, Object> toscaObjectPresentation = new HashMap<>(); // log.debug("try to convert datatype value {}", // e.getAsString()); for (Entry<String, JsonElement> entry : entrySet) { String propName = entry.getKey(); JsonElement elementValue = entry.getValue(); PropertyDefinition propertyDefinition = allProperties.get(propName); if (propertyDefinition == null) { log.debug("The property {} was not found under data type {}", propName, dataTypeDefinition.getName()); continue; // return null; } String type = propertyDefinition.getType(); ToscaPropertyType propertyType = ToscaPropertyType.isValidType(type); Object convValue; if (propertyType != null) { if (elementValue.isJsonPrimitive()) { ToscaValueConverter valueConverter = propertyType.getValueConverter(); convValue = valueConverter.convertToToscaValue(elementValue.getAsString(), type, dataTypes); } else { if (ToscaPropertyType.MAP.equals(type) || ToscaPropertyType.LIST.equals(propertyType)) { ToscaValueConverter valueConverter = propertyType.getValueConverter(); String json = gson.toJson(elementValue); String innerTypeRecursive = propertyDefinition.getSchema().getProperty() .getType(); convValue = valueConverter.convertToToscaValue(json, innerTypeRecursive, dataTypes); } else { convValue = handleComplexJsonValue(elementValue); } } } else { String json = gson.toJson(elementValue); convValue = convertToToscaValue(json, type, dataTypes); } toscaObjectPresentation.put(propName, convValue); } convertedValue = toscaObjectPresentation; } toscaList.add(convertedValue); }); return toscaList; } catch ( JsonParseException e) { log.debug("Failed to parse json : {}. {}", value, e); BeEcompErrorManager.getInstance().logBeInvalidJsonInput("List Converter"); return null; } }
From source file:org.openecomp.sdc.be.model.tosca.converters.ToscaMapValueConverter.java
License:Open Source License
@Override public Object convertToToscaValue(String value, String innerType, Map<String, DataTypeDefinition> dataTypes) { if (value == null) { return value; }//ww w .j av a2s . co m try { ToscaPropertyType innerToscaType = ToscaPropertyType.isValidType(innerType); ToscaValueConverter innerConverter = null; boolean isScalar = true; if (innerToscaType != null) { innerConverter = innerToscaType.getValueConverter(); } else { DataTypeDefinition dataTypeDefinition = dataTypes.get(innerType); if (dataTypeDefinition != null) { ToscaPropertyType toscaPropertyType = null; if ((toscaPropertyType = isScalarType(dataTypeDefinition)) != null) { innerConverter = toscaPropertyType.getValueConverter(); } else { isScalar = false; } } else { // TODO handle getinput log.debug("inner Tosca Type is null"); return value; } } JsonElement jsonElement = null; try { StringReader reader = new StringReader(value); JsonReader jsonReader = new JsonReader(reader); jsonReader.setLenient(true); jsonElement = jsonParser.parse(jsonReader); } catch (JsonSyntaxException e) { log.debug("convertToToscaValue failed to parse json value :", e); return null; } if (jsonElement == null || true == jsonElement.isJsonNull()) { log.debug("convertToToscaValue json element is null"); return null; } JsonObject asJsonObject = jsonElement.getAsJsonObject(); Set<Entry<String, JsonElement>> entrySet = asJsonObject.entrySet(); Map<String, Object> toscaMap = new HashMap<>(); final boolean isScalarF = isScalar; final ToscaValueConverter innerConverterFinal = innerConverter; entrySet.forEach(e -> { log.debug("try convert element {}", e.getValue()); Object convertedValue = convertDataTypeToToscaMap(innerType, dataTypes, innerConverterFinal, isScalarF, e.getValue()); toscaMap.put(e.getKey(), convertedValue); }); return toscaMap; } catch (JsonParseException e) { log.debug("Failed to parse json : {}. {}", value, e); BeEcompErrorManager.getInstance().logBeInvalidJsonInput("List Converter"); return null; } }
From source file:org.openecomp.sdc.be.model.tosca.validators.JsonValidator.java
License:Open Source License
@Override public boolean isValid(String value, String innerType, Map<String, DataTypeDefinition> allDataTypes) { if (value == null || value.isEmpty()) { return true; }//w w w .j a va 2s .c o m try { StringReader reader = new StringReader(value); JsonReader jsonReader = new JsonReader(reader); jsonReader.setLenient(true); jsonParser.parse(jsonReader); } catch (JsonSyntaxException e) { log.debug("Error parsing JSON property", e); return false; } return true; }
From source file:org.openecomp.sdc.be.tosca.PropertyConvertor.java
License:Open Source License
public Object convertToToscaObject(String propertyType, String value, String innerType, Map<String, DataTypeDefinition> dataTypes) { log.debug("try to convert propertyType {} , value {}, innerType {}", propertyType, value, innerType); if (value == null) { return value; }/*w w w. j av a 2 s. c o m*/ ToscaMapValueConverter mapConverterInst = ToscaMapValueConverter.getInstance(); ToscaValueConverter innerConverter = null; Boolean isScalar = true; ToscaPropertyType type = ToscaPropertyType.isValidType(propertyType); if (type == null) { log.debug("isn't prederfined type, get from all data types"); DataTypeDefinition dataTypeDefinition = dataTypes.get(propertyType); if (innerType == null) { innerType = propertyType; } if ((type = mapConverterInst.isScalarType(dataTypeDefinition)) != null) { log.debug("This is scalar type. get suitable converter for type {}", type); innerConverter = type.getValueConverter(); } else { isScalar = false; } } else { ToscaPropertyType typeIfScalar = ToscaPropertyType.getTypeIfScalar(type.getType()); if (typeIfScalar == null) { isScalar = false; } innerConverter = type.getValueConverter(); if (ToscaPropertyType.STRING.equals(type) && value.startsWith("/")) { return innerConverter.convertToToscaValue(value, innerType, dataTypes); } } JsonElement jsonElement = null; try { StringReader reader = new StringReader(value); JsonReader jsonReader = new JsonReader(reader); jsonReader.setLenient(true); jsonElement = jsonParser.parse(jsonReader); if (value.equals("")) { return value; } if (jsonElement.isJsonPrimitive() && isScalar) { log.debug("It's well defined type. convert it"); ToscaValueConverter converter = type.getValueConverter(); return converter.convertToToscaValue(value, innerType, dataTypes); } else { log.debug("It's data type or inputs in primitive type. convert as map"); Object convertedValue; if (innerConverter != null && (ToscaPropertyType.MAP.equals(type) || ToscaPropertyType.LIST.equals(type))) { convertedValue = innerConverter.convertToToscaValue(value, innerType, dataTypes); } else { if (isScalar) { // complex json for scalar type convertedValue = mapConverterInst.handleComplexJsonValue(jsonElement); } else { if (innerConverter != null) { convertedValue = innerConverter.convertToToscaValue(value, innerType, dataTypes); } else { convertedValue = mapConverterInst.convertDataTypeToToscaMap(innerType, dataTypes, innerConverter, isScalar, jsonElement); } } } return convertedValue; } } catch (JsonSyntaxException e) { log.debug("convertToToscaValue failed to parse json value :", e); return null; } }
From source file:org.openhab.binding.folding.handler.FoldingClientHandler.java
License:Open Source License
public synchronized void refresh() { initializing = false;/*ww w . j a v a 2 s. co m*/ List<SlotInfo> slotList = null; try { Socket s = getSocket(); s.getOutputStream().write(("slot-info\r\n").getBytes()); socketReader.readLine(); // Discard PyON header JsonReader jr = new JsonReader(socketReader); jr.setLenient(true); Type slotListType = new TypeToken<List<SlotInfo>>() { }.getType(); slotList = gson.fromJson(jr, slotListType); } catch (IOException e) { logger.debug("Input/error while refreshing Folding client state", e); disconnected(); return; } boolean running = false, finishing = true; for (SlotInfo si : slotList) { finishing &= "FINISHING".equals(si.status); running |= "FINISHING".equals(si.status) || "RUNNING".equals(si.status); SlotUpdateListener listener = slotUpdateListeners.get(si.id); if (listener != null) { listener.refreshed(si); } else { logger.debug("Providing a new discovery result for slot {}", si.id); String host = (String) getThing().getConfiguration().get("host"); FoldingDiscoveryProxy.getInstance().newSlot(getThing().getUID(), host, si.id, si.description); } } updateState(getThing().getChannel("run").getUID(), running ? OnOffType.ON : OnOffType.OFF); updateState(getThing().getChannel("finish").getUID(), finishing ? OnOffType.ON : OnOffType.OFF); }
From source file:org.wso2.carbon.governance.rest.api.internal.GenericArtifactMessageBodyReader.java
License:Open Source License
@Override public GovernanceArtifact readFrom(Class<GovernanceArtifact> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String, String> httpHeaders, InputStream entityStream) throws IOException, WebApplicationException { JsonReader reader = new JsonReader(new InputStreamReader(entityStream, UTF_8)); Map<String, Object> map = new HashMap<>(); reader.setLenient(true); handleJSON(reader, map);// www . ja va2 s . c o m try { return createGenericArtifact(map); } catch (GovernanceException e) { log.error(e); throw new WebApplicationException(Response.Status.BAD_REQUEST); } }
From source file:org.wso2.carbon.governance.rest.api.internal.LCStateMessageBodyReader.java
License:Open Source License
@Override public AssetStateChange readFrom(Class<AssetStateChange> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String, String> httpHeaders, InputStream entityStream) throws IOException, WebApplicationException { JsonReader reader = new JsonReader(new InputStreamReader(entityStream, UTF_8)); Map<String, Object> map = new HashMap<>(); reader.setLenient(true); handleJSON(reader, map);/* w w w .ja va 2s . c o m*/ try { return createLCStateChange(map); } catch (GovernanceException e) { log.error(e); throw new WebApplicationException(Response.Status.BAD_REQUEST); } }