List of usage examples for com.google.gson.stream JsonReader skipValue
public void skipValue() throws IOException
From source file:org.arl.fjage.remote.GenericValueAdapterFactory.java
License:BSD License
public <T> TypeAdapter<T> create(final Gson gson, TypeToken<T> type) { final Class<T> rawType = (Class<T>) type.getRawType(); if (!rawType.equals(GenericValue.class)) return null; final GenericValueAdapterFactory parent = this; return new TypeAdapter<T>() { @Override/*from ww w. j a v a 2 s . c o m*/ public void write(JsonWriter out, T value) throws IOException { if (value == null) { out.nullValue(); return; } Class type = ((GenericValue) value).getType(); if (type == null) { out.nullValue(); return; } if (Number.class.isAssignableFrom(type)) out.value((Number) ((GenericValue) value).getValue()); else if (type.equals(String.class)) out.value((String) ((GenericValue) value).getValue()); else if (type.equals(Boolean.class)) out.value((Boolean) ((GenericValue) value).getValue()); else { out.beginObject(); out.name("clazz").value(type.getName()); out.name("data"); TypeAdapter delegate = gson.getAdapter(TypeToken.get(type)); Object v = ((GenericValue) value).getValue(); delegate.write(out, v); out.endObject(); } } @Override public T read(JsonReader in) throws IOException { JsonToken tok = in.peek(); if (tok == JsonToken.NULL) { in.nextNull(); return null; } if (tok == JsonToken.NUMBER) { String s = in.nextString(); try { if (s.contains(".")) return (T) new GenericValue(Double.parseDouble(s)); else return (T) new GenericValue(Long.parseLong(s)); } catch (NumberFormatException ex) { return (T) new GenericValue(null); } } if (tok == JsonToken.STRING) return (T) new GenericValue(in.nextString()); if (tok == JsonToken.BOOLEAN) return (T) new GenericValue(in.nextBoolean()); if (tok != JsonToken.BEGIN_OBJECT) return null; TypeToken tt = null; GenericValue rv = null; in.beginObject(); while (in.hasNext()) { String name = in.nextName(); if (name.equals("clazz")) { try { Class<?> cls = Class.forName(in.nextString()); tt = TypeToken.get(cls); } catch (Exception ex) { // do nothing } } else if (name.equals("data") && tt != null) { TypeAdapter delegate = gson.getAdapter(tt); rv = new GenericValue(delegate.read(in)); } else in.skipValue(); } in.endObject(); return (T) rv; } }; }
From source file:org.arl.fjage.remote.MessageAdapterFactory.java
License:BSD License
@SuppressWarnings("unchecked") public <T> TypeAdapter<T> create(final Gson gson, TypeToken<T> type) { final Class<T> rawType = (Class<T>) type.getRawType(); if (!Message.class.isAssignableFrom(rawType)) return null; final TypeAdapter<T> delegate = gson.getDelegateAdapter(this, type); final TypeAdapter<Performative> perfDelegate = gson.getAdapter(TypeToken.get(Performative.class)); final TypeAdapter<AgentID> aidDelegate = gson.getAdapter(TypeToken.get(AgentID.class)); final TypeAdapter<GenericValue> gvDelegate = gson.getAdapter(TypeToken.get(GenericValue.class)); final MessageAdapterFactory parent = this; return new TypeAdapter<T>() { @Override//from www. ja v a 2s .com public void write(JsonWriter out, T value) throws IOException { if (value == null) out.nullValue(); else { out.beginObject(); out.name("clazz").value(value.getClass().getName()); out.name("data"); if (value instanceof GenericMessage) { GenericMessage msg = (GenericMessage) value; out.beginObject(); out.name("msgID").value(msg.getMessageID()); out.name("inReplyTo").value(msg.getInReplyTo()); out.name("perf"); perfDelegate.write(out, msg.getPerformative()); out.name("recipient"); aidDelegate.write(out, msg.getRecipient()); out.name("sender"); aidDelegate.write(out, msg.getSender()); out.name("map"); delegate.write(out, value); out.endObject(); } else delegate.write(out, value); out.endObject(); } } @Override public T read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull(); return null; } T rv = null; Class<?> cls = null; in.beginObject(); while (in.hasNext()) { String name = in.nextName(); if (name.equals("clazz")) { String className = in.nextString(); try { cls = classloader != null ? Class.forName(className, true, classloader) : Class.forName(className); } catch (Exception ex) { // do nothing } } else if (name.equals("data")) { if (cls == null) rv = delegate.read(in); else if (cls.equals(GenericMessage.class)) { GenericMessage msg = new GenericMessage(); in.beginObject(); while (in.hasNext()) { String fname = in.nextName(); if (fname.equals("msgID")) msg.setMessageID(in.nextString()); else if (fname.equals("inReplyTo")) msg.setInReplyTo(in.nextString()); else if (fname.equals("perf")) msg.setPerformative(perfDelegate.read(in)); else if (fname.equals("recipient")) msg.setRecipient(aidDelegate.read(in)); else if (fname.equals("sender")) msg.setSender(aidDelegate.read(in)); else if (fname.equals("map")) { in.beginObject(); while (in.hasNext()) { String key = in.nextName(); GenericValue value = gvDelegate.read(in); msg.put(key, value); } in.endObject(); } else in.skipValue(); } in.endObject(); rv = (T) msg; } else { TypeAdapter<?> delegate1 = gson.getDelegateAdapter(parent, TypeToken.get(cls)); rv = (T) delegate1.read(in); } } else in.skipValue(); } in.endObject(); return rv; } }; }
From source file:org.cyanogenmod.changelog.ChangelogParser.java
License:Open Source License
/** * Read ChangeInfo JSON entity/* w ww . ja v a 2s .c o m*/ * See http://review.cyanogenmod.org/Documentation/rest-api.html * @param reader the JsonReader to use * @return the parsed Change. * @throws IOException */ private Change parseChangeInfo(JsonReader reader) throws IOException { Change change = new Change(); reader.beginObject(); while (reader.hasNext()) { switch (reader.nextName()) { case "_number": change.setChangeId(reader.nextString()); break; case "project": change.setProject(reader.nextString()); break; case "subject": change.setSubject(reader.nextString()); break; case "updated": change.setLastUpdate(parseTimestamp(reader.nextString())); break; case "insertions": change.setInsertions(reader.nextInt()); break; case "deletions": change.setDeletions(reader.nextInt()); break; default: reader.skipValue(); } } reader.endObject(); return change; }
From source file:org.eclipse.lsp4j.adapters.HoverTypeAdapter.java
License:Open Source License
public Hover read(final JsonReader in) throws IOException { JsonToken nextToken = in.peek();//from w w w .j ava2s. c o m if (nextToken == JsonToken.NULL) { return null; } Hover result = new Hover(); in.beginObject(); while (in.hasNext()) { String name = in.nextName(); switch (name) { case "contents": result.setContents(readContents(in)); break; case "range": result.setRange(readRange(in)); break; default: in.skipValue(); } } in.endObject(); return result; }
From source file:org.eclipse.lsp4j.adapters.InitializeParamsTypeAdapter.java
License:Open Source License
public InitializeParams read(final JsonReader in) throws IOException { JsonToken nextToken = in.peek();//from w ww .j a v a 2 s . c om if (nextToken == JsonToken.NULL) { return null; } InitializeParams result = new InitializeParams(); in.beginObject(); while (in.hasNext()) { String name = in.nextName(); switch (name) { case "processId": result.setProcessId(readProcessId(in)); break; case "rootPath": result.setRootPath(readRootPath(in)); break; case "rootUri": result.setRootUri(readRootUri(in)); break; case "initializationOptions": result.setInitializationOptions(readInitializationOptions(in)); break; case "capabilities": result.setCapabilities(readCapabilities(in)); break; case "clientName": result.setClientName(readClientName(in)); break; case "trace": result.setTrace(readTrace(in)); break; case "workspaceFolders": result.setWorkspaceFolders(readWorkspaceFolders(in)); break; default: in.skipValue(); } } in.endObject(); return result; }
From source file:org.eclipse.lsp4j.adapters.VersionedTextDocumentIdentifierTypeAdapter.java
License:Open Source License
public VersionedTextDocumentIdentifier read(final JsonReader in) throws IOException { JsonToken nextToken = in.peek();/*w w w . j a va 2s.c o m*/ if (nextToken == JsonToken.NULL) { return null; } VersionedTextDocumentIdentifier result = new VersionedTextDocumentIdentifier(); in.beginObject(); while (in.hasNext()) { String name = in.nextName(); switch (name) { case "version": result.setVersion(readVersion(in)); break; case "uri": result.setUri(readUri(in)); break; default: in.skipValue(); } } in.endObject(); return result; }
From source file:org.eclipse.lsp4j.jsonrpc.debug.adapters.DebugMessageTypeAdapter.java
License:Open Source License
@Override public Message read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull();//from w ww . j av a 2 s. co m return null; } in.beginObject(); String messageType = null, method = null, message = null; int seq = 0, request_seq = 0; Boolean rawSuccess = null; Object rawParams = null; Object rawBody = null; try { while (in.hasNext()) { String name = in.nextName(); switch (name) { case "seq": { seq = in.nextInt(); break; } case "request_seq": { // on responses we treat the request_seq as the id request_seq = in.nextInt(); break; } case "type": { messageType = in.nextString(); break; } case "success": { rawSuccess = in.nextBoolean(); break; } case "command": { method = in.nextString(); break; } case "event": { method = in.nextString(); break; } case "message": { if (in.peek() == JsonToken.NULL) { in.nextNull(); } else { message = in.nextString(); } break; } case "arguments": { rawParams = parseParams(in, method); break; } case "body": { rawBody = parseBody(in, messageType, request_seq, method, rawSuccess); break; } default: in.skipValue(); } } boolean success = rawSuccess != null ? rawSuccess : false; Object params = parseParams(rawParams, method); Object body = parseBody(rawBody, messageType, request_seq, method, success); in.endObject(); return createMessage(messageType, seq, request_seq, method, success, message, params, body); } catch (JsonSyntaxException | MalformedJsonException | EOFException exception) { if ("request".equals(messageType) || "event".equals(messageType) || "response".equals(messageType)) { // Create a message and bundle it to an exception with an issue that wraps the original exception boolean success = rawSuccess != null ? rawSuccess : false; Message resultMessage = createMessage(messageType, seq, request_seq, method, success, message, rawParams, rawBody); MessageIssue issue = new MessageIssue("Message could not be parsed.", ResponseErrorCode.ParseError.getValue(), exception); throw new MessageIssueException(resultMessage, issue); } else { throw exception; } } }
From source file:org.eclipse.lsp4j.jsonrpc.json.adapters.MessageTypeAdapter.java
License:Open Source License
@Override public Message read(JsonReader in) throws IOException, JsonIOException, JsonSyntaxException { if (in.peek() == JsonToken.NULL) { in.nextNull();//from w w w . j a v a2 s. c o m return null; } in.beginObject(); String jsonrpc = null, method = null; Either<String, Number> id = null; Object rawParams = null; Object rawResult = null; ResponseError responseError = null; try { while (in.hasNext()) { String name = in.nextName(); switch (name) { case "jsonrpc": { jsonrpc = in.nextString(); break; } case "id": { if (in.peek() == JsonToken.NUMBER) id = Either.forRight(in.nextInt()); else id = Either.forLeft(in.nextString()); break; } case "method": { method = in.nextString(); break; } case "params": { rawParams = parseParams(in, method); break; } case "result": { rawResult = parseResult(in, id != null ? id.get().toString() : null); break; } case "error": { responseError = gson.fromJson(in, ResponseError.class); break; } default: in.skipValue(); } } Object params = parseParams(rawParams, method); Object result = parseResult(rawResult, id != null ? id.get().toString() : null); in.endObject(); return createMessage(jsonrpc, id, method, params, result, responseError); } catch (JsonSyntaxException | MalformedJsonException | EOFException exception) { if (id != null || method != null) { // Create a message and bundle it to an exception with an issue that wraps the original exception Message message = createMessage(jsonrpc, id, method, rawParams, rawResult, responseError); MessageIssue issue = new MessageIssue("Message could not be parsed.", ResponseErrorCode.ParseError.getValue(), exception); throw new MessageIssueException(message, issue); } else { throw exception; } } }
From source file:org.eclipse.lsp4j.jsonrpc.json.adapters.ThrowableTypeAdapter.java
License:Open Source License
@SuppressWarnings("unchecked") @Override// ww w . j a v a 2 s. c o m public Throwable read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull(); return null; } in.beginObject(); String message = null; Throwable cause = null; while (in.hasNext()) { String name = in.nextName(); switch (name) { case "message": { message = in.nextString(); break; } case "cause": { cause = read(in); break; } default: in.skipValue(); } } in.endObject(); try { Constructor<Throwable> constructor; if (message == null && cause == null) { constructor = (Constructor<Throwable>) typeToken.getRawType().getDeclaredConstructor(); return constructor.newInstance(); } else if (message == null) { constructor = (Constructor<Throwable>) typeToken.getRawType() .getDeclaredConstructor(Throwable.class); return constructor.newInstance(cause); } else if (cause == null) { constructor = (Constructor<Throwable>) typeToken.getRawType().getDeclaredConstructor(String.class); return constructor.newInstance(message); } else { constructor = (Constructor<Throwable>) typeToken.getRawType().getDeclaredConstructor(String.class, Throwable.class); return constructor.newInstance(message, cause); } } catch (NoSuchMethodException e) { if (message == null && cause == null) return new RuntimeException(); else if (message == null) return new RuntimeException(cause); else if (cause == null) return new RuntimeException(message); else return new RuntimeException(message, cause); } catch (Exception e) { throw new JsonParseException(e); } }
From source file:org.eclipse.packagedrone.repo.channel.apm.ChannelReader.java
License:Open Source License
public ModifyContextImpl read() throws IOException { this.numberOfBytes = 0; final Reader reader = new InputStreamReader(this.stream, StandardCharsets.UTF_8); final ChannelState.Builder state = new ChannelState.Builder(); Boolean locked = null;/*from ww w . j a v a2 s .c o m*/ Map<MetaKey, CacheEntryInformation> cacheEntries = Collections.emptyMap(); Map<String, ArtifactInformation> artifacts = Collections.emptyMap(); Map<MetaKey, String> extractedMetaData = Collections.emptyMap(); Map<MetaKey, String> providedMetaData = Collections.emptyMap(); Map<String, String> aspects = new HashMap<>(); final JsonReader jr = new JsonReader(reader); jr.beginObject(); while (jr.hasNext()) { final String name = jr.nextName(); switch (name) { case "locked": state.setLocked(locked = jr.nextBoolean()); break; case "creationTimestamp": state.setCreationTimestamp(readTime(jr)); break; case "modificationTimestamp": state.setModificationTimestamp(readTime(jr)); break; case "cacheEntries": cacheEntries = readCacheEntries(jr); break; case "artifacts": artifacts = readArtifacts(jr); break; case "extractedMetaData": extractedMetaData = readMetadata(jr); break; case "providedMetaData": providedMetaData = readMetadata(jr); break; case "validationMessages": state.setValidationMessages(readValidationMessages(jr)); break; case "aspects": aspects = readAspects(jr); break; default: jr.skipValue(); break; } } jr.endObject(); if (locked == null) { throw new IOException("Missing values for channel"); } // transient information state.setNumberOfArtifacts(artifacts.size()); state.setNumberOfBytes(this.numberOfBytes); // create result return new ModifyContextImpl(this.channelId, this.store, this.cacheStore, state.build(), aspects, artifacts, cacheEntries, extractedMetaData, providedMetaData); }