package org.archstudio.myx.java.demo.basic;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import org.archstudio.myx.fw.EMyxInterfaceDirection;
import org.archstudio.myx.fw.IMyxImplementation;
import org.archstudio.myx.fw.IMyxName;
import org.archstudio.myx.fw.IMyxRuntime;
import org.archstudio.myx.fw.IMyxWeld;
import org.archstudio.myx.fw.MyxBasicBrickInitializationData;
import org.archstudio.myx.fw.MyxJavaClassInterfaceDescription;
import org.archstudio.myx.fw.MyxUtils;
import org.archstudio.myx.java.MyxJavaClassBrickDescription;
public class App {
public static final IMyxName serverName = MyxUtils.createName("Server");
public static final IMyxName clientName = MyxUtils.createName("Client");
public static final IMyxName proxyName = MyxUtils.createName("Proxy");
protected IMyxImplementation myximpl;
public static void main(String[] args) {
new App();
}
public App() {
myximpl = MyxUtils.getDefaultImplementation();
doApp1();
System.err.println("---");
doApp2();
}
public void doApp1() {
IMyxRuntime myx = myximpl.createRuntime();
try {
MyxJavaClassBrickDescription serverDesc = new MyxJavaClassBrickDescription(
"org.archstudio.myx.demo.basic.ServerComponent");
MyxJavaClassBrickDescription clientDesc = new MyxJavaClassBrickDescription(
"org.archstudio.myx.demo.basic.ClientComponent");
myx.addBrick(null, serverName, serverDesc, null);
myx.addBrick(null, clientName, clientDesc, null);
MyxJavaClassInterfaceDescription imathIfaceDesc = new MyxJavaClassInterfaceDescription(
Collections.singleton("org.archstudio.myx.demo.basic.IMath"));
myx.addInterface(null, clientName, MyxUtils.createName("math"), imathIfaceDesc, EMyxInterfaceDirection.OUT);
myx.addInterface(null, serverName, MyxUtils.createName("math"), imathIfaceDesc, EMyxInterfaceDirection.IN);
IMyxWeld s2c = myx.createWeld(null, clientName, MyxUtils.createName("math"), null, serverName,
MyxUtils.createName("math"));
myx.addWeld(s2c);
myx.init(null, null);
myx.begin(null, null);
}
catch (Exception e) {
e.printStackTrace();
}
}
public void doApp2() {
IMyxRuntime myx = myximpl.createRuntime();
try {
MyxJavaClassBrickDescription serverDesc = new MyxJavaClassBrickDescription(
"org.archstudio.myx.demo.basic.ServerComponent");
MyxJavaClassBrickDescription proxyDesc = new MyxJavaClassBrickDescription(
"org.archstudio.myx.java.conn.SynchronousProxyConnector");
MyxJavaClassBrickDescription clientDesc = new MyxJavaClassBrickDescription(
"org.archstudio.myx.demo.basic.ClientComponent");
myx.addBrick(null, serverName, serverDesc, null);
myx.addBrick(null, clientName, clientDesc, null);
Map<String, String> proxyProperties = new HashMap<String, String>();
proxyProperties.put("interfaceClassName0", "org.archstudio.myx.demo.basic.IMath");
myx.addBrick(null, proxyName, proxyDesc, new MyxBasicBrickInitializationData(proxyProperties));
MyxJavaClassInterfaceDescription imathIfaceDesc = new MyxJavaClassInterfaceDescription(
Collections.singleton("org.archstudio.myx.demo.basic.IMath"));
myx.addInterface(null, clientName, MyxUtils.createName("math"), imathIfaceDesc, EMyxInterfaceDirection.OUT);
myx.addInterface(null, proxyName, MyxUtils.createName("out"), imathIfaceDesc, EMyxInterfaceDirection.OUT);
myx.addInterface(null, proxyName, MyxUtils.createName("in"), imathIfaceDesc, EMyxInterfaceDirection.IN);
myx.addInterface(null, serverName, MyxUtils.createName("math"), imathIfaceDesc, EMyxInterfaceDirection.IN);
IMyxWeld p2s = myx.createWeld(null, proxyName, MyxUtils.createName("out"), null, serverName,
MyxUtils.createName("math"));
IMyxWeld c2p = myx.createWeld(null, clientName, MyxUtils.createName("math"), null, proxyName,
MyxUtils.createName("in"));
myx.addWeld(p2s);
myx.addWeld(c2p);
myx.init(null, null);
myx.begin(null, null);
}
catch (Exception e) {
e.printStackTrace();
}
}
}