Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ public boolean writeJson(JsonWriter writer, CommandMetadataResult result)
{
CommandDefinition definition = result.getDefinition();
writer.name("name").value(definition.getCommand().getToken()); //$NON-NLS-1$
writer.name("summary").value(definition.getSummary()); //$NON-NLS-1$
writer.name("usage").value(definition.getUsage()); //$NON-NLS-1$
writeStringField(writer, "summary", definition.getSummary()); //$NON-NLS-1$
writeStringField(writer, "usage", definition.getUsage()); //$NON-NLS-1$
writer.name("requiresSnapshot").value(definition.requiresSnapshot()); //$NON-NLS-1$
writeStrings(writer, "positionalArguments", definition.getPositionalArguments()); //$NON-NLS-1$
writeOptions(writer, definition.getOptions());
Expand All @@ -46,7 +46,7 @@ public boolean writeJson(JsonWriter writer, CommandMetadataResult result)
writer.value("suggestedNextCommands when present"); //$NON-NLS-1$
writer.endArray();
writer.name("payloadKind").value(jsonPayloadKind(definition)); //$NON-NLS-1$
writer.name("payloadDescription").value(definition.getAgentPayloadDescription()); //$NON-NLS-1$
writeStringField(writer, "payloadDescription", definition.getAgentPayloadDescription()); //$NON-NLS-1$
writeStrings(writer, "payloadFields", definition.getAgentPayloadFields()); //$NON-NLS-1$
}
return false;
Expand All @@ -70,28 +70,32 @@ private String jsonPayloadKind(CommandDefinition definition)

private void writeOptions(JsonWriter writer, List<OptionDefinition> options)
{
if (options == null || options.isEmpty())
return;
writer.name("options").beginArray(); //$NON-NLS-1$
for (OptionDefinition option : options)
{
writer.beginObject();
writer.name("name").value(option.getName()); //$NON-NLS-1$
writer.name("valueHint").value(option.getValueHint()); //$NON-NLS-1$
writeStringField(writer, "valueHint", option.getValueHint()); //$NON-NLS-1$
writer.name("required").value(option.isRequired()); //$NON-NLS-1$
writer.name("description").value(option.getDescription()); //$NON-NLS-1$
writeStringField(writer, "description", option.getDescription()); //$NON-NLS-1$
writer.endObject();
}
writer.endArray();
}

