GCMVirtualNode VN1 = gcmad.getVirtualNode("VN1");
GCMVirtualNode VN2 = gcmad.getVirtualNode("VN2");
VN1.waitReady();
VN2.waitReady();
Component boot = Utils.getBootstrapComponent();
PAGCMTypeFactory tf = Utils.getPAGCMTypeFactory(boot);
PAGenericFactory gf = Utils.getPAGenericFactory(boot);
ComponentType tTest = tf.createFcType(new InterfaceType[] {
tf.createGCMItfType(
"runnable",
MSRunnable.class.getName(),
GCMTypeFactory.SERVER,
GCMTypeFactory.MANDATORY,
GCMTypeFactory.SINGLETON_CARDINALITY),
tf.createGCMItfType(
"scc",
SkandiumComponentController.class.getName(),
GCMTypeFactory.SERVER,
GCMTypeFactory.OPTIONAL,
GCMTypeFactory.SINGLETON_CARDINALITY)
});
ComponentType tMergeSort = tf.createFcType(new InterfaceType[] {
tf.createGCMItfType(
"runnable",
MSRunnable.class.getName(),
GCMTypeFactory.SERVER,
GCMTypeFactory.MANDATORY,
GCMTypeFactory.SINGLETON_CARDINALITY),
tf.createGCMItfType(
"sc",
SkandiumComponent.class.getName(),
GCMTypeFactory.CLIENT,
GCMTypeFactory.MANDATORY,
GCMTypeFactory.SINGLETON_CARDINALITY),
tf.createGCMItfType(
"scrr",
SCResultReceiver.class.getName(),
GCMTypeFactory.SERVER,
GCMTypeFactory.MANDATORY,
GCMTypeFactory.SINGLETON_CARDINALITY)
});
ComponentType tSC = tf.createFcType(new InterfaceType[] {
tf.createGCMItfType(
"sc",
SkandiumComponent.class.getName(),
GCMTypeFactory.SERVER,
GCMTypeFactory.MANDATORY,
GCMTypeFactory.SINGLETON_CARDINALITY),
tf.createGCMItfType(
"scrr",
SCResultReceiver.class.getName(),
GCMTypeFactory.CLIENT,
GCMTypeFactory.OPTIONAL,
GCMTypeFactory.SINGLETON_CARDINALITY),
tf.createGCMItfType(
"sctS",
SCTransmitter.class.getName(),
GCMTypeFactory.SERVER,
GCMTypeFactory.MANDATORY,
GCMTypeFactory.SINGLETON_CARDINALITY),
tf.createGCMItfType(
"sct",
SCTransmitter.class.getName(),
GCMTypeFactory.CLIENT,
GCMTypeFactory.OPTIONAL,
GCMTypeFactory.SINGLETON_CARDINALITY),
tf.createGCMItfType(
"scrS",
SCReceiver.class.getName(),
GCMTypeFactory.SERVER,
GCMTypeFactory.MANDATORY,
GCMTypeFactory.SINGLETON_CARDINALITY),
tf.createGCMItfType(
"scr",
SCReceiver.class.getName(),
GCMTypeFactory.CLIENT,
GCMTypeFactory.OPTIONAL,
GCMTypeFactory.SINGLETON_CARDINALITY),
tf.createGCMItfType(
"scc",
SkandiumComponentController.class.getName(),
GCMTypeFactory.SERVER,
GCMTypeFactory.OPTIONAL,
GCMTypeFactory.SINGLETON_CARDINALITY)
});
Node N1A = VN1.getANode();
Node N1B = VN1.getANode();
Node N1C = VN1.getANode();
Node N2 = VN2.getANode();
Component testComponent = gf.newFcInstance(
tTest,
new ControllerDescription("testComponent", Constants.COMPOSITE),
null,
N1A);
Component mergeSortComponent = gf.newFcInstance(
tMergeSort,
new ControllerDescription("mergeSortComponent", Constants.PRIMITIVE),
new ContentDescription(MergeSort.class.getName()),
N1B);
Component SC1 = gf.newFcInstance(
tSC,
new ControllerDescription("SC1", Constants.PRIMITIVE),
new ContentDescription(SkandiumComponentImp.class.getName()),
N1C);
Component SC2 = gf.newFcInstance(
tSC,
new ControllerDescription("SC2", Constants.PRIMITIVE),
new ContentDescription(SkandiumComponentImp.class.getName()),
N2);
PAContentController cc = Utils.getPAContentController(testComponent);
cc.addFcSubComponent(mergeSortComponent);
cc.addFcSubComponent(SC1);
cc.addFcSubComponent(SC2);
PABindingController bcTest = Utils.getPABindingController(testComponent);
bcTest.bindFc("runnable", mergeSortComponent.getFcInterface("runnable"));
bcTest.bindFc("scc", SC1.getFcInterface("scc"));
PABindingController bcMergeSort = Utils.getPABindingController(mergeSortComponent);
bcMergeSort.bindFc("sc", SC1.getFcInterface("sc"));
PABindingController bcSC1 = Utils.getPABindingController(SC1);
bcSC1.bindFc("sct", SC2.getFcInterface("sctS"));
bcSC1.bindFc("scrr", mergeSortComponent.getFcInterface("scrr"));
PABindingController bcSC2 = Utils.getPABindingController(SC2);
bcSC2.bindFc("scr", SC1.getFcInterface("scrS"));
Utils.getPAGCMLifeCycleController(testComponent).startFc();
SkandiumComponentController scc = (SkandiumComponentController)
SC1.getFcInterface("scc");
SkandiumComponentController scc2 = (SkandiumComponentController)
SC2.getFcInterface("scc");
DelegationCondition cond = new DelegationCondition() {
private static final long serialVersionUID = 2L;