public static CommandResult buildResult(List<CliFunctionResult> functionResults) { return buildResult(functionResults, null, null); }
/** * Convenience method to create a simple Info Result that takes a message. * * @param message Message for the OK Result */ public static Result createInfoResult(String message) { InfoResultData infoResultData = new InfoResultData(); infoResultData.addLine(message); return buildResult(infoResultData); }
/** * Creates error Result with given error code & message * <p/> * Note: To build your own error result, use {@link #createErrorResultData()} to build * {@link ErrorResultData} & then use {@link #buildResult(ResultData)} * * @param errorCode error code should be one of ResultBuilder.ERRORCODE_** * @param message message for the error */ private static CommandResult createErrorResult(int errorCode, String message) { ErrorResultData errorResultData = new ErrorResultData(); errorResultData.setErrorCode(errorCode); errorResultData.addLine(message); return buildResult(errorResultData); }
Result getResult() { CompositeResultData compositeResultData = ResultBuilder.createCompositeResultData(); compositeResultData.setHeader( "************************* Execution Summary ***********************\nScript file: " + filePath); for (int i = 0; i < this.commandAndStatusList.size(); i++) { int commandSrNo = i + 1; CompositeResultData.SectionResultData section = compositeResultData.addSection("" + (i + 1)); CommandAndStatus commandAndStatus = commandAndStatusList.get(i); section.addData("Command-" + String.valueOf(commandSrNo), commandAndStatus.command); section.addData("Status", commandAndStatus.status); if (commandAndStatus.status.equals("FAILED")) { compositeResultData.setStatus(Result.Status.ERROR); } if (i != this.commandAndStatusList.size()) { section.setFooter(Gfsh.LINE_SEPARATOR); } } return ResultBuilder.buildResult(compositeResultData); }
private Result getResults(int fromIndex, int toIndex, boolean keysonly) throws Exception { final TabularResultData data = ResultBuilder.createTabularResultData(); for (int i = fromIndex; i < toIndex; i++) { if (!searchResults.get(i).getExceptionFlag()) { data.accumulate("key", searchResults.get(i).getKey()); if (!keysonly) { data.accumulate("value", searchResults.get(i).getValue()); data.accumulate("score", searchResults.get(i).getScore()); } } else { throw new UserErrorException(searchResults.get(i).getExceptionMessage()); } } return ResultBuilder.buildResult(data); }
@CliCommand(value = {CliStrings.ECHO}, help = CliStrings.ECHO__HELP) @CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GFSH}) public Result echo(@CliOption(key = {CliStrings.ECHO__STR, ""}, specifiedDefaultValue = "", mandatory = true, help = CliStrings.ECHO__STR__HELP) String stringToEcho) { Result result; if (stringToEcho.equals("$*")) { Gfsh gfshInstance = getGfsh(); Map<String, String> envMap = gfshInstance.getEnv(); Set<Map.Entry<String, String>> setEnvMap = envMap.entrySet(); TabularResultData resultData = buildResultForEcho(setEnvMap); result = ResultBuilder.buildResult(resultData); } else { result = ResultBuilder.createInfoResult(stringToEcho); } return result; }
@CliCommand(value = {CliStrings.DESCRIBE_CONNECTION}, help = CliStrings.DESCRIBE_CONNECTION__HELP) @CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GFSH, CliStrings.TOPIC_GEODE_JMX}) public Result describeConnection() { Result result; try { TabularResultData tabularResultData = ResultBuilder.createTabularResultData(); Gfsh gfshInstance = getGfsh(); if (gfshInstance.isConnectedAndReady()) { OperationInvoker operationInvoker = gfshInstance.getOperationInvoker(); // tabularResultData.accumulate("Monitored GemFire DS", operationInvoker.toString()); tabularResultData.accumulate("Connection Endpoints", operationInvoker.toString()); } else { tabularResultData.accumulate("Connection Endpoints", "Not connected"); } result = ResultBuilder.buildResult(tabularResultData); } catch (Exception e) { ErrorResultData errorResultData = ResultBuilder.createErrorResultData() .setErrorCode(ResultBuilder.ERRORCODE_DEFAULT).addLine(e.getMessage()); result = ResultBuilder.buildResult(errorResultData); } return result; } }
@CliCommand(value = {CliStrings.SET_VARIABLE}, help = CliStrings.SET_VARIABLE__HELP) @CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GFSH}) public Result setVariable( @CliOption(key = CliStrings.SET_VARIABLE__VAR, mandatory = true, help = CliStrings.SET_VARIABLE__VAR__HELP) String var, @CliOption(key = CliStrings.SET_VARIABLE__VALUE, mandatory = true, help = CliStrings.SET_VARIABLE__VALUE__HELP) String value) { Result result; try { getGfsh().setEnvProperty(var, String.valueOf(value)); result = ResultBuilder.createInfoResult("Value for variable " + var + " is now: " + value + "."); } catch (IllegalArgumentException e) { ErrorResultData errorResultData = ResultBuilder.createErrorResultData(); errorResultData.addLine(e.getMessage()); result = ResultBuilder.buildResult(errorResultData); } return result; } }
@CliCommand(value = {CliStrings.SH}, help = CliStrings.SH__HELP) @CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GFSH}) public Result sh( @CliOption(key = {"", CliStrings.SH__COMMAND}, mandatory = true, help = CliStrings.SH__COMMAND__HELP) String command, @CliOption(key = CliStrings.SH__USE_CONSOLE, specifiedDefaultValue = "true", unspecifiedDefaultValue = "false", help = CliStrings.SH__USE_CONSOLE__HELP) boolean useConsole) { Result result; try { result = ResultBuilder.buildResult(executeCommand(Gfsh.getCurrentInstance(), command, useConsole)); } catch (IllegalStateException | IOException e) { result = ResultBuilder.createUserErrorResult(e.getMessage()); LogWrapper.getInstance(getCache()) .warning("Unable to execute command \"" + command + "\". Reason:" + e.getMessage() + "."); } return result; }
@Test public void infoResultDataStructure() { InfoResultData result = ResultBuilder.createInfoResultData(); result.addLine("line 1"); result.addLine("line 2"); result.setHeader("Heads"); result.setFooter("Tails"); CommandResult cmdResult = ResultBuilder.buildResult(result); assertThat(cmdResult.getHeader()).isEqualTo("Heads"); assertThat(cmdResult.getListFromContent("message")).contains("line 1", "line 2"); assertThat(cmdResult.getFooter()).isEqualTo("Tails"); assertThat(cmdResult.getValueFromContent("message")).isNotEmpty(); assertThat(cmdResult.getStatus()).isEqualTo(Result.Status.OK); }
@Test public void compositeResultDataStructure() { CompositeResultData result = ResultBuilder.createCompositeResultData(); result.setHeader("Heads"); result.setFooter("Tails"); // build up an example result.addSection().addData("section 0 key", "section 0 value"); result.addSection().addTable().accumulate("table 1 column", "table 1 value"); CommandResult cmdResult = ResultBuilder.buildResult(result); assertThat(cmdResult.getHeader()).isEqualTo("Heads"); assertThat(cmdResult.getFooter()).isEqualTo("Tails"); assertThat(cmdResult.getMapFromSection("0").get("section 0 key")).isEqualTo("section 0 value"); Map<String, List<String>> table = cmdResult.getMapFromTableContent("1", "0"); assertThat(table.get("table 1 column")).contains("table 1 value"); }
@Test public void errorResultDataStructure() { ErrorResultData result = ResultBuilder.createErrorResultData(); result.addLine("line 1"); result.addLine("line 2"); result.setHeader("Heads"); result.setFooter("Tails"); CommandResult cmdResult = ResultBuilder.buildResult(result); assertThat(cmdResult.getHeader()).isEqualTo("Heads"); assertThat(cmdResult.getListFromContent("message")).contains("line 1", "line 2"); assertThat(cmdResult.getFooter()).isEqualTo("Tails"); assertThat(cmdResult.getValueFromContent("message")).isNotEmpty(); assertThat(cmdResult.getStatus()).isEqualTo(Result.Status.ERROR); }
@CliCommand(value = {CliStrings.DEBUG}, help = CliStrings.DEBUG__HELP) @CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GFSH, CliStrings.TOPIC_GEODE_DEBUG_UTIL}) public Result debug( @CliOption(key = CliStrings.DEBUG__STATE, unspecifiedDefaultValue = "OFF", mandatory = true, optionContext = "debug", help = CliStrings.DEBUG__STATE__HELP) String state) { Gfsh gfshInstance = Gfsh.getCurrentInstance(); if (gfshInstance != null) { // Handle state if (state.equalsIgnoreCase("ON")) { gfshInstance.setDebug(true); } else if (state.equalsIgnoreCase("OFF")) { gfshInstance.setDebug(false); } else { return ResultBuilder.createUserErrorResult( CliStrings.format(CliStrings.DEBUG__MSG_0_INVALID_STATE_VALUE, state)); } } else { ErrorResultData errorResultData = ResultBuilder.createErrorResultData().setErrorCode(ResultBuilder.ERRORCODE_DEFAULT) .addLine(CliStrings.ECHO__MSG__NO_GFSH_INSTANCE); return ResultBuilder.buildResult(errorResultData); } return ResultBuilder.createInfoResult(CliStrings.DEBUG__MSG_DEBUG_STATE_IS + state); } }
@Test public void tabularResultDataStructure() { TabularResultData result = ResultBuilder.createTabularResultData(); result.accumulate("column1", "value11"); result.accumulate("column1", "value12"); result.accumulate("column2", "value21"); result.accumulate("column2", "value22"); result.setHeader("Heads"); result.setFooter("Tails"); CommandResult cmdResult = ResultBuilder.buildResult(result); assertThat(cmdResult.getHeader()).isEqualTo("Heads"); assertThat(cmdResult.getFooter()).isEqualTo("Tails"); assertThat(cmdResult.getListFromContent("column1")).contains("value11", "value12"); assertThat(cmdResult.getListFromContent("column2")).contains("value21", "value22"); }
private String getPage(final LuceneSearchResults[] expectedResults, int[] indexList) { final TabularResultData data = ResultBuilder.createTabularResultData(); for (int i : indexList) { data.accumulate("key", expectedResults[i].getKey()); data.accumulate("value", expectedResults[i].getValue()); data.accumulate("score", expectedResults[i].getScore()); } CommandResult commandResult = ResultBuilder.buildResult(data); StringBuilder buffer = new StringBuilder(); while (commandResult.hasNextLine()) { buffer.append(commandResult.nextLine()); } return buffer.toString(); }
private Result getDestroyIndexResult(List<CliFunctionResult> cliFunctionResults, String indexName, String regionPath) { final TabularResultData tabularResult = ResultBuilder.createTabularResultData(); for (CliFunctionResult cliFunctionResult : cliFunctionResults) { tabularResult.accumulate("Member", cliFunctionResult.getMemberIdOrName()); if (cliFunctionResult.isSuccessful()) { tabularResult.accumulate("Status", indexName == null ? CliStrings.format( LuceneCliStrings.LUCENE_DESTROY_INDEX__MSG__SUCCESSFULLY_DESTROYED_INDEXES_FROM_REGION_0, new Object[] {regionPath}) : CliStrings.format( LuceneCliStrings.LUCENE_DESTROY_INDEX__MSG__SUCCESSFULLY_DESTROYED_INDEX_0_FROM_REGION_1, new Object[] {indexName, regionPath})); } else { tabularResult.accumulate("Status", cliFunctionResult.getMessage()); } } return ResultBuilder.buildResult(tabularResult); }
public static CommandResult buildResult(List<CliFunctionResult> functionResults, String header, String footer) { TabularResultData tabularData = ResultBuilder.createTabularResultData(); boolean success = false; for (CliFunctionResult result : functionResults) { tabularData.accumulate("Member", result.getMemberIdOrName()); tabularData.accumulate("Status", result.getLegacyStatus()); // if one member returns back successful results, the command results in success if (result.isSuccessful()) { success = true; } } if (header != null) { tabularData.setHeader(header); } if (footer != null) { tabularData.setFooter(footer); } tabularData.setStatus(success ? Result.Status.OK : Result.Status.ERROR); return ResultBuilder.buildResult(tabularData); }
@Test public void legacyErrorComparison() { // Create the legacy results ErrorResultData legacyError = ResultBuilder.createErrorResultData(); legacyError.addLine("This is a bad line"); legacyError.addLine("This is another bad line"); Result legacyResult = ResultBuilder.buildResult(legacyError); String legacyString = CommandResponseBuilder.createCommandResponseJson("server1", (CommandResult) legacyResult); CommandResult legacyErrorResult = ResultBuilder.fromJson(legacyString); // Create the new model results ResultModel newCrm = ResultModel.createError("This is a bad line"); newCrm.getInfoSections().get(0).addLine("This is another bad line"); String newModelString = CommandResponseBuilder.createCommandResponseJson("server1", newCrm); CommandResult newErrorModelResult = ResultBuilder.fromJson(newModelString); assertThat(legacyErrorResult.getMessageFromContent()) .isEqualTo(newErrorModelResult.getErrorMessage()); assertThat(readCommandOutput(newErrorModelResult)) .isEqualTo(readCommandOutput(legacyErrorResult)); }
@CliCommand(value = DESTROY_ASYNC_EVENT_QUEUE, help = DESTROY_ASYNC_EVENT_QUEUE__HELP) @ResourceOperation(resource = ResourcePermission.Resource.CLUSTER, operation = ResourcePermission.Operation.MANAGE) public Result destroyAsyncEventQueue( @CliOption(key = DESTROY_ASYNC_EVENT_QUEUE__ID, mandatory = true, help = DESTROY_ASYNC_EVENT_QUEUE__ID__HELP) String aeqId, @CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS}, optionContext = ConverterHint.MEMBERGROUP, help = DESTROY_ASYNC_EVENT_QUEUE__GROUP__HELP) String[] onGroups, @CliOption(key = IFEXISTS, help = IFEXISTS_HELP, specifiedDefaultValue = "true", unspecifiedDefaultValue = "false") boolean ifExists) throws Throwable { DestroyAsyncEventQueueFunctionArgs asyncEventQueueDestoryFunctionArgs = new DestroyAsyncEventQueueFunctionArgs(aeqId, ifExists); Set<DistributedMember> members = getMembers(onGroups, null); List<CliFunctionResult> functionResults = executeAndGetFunctionResult( new DestroyAsyncEventQueueFunction(), asyncEventQueueDestoryFunctionArgs, members); Result commandResult = ResultBuilder.buildResult(functionResults); XmlEntity xmlEntity = findXmlEntity(functionResults); if (xmlEntity != null) { persistClusterConfiguration(commandResult, () -> ((InternalConfigurationPersistenceService) getConfigurationPersistenceService()) .deleteXmlEntity(xmlEntity, onGroups)); } return commandResult; } }
@Test public void legacyTableComparison() { // Create the legacy results TabularResultData legacyTable = ResultBuilder.createTabularResultData(); legacyTable.setHeader("Heads"); legacyTable.accumulate("Name", "server1"); legacyTable.accumulate("Name", "server2"); legacyTable.accumulate("Id", "member name for server1"); legacyTable.accumulate("Id", "member name for server2"); legacyTable.setFooter("Tails"); Result legacyResult = ResultBuilder.buildResult(legacyTable); String legacyString = CommandResponseBuilder.createCommandResponseJson("server1", (CommandResult) legacyResult); CommandResult clientLegacyResult = ResultBuilder.fromJson(legacyString); // Create the new model results ResultModel newCrm = new ResultModel(); TabularResultModel modelTable = newCrm.addTable("0"); modelTable.setHeader("Heads"); modelTable.accumulate("Name", "server1"); modelTable.accumulate("Name", "server2"); modelTable.accumulate("Id", "member name for server1"); modelTable.accumulate("Id", "member name for server2"); modelTable.setFooter("Tails"); String newModelString = CommandResponseBuilder.createCommandResponseJson("server1", newCrm); CommandResult clientNewModelResult = ResultBuilder.fromJson(newModelString); assertThat(clientNewModelResult.getTableColumnValues("0", "Name")) .isEqualTo(clientLegacyResult.getTableColumnValues("Name")); assertThat(readCommandOutput(clientNewModelResult)) .isEqualTo(readCommandOutput(clientLegacyResult)); }