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

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

Introduction

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

Prototype

public JsonToken peek() throws IOException 

Source Link

Document

Returns the type of the next token without consuming it.

Usage

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

License:Open Source License

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

    String propName = null;//from w ww . j  a  v  a 2 s  . co  m
    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}/*from w  ww.jav a  2  s . co m*/
 *
 * @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.TeiidVdbStatusSerializer.java

License:Open Source License

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

    beginRead(in);

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

        if (RestTeiidVdbStatus.VDBS_LABEL.equals(name)) {
            final RestTeiidVdbStatusVdb[] vdbStatuses = BUILDER.fromJson(in, RestTeiidVdbStatusVdb[].class);
            entity.setVdbProperties(Arrays.asList(vdbStatuses));
        } 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:
                entity.addTuple(name, in.nextInt());
                break;
            case STRING:
                entity.addTuple(name, in.nextString());
                break;
            case NULL:
                in.nextNull();
                entity.addTuple(name, null);
                break;
            case BEGIN_ARRAY:
                final String[] value = BUILDER.fromJson(in, String[].class);
                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.lanternpowered.server.data.persistence.json.JsonDataFormat.java

License:MIT License

private static void readView(JsonReader reader, DataView view) throws IOException {
    reader.beginObject();//from  ww w .j av  a 2  s. co m
    while (reader.hasNext()) {
        DataQuery key = DataQuery.of(reader.nextName());

        if (reader.peek() == JsonToken.BEGIN_OBJECT) {
            // Check this early so we don't need to copy the view
            readView(reader, view.createView(key));
        } else {
            view.set(key, read0(reader));
        }
    }
    reader.endObject();
}

From source file:org.lanternpowered.server.data.persistence.json.JsonDataFormat.java

License:MIT License

@Nullable
private static Object read0(JsonReader reader) throws IOException {
    final JsonToken token = reader.peek();
    switch (token) {
    case BEGIN_OBJECT:
        return readContainer(reader);
    case BEGIN_ARRAY:
        return readArray(reader);
    case BOOLEAN:
        return reader.nextBoolean();
    case NULL://from w w  w .j av a  2  s .co  m
        reader.nextNull();
        return null;
    case STRING:
        return readString(reader);
    case NUMBER:
        return readNumber(reader);
    default:
        throw new IOException("Unexpected token: " + token);
    }
}

From source file:org.mitre.openid.connect.service.impl.AbstractMITREidDataService.java

License:Apache License

protected static Set readSet(JsonReader reader) throws IOException {
    Set arraySet = null;/*  w  ww  . j a v a2s.  c o  m*/
    reader.beginArray();
    switch (reader.peek()) {
    case STRING:
        arraySet = new HashSet<String>();
        while (reader.hasNext()) {
            arraySet.add(reader.nextString());
        }
        break;
    case NUMBER:
        arraySet = new HashSet<Long>();
        while (reader.hasNext()) {
            arraySet.add(reader.nextLong());
        }
        break;
    default:
        arraySet = new HashSet();
        break;
    }
    reader.endArray();
    return arraySet;
}

From source file:org.mitre.openid.connect.service.impl.AbstractMITREidDataService.java

License:Apache License

protected static Map readMap(JsonReader reader) throws IOException {
    Map map = new HashMap<String, Object>();
    reader.beginObject();/*from  w  w  w  .  j  ava  2 s .  co  m*/
    while (reader.hasNext()) {
        String name = reader.nextName();
        Object value = null;
        switch (reader.peek()) {
        case STRING:
            value = reader.nextString();
            break;
        case BOOLEAN:
            value = reader.nextBoolean();
            break;
        case NUMBER:
            value = reader.nextLong();
            break;
        }
        map.put(name, value);
    }
    reader.endObject();
    return map;
}

From source file:org.mitre.openid.connect.service.impl.MITREidDataService_1_0.java

License:Apache License

@Override
public void importData(JsonReader reader) throws IOException {

    logger.info("Reading configuration for 1.0");

    // this *HAS* to start as an object
    reader.beginObject();/*from   ww  w  .  j a va  2  s .  co m*/

    while (reader.hasNext()) {
        JsonToken tok = reader.peek();
        switch (tok) {
        case NAME:
            String name = reader.nextName();
            // find out which member it is
            if (name.equals(CLIENTS)) {
                readClients(reader);
            } else if (name.equals(GRANTS)) {
                readGrants(reader);
            } else if (name.equals(WHITELISTEDSITES)) {
                readWhitelistedSites(reader);
            } else if (name.equals(BLACKLISTEDSITES)) {
                readBlacklistedSites(reader);
            } else if (name.equals(AUTHENTICATIONHOLDERS)) {
                readAuthenticationHolders(reader);
            } else if (name.equals(ACCESSTOKENS)) {
                readAccessTokens(reader);
            } else if (name.equals(REFRESHTOKENS)) {
                readRefreshTokens(reader);
            } else if (name.equals(SYSTEMSCOPES)) {
                readSystemScopes(reader);
            } else {
                for (MITREidDataServiceExtension extension : extensions) {
                    if (extension.supportsVersion(THIS_VERSION)) {
                        if (extension.supportsVersion(THIS_VERSION)) {
                            extension.importExtensionData(name, reader);
                            break;
                        }
                    }
                }
                // unknown token, skip it
                reader.skipValue();
            }
            break;
        case END_OBJECT:
            // the object ended, we're done here
            reader.endObject();
            continue;
        default:
            logger.debug("Found unexpected entry");
            reader.skipValue();
            continue;
        }
    }
    fixObjectReferences();
    for (MITREidDataServiceExtension extension : extensions) {
        if (extension.supportsVersion(THIS_VERSION)) {
            extension.fixExtensionObjectReferences(maps);
            break;
        }
    }
    maps.clearAll();
}

