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

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

Introduction

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

Prototype

public boolean hasNext() throws IOException 

Source Link

Document

Returns true if the current array or object has another element.

Usage

From source file:org.jclouds.openstack.swift.v1.config.SwiftTypeAdapters.java

License:Apache License

static void readErrors(JsonReader reader, Builder<String, String> errors) throws IOException {
    reader.beginArray();//from   w w w.  j  a  va2 s. co  m
    while (reader.hasNext()) {
        reader.beginArray();
        String decodedPath = URI.create(reader.nextString()).getPath();
        errors.put(decodedPath, reader.nextString());
        reader.endArray();
    }
    reader.endArray();
}

From source file:org.kairosdb.client.AbstractClient.java

License:Apache License

private List<String> readNameQueryResponse(InputStream stream) throws IOException {
    List<String> list = new ArrayList<String>();
    JsonReader reader = new JsonReader(new InputStreamReader(stream, "UTF-8"));

    try {/*w w  w .  ja v a2s .  com*/
        reader.beginObject();
        String container = reader.nextName();
        if (container.equals("results")) {
            reader.beginArray();
            while (reader.hasNext()) {
                list.add(reader.nextString());
            }
            reader.endArray();
            reader.endObject();
        }
    } finally {
        reader.close();
    }

    return list;
}

From source file:org.kairosdb.core.http.rest.json.DataPointsParser.java

License:Apache License

public ValidationErrors parse() throws IOException, DatastoreException {
    long start = System.currentTimeMillis();
    ValidationErrors validationErrors = new ValidationErrors();

    JsonReader reader = new JsonReader(inputStream);

    try {//from   w  w  w  . j  a v  a  2s.  com
        int metricCount = 0;

        if (reader.peek().equals(JsonToken.BEGIN_ARRAY)) {
            try {
                reader.beginArray();

                while (reader.hasNext()) {
                    NewMetric metric = parseMetric(reader);
                    validateAndAddDataPoints(metric, validationErrors, metricCount);
                    metricCount++;
                }
            } catch (EOFException e) {
                validationErrors.addErrorMessage("Invalid json. No content due to end of input.");
            }

            reader.endArray();
        } else if (reader.peek().equals(JsonToken.BEGIN_OBJECT)) {
            NewMetric metric = parseMetric(reader);
            validateAndAddDataPoints(metric, validationErrors, 0);
        } else
            validationErrors.addErrorMessage("Invalid start of json.");

    } catch (EOFException e) {
        validationErrors.addErrorMessage("Invalid json. No content due to end of input.");
    } finally {
        reader.close();
    }

    ingestTime = (int) (System.currentTimeMillis() - start);

    return validationErrors;
}

From source file:org.kairosdb.util.ResponseToMetricConverter.java

License:Apache License

public void convert(InputStream inputStream, OutputStream outStream) throws IOException {

    JsonReader reader = new JsonReader(new InputStreamReader(inputStream));
    JsonWriter writer = new JsonWriter(new OutputStreamWriter(outStream));

    try {//from   ww w.  j a v  a2s .com
        writer.beginArray();

        // Queries array
        reader.beginObject();
        while (reader.hasNext()) {
            String token = reader.nextName();
            if (token.equals("queries")) {
                reader.beginArray();

                while (reader.hasNext()) {
                    reader.beginObject();
                    token = reader.nextName();
                    if (token.equals("results")) {
                        parseResults(reader, writer);
                    }
                    reader.endObject();
                }

                reader.endArray();
            }
        }
        reader.endObject();

        writer.endArray();
    } catch (RuntimeException e) {
        e.printStackTrace();
    } finally {
        reader.close();
        writer.close();
    }
}

From source file:org.kairosdb.util.ResponseToMetricConverter.java

License:Apache License

private void parseResults(JsonReader reader, JsonWriter writer) throws IOException {
    reader.beginArray();/*from   w  w w  .j  a v a  2 s .  c om*/
    while (reader.hasNext()) {
        MetricFrom metricFrom = gson.fromJson(reader, MetricFrom.class);
        MetricTo metricTo = new MetricTo(metricFrom);
        gson.toJson(metricTo, MetricTo.class, writer);
    }

    reader.endArray();
}

From source file:org.komodo.rest.json.LinkSerializer.java

License:Open Source License

/**
 * {@inheritDoc}/*from   ww w  . j a v  a  2s . c  o  m*/
 *
 * @see com.google.gson.TypeAdapter#read(com.google.gson.stream.JsonReader)
 */
