aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/model-generator/src/main/java/org/onap/policy/apex/tools/model/generator/model2cli/Application.java43
-rw-r--r--tools/model-generator/src/main/java/org/onap/policy/apex/tools/model/generator/model2cli/Model2Cli.java52
-rw-r--r--tools/model-generator/src/main/java/org/onap/policy/apex/tools/model/generator/model2event/Application.java48
-rw-r--r--tools/model-generator/src/main/java/org/onap/policy/apex/tools/model/generator/model2event/Model2JsonEventSchema.java138
-rw-r--r--tools/simple-wsclient/src/main/java/org/onap/policy/apex/tools/simple/wsclient/Application.java84
-rw-r--r--tools/simple-wsclient/src/main/java/org/onap/policy/apex/tools/simple/wsclient/SimpleConsole.java41
-rw-r--r--tools/simple-wsclient/src/main/java/org/onap/policy/apex/tools/simple/wsclient/SimpleEcho.java49
-rw-r--r--tools/tools-common/src/main/java/org/onap/policy/apex/tools/common/Console.java38
8 files changed, 314 insertions, 179 deletions
diff --git a/tools/model-generator/src/main/java/org/onap/policy/apex/tools/model/generator/model2cli/Application.java b/tools/model-generator/src/main/java/org/onap/policy/apex/tools/model/generator/model2cli/Application.java
index b6c6b774c..70436150c 100644
--- a/tools/model-generator/src/main/java/org/onap/policy/apex/tools/model/generator/model2cli/Application.java
+++ b/tools/model-generator/src/main/java/org/onap/policy/apex/tools/model/generator/model2cli/Application.java
@@ -20,6 +20,8 @@
package org.onap.policy.apex.tools.model.generator.model2cli;
+import java.io.PrintStream;
+
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.HelpFormatter;
import org.onap.policy.apex.model.basicmodel.concepts.ApexException;
@@ -44,10 +46,15 @@ public final class Application {
/** The description 1-liner of the application. */
public static final String APP_DESCRIPTION = "generates CLI Editor Commands from a policy model";
+ // Input and output streams
+ private static final PrintStream OUT_STREAM = System.out;
+ private static final PrintStream ERR_STREAM = System.err;
+
/**
* Private constructor to prevent instantiation.
*/
- private Application() {}
+ private Application() {
+ }
/**
* Main method to start the application.
@@ -68,16 +75,16 @@ public final class Application {
// help is an exit option, print usage and exit
if (cmd.hasOption(CliOptions.HELP.getOpt())) {
final HelpFormatter formatter = new HelpFormatter();
- System.out.println(APP_NAME + " v" + cli.getAppVersion() + " - " + APP_DESCRIPTION);
+ OUT_STREAM.println(APP_NAME + " v" + cli.getAppVersion() + " - " + APP_DESCRIPTION);
formatter.printHelp(APP_NAME, cli.getOptions());
- System.out.println();
+ OUT_STREAM.println();
return;
}
// version is an exit option, print version and exit
if (cmd.hasOption(CliOptions.VERSION.getOpt())) {
- System.out.println(APP_NAME + " " + cli.getAppVersion());
- System.out.println();
+ OUT_STREAM.println(APP_NAME + " " + cli.getAppVersion());
+ OUT_STREAM.println();
return;
}
@@ -86,8 +93,8 @@ public final class Application {
modelFile = cmd.getOptionValue("model");
}
if (modelFile == null) {
- System.err.println(APP_NAME + ": no '-" + CliOptions.MODELFILE.getOpt()
- + "' model file given, cannot proceed (try -h for help)");
+ ERR_STREAM.println(APP_NAME + ": no '-" + CliOptions.MODELFILE.getOpt()
+ + "' model file given, cannot proceed (try -h for help)");
return;
}
@@ -95,27 +102,27 @@ public final class Application {
final String of = cmd.getOptionValue(CliOptions.FILEOUT.getOpt());
final boolean overwrite = cmd.hasOption(CliOptions.OVERWRITE.getOpt());
if (overwrite && of == null) {
- System.err.println(APP_NAME + ": error with '-" + CliOptions.OVERWRITE.getOpt()
- + "' option. This option is only valid if a '-" + CliOptions.FILEOUT.getOpt()
- + "' option is also used. Cannot proceed (try -h for help)");
+ ERR_STREAM.println(APP_NAME + ": error with '-" + CliOptions.OVERWRITE.getOpt()
+ + "' option. This option is only valid if a '-" + CliOptions.FILEOUT.getOpt()
+ + "' option is also used. Cannot proceed (try -h for help)");
return;
}
if (of != null) {
outfile = new OutputFile(of, overwrite);
final String isoutfileok = outfile.validate();
if (isoutfileok != null) {
- System.err.println(APP_NAME + ": error with '-" + CliOptions.FILEOUT.getOpt() + "' option: \""
- + isoutfileok + "\". Cannot proceed (try -h for help)");
+ ERR_STREAM.println(APP_NAME + ": error with '-" + CliOptions.FILEOUT.getOpt() + "' option: \""
+ + isoutfileok + "\". Cannot proceed (try -h for help)");
return;
}
}
if (outfile == null) {
- System.out.println();
- System.out.println(APP_NAME + ": starting CLI generator");
- System.out.println(" --> model file: " + modelFile);
- System.out.println();
- System.out.println();
+ OUT_STREAM.println();
+ OUT_STREAM.println(APP_NAME + ": starting CLI generator");
+ OUT_STREAM.println(" --> model file: " + modelFile);
+ OUT_STREAM.println();
+ OUT_STREAM.println();
}
try {
@@ -123,7 +130,7 @@ public final class Application {
app.runApp();
} catch (final ApexException aex) {
String message = APP_NAME + ": caught APEX exception with message: " + aex.getMessage();
- System.err.println(message);
+ ERR_STREAM.println(message);
LOGGER.warn(message, aex);
}
}
diff --git a/tools/model-generator/src/main/java/org/onap/policy/apex/tools/model/generator/model2cli/Model2Cli.java b/tools/model-generator/src/main/java/org/onap/policy/apex/tools/model/generator/model2cli/Model2Cli.java
index e6002208c..f58faf0eb 100644
--- a/tools/model-generator/src/main/java/org/onap/policy/apex/tools/model/generator/model2cli/Model2Cli.java
+++ b/tools/model-generator/src/main/java/org/onap/policy/apex/tools/model/generator/model2cli/Model2Cli.java
@@ -94,6 +94,7 @@ public class Model2Cli {
public Model2Cli(final String modelFile, final OutputFile outFile, final boolean validate, final String appName) {
Validate.notNull(modelFile, "Model2Cli: given model file name was blank");
Validate.notNull(appName, "Model2Cli: given application name was blank");
+
this.modelFile = modelFile;
this.outFile = outFile;
this.appName = appName;
@@ -133,6 +134,15 @@ public class Model2Cli {
}
}
+ return generateCli(codeGen, policyModel);
+ }
+
+ /**
+ * Generate the CLI from the model.
+ * @param codeGen the code generator
+ * @param policyModel the policy model
+ */
+ private int generateCli(final CodeGeneratorCliEditor codeGen, final AxPolicyModel policyModel) {
kig = new KeyInfoGetter(policyModel);
// Order is important. 0: model, 1: context schemas, 2: tasks, 3: events, 4: ContextAlbums, 5: Policies
@@ -145,7 +155,7 @@ public class Model2Cli {
final AxArtifactKey key = s.getKey();
codeGen.addSchemaDeclaration(kig.getName(key), kig.getVersion(key), kig.getUuid(key), kig.getDesc(key),
- s.getSchemaFlavour(), s.getSchema());
+ s.getSchemaFlavour(), s.getSchema());
}
// 2: tasks
@@ -158,7 +168,7 @@ public class Model2Cli {
final List<ST> contextRefs = getCtxtRefsForTask(codeGen, t);
codeGen.addTaskDeclaration(kig.getName(key), kig.getVersion(key), kig.getUuid(key), kig.getDesc(key),
- infields, outfields, logic, parameters, contextRefs);
+ infields, outfields, logic, parameters, contextRefs);
}
// 3: events
@@ -167,7 +177,7 @@ public class Model2Cli {
final List<ST> fields = getParametersForEvent(codeGen, e);
codeGen.addEventDeclaration(kig.getName(key), kig.getVersion(key), kig.getUuid(key), kig.getDesc(key),
- e.getNameSpace(), e.getSource(), e.getTarget(), fields);
+ e.getNameSpace(), e.getSource(), e.getTarget(), fields);
}
// 4: context albums
@@ -175,8 +185,8 @@ public class Model2Cli {
final AxArtifactKey key = a.getKey();
codeGen.addContextAlbumDeclaration(kig.getName(key), kig.getVersion(key), kig.getUuid(key),
- kig.getDesc(key), a.getScope(), a.isWritable(), kig.getName(a.getItemSchema()),
- kig.getVersion(a.getItemSchema()));
+ kig.getDesc(key), a.getScope(), a.isWritable(), kig.getName(a.getItemSchema()),
+ kig.getVersion(a.getItemSchema()));
}
// 5: policies
@@ -184,7 +194,7 @@ public class Model2Cli {
final AxArtifactKey key = p.getKey();
final List<ST> states = getStatesForPolicy(codeGen, p);
codeGen.addPolicyDefinition(kig.getName(key), kig.getVersion(key), kig.getUuid(key), kig.getDesc(key),
- p.getTemplate(), p.getFirstState(), states);
+ p.getTemplate(), p.getFirstState(), states);
}
final String out = codeGen.getModel().render();
@@ -205,6 +215,7 @@ public class Model2Cli {
} else {
LOGGER.error(out);
}
+
return 0;
}
@@ -222,7 +233,7 @@ public class Model2Cli {
final AxReferenceKey fkey = f.getKey();
final ST val = cg.createEventFieldDefinition(kig.getPName(fkey), kig.getPVersion(fkey), kig.getLName(fkey),
- kig.getName(f.getSchema()), kig.getVersion(f.getSchema()), f.getOptional());
+ kig.getName(f.getSchema()), kig.getVersion(f.getSchema()), f.getOptional());
ret.add(val);
}
@@ -243,7 +254,7 @@ public class Model2Cli {
for (final AxArtifactKey ckey : ctxs) {
final ST val = cg.createTaskDefinitionContextRef(kig.getName(tkey), kig.getVersion(tkey), kig.getName(ckey),
- kig.getVersion(ckey));
+ kig.getVersion(ckey));
ret.add(val);
}
@@ -264,7 +275,7 @@ public class Model2Cli {
final AxReferenceKey pkey = p.getKey();
final ST val = cg.createTaskDefinitionParameters(kig.getPName(pkey), kig.getPVersion(pkey),
- kig.getLName(pkey), p.getTaskParameterValue());
+ kig.getLName(pkey), p.getTaskParameterValue());
ret.add(val);
}
@@ -299,7 +310,7 @@ public class Model2Cli {
final AxReferenceKey fkey = f.getKey();
final ST val = cg.createTaskDefinitionOutfields(kig.getPName(fkey), kig.getPVersion(fkey),
- kig.getLName(fkey), kig.getName(f.getSchema()), kig.getVersion(f.getSchema()));
+ kig.getLName(fkey), kig.getName(f.getSchema()), kig.getVersion(f.getSchema()));
ret.add(val);
}
@@ -320,7 +331,7 @@ public class Model2Cli {
final AxReferenceKey fkey = f.getKey();
final ST val = cg.createTaskDefinitionInfields(kig.getPName(fkey), kig.getPVersion(fkey),
- kig.getLName(fkey), kig.getName(f.getSchema()), kig.getVersion(f.getSchema()));
+ kig.getLName(fkey), kig.getName(f.getSchema()), kig.getVersion(f.getSchema()));
ret.add(val);
}
@@ -346,8 +357,9 @@ public class Model2Cli {
final List<ST> ctxRefs = getCtxtRefsForState(cg, st);
final ST val = cg.createPolicyStateDef(kig.getPName(skey), kig.getPVersion(skey), kig.getLName(skey),
- kig.getName(st.getTrigger()), kig.getVersion(st.getTrigger()), kig.getName(st.getDefaultTask()),
- kig.getVersion(st.getDefaultTask()), outputs, tasks, tsLogic, finalizerLogics, ctxRefs);
+ kig.getName(st.getTrigger()), kig.getVersion(st.getTrigger()),
+ kig.getName(st.getDefaultTask()), kig.getVersion(st.getDefaultTask()), outputs, tasks,
+ tsLogic, finalizerLogics, ctxRefs);
ret.add(val);
}
@@ -369,7 +381,7 @@ public class Model2Cli {
final AxReferenceKey finkey = fin.getKey();
final ST val = cg.createPolicyStateDefFinalizerLogic(kig.getPName(skey), kig.getPVersion(skey),
- kig.getLName(skey), kig.getLName(finkey), fin.getLogicFlavour(), fin.getLogic());
+ kig.getLName(skey), kig.getLName(finkey), fin.getLogicFlavour(), fin.getLogic());
ret.add(val);
}
@@ -390,7 +402,7 @@ public class Model2Cli {
for (final AxArtifactKey ctx : ctxs) {
final ST val = cg.createPolicyStateDefContextRef(kig.getPName(skey), kig.getPVersion(skey),
- kig.getLName(skey), kig.getName(ctx), kig.getVersion(ctx));
+ kig.getLName(skey), kig.getName(ctx), kig.getVersion(ctx));
ret.add(val);
}
@@ -409,7 +421,7 @@ public class Model2Cli {
if (st.checkSetTaskSelectionLogic()) {
final AxTaskSelectionLogic tsl = st.getTaskSelectionLogic();
final ST val = cg.createPolicyStateDefTaskSelLogic(kig.getPName(skey), kig.getPVersion(skey),
- kig.getLName(skey), tsl.getLogicFlavour(), tsl.getLogic());
+ kig.getLName(skey), tsl.getLogicFlavour(), tsl.getLogic());
return Collections.singletonList(val);
} else {
return Collections.emptyList();
@@ -433,8 +445,8 @@ public class Model2Cli {
final AxReferenceKey trkey = tr.getKey();
final ST val = cg.createPolicyStateTask(kig.getPName(skey), kig.getPVersion(skey), kig.getLName(skey),
- kig.getLName(trkey), kig.getName(tkey), kig.getVersion(tkey), tr.getStateTaskOutputType().name(),
- kig.getLName(tr.getOutput()));
+ kig.getLName(trkey), kig.getName(tkey), kig.getVersion(tkey),
+ tr.getStateTaskOutputType().name(), kig.getLName(tr.getOutput()));
ret.add(val);
}
@@ -456,8 +468,8 @@ public class Model2Cli {
final AxReferenceKey outkey = out.getKey();
final ST val = cg.createPolicyStateOutput(kig.getPName(skey), kig.getPVersion(skey), kig.getLName(skey),
- kig.getLName(outkey), kig.getName(out.getOutgingEvent()), kig.getVersion(out.getOutgingEvent()),
- kig.getLName(out.getNextState()));
+ kig.getLName(outkey), kig.getName(out.getOutgingEvent()),
+ kig.getVersion(out.getOutgingEvent()), kig.getLName(out.getNextState()));
ret.add(val);
}
diff --git a/tools/model-generator/src/main/java/org/onap/policy/apex/tools/model/generator/model2event/Application.java b/tools/model-generator/src/main/java/org/onap/policy/apex/tools/model/generator/model2event/Application.java
index 9735293cf..a5600ead1 100644
--- a/tools/model-generator/src/main/java/org/onap/policy/apex/tools/model/generator/model2event/Application.java
+++ b/tools/model-generator/src/main/java/org/onap/policy/apex/tools/model/generator/model2event/Application.java
@@ -20,6 +20,8 @@
package org.onap.policy.apex.tools.model.generator.model2event;
+import java.io.PrintStream;
+
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.HelpFormatter;
import org.onap.policy.apex.model.basicmodel.concepts.ApexException;
@@ -44,7 +46,12 @@ public final class Application {
public static final String APP_DESCRIPTION = "generates JSON templates for events generated from a policy model";
/** Private constructor to prevent instantiation. */
- private Application() {}
+ private Application() {
+ }
+
+ // Input and output streams
+ private static final PrintStream OUT_STREAM = System.out;
+ private static final PrintStream ERR_STREAM = System.err;
/**
* Main method to start the application.
@@ -63,25 +70,34 @@ public final class Application {
// help is an exit option, print usage and exit
if (cmd.hasOption('h') || cmd.hasOption("help")) {
final HelpFormatter formatter = new HelpFormatter();
- System.out.println(APP_NAME + " v" + cli.getAppVersion() + " - " + APP_DESCRIPTION);
+ OUT_STREAM.println(APP_NAME + " v" + cli.getAppVersion() + " - " + APP_DESCRIPTION);
formatter.printHelp(APP_NAME, cli.getOptions());
- System.out.println();
+ OUT_STREAM.println();
return;
}
// version is an exit option, print version and exit
if (cmd.hasOption('v') || cmd.hasOption("version")) {
- System.out.println(APP_NAME + " " + cli.getAppVersion());
- System.out.println();
+ OUT_STREAM.println(APP_NAME + " " + cli.getAppVersion());
+ OUT_STREAM.println();
return;
}
+ generateJsonEventScheam(cmd);
+ }
+
+ /**
+ * Generate the JSON event schema.
+ *
+ * @param cmd the command to run
+ */
+ private static void generateJsonEventScheam(final CommandLine cmd) {
String modelFile = cmd.getOptionValue('m');
if (modelFile == null) {
modelFile = cmd.getOptionValue("model");
}
if (modelFile == null) {
- System.err.println(APP_NAME + ": no model file given, cannot proceed (try -h for help)");
+ ERR_STREAM.println(APP_NAME + ": no model file given, cannot proceed (try -h for help)");
return;
}
@@ -90,27 +106,27 @@ public final class Application {
type = cmd.getOptionValue("type");
}
if (type == null) {
- System.err.println(APP_NAME + ": no event type given, cannot proceed (try -h for help)");
+ ERR_STREAM.println(APP_NAME + ": no event type given, cannot proceed (try -h for help)");
return;
}
- if (!type.equals("stimuli") && !type.equals("response") && !type.equals("internal")) {
- System.err.println(APP_NAME + ": unknown type <" + type + ">, cannot proceed (try -h for help)");
+ if (!"stimuli".equals(type) && !"response".equals(type) && !"internal".equals(type)) {
+ ERR_STREAM.println(APP_NAME + ": unknown type <" + type + ">, cannot proceed (try -h for help)");
return;
}
- System.out.println();
- System.out.println(APP_NAME + ": starting Event generator");
- System.out.println(" --> model file: " + modelFile);
- System.out.println(" --> type: " + type);
- System.out.println();
- System.out.println();
+ OUT_STREAM.println();
+ OUT_STREAM.println(APP_NAME + ": starting Event generator");
+ OUT_STREAM.println(" --> model file: " + modelFile);
+ OUT_STREAM.println(" --> type: " + type);
+ OUT_STREAM.println();
+ OUT_STREAM.println();
try {
final Model2JsonEventSchema app = new Model2JsonEventSchema(modelFile, type, APP_NAME);
app.runApp();
} catch (final ApexException aex) {
String message = APP_NAME + ": caught APEX exception with message: " + aex.getMessage();
- System.err.println(message);
+ ERR_STREAM.println(message);
LOGGER.warn(message, aex);
}
}
diff --git a/tools/model-generator/src/main/java/org/onap/policy/apex/tools/model/generator/model2event/Model2JsonEventSchema.java b/tools/model-generator/src/main/java/org/onap/policy/apex/tools/model/generator/model2event/Model2JsonEventSchema.java
index 6acbbbc02..cfd7cb357 100644
--- a/tools/model-generator/src/main/java/org/onap/policy/apex/tools/model/generator/model2event/Model2JsonEventSchema.java
+++ b/tools/model-generator/src/main/java/org/onap/policy/apex/tools/model/generator/model2event/Model2JsonEventSchema.java
@@ -82,6 +82,7 @@ public class Model2JsonEventSchema {
Validate.notNull(modelFile, "Model2JsonEvent: given model file name was blank");
Validate.notNull(type, "Model2JsonEvent: given type was blank");
Validate.notNull(appName, "Model2JsonEvent: given application name was blank");
+
this.modelFile = modelFile;
this.type = type;
this.appName = appName;
@@ -124,13 +125,7 @@ public class Model2JsonEventSchema {
break;
case RECORD:
- ret = stg.getInstanceOf("fieldTypeRecord");
- for (final Field field : schema.getFields()) {
- final ST st = stg.getInstanceOf("field");
- st.add("name", field.name());
- st.add("type", this.addFieldType(field.schema(), stg));
- ret.add("fields", st);
- }
+ ret = processRecord(schema, stg);
break;
case NULL:
@@ -144,11 +139,29 @@ public class Model2JsonEventSchema {
}
/**
+ * Process a record entry.
+ * @param schema the schema to add a type for
+ * @param stg the STG
+ * @return a template with the type
+ */
+ private ST processRecord(final Schema schema, final STGroup stg) {
+ ST ret;
+ ret = stg.getInstanceOf("fieldTypeRecord");
+ for (final Field field : schema.getFields()) {
+ final ST st = stg.getInstanceOf("field");
+ st.add("name", field.name());
+ st.add("type", this.addFieldType(field.schema(), stg));
+ ret.add("fields", st);
+ }
+ return ret;
+ }
+
+ /**
* Runs the application.
*
*
- * @return status of the application execution, 0 for success, positive integer for exit
- * condition (such as help or version), negative integer for errors
+ * @return status of the application execution, 0 for success, positive integer for exit condition (such as help or
+ * version), negative integer for errors
* @throws ApexException if any problem occurred in the model
*/
public int runApp() throws ApexException {
@@ -174,41 +187,13 @@ public class Model2JsonEventSchema {
final AxPolicies policies = policyModel.getPolicies();
switch (type) {
case "stimuli":
- for (final AxPolicy policy : policies.getPolicyMap().values()) {
- final String firsState = policy.getFirstState();
- for (final AxState state : policy.getStateMap().values()) {
- if (state.getKey().getLocalName().equals(firsState)) {
- eventKeys.add(state.getTrigger());
- }
- }
- }
+ processStimuli(eventKeys, policies);
break;
case "response":
- for (final AxPolicy policy : policies.getPolicyMap().values()) {
- for (final AxState state : policy.getStateMap().values()) {
- if (state.getNextStateSet().iterator().next().equals("NULL")) {
- for (final AxStateOutput output : state.getStateOutputs().values()) {
- eventKeys.add(output.getOutgingEvent());
- }
- }
- }
- }
+ processResponse(eventKeys, policies);
break;
case "internal":
- for (final AxPolicy policy : policies.getPolicyMap().values()) {
- final String firsState = policy.getFirstState();
- for (final AxState state : policy.getStateMap().values()) {
- if (state.getKey().getLocalName().equals(firsState)) {
- continue;
- }
- if (state.getNextStateSet().iterator().next().equals("NULL")) {
- continue;
- }
- for (final AxStateOutput output : state.getStateOutputs().values()) {
- eventKeys.add(output.getOutgingEvent());
- }
- }
- }
+ processInternal(eventKeys, policies);
break;
default:
LOGGER.error("{}: unknown type <{}>, cannot proceed", appName, type);
@@ -253,6 +238,79 @@ public class Model2JsonEventSchema {
}
/**
+ * Process the "stimuli" keyword.
+ * @param eventKeys the event keys
+ * @param policies the policies to process
+ */
+ private void processStimuli(final Set<AxArtifactKey> eventKeys, final AxPolicies policies) {
+ for (final AxPolicy policy : policies.getPolicyMap().values()) {
+ final String firsState = policy.getFirstState();
+ for (final AxState state : policy.getStateMap().values()) {
+ if (state.getKey().getLocalName().equals(firsState)) {
+ eventKeys.add(state.getTrigger());
+ }
+ }
+ }
+ }
+
+ /**
+ * Process the "response" keyword.
+ * @param eventKeys the event keys
+ * @param policies the policies to process
+ */
+ private void processResponse(final Set<AxArtifactKey> eventKeys, final AxPolicies policies) {
+ for (final AxPolicy policy : policies.getPolicyMap().values()) {
+ processState(eventKeys, policy);
+ }
+ }
+
+ /**
+ * Process the state in the response.
+ * @param eventKeys the event keys
+ * @param policies the policies to process
+ */
+ private void processState(final Set<AxArtifactKey> eventKeys, final AxPolicy policy) {
+ for (final AxState state : policy.getStateMap().values()) {
+ if ("NULL".equals(state.getNextStateSet().iterator().next())) {
+ for (final AxStateOutput output : state.getStateOutputs().values()) {
+ eventKeys.add(output.getOutgingEvent());
+ }
+ }
+ }
+ }
+
+ /**
+ * Process the "internal" keyword.
+ * @param eventKeys the event keys
+ * @param policies the policies to process
+ */
+ private void processInternal(final Set<AxArtifactKey> eventKeys, final AxPolicies policies) {
+ for (final AxPolicy policy : policies.getPolicyMap().values()) {
+ final String firsState = policy.getFirstState();
+ for (final AxState state : policy.getStateMap().values()) {
+ processInternalState(eventKeys, firsState, state);
+ }
+ }
+ }
+
+ /**
+ * Process the internal state.
+ * @param eventKeys the event keys
+ * @param policies the policies to process
+ */
+ private void processInternalState(final Set<AxArtifactKey> eventKeys, final String firsState, final AxState state) {
+ if (state.getKey().getLocalName().equals(firsState)) {
+ return;
+ }
+ if ("NULL".equals(state.getNextStateSet().iterator().next())) {
+ return;
+ }
+ for (final AxStateOutput output : state.getStateOutputs().values()) {
+ eventKeys.add(output.getOutgingEvent());
+ }
+ }
+
+ /**
* Adds a field to the output.
*
* @param field the field from the event
diff --git a/tools/simple-wsclient/src/main/java/org/onap/policy/apex/tools/simple/wsclient/Application.java b/tools/simple-wsclient/src/main/java/org/onap/policy/apex/tools/simple/wsclient/Application.java
index 7c7d7e9c6..e0b819f60 100644
--- a/tools/simple-wsclient/src/main/java/org/onap/policy/apex/tools/simple/wsclient/Application.java
+++ b/tools/simple-wsclient/src/main/java/org/onap/policy/apex/tools/simple/wsclient/Application.java
@@ -21,6 +21,7 @@
package org.onap.policy.apex.tools.simple.wsclient;
import java.io.IOException;
+import java.io.PrintStream;
import java.net.URISyntaxException;
import java.nio.channels.NotYetConnectedException;
@@ -41,10 +42,16 @@ public final class Application {
// Get a reference to the logger
private static final Logger LOGGER = LoggerFactory.getLogger(Application.class);
+ // Input and output streams
+ private static final PrintStream OUT_STREAM = System.out;
+ private static final PrintStream ERR_STREAM = System.err;
+
/**
* Private constructor prevents subclassing.
*/
- private Application() {}
+ private Application() {
+ // Prevent subclassing
+ }
/**
* The main method for the WS applications.
@@ -74,19 +81,29 @@ public final class Application {
// help is an exit option, print usage and exit
if (cmd.hasOption('h') || cmd.hasOption("help")) {
final HelpFormatter formatter = new HelpFormatter();
- System.out.println(appName + " v" + cli.getAppVersion() + " - " + appDescr);
+ OUT_STREAM.println(appName + " v" + cli.getAppVersion() + " - " + appDescr);
formatter.printHelp(appName, cli.getOptions());
- System.out.println();
+ OUT_STREAM.println();
return;
}
// version is an exit option, print version and exit
if (cmd.hasOption('v') || cmd.hasOption("version")) {
- System.out.println(appName + " " + cli.getAppVersion());
- System.out.println();
+ OUT_STREAM.println(appName + " " + cli.getAppVersion());
+ OUT_STREAM.println();
return;
}
+ runConsoleOrEcho(appName, console, cmd);
+ }
+
+ /**
+ * Run the console or echo.
+ * @param appName the application name
+ * @param console if true, run the console otherwise run echo
+ * @param cmd the command line to run
+ */
+ private static void runConsoleOrEcho(String appName, boolean console, final CommandLine cmd) {
String server = cmd.getOptionValue('s');
if (server == null) {
server = cmd.getOptionValue("server");
@@ -108,7 +125,6 @@ public final class Application {
} else {
runEcho(server, port, appName);
}
-
}
/**
@@ -123,30 +139,30 @@ public final class Application {
Validate.notBlank(port);
Validate.notBlank(appName);
- System.out.println();
- System.out.println(appName + ": starting simple event echo");
- System.out.println(" --> server: " + server);
- System.out.println(" --> port: " + port);
- System.out.println();
- System.out.println("Once started, the application will simply print out all received events to standard out.");
- System.out.println("Each received event will be prefixed by '---' and suffixed by '===='");
- System.out.println();
- System.out.println();
+ OUT_STREAM.println();
+ OUT_STREAM.println(appName + ": starting simple event echo");
+ OUT_STREAM.println(" --> server: " + server);
+ OUT_STREAM.println(" --> port: " + port);
+ OUT_STREAM.println();
+ OUT_STREAM.println("Once started, the application will simply print out all received events to standard out.");
+ OUT_STREAM.println("Each received event will be prefixed by '---' and suffixed by '===='");
+ OUT_STREAM.println();
+ OUT_STREAM.println();
try {
- final SimpleEcho simpleEcho = new SimpleEcho(server, port, appName);
+ final SimpleEcho simpleEcho = new SimpleEcho(server, port, appName, OUT_STREAM, ERR_STREAM);
simpleEcho.connect();
} catch (final URISyntaxException uex) {
String message = appName + ": URI exception, could not create URI from server and port settings";
- System.err.println(message);
+ ERR_STREAM.println(message);
LOGGER.warn(message, uex);
} catch (final NullPointerException nex) {
String message = appName + ": null pointer, server or port were null";
- System.err.println(message);
+ ERR_STREAM.println(message);
LOGGER.warn(message, nex);
} catch (final IllegalArgumentException iex) {
String message = appName + ": illegal argument, server or port were blank";
- System.err.println(message);
+ ERR_STREAM.println(message);
LOGGER.warn(message, iex);
}
}
@@ -163,38 +179,38 @@ public final class Application {
Validate.notBlank(port);
Validate.notBlank(appName);
- System.out.println();
- System.out.println(appName + ": starting simple event console");
- System.out.println(" --> server: " + server);
- System.out.println(" --> port: " + port);
- System.out.println();
- System.out.println(" - terminate the application typing 'exit<enter>' or using 'CTRL+C'");
- System.out.println(" - events are created by a non-blank starting line and terminated by a blank line");
- System.out.println();
- System.out.println();
+ OUT_STREAM.println();
+ OUT_STREAM.println(appName + ": starting simple event console");
+ OUT_STREAM.println(" --> server: " + server);
+ OUT_STREAM.println(" --> port: " + port);
+ OUT_STREAM.println();
+ OUT_STREAM.println(" - terminate the application typing 'exit<enter>' or using 'CTRL+C'");
+ OUT_STREAM.println(" - events are created by a non-blank starting line and terminated by a blank line");
+ OUT_STREAM.println();
+ OUT_STREAM.println();
try {
- final SimpleConsole simpleConsole = new SimpleConsole(server, port, appName);
+ final SimpleConsole simpleConsole = new SimpleConsole(server, port, appName, OUT_STREAM, ERR_STREAM);
simpleConsole.runClient();
} catch (final URISyntaxException uex) {
String message = appName + ": URI exception, could not create URI from server and port settings";
- System.err.println(message);
+ ERR_STREAM.println(message);
LOGGER.warn(message, uex);
} catch (final NullPointerException nex) {
String message = appName + ": null pointer, server or port were null";
- System.err.println(message);
+ ERR_STREAM.println(message);
LOGGER.warn(message, nex);
} catch (final IllegalArgumentException iex) {
String message = appName + ": illegal argument, server or port were blank";
- System.err.println(message);
+ ERR_STREAM.println(message);
LOGGER.warn(message, iex);
} catch (final NotYetConnectedException nex) {
String message = appName + ": not yet connected, connection to server took too long";
- System.err.println(message);
+ ERR_STREAM.println(message);
LOGGER.warn(message, nex);
} catch (final IOException ioe) {
String message = appName + ": IO exception, something went wrong on the standard input";
- System.err.println(message);
+ ERR_STREAM.println(message);
LOGGER.warn(message, ioe);
}
}
diff --git a/tools/simple-wsclient/src/main/java/org/onap/policy/apex/tools/simple/wsclient/SimpleConsole.java b/tools/simple-wsclient/src/main/java/org/onap/policy/apex/tools/simple/wsclient/SimpleConsole.java
index bb38a37a0..28c494207 100644
--- a/tools/simple-wsclient/src/main/java/org/onap/policy/apex/tools/simple/wsclient/SimpleConsole.java
+++ b/tools/simple-wsclient/src/main/java/org/onap/policy/apex/tools/simple/wsclient/SimpleConsole.java
@@ -23,6 +23,7 @@ package org.onap.policy.apex.tools.simple.wsclient;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
+import java.io.PrintStream;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.channels.NotYetConnectedException;
@@ -41,6 +42,10 @@ public class SimpleConsole extends WebSocketClient {
/** Application name, used as prompt. */
private final String appName;
+
+ // Output and error streams
+ private PrintStream outStream;
+ private PrintStream errStream;
/**
* Creates a new simple echo object.
@@ -48,51 +53,57 @@ public class SimpleConsole extends WebSocketClient {
* @param server the name of the server as either IP address or fully qualified host name, must not be blank
* @param port the port to be used, must not be blank
* @param appName the application name, used as prompt, must not be blank
+ * @param outStream the stream for message output
+ * @param errStream the stream for error messages
* @throws URISyntaxException is URI could not be created from server/port settings
* @throws RuntimeException if server or port where blank
*/
- public SimpleConsole(final String server, final String port, final String appName) throws URISyntaxException {
+ public SimpleConsole(final String server, final String port, final String appName, PrintStream outStream,
+ PrintStream errStream) throws URISyntaxException {
super(new URI("ws://" + server + ":" + port));
Validate.notBlank(appName, "SimpleConsole: given application name was blank");
+
this.appName = appName;
+ this.outStream = outStream;
+ this.errStream = errStream;
}
@Override
public void onClose(final int code, final String reason, final boolean remote) {
- System.out.println(this.appName + ": Connection closed by " + (remote ? "APEX" : "me"));
- System.out.print(" ==-->> ");
+ outStream.println(this.appName + ": Connection closed by " + (remote ? "APEX" : "me"));
+ outStream.print(" ==-->> ");
switch (code) {
case CloseFrame.NORMAL:
- System.out.println("normal");
+ outStream.println("normal");
break;
case CloseFrame.GOING_AWAY:
- System.out.println("APEX going away");
+ outStream.println("APEX going away");
break;
case CloseFrame.PROTOCOL_ERROR:
- System.out.println("some protocol error");
+ outStream.println("some protocol error");
break;
case CloseFrame.REFUSE:
- System.out.println("received unacceptable type of data");
+ outStream.println("received unacceptable type of data");
break;
case CloseFrame.NO_UTF8:
- System.out.println("expected UTF-8, found something else");
+ outStream.println("expected UTF-8, found something else");
break;
case CloseFrame.TOOBIG:
- System.out.println("message too big");
+ outStream.println("message too big");
break;
case CloseFrame.UNEXPECTED_CONDITION:
- System.out.println("unexpected server condition");
+ outStream.println("unexpected server condition");
break;
default:
- System.out.println("unkown close frame code");
+ outStream.println("unkown close frame code");
break;
}
- System.out.print(" ==-->> " + reason);
+ outStream.print(" ==-->> " + reason);
}
@Override
public void onError(final Exception ex) {
- System.err.println(this.appName + ": " + ex.getMessage());
+ errStream.println(this.appName + ": " + ex.getMessage());
}
@Override
@@ -102,7 +113,7 @@ public class SimpleConsole extends WebSocketClient {
@Override
public void onOpen(final ServerHandshake handshakedata) {
- System.out.println(this.appName + ": opened connection to APEX (" + handshakedata.getHttpStatusMessage() + ")");
+ outStream.println(this.appName + ": opened connection to APEX (" + handshakedata.getHttpStatusMessage() + ")");
}
/**
@@ -125,7 +136,7 @@ public class SimpleConsole extends WebSocketClient {
String event = "";
String line;
while ((line = in.readLine()) != null) {
- if (line.equals("exit")) {
+ if ("exit".equals(line)) {
break;
}
diff --git a/tools/simple-wsclient/src/main/java/org/onap/policy/apex/tools/simple/wsclient/SimpleEcho.java b/tools/simple-wsclient/src/main/java/org/onap/policy/apex/tools/simple/wsclient/SimpleEcho.java
index 4b67cb862..659dd77eb 100644
--- a/tools/simple-wsclient/src/main/java/org/onap/policy/apex/tools/simple/wsclient/SimpleEcho.java
+++ b/tools/simple-wsclient/src/main/java/org/onap/policy/apex/tools/simple/wsclient/SimpleEcho.java
@@ -20,6 +20,7 @@
package org.onap.policy.apex.tools.simple.wsclient;
+import java.io.PrintStream;
import java.net.URI;
import java.net.URISyntaxException;
@@ -38,71 +39,81 @@ public class SimpleEcho extends WebSocketClient {
/** Application name, used as prompt. */
private final String appName;
+ // Output and error streams
+ private PrintStream outStream;
+ private PrintStream errStream;
+
/**
* Creates a new simple echo object.
*
* @param server the name of the server as either IP address or fully qualified host name, must not be blank
* @param port the port to be used, must not be blank
* @param appName the application name, used as prompt, must not be blank
+ * @param outStream the stream for message output
+ * @param errStream the stream for error messages
* @throws URISyntaxException is URI could not be created from server/port settings
* @throws RuntimeException if server or port where blank
*/
- public SimpleEcho(final String server, final String port, final String appName) throws URISyntaxException {
+ public SimpleEcho(final String server, final String port, final String appName, PrintStream outStream,
+ PrintStream errStream) throws URISyntaxException {
super(new URI("ws://" + server + ":" + port));
Validate.notBlank(appName, "SimpleEcho: given application name was blank");
+
this.appName = appName;
+ this.outStream = outStream;
+ this.errStream = errStream;
}
@Override
public void onClose(final int code, final String reason, final boolean remote) {
- System.out.println(this.appName + ": Connection closed by " + (remote ? "APEX" : "me"));
- System.out.print(" ==-->> ");
+ outStream.println(this.appName + ": Connection closed by " + (remote ? "APEX" : "me"));
+ outStream.print(" ==-->> ");
switch (code) {
case CloseFrame.NORMAL:
- System.out.println("normal");
+ outStream.println("normal");
break;
case CloseFrame.GOING_AWAY:
- System.out.println("APEX going away");
+ outStream.println("APEX going away");
break;
case CloseFrame.PROTOCOL_ERROR:
- System.out.println("some protocol error");
+ outStream.println("some protocol error");
break;
case CloseFrame.REFUSE:
- System.out.println("received unacceptable type of data");
+ outStream.println("received unacceptable type of data");
break;
case CloseFrame.NO_UTF8:
- System.out.println("expected UTF-8, found something else");
+ outStream.println("expected UTF-8, found something else");
break;
case CloseFrame.TOOBIG:
- System.out.println("message too big");
+ outStream.println("message too big");
break;
case CloseFrame.UNEXPECTED_CONDITION:
- System.out.println("unexpected server condition");
+ outStream.println("unexpected server condition");
break;
default:
- System.out.println("unkown close frame code");
+ outStream.println("unkown close frame code");
break;
}
- System.out.print(" ==-->> " + reason);
+ outStream.print(" ==-->> " + reason);
}
@Override
public void onError(final Exception ex) {
- System.err.println(this.appName + ": " + ex.getMessage());
+ errStream.println(this.appName + ": " + ex.getMessage());
}
@Override
public void onMessage(final String message) {
- System.out.println(this.appName + ": received");
- System.out.println("---------------------------------");
- System.out.println(message);
- System.out.println("=================================");
- System.out.println();
+ outStream.println(this.appName + ": received");
+ outStream.println("---------------------------------");
+ outStream.println(message);
+ outStream.println("=================================");
+ outStream.println();
}
@Override
public void onOpen(final ServerHandshake handshakedata) {
- System.out.println(this.appName + ": opened connection to APEX (" + handshakedata.getHttpStatusMessage() + ")");
+ outStream.println(this.appName + ": opened connection to APEX (" + handshakedata.getHttpStatusMessage() + ")");
}
}
diff --git a/tools/tools-common/src/main/java/org/onap/policy/apex/tools/common/Console.java b/tools/tools-common/src/main/java/org/onap/policy/apex/tools/common/Console.java
index 267584952..1b4ef06c4 100644
--- a/tools/tools-common/src/main/java/org/onap/policy/apex/tools/common/Console.java
+++ b/tools/tools-common/src/main/java/org/onap/policy/apex/tools/common/Console.java
@@ -20,6 +20,7 @@
package org.onap.policy.apex.tools.common;
+import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;
@@ -72,6 +73,9 @@ public final class Console {
/** Configuration for a collecting warning messages. */
public static final int CONFIG_COLLECT_WARNINGS = 0b0010;
+ // Input and output streams
+ private static final PrintStream ERR_STREAM = System.err;
+
/** The setting for message types, set using type flags. */
private int types;
@@ -193,7 +197,7 @@ public final class Console {
err.append(MessageFormatter.arrayFormat(message, objects).getMessage());
if ((types & TYPE_ERROR) == TYPE_ERROR) {
- System.err.println(err.build());
+ ERR_STREAM.println(err.build());
}
if ((configuration & CONFIG_COLLECT_ERRORS) == CONFIG_COLLECT_ERRORS) {
errors.add(err.build());
@@ -222,7 +226,7 @@ public final class Console {
warn.append(MessageFormatter.arrayFormat(message, objects).getMessage());
if ((types & TYPE_WARNING) == TYPE_WARNING) {
- System.err.println(warn.build());
+ ERR_STREAM.println(warn.build());
}
if ((configuration & CONFIG_COLLECT_WARNINGS) == CONFIG_COLLECT_WARNINGS) {
warnings.add(warn.build());
@@ -243,9 +247,9 @@ public final class Console {
if ((types & TYPE_INFO) == TYPE_INFO) {
if (appName != null) {
- System.err.print(appName + ": ");
+ ERR_STREAM.print(appName + ": ");
}
- System.err.println(MessageFormatter.arrayFormat(message, objects).getMessage());
+ ERR_STREAM.println(MessageFormatter.arrayFormat(message, objects).getMessage());
}
}
@@ -263,10 +267,10 @@ public final class Console {
if ((types & TYPE_PROGRESS) == TYPE_PROGRESS) {
if (appName != null) {
- System.err.print(appName + ": ");
+ ERR_STREAM.print(appName + ": ");
}
- System.err.print("progress: ");
- System.err.println(MessageFormatter.arrayFormat(message, objects).getMessage());
+ ERR_STREAM.print("progress: ");
+ ERR_STREAM.println(MessageFormatter.arrayFormat(message, objects).getMessage());
}
}
@@ -284,10 +288,10 @@ public final class Console {
if ((types & TYPE_DEBUG) == TYPE_DEBUG) {
if (appName != null) {
- System.err.print(appName + ": ");
+ ERR_STREAM.print(appName + ": ");
}
- System.err.print("debug: ");
- System.err.println(MessageFormatter.arrayFormat(message, objects).getMessage());
+ ERR_STREAM.print("debug: ");
+ ERR_STREAM.println(MessageFormatter.arrayFormat(message, objects).getMessage());
}
}
@@ -305,10 +309,10 @@ public final class Console {
if ((types & TYPE_TRACE) == TYPE_TRACE) {
if (appName != null) {
- System.err.print(appName + ": ");
+ ERR_STREAM.print(appName + ": ");
}
- System.err.print("trace: ");
- System.err.println(MessageFormatter.arrayFormat(message, objects).getMessage());
+ ERR_STREAM.print("trace: ");
+ ERR_STREAM.println(MessageFormatter.arrayFormat(message, objects).getMessage());
}
}
@@ -324,13 +328,13 @@ public final class Console {
if ((types & TYPE_STACKTRACE) == TYPE_STACKTRACE) {
if (appName != null) {
- System.err.print(appName + ": ");
+ ERR_STREAM.print(appName + ": ");
}
- System.err.println(" exception message: " + exception.getMessage());
+ ERR_STREAM.println(" exception message: " + exception.getMessage());
if (exception.getCause() != null) {
- System.err.println(" exception cause: " + exception.getCause());
+ ERR_STREAM.println(" exception cause: " + exception.getCause());
}
- System.err.println("for exception stack trace, please refer logs.");
+ ERR_STREAM.println("for exception stack trace, please refer logs.");
XLoggerFactory.getXLogger(Console.class).error("stacktrace", exception);
}
}