Example usage for com.google.gson.stream JsonReader setLenient

List of usage examples for com.google.gson.stream JsonReader setLenient

Introduction

In this page you can find the example usage for com.google.gson.stream JsonReader setLenient.

Prototype

public final void setLenient(boolean lenient) 

Source Link

Document

Configure this parser to be liberal in what it accepts.

Usage

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