@Override
public RestLink read(final JsonReader in) throws IOException {
    final RestLink link = new RestLink();
    in.beginObject();

    while (in.hasNext()) {
        final String name = in.nextName();

        switch (name) {
        case JsonConstants.HREF:
            final String uri = in.nextString();
            link.setHref(UriBuilder.fromUri(uri).build());
            break;
        case JsonConstants.REL:
            final String rel = in.nextString();
            link.setRel(LinkType.fromString(rel));
            break;
        default:
            throw new IOException(Messages.getString(UNEXPECTED_JSON_TOKEN, name));
        }
    }

    in.endObject();

    if (!isComplete(link)) {
        throw new IOException(Messages.getString(INCOMPLETE_JSON, RestVdbImport.class.getSimpleName()));
    }

    return link;
}

From source file:org.komodo.rest.json.RestPropertySerializer.java

License:Open Source License

@Override
public RestProperty read(JsonReader in) throws IOException {

    String propName = null;//w  w w.  j  a va 2 s .c  om
    Object propValue = null;

    in.beginObject();

    while (in.hasNext()) {
        String name = in.nextName();
        if (RestProperty.NAME_LABEL.equals(name))
            propName = in.nextString();
        else if (RestProperty.VALUE_LABEL.equals(name)) {
            JsonToken token = in.peek();
            switch (token) {
            case BOOLEAN:
                propValue = in.nextBoolean();
                break;
            case NUMBER: {
                double value = in.nextDouble();
                if (value % 1 == 0)
                    propValue = (int) value;
                else
                    propValue = value;
                break;
            }
            case STRING:
                propValue = in.nextString();
                break;
            case NULL:
                in.nextNull();
                propValue = null;
                break;
            case BEGIN_ARRAY:
                final Object[] value = BUILDER.fromJson(in, Object[].class);

                //
                // BUILDER always converts json numbers to double regardless
                // of them being integers so need to do some checking and on-the-fly
                // conversion
                //
                for (int i = 0; i < value.length; ++i) {
                    if (value[i] instanceof Double && ((double) value[i] % 1) == 0)
                        value[i] = ((Double) value[i]).intValue();
                }

                propValue = value;
                break;
            default:
                throw new IOException(Messages.getString(Messages.Error.UNEXPECTED_JSON_TOKEN, name));
            }
        }
    }

    in.endObject();

    RestProperty property = new RestProperty(propName, propValue);
    if (!isComplete(property))
        throw new IOException(
                Messages.getString(Messages.Error.INCOMPLETE_JSON, RestProperty.class.getSimpleName()));

    return property;
}

From source file:org.komodo.rest.relational.json.BasicEntitySerializer.java

License:Open Source License

/**
 * {@inheritDoc}/*w w w  .j  a  v a 2  s . c  om*/
 *
 * @see org.komodo.rest.relational.json.AbstractEntitySerializer#read(com.google.gson.stream.JsonReader)
 */
@Override
public T read(final JsonReader in) throws IOException {
    final T entity = createEntity();

    beginRead(in);

    while (in.hasNext()) {
        final String name = in.nextName();

        if (readExtension(name, entity, in) != null)
            continue;

        if (PROPERTIES.equals(name))
            readProperties(in, entity);
        else if (LINKS.equals(name))
            readLinks(in, entity);
        else {
            JsonToken token = in.peek();
            switch (token) {
            case BOOLEAN:
                entity.addTuple(name, in.nextBoolean());
                break;
            case NUMBER: {
                double value = in.nextDouble();
                if (value % 1 == 0)
                    entity.addTuple(name, (int) value);
                else
                    entity.addTuple(name, value);
                break;
            }
            case STRING:
                entity.addTuple(name, in.nextString());
                break;
            case NULL:
                in.nextNull();
                entity.addTuple(name, null);
                break;
            case BEGIN_ARRAY:
                final Object[] value = BUILDER.fromJson(in, Object[].class);

                //
                // BUILDER always converts json numbers to double regardless
                // of them being integers so need to do some checking and on-the-fly
                // conversion
                //
                for (int i = 0; i < value.length; ++i) {
                    if (value[i] instanceof Double && ((double) value[i] % 1) == 0)
                        value[i] = ((Double) value[i]).intValue();
                }

                entity.addTuple(name, value);
                break;
            default:
                throw new IOException(Messages.getString(Messages.Error.UNEXPECTED_JSON_TOKEN, name));
            }
        }
    }

    if (!isComplete(entity)) {
        throw new IOException(Messages.getString(INCOMPLETE_JSON, getClass().getSimpleName()));
    }

    endRead(in);
    return entity;
}

