// Create and register schema for this agent.
String packageName = "com.profitron.gizmo";
// Declare a schema for a structured exception that can be used in failed method invocations.
SchemaObjectClass exception = new SchemaObjectClass(packageName, "exception");
exception.addProperty(new SchemaProperty("whatHappened", QmfType.TYPE_STRING));
exception.addProperty(new SchemaProperty("howBad", QmfType.TYPE_INT));
exception.addProperty(new SchemaProperty("details", QmfType.TYPE_MAP));
// Declare a control object to test methods against.
SchemaObjectClass control = new SchemaObjectClass(packageName, "control");
control.addProperty(new SchemaProperty("state", QmfType.TYPE_STRING));
control.addProperty(new SchemaProperty("methodCount", QmfType.TYPE_INT));
SchemaMethod stopMethod = new SchemaMethod("stop", "Stop Agent");
stopMethod.addArgument(new SchemaProperty("message", QmfType.TYPE_STRING));
control.addMethod(stopMethod);
SchemaMethod echoMethod = new SchemaMethod("echo", "Echo Arguments");
echoMethod.addArgument(new SchemaProperty("sequence", QmfType.TYPE_INT, "{dir:INOUT}"));
echoMethod.addArgument(new SchemaProperty("map", QmfType.TYPE_MAP, "{dir:INOUT}"));
control.addMethod(echoMethod);
SchemaMethod eventMethod = new SchemaMethod("event", "Raise an Event");
eventMethod.addArgument(new SchemaProperty("text", QmfType.TYPE_STRING, "{dir:IN}"));
eventMethod.addArgument(new SchemaProperty("severity", QmfType.TYPE_INT, "{dir:IN}"));
control.addMethod(eventMethod);
SchemaMethod failMethod = new SchemaMethod("fail", "Expected to Fail");
failMethod.addArgument(new SchemaProperty("useString", QmfType.TYPE_BOOL, "{dir:IN}"));
failMethod.addArgument(new SchemaProperty("stringVal", QmfType.TYPE_STRING, "{dir:IN}"));
failMethod.addArgument(new SchemaProperty("details", QmfType.TYPE_MAP, "{dir:IN}"));
control.addMethod(failMethod);
SchemaMethod createMethod = new SchemaMethod("create_child", "Create Child Object");
createMethod.addArgument(new SchemaProperty("name", QmfType.TYPE_STRING, "{dir:IN}"));
createMethod.addArgument(new SchemaProperty("childAddr", QmfType.TYPE_MAP, "{dir:OUT}"));
control.addMethod(createMethod);
// Declare the child class
SchemaObjectClass child = new SchemaObjectClass(packageName, "child");
child.addProperty(new SchemaProperty("name", QmfType.TYPE_STRING));
// Declare the event class
SchemaEventClass event = new SchemaEventClass(packageName, "event");
event.addProperty(new SchemaProperty("text", QmfType.TYPE_STRING));
System.out.println("Test3 Schema classes initialised OK");
// Now we create new instance of each class from the map encodings and list the values
// to check everything looks OK.
System.out.println("Test3 testing serialisation of exception schema");
SchemaObjectClass exceptionFromMap = new SchemaObjectClass(exception.mapEncode());
exceptionFromMap.listValues();
System.out.println();
System.out.println("Test3 testing serialisation of control schema");
SchemaObjectClass controlFromMap = new SchemaObjectClass(control.mapEncode());
controlFromMap.listValues();
System.out.println();
System.out.println("Test3 testing serialisation of child schema");
SchemaObjectClass childFromMap = new SchemaObjectClass(child.mapEncode());
childFromMap.listValues();
System.out.println();
System.out.println("Test3 testing serialisation of event schema");
SchemaEventClass eventFromMap = new SchemaEventClass(event.mapEncode());
eventFromMap.listValues();