List of usage examples for com.google.gson.stream JsonReader nextName
public String nextName() throws IOException
From source file:com.aliyun.openservices.odps.console.common.JobDetailInfo.java
License:Apache License
private FuxiInstance getFuxiInstanceFromJson(JsonReader reader) throws IOException { FuxiInstance inst = new FuxiInstance(); reader.beginObject();/*from w w w .j a v a2 s. c o m*/ long endTime = 0; while (reader.hasNext()) { String nameInInstance = reader.nextName(); if (nameInInstance.equals("id")) { inst.id = reader.nextString(); } else if (nameInInstance.equals("logId")) { inst.logid = reader.nextString(); inst.IpAndPath = this.decodeLogId(inst.logid); } else if (nameInInstance.equals("startTime")) { inst.startTime = reader.nextLong(); } else if (nameInInstance.equals("endTime")) { endTime = reader.nextLong(); } else if (nameInInstance.equals("status")) { inst.status = reader.nextString(); } else { reader.skipValue(); } } inst.duration = (int) (endTime - inst.startTime); reader.endObject(); return inst; }
From source file:com.aliyun.openservices.odps.console.common.JobDetailInfo.java
License:Apache License
private void getInfoFromJsonSummary(List<FuxiJob> fuxiJobs, String jsonSummaryContent) throws IOException { jsonSummaryContent = jsonSummaryContent.replaceAll("\n", " "); jsonSummaryContent = jsonSummaryContent.replaceAll("\t", " "); jsonSummaryContent = jsonSummaryContent.replace("\\\"", "\""); JsonReader reader = new JsonReader( new InputStreamReader(new ByteArrayInputStream(jsonSummaryContent.getBytes()))); reader.beginObject();//from w w w.j a va 2 s . c o m while (reader.hasNext()) { String name = reader.nextName(); if (name.equals("jobs")) { reader.beginArray(); int jobCount = 0; // Get more info for each job while (reader.hasNext()) { reader.beginObject(); FuxiJob job = fuxiJobs.get(jobCount); while (reader.hasNext()) { String nameInJobs = reader.nextName(); if (nameInJobs.equals("tasks")) { reader.beginObject(); int taskCount = 0; // Get more info for each task while (reader.hasNext()) { String taskName = reader.nextName(); FuxiTask task = job.tasks.get(taskCount); // Get the downstream tasks info reader.beginObject(); while (reader.hasNext()) { if (reader.nextName().equals("output_record_counts")) { List<String> downTasks = new ArrayList<String>(); reader.beginObject(); while (reader.hasNext()) { downTasks.add(reader.nextName()); reader.skipValue(); } reader.endObject(); addUpAndDownTasks(job, task.name, downTasks); } else { reader.skipValue(); } } reader.endObject(); taskCount++; } reader.endObject(); } else { reader.skipValue(); } } reader.endObject(); jobCount++; } reader.endArray(); } else { reader.skipValue(); } } reader.endObject(); }
From source file:com.andrewreitz.onthisday.ui.flow.GsonParcer.java
License:Apache License
private T decode(String json) throws IOException { JsonReader reader = new JsonReader(new StringReader(json)); try {/* w ww. j av a 2 s . com*/ reader.beginObject(); Class<?> type = Class.forName(reader.nextName()); return gson.fromJson(reader, type); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } finally { reader.close(); } }
From source file:com.android.common.ide.common.blame.MessageJsonSerializer.java
License:Apache License
@Override public Message read(JsonReader in) throws IOException { in.beginObject();/*from w w w. ja v a 2 s . com*/ Message.Kind kind = Message.Kind.UNKNOWN; String text = ""; String rawMessage = null; Optional<String> toolName = Optional.absent(); ImmutableList.Builder<SourceFilePosition> positions = new ImmutableList.Builder<SourceFilePosition>(); SourceFile legacyFile = SourceFile.UNKNOWN; SourcePosition legacyPosition = SourcePosition.UNKNOWN; while (in.hasNext()) { String name = in.nextName(); if (name.equals(KIND)) { //noinspection StringToUpperCaseOrToLowerCaseWithoutLocale Message.Kind theKind = KIND_STRING_ENUM_MAP.inverse().get(in.nextString().toLowerCase()); kind = (theKind != null) ? theKind : Message.Kind.UNKNOWN; } else if (name.equals(TEXT)) { text = in.nextString(); } else if (name.equals(RAW_MESSAGE)) { rawMessage = in.nextString(); } else if (name.equals(TOOL_NAME)) { toolName = Optional.of(in.nextString()); } else if (name.equals(SOURCE_FILE_POSITIONS)) { switch (in.peek()) { case BEGIN_ARRAY: in.beginArray(); while (in.hasNext()) { positions.add(mSourceFilePositionTypeAdapter.read(in)); } in.endArray(); break; case BEGIN_OBJECT: positions.add(mSourceFilePositionTypeAdapter.read(in)); break; default: in.skipValue(); break; } } else if (name.equals(LEGACY_SOURCE_PATH)) { legacyFile = new SourceFile(new File(in.nextString())); } else if (name.equals(LEGACY_POSITION)) { legacyPosition = mSourcePositionTypeAdapter.read(in); } else { in.skipValue(); } } in.endObject(); if (legacyFile != SourceFile.UNKNOWN || legacyPosition != SourcePosition.UNKNOWN) { positions.add(new SourceFilePosition(legacyFile, legacyPosition)); } if (rawMessage == null) { rawMessage = text; } ImmutableList<SourceFilePosition> sourceFilePositions = positions.build(); if (!sourceFilePositions.isEmpty()) { return new Message(kind, text, rawMessage, toolName, sourceFilePositions); } else { return new Message(kind, text, rawMessage, toolName, ImmutableList.of(SourceFilePosition.UNKNOWN)); } }
From source file:com.android.common.ide.common.blame.SourceFileJsonTypeAdapter.java
License:Apache License
@Override public SourceFile read(JsonReader in) throws IOException { switch (in.peek()) { case BEGIN_OBJECT: in.beginObject();// w w w . j a v a 2s. c o m String filePath = null; String description = null; while (in.hasNext()) { String name = in.nextName(); if (name.equals(PATH)) { filePath = in.nextString(); } else if (DESCRIPTION.equals(name)) { description = in.nextString(); } else { in.skipValue(); } } in.endObject(); if (!Strings.isNullOrEmpty(filePath)) { File file = new File(filePath); if (!Strings.isNullOrEmpty(description)) { return new SourceFile(file, description); } else { return new SourceFile(file); } } else { if (!Strings.isNullOrEmpty(description)) { return new SourceFile(description); } else { return SourceFile.UNKNOWN; } } case STRING: String fileName = in.nextString(); if (Strings.isNullOrEmpty(fileName)) { return SourceFile.UNKNOWN; } return new SourceFile(new File(fileName)); default: return SourceFile.UNKNOWN; } }
From source file:com.android.common.ide.common.blame.SourceFilePositionJsonSerializer.java
License:Apache License
@Override public SourceFilePosition read(JsonReader in) throws IOException { in.beginObject();//from w w w .j ava 2s . com SourceFile file = SourceFile.UNKNOWN; SourcePosition position = SourcePosition.UNKNOWN; while (in.hasNext()) { String name = in.nextName(); if (name.equals(FILE)) { file = mSourceFileJsonTypeAdapter.read(in); } else if (name.equals(POSITION)) { position = mSourcePositionJsonTypeAdapter.read(in); } else { in.skipValue(); } } in.endObject(); return new SourceFilePosition(file, position); }
From source file:com.android.common.ide.common.blame.SourcePositionJsonTypeAdapter.java
License:Apache License
@Override public SourcePosition read(JsonReader in) throws IOException { int startLine = -1, startColumn = -1, startOffset = -1; int endLine = -1, endColumn = -1, endOffset = -1; in.beginObject();/*from ww w. j ava 2 s . com*/ while (in.hasNext()) { String name = in.nextName(); if (name.equals(START_LINE)) { startLine = in.nextInt(); } else if (name.equals(START_COLUMN)) { startColumn = in.nextInt(); } else if (name.equals(START_OFFSET)) { startOffset = in.nextInt(); } else if (name.equals(END_LINE)) { endLine = in.nextInt(); } else if (name.equals(END_COLUMN)) { endColumn = in.nextInt(); } else if (name.equals(END_OFFSET)) { endOffset = in.nextInt(); } else { in.skipValue(); } } in.endObject(); endLine = (endLine != -1) ? endLine : startLine; endColumn = (endColumn != -1) ? endColumn : startColumn; endOffset = (endOffset != -1) ? endOffset : startOffset; return new SourcePosition(startLine, startColumn, startOffset, endLine, endColumn, endOffset); }
From source file:com.android.ide.common.blame.MergingLogPersistUtil.java
License:Apache License
@NonNull static Map<SourceFile, Map<SourcePosition, SourceFilePosition>> loadFromMultiFile(@NonNull File folder, @NonNull String shard) {/*w w w .j a va 2s. c om*/ Map<SourceFile, Map<SourcePosition, SourceFilePosition>> map = Maps.newConcurrentMap(); JsonReader reader; File file = getMultiFile(folder, shard); if (!file.exists()) { return map; } try { reader = new JsonReader(Files.newReader(file, Charsets.UTF_8)); } catch (FileNotFoundException e) { // Shouldn't happen unless it disappears under us. return map; } try { reader.beginArray(); while (reader.peek() != JsonToken.END_ARRAY) { reader.beginObject(); SourceFile toFile = SourceFile.UNKNOWN; Map<SourcePosition, SourceFilePosition> innerMap = Maps.newLinkedHashMap(); while (reader.peek() != JsonToken.END_OBJECT) { final String name = reader.nextName(); if (name.equals(KEY_OUTPUT_FILE)) { toFile = mSourceFileJsonTypeAdapter.read(reader); } else if (name.equals(KEY_MAP)) { reader.beginArray(); while (reader.peek() != JsonToken.END_ARRAY) { reader.beginObject(); SourceFilePosition from = null; SourcePosition to = null; while (reader.peek() != JsonToken.END_OBJECT) { final String innerName = reader.nextName(); if (innerName.equals(KEY_FROM)) { from = mSourceFilePositionJsonTypeAdapter.read(reader); } else if (innerName.equals(KEY_TO)) { to = mSourcePositionJsonTypeAdapter.read(reader); } else { throw new IOException(String.format("Unexpected property: %s", innerName)); } } if (from == null || to == null) { throw new IOException("Each record must contain both from and to."); } innerMap.put(to, from); reader.endObject(); } reader.endArray(); } else { throw new IOException(String.format("Unexpected property: %s", name)); } } map.put(toFile, innerMap); reader.endObject(); } reader.endArray(); return map; } catch (IOException e) { // TODO: trigger a non-incremental merge if this happens. throw new RuntimeException(e); } finally { try { reader.close(); } catch (Throwable e2) { // well, we tried. } } }
From source file:com.android.ide.common.blame.MergingLogPersistUtil.java
License:Apache License
@NonNull static Map<SourceFile, SourceFile> loadFromSingleFile(@NonNull File folder, @NonNull String shard) { Map<SourceFile, SourceFile> fileMap = Maps.newConcurrentMap(); JsonReader reader; File file = getSingleFile(folder, shard); if (!file.exists()) { return fileMap; }// www.ja va2 s . c o m try { reader = new JsonReader(Files.newReader(file, Charsets.UTF_8)); } catch (FileNotFoundException e) { // Shouldn't happen unless it disappears under us. return fileMap; } try { reader.beginArray(); while (reader.peek() != JsonToken.END_ARRAY) { reader.beginObject(); SourceFile merged = SourceFile.UNKNOWN; SourceFile source = SourceFile.UNKNOWN; while (reader.peek() != JsonToken.END_OBJECT) { String name = reader.nextName(); if (name.equals(KEY_MERGED)) { merged = mSourceFileJsonTypeAdapter.read(reader); } else if (name.equals(KEY_SOURCE)) { source = mSourceFileJsonTypeAdapter.read(reader); } else { throw new IOException(String.format("Unexpected property: %s", name)); } } reader.endObject(); fileMap.put(merged, source); } reader.endArray(); return fileMap; } catch (IOException e) { // TODO: trigger a non-incremental merge if this happens. throw new RuntimeException(e); } finally { try { reader.close(); } catch (Throwable e) { // well, we tried. } } }
From source file:com.android.ide.common.blame.MessageJsonSerializer.java
License:Apache License
@Override public Message read(JsonReader in) throws IOException { in.beginObject();// w ww. ja v a2 s .com Message.Kind kind = Message.Kind.UNKNOWN; String text = ""; String rawMessage = null; ImmutableList.Builder<SourceFilePosition> positions = new ImmutableList.Builder<SourceFilePosition>(); SourceFile legacyFile = SourceFile.UNKNOWN; SourcePosition legacyPosition = SourcePosition.UNKNOWN; while (in.hasNext()) { String name = in.nextName(); if (name.equals(KIND)) { //noinspection StringToUpperCaseOrToLowerCaseWithoutLocale Message.Kind theKind = KIND_STRING_ENUM_MAP.inverse().get(in.nextString().toLowerCase()); kind = (theKind != null) ? theKind : Message.Kind.UNKNOWN; } else if (name.equals(TEXT)) { text = in.nextString(); } else if (name.equals(RAW_MESSAGE)) { rawMessage = in.nextString(); } else if (name.equals(SOURCE_FILE_POSITIONS)) { switch (in.peek()) { case BEGIN_ARRAY: in.beginArray(); while (in.hasNext()) { positions.add(mSourceFilePositionTypeAdapter.read(in)); } in.endArray(); break; case BEGIN_OBJECT: positions.add(mSourceFilePositionTypeAdapter.read(in)); break; default: in.skipValue(); break; } } else if (name.equals(LEGACY_SOURCE_PATH)) { legacyFile = new SourceFile(new File(in.nextString())); } else if (name.equals(LEGACY_POSITION)) { legacyPosition = mSourcePositionTypeAdapter.read(in); } else { in.skipValue(); } } in.endObject(); if (legacyFile != SourceFile.UNKNOWN || legacyPosition != SourcePosition.UNKNOWN) { positions.add(new SourceFilePosition(legacyFile, legacyPosition)); } if (rawMessage == null) { rawMessage = text; } ImmutableList<SourceFilePosition> sourceFilePositions = positions.build(); if (!sourceFilePositions.isEmpty()) { return new Message(kind, text, rawMessage, sourceFilePositions); } else { return new Message(kind, text, rawMessage, ImmutableList.of(SourceFilePosition.UNKNOWN)); } }