From source file:org.komodo.rest.relational.json.ConnectionAttributesSerializer.java

License:Open Source License

/**
 * {@inheritDoc}//from www.j ava 2  s. c  o m
 *
 * @see com.google.gson.TypeAdapter#read(com.google.gson.stream.JsonReader)
 */
@Override
public KomodoConnectionAttributes read(final JsonReader in) throws IOException {
    final KomodoConnectionAttributes ConnectionAttr = createEntity();
    in.beginObject();

    while (in.hasNext()) {
        final String name = in.nextName();

        switch (name) {
        case KomodoConnectionAttributes.JNDI_LABEL:
            ConnectionAttr.setJndi(in.nextString());
            break;
        case KomodoConnectionAttributes.JDBC_LABEL:
            ConnectionAttr.setJdbc(in.nextBoolean());
            break;
        case KomodoConnectionAttributes.DRIVER_LABEL:
            ConnectionAttr.setDriver(in.nextString());
            break;
        case KomodoConnectionAttributes.PARAMETERS_LABEL:
            Map<String, String> parameters = BUILDER.fromJson(in, Map.class);
            for (Map.Entry<String, String> parameter : parameters.entrySet()) {
                ConnectionAttr.setParameter(parameter.getKey(), parameter.getValue());
            }
            break;
        default:
            throw new IOException(Messages.getString(UNEXPECTED_JSON_TOKEN, name));
        }
    }

    in.endObject();

    return ConnectionAttr;
}

From source file:org.komodo.rest.relational.json.DataserviceUpdateAttributesSerializer.java

License:Open Source License

/**
 * {@inheritDoc}/*from w  w  w . j ava  2s  .  c  om*/
 *
 * @see com.google.gson.TypeAdapter#read(com.google.gson.stream.JsonReader)
 */
@Override
public KomodoDataserviceUpdateAttributes read(final JsonReader in) throws IOException {
    final KomodoDataserviceUpdateAttributes updateAttrs = new KomodoDataserviceUpdateAttributes();
    in.beginObject();

    while (in.hasNext()) {
        final String name = in.nextName();

        switch (name) {
        case KomodoDataserviceUpdateAttributes.DATASERVICE_NAME_LABEL:
            updateAttrs.setDataserviceName(in.nextString());
            break;
        case KomodoDataserviceUpdateAttributes.DATASERVICE_TABLE_PATH_LABEL:
            updateAttrs.setTablePath(in.nextString());
            break;
        case KomodoDataserviceUpdateAttributes.DATASERVICE_MODEL_SOURCE_PATH_LABEL:
            updateAttrs.setModelSourcePath(in.nextString());
            break;
        case KomodoDataserviceUpdateAttributes.DATASERVICE_COLUMN_NAMES_LABEL:
            List<String> colNames = BUILDER.fromJson(in, List.class);
            updateAttrs.setColumnNames(colNames);
            break;
        case KomodoDataserviceUpdateAttributes.DATASERVICE_RH_TABLE_PATH_LABEL:
            updateAttrs.setRhTablePath(in.nextString());
            break;
        case KomodoDataserviceUpdateAttributes.DATASERVICE_RH_MODEL_SOURCE_PATH_LABEL:
            updateAttrs.setRhModelSourcePath(in.nextString());
            break;
        case KomodoDataserviceUpdateAttributes.DATASERVICE_RH_COLUMN_NAMES_LABEL:
            List<String> rhColNames = BUILDER.fromJson(in, List.class);
            updateAttrs.setRhColumnNames(rhColNames);
            break;
        case KomodoDataserviceUpdateAttributes.DATASERVICE_JOIN_TYPE_LABEL:
            updateAttrs.setJoinType(in.nextString());
            break;
        case KomodoDataserviceUpdateAttributes.DATASERVICE_CRITERIA_PREDICATES_LABEL:
            List<Map<String, String>> predicates = BUILDER.fromJson(in, List.class);
            updateAttrs.setCriteriaPredicates(predicates);
            break;
        case KomodoDataserviceUpdateAttributes.DATASERVICE_VIEW_DDL_LABEL:
            updateAttrs.setViewDdl(in.nextString());
            break;
        default:
            throw new IOException(Messages.getString(UNEXPECTED_JSON_TOKEN, name));
        }
    }

    in.endObject();

    return updateAttrs;
}