List of usage examples for com.google.gson.stream JsonReader peek
public JsonToken peek() throws IOException
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"); }