From source file:org.mitre.openid.connect.service.impl.MITREidDataService_1_0.java

License:Apache License

/**
 * @param reader/*from  www  .jav  a 2 s  . c  o m*/
 * @throws IOException
 */
private void readRefreshTokens(JsonReader reader) throws IOException {
    reader.beginArray();
    while (reader.hasNext()) {
        OAuth2RefreshTokenEntity token = new OAuth2RefreshTokenEntity();
        reader.beginObject();
        Long currentId = null;
        String clientId = null;
        Long authHolderId = null;
        while (reader.hasNext()) {
            switch (reader.peek()) {
            case END_OBJECT:
                continue;
            case NAME:
                String name = reader.nextName();
                if (reader.peek() == JsonToken.NULL) {
                    reader.skipValue();
                } else if (name.equals("id")) {
                    currentId = reader.nextLong();
                } else if (name.equals("expiration")) {
                    Date date = utcToDate(reader.nextString());
                    token.setExpiration(date);
                } else if (name.equals("value")) {
                    String value = reader.nextString();
                    try {
                        token.setJwt(JWTParser.parse(value));
                    } catch (ParseException ex) {
                        logger.error("Unable to set refresh token value to {}", value, ex);
                    }
                } else if (name.equals("clientId")) {
                    clientId = reader.nextString();
                } else if (name.equals("authenticationHolderId")) {
                    authHolderId = reader.nextLong();
                } else {
                    logger.debug("Found unexpected entry");
                    reader.skipValue();
                }
                break;
            default:
                logger.debug("Found unexpected entry");
                reader.skipValue();
                continue;
            }
        }
        reader.endObject();
        Long newId = tokenRepository.saveRefreshToken(token).getId();
        maps.getRefreshTokenToClientRefs().put(currentId, clientId);
        maps.getRefreshTokenToAuthHolderRefs().put(currentId, authHolderId);
        maps.getRefreshTokenOldToNewIdMap().put(currentId, newId);
        logger.debug("Read refresh token {}", currentId);
    }
    reader.endArray();
    logger.info("Done reading refresh tokens");
}

From source file:org.mitre.openid.connect.service.impl.MITREidDataService_1_0.java

License:Apache License

/**
 * @param reader//from  w w  w.ja va  2  s.co  m
 * @throws IOException
 */
private void readAccessTokens(JsonReader reader) throws IOException {
    reader.beginArray();
    while (reader.hasNext()) {
        OAuth2AccessTokenEntity token = new OAuth2AccessTokenEntity();
        reader.beginObject();
        Long currentId = null;
        String clientId = null;
        Long authHolderId = null;
        Long refreshTokenId = null;
        while (reader.hasNext()) {
            switch (reader.peek()) {
            case END_OBJECT:
                continue;
            case NAME:
                String name = reader.nextName();
                if (reader.peek() == JsonToken.NULL) {
                    reader.skipValue();
                } else if (name.equals("id")) {
                    currentId = reader.nextLong();
                } else if (name.equals("expiration")) {
                    Date date = utcToDate(reader.nextString());
                    token.setExpiration(date);
                } else if (name.equals("value")) {
                    String value = reader.nextString();
                    try {
                        // all tokens are JWTs
                        token.setJwt(JWTParser.parse(value));
                    } catch (ParseException ex) {
                        logger.error("Unable to set refresh token value to {}", value, ex);
                    }
                } else if (name.equals("clientId")) {
                    clientId = reader.nextString();
                } else if (name.equals("authenticationHolderId")) {
                    authHolderId = reader.nextLong();
                } else if (name.equals("refreshTokenId")) {
                    refreshTokenId = reader.nextLong();
                } else if (name.equals("scope")) {
                    Set<String> scope = readSet(reader);
                    token.setScope(scope);
                } else if (name.equals("type")) {
                    token.setTokenType(reader.nextString());
                } else {
                    logger.debug("Found unexpected entry");
                    reader.skipValue();
                }
                break;
            default:
                logger.debug("Found unexpected entry");
                reader.skipValue();
                continue;
            }
        }
        reader.endObject();
        Long newId = tokenRepository.saveAccessToken(token).getId();
        maps.getAccessTokenToClientRefs().put(currentId, clientId);
        maps.getAccessTokenToAuthHolderRefs().put(currentId, authHolderId);
        if (refreshTokenId != null) {
            maps.getAccessTokenToRefreshTokenRefs().put(currentId, refreshTokenId);
        }
        maps.getAccessTokenOldToNewIdMap().put(currentId, newId);
        logger.debug("Read access token {}", currentId);
    }
    reader.endArray();
    logger.info("Done reading access tokens");
}