private void writeOutputs(JsonWriter writer, List<OutputDefinition> outputs)
{
if (outputs == null || outputs.isEmpty())
return;
writer.name("outputs").beginArray(); //$NON-NLS-1$
for (OutputDefinition output : uniqueOutputs(outputs))
{
writer.beginObject();
writer.name("format").value(output.getFormat()); //$NON-NLS-1$
writer.name("resultKind").value(output.getResultKind()); //$NON-NLS-1$
writer.name("description").value(output.getDescription()); //$NON-NLS-1$
writeStringField(writer, "description", output.getDescription()); //$NON-NLS-1$
writer.endObject();
}
writer.endArray();
Expand All @@ -109,6 +113,8 @@ private List<OutputDefinition> uniqueOutputs(List<OutputDefinition> outputs)

private void writeStrings(JsonWriter writer, String name, List<String> values)
{
if (values == null || values.isEmpty())
return;
writer.name(name).beginArray();
for (String value : values)
{
Expand All @@ -117,6 +123,13 @@ private void writeStrings(JsonWriter writer, String name, List<String> values)
writer.endArray();
}

private void writeStringField(JsonWriter writer, String name, String value)
{
if (value == null || value.length() == 0)
return;
writer.name(name).value(value);
}

private void appendStrings(StringBuilder builder, String label, List<String> values)
{
builder.append(label).append(":\n"); //$NON-NLS-1$
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,7 @@ public class PieResultSerializer
{
public boolean writeJson(JsonWriter writer, IResultPie pie, SerializationOptions options)
{
List<? extends Slice> slices = pie.getSlices();
int limit = Math.min(slices.size(), options.getLimit());
boolean truncated = slices.size() > limit;

writer.name("slices").beginArray(); //$NON-NLS-1$
for (int ii = 0; ii < limit; ii++)
{
writeSlice(writer, slices.get(ii), false, options);
}
writer.endArray();
return truncated;
return writeAgentJson(writer, pie, options);
}

public boolean writeAgentJson(JsonWriter writer, IResultPie pie, SerializationOptions options)
Expand All @@ -45,7 +35,7 @@ public boolean writeAgentJson(JsonWriter writer, IResultPie pie, SerializationOp
writer.name("items").beginArray(); //$NON-NLS-1$
for (int ii = 0; ii < limit; ii++)
{
writeSlice(writer, slices.get(ii), true, options);
writeSlice(writer, slices.get(ii), options);
}
writer.endArray();
return truncated;
Expand All @@ -72,45 +62,32 @@ public String toText(IResultPie pie, SerializationOptions options)
return builder.toString();
}

private void writeSlice(JsonWriter writer, Slice slice, boolean agentProfile, SerializationOptions options)
private void writeSlice(JsonWriter writer, Slice slice, SerializationOptions options)
{
writer.beginObject();
writer.name("label").value(slice.getLabel()); //$NON-NLS-1$
writer.name("value").value(slice.getValue()); //$NON-NLS-1$
writer.name("description").value(slice.getDescription()); //$NON-NLS-1$
if (agentProfile)
writeAgentAddress(writer, slice.getContext(), options);
else
writeContext(writer, slice.getContext(), options);
writer.name("color").value(color(slice)); //$NON-NLS-1$
writeStringField(writer, "description", slice.getDescription()); //$NON-NLS-1$
writeAgentAddress(writer, slice.getContext(), options);
writeStringField(writer, "color", color(slice)); //$NON-NLS-1$
writer.endObject();
}

private void writeContext(JsonWriter writer, IContextObject context, SerializationOptions options)
private void writeAgentAddress(JsonWriter writer, IContextObject context, SerializationOptions options)
{
Integer objectId = contextObjectId(context);
if (objectId == null)
{
writer.name("context").nullValue(); //$NON-NLS-1$
return;
}

writer.name("context").beginObject(); //$NON-NLS-1$
writer.name("objectId").value(objectId.intValue()); //$NON-NLS-1$
String objectAddress = options == null ? null : options.resolveObjectAddress(objectId.intValue());
if (objectAddress != null)
writer.name("objectAddress").value(objectAddress); //$NON-NLS-1$
writer.endObject();
writer.name("_address").value(objectAddress); //$NON-NLS-1$
}

private void writeAgentAddress(JsonWriter writer, IContextObject context, SerializationOptions options)
private void writeStringField(JsonWriter writer, String name, String value)
{
Integer objectId = contextObjectId(context);
if (objectId == null)
if (value == null || value.length() == 0)
return;
String objectAddress = options == null ? null : options.resolveObjectAddress(objectId.intValue());
if (objectAddress != null)
writer.name("_address").value(objectAddress); //$NON-NLS-1$
writer.name(name).value(value);
}

private Integer contextObjectId(IContextObject context)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,17 @@ public boolean writeJson(JsonWriter writer, QueryMetadataResult result)
{
if (result.getKind() == QueryMetadataResult.Kind.LIST)
{
writer.name("queries").beginArray(); //$NON-NLS-1$
for (QueryMetadataResult.QueryDefinition query : result.getQueries())
if (result.getQueries() != null && !result.getQueries().isEmpty())
{
writer.beginObject();
writeQuery(writer, query);
writer.endObject();
writer.name("queries").beginArray(); //$NON-NLS-1$
for (QueryMetadataResult.QueryDefinition query : result.getQueries())
{
writer.beginObject();
writeQuery(writer, query);
writer.endObject();
}
writer.endArray();
}
writer.endArray();
}
else
{
Expand Down Expand Up @@ -75,37 +78,50 @@ public String toText(QueryMetadataResult result)
private void writeQuery(JsonWriter writer, QueryMetadataResult.QueryDefinition query)
{
writer.name("identifier").value(query.getIdentifier()); //$NON-NLS-1$
writer.name("name").value(query.getName()); //$NON-NLS-1$
writer.name("category").value(query.getCategory()); //$NON-NLS-1$
writer.name("usage").value(query.getUsage()); //$NON-NLS-1$
writer.name("summary").value(query.getSummary()); //$NON-NLS-1$
writer.name("help").value(query.getHelp()); //$NON-NLS-1$
writer.name("helpUrl").value(query.getHelpUrl()); //$NON-NLS-1$
writer.name("commandClass").value(query.getCommandClass()); //$NON-NLS-1$
writeStringField(writer, "name", query.getName()); //$NON-NLS-1$
writeStringField(writer, "category", query.getCategory()); //$NON-NLS-1$
writeStringField(writer, "usage", query.getUsage()); //$NON-NLS-1$
writeStringField(writer, "summary", query.getSummary()); //$NON-NLS-1$
writeStringField(writer, "help", query.getHelp()); //$NON-NLS-1$
writeStringField(writer, "helpUrl", query.getHelpUrl()); //$NON-NLS-1$
writeStringField(writer, "commandClass", query.getCommandClass()); //$NON-NLS-1$
writer.name("shallow").value(query.isShallow()); //$NON-NLS-1$
writer.name("subjects").beginArray(); //$NON-NLS-1$
for (String subject : query.getSubjects())
if (query.getSubjects() != null && !query.getSubjects().isEmpty())
{
writer.value(subject);
writer.name("subjects").beginArray(); //$NON-NLS-1$
for (String subject : query.getSubjects())
{
writer.value(subject);
}
writer.endArray();
}
writer.endArray();
writer.name("arguments").beginArray(); //$NON-NLS-1$
for (QueryMetadataResult.QueryArgument argument : query.getArguments())
if (query.getArguments() != null && !query.getArguments().isEmpty())
{
writer.beginObject();
writer.name("name").value(argument.getName()); //$NON-NLS-1$
writer.name("flag").value(argument.getFlag()); //$NON-NLS-1$
writer.name("type").value(argument.getType()); //$NON-NLS-1$
writer.name("advice").value(argument.getAdvice()); //$NON-NLS-1$
writer.name("mandatory").value(argument.isMandatory()); //$NON-NLS-1$
writer.name("multiple").value(argument.isMultiple()); //$NON-NLS-1$
writer.name("boolean").value(argument.isBoolean()); //$NON-NLS-1$
writer.name("enum").value(argument.isEnumeration()); //$NON-NLS-1$
writer.name("defaultValue").value(argument.getDefaultValue()); //$NON-NLS-1$
writer.name("help").value(argument.getHelp()); //$NON-NLS-1$
writer.endObject();
writer.name("arguments").beginArray(); //$NON-NLS-1$
for (QueryMetadataResult.QueryArgument argument : query.getArguments())
{
writer.beginObject();
writer.name("name").value(argument.getName()); //$NON-NLS-1$
writeStringField(writer, "flag", argument.getFlag()); //$NON-NLS-1$
writeStringField(writer, "type", argument.getType()); //$NON-NLS-1$
writeStringField(writer, "advice", argument.getAdvice()); //$NON-NLS-1$
writer.name("mandatory").value(argument.isMandatory()); //$NON-NLS-1$
writer.name("multiple").value(argument.isMultiple()); //$NON-NLS-1$
writer.name("boolean").value(argument.isBoolean()); //$NON-NLS-1$
writer.name("enum").value(argument.isEnumeration()); //$NON-NLS-1$
writeStringField(writer, "defaultValue", argument.getDefaultValue()); //$NON-NLS-1$
writeStringField(writer, "help", argument.getHelp()); //$NON-NLS-1$
writer.endObject();
}
writer.endArray();
}
writer.endArray();
}

private void writeStringField(JsonWriter writer, String name, String value)
{
if (value == null || value.length() == 0)
return;
writer.name(name).value(value);
}

private void appendList(StringBuilder builder, String label, List<String> values)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@

public class ResultSerializer
{
private static final String JSON_SCHEMA_VERSION = "mat-cli/v2"; //$NON-NLS-1$
private static final String JSON_SCHEMA_VERSION = "mat-cli/v1"; //$NON-NLS-1$

private final TableResultSerializer tableSerializer = new TableResultSerializer();
private final TreeResultSerializer treeSerializer = new TreeResultSerializer();
Expand Down Expand Up @@ -223,8 +223,7 @@ else if (result instanceof Spec)
}

writer.name("truncated").value(truncated); //$NON-NLS-1$
if (execution != null && execution.getNote() != null)
writer.name("note").value(execution.getNote()); //$NON-NLS-1$
writeStringField(writer, "note", execution == null ? null : execution.getNote()); //$NON-NLS-1$
if (shouldWriteSuggestedNextCommands(arguments, execution))
writeSuggestedNextCommands(writer, suggestedNextCommands(arguments, execution));
writer.endObject();
Expand All @@ -241,14 +240,14 @@ private void serializeJsonError(CliArguments arguments, int exitCode, Throwable
writer.name("code").value(exitCode); //$NON-NLS-1$
writer.name("message").value(error.getMessage() == null ? error.getClass().getName() : error.getMessage()); //$NON-NLS-1$
writer.name("kind").value(errorKind(arguments, exitCode, error)); //$NON-NLS-1$
writer.name("hint").value(errorHint(arguments, exitCode, error)); //$NON-NLS-1$
writeStringField(writer, "hint", errorHint(arguments, exitCode, error)); //$NON-NLS-1$
writer.name("retryable").value(isRetryable(arguments, exitCode, error)); //$NON-NLS-1$
if (arguments != null && arguments.isVerbose())
{
writer.name("exceptionClass").value(error == null ? null : error.getClass().getName()); //$NON-NLS-1$
writer.name("rootCauseClass").value(rootCause(error).getClass().getName()); //$NON-NLS-1$
writer.name("rootCauseMessage").value(rootCauseMessage(error)); //$NON-NLS-1$
writer.name("stackTrace").value(stackTrace(error)); //$NON-NLS-1$
writeStringField(writer, "exceptionClass", error == null ? null : error.getClass().getName()); //$NON-NLS-1$
writeStringField(writer, "rootCauseClass", rootCause(error).getClass().getName()); //$NON-NLS-1$
writeStringField(writer, "rootCauseMessage", rootCauseMessage(error)); //$NON-NLS-1$
writeStringField(writer, "stackTrace", stackTrace(error)); //$NON-NLS-1$
}
writer.endObject();
writer.name("truncated").value(false); //$NON-NLS-1$
Expand All @@ -260,10 +259,10 @@ private void serializeJsonError(CliArguments arguments, int exitCode, Throwable
private void writeSummary(JsonWriter writer, SnapshotSummary summary)
{
writer.name("summary").beginObject(); //$NON-NLS-1$
writer.name("path").value(summary.getPath()); //$NON-NLS-1$
writer.name("heapFormat").value(summary.getHeapFormat()); //$NON-NLS-1$
writer.name("jvmInfo").value(summary.getJvmInfo()); //$NON-NLS-1$
writer.name("creationDate").value(summary.getCreationDate()); //$NON-NLS-1$
writeStringField(writer, "path", summary.getPath()); //$NON-NLS-1$
writeStringField(writer, "heapFormat", summary.getHeapFormat()); //$NON-NLS-1$
writeStringField(writer, "jvmInfo", summary.getJvmInfo()); //$NON-NLS-1$
writeStringField(writer, "creationDate", summary.getCreationDate()); //$NON-NLS-1$
writer.name("identifierSize").value(summary.getIdentifierSize()); //$NON-NLS-1$
writer.name("numberOfObjects").value(summary.getNumberOfObjects()); //$NON-NLS-1$
writer.name("numberOfClasses").value(summary.getNumberOfClasses()); //$NON-NLS-1$
Expand All @@ -281,6 +280,8 @@ private CliException unsupported(IResult result)

private void writeSuggestedNextCommands(JsonWriter writer, List<String> commands)
{
if (commands == null || commands.isEmpty())
return;
writer.name("suggestedNextCommands").beginArray(); //$NON-NLS-1$
for (String command : commands)
{
Expand All @@ -289,6 +290,13 @@ private void writeSuggestedNextCommands(JsonWriter writer, List<String> commands
writer.endArray();
}

private void writeStringField(JsonWriter writer, String name, String value)
{
if (value == null || value.length() == 0)
return;
writer.name(name).value(value);
}

private boolean shouldWriteSuggestedNextCommands(CliArguments arguments, CliExecution execution)
{
if (execution == null)
Expand Down
Loading
Loading