diff --git a/Felix/bundle-dev/MathHubWorker-0.0.2-SNAPSHOT.jar b/Felix/bundle-dev/MathHubWorker-0.0.2-SNAPSHOT.jar deleted file mode 120000 index d58ddccf8d9a26c3567e247eaac358985d8df939..0000000000000000000000000000000000000000 --- a/Felix/bundle-dev/MathHubWorker-0.0.2-SNAPSHOT.jar +++ /dev/null @@ -1 +0,0 @@ -/home/costea/workspace_sally4/sally4.git/MathHubWorker/target/MathHubWorker-0.0.2-SNAPSHOT.jar \ No newline at end of file diff --git a/Felix/bundle-dev/MathHubWorker-0.0.3-SNAPSHOT.jar b/Felix/bundle-dev/MathHubWorker-0.0.3-SNAPSHOT.jar new file mode 120000 index 0000000000000000000000000000000000000000..ee7352349fd6f1b54b564a162d96dd774b57ee92 --- /dev/null +++ b/Felix/bundle-dev/MathHubWorker-0.0.3-SNAPSHOT.jar @@ -0,0 +1 @@ +/home/costea/workspace_sally4/sally4.git/MathHubWorker/target/MathHubWorker-0.0.3-SNAPSHOT.jar \ No newline at end of file diff --git a/Felix/bundle-dev/activemq-0.0.2-SNAPSHOT.jar b/Felix/bundle-dev/activemq-0.0.2-SNAPSHOT.jar deleted file mode 120000 index 77e95c62d2b66e7b519f075541a9ad0ba5c29160..0000000000000000000000000000000000000000 --- a/Felix/bundle-dev/activemq-0.0.2-SNAPSHOT.jar +++ /dev/null @@ -1 +0,0 @@ -/home/costea/workspace_sally4/sally4.git/activemq/target/activemq-0.0.2-SNAPSHOT.jar \ No newline at end of file diff --git a/Felix/bundle-dev/activemq-0.0.3-SNAPSHOT.jar b/Felix/bundle-dev/activemq-0.0.3-SNAPSHOT.jar new file mode 120000 index 0000000000000000000000000000000000000000..c97824cab4b005a8ce99ea68f19b77ea4369ad3a --- /dev/null +++ b/Felix/bundle-dev/activemq-0.0.3-SNAPSHOT.jar @@ -0,0 +1 @@ +/home/costea/workspace_sally4/sally4.git/activemq/target/activemq-0.0.3-SNAPSHOT.jar \ No newline at end of file diff --git a/Felix/bundle-dev/core-0.0.2-SNAPSHOT.jar b/Felix/bundle-dev/core-0.0.2-SNAPSHOT.jar deleted file mode 120000 index 9e0e66cf225c51e6b2b2c5404520daf1c425f8a6..0000000000000000000000000000000000000000 --- a/Felix/bundle-dev/core-0.0.2-SNAPSHOT.jar +++ /dev/null @@ -1 +0,0 @@ -/home/costea/workspace_sally4/sally4.git/core/target/core-0.0.2-SNAPSHOT.jar \ No newline at end of file diff --git a/Felix/bundle-dev/core-0.0.3-SNAPSHOT.jar b/Felix/bundle-dev/core-0.0.3-SNAPSHOT.jar new file mode 120000 index 0000000000000000000000000000000000000000..2a1744a4970de76a4752205830e0f24f7bdd1a20 --- /dev/null +++ b/Felix/bundle-dev/core-0.0.3-SNAPSHOT.jar @@ -0,0 +1 @@ +/home/costea/workspace_sally4/sally4.git/core/target/core-0.0.3-SNAPSHOT.jar \ No newline at end of file diff --git a/Felix/bundle-dev/docmanager-0.0.2-SNAPSHOT.jar b/Felix/bundle-dev/docmanager-0.0.2-SNAPSHOT.jar deleted file mode 120000 index 8bb6d2b49e95ce34d304e6287bb2f5bb5c83fe9d..0000000000000000000000000000000000000000 --- a/Felix/bundle-dev/docmanager-0.0.2-SNAPSHOT.jar +++ /dev/null @@ -1 +0,0 @@ -/home/costea/workspace_sally4/sally4.git/docmanager/target/docmanager-0.0.2-SNAPSHOT.jar \ No newline at end of file diff --git a/Felix/bundle-dev/docmanager-0.0.3-SNAPSHOT.jar b/Felix/bundle-dev/docmanager-0.0.3-SNAPSHOT.jar new file mode 120000 index 0000000000000000000000000000000000000000..d8768cd05f6af74ba78d795ad1b2c57241c84fcc --- /dev/null +++ b/Felix/bundle-dev/docmanager-0.0.3-SNAPSHOT.jar @@ -0,0 +1 @@ +/home/costea/workspace_sally4/sally4.git/docmanager/target/docmanager-0.0.3-SNAPSHOT.jar \ No newline at end of file diff --git a/Felix/bundle-dev/planetary-0.0.2-SNAPSHOT.jar b/Felix/bundle-dev/planetary-0.0.2-SNAPSHOT.jar deleted file mode 120000 index b7fe0b2a297e9e16d426815aa6a552feb2c8d012..0000000000000000000000000000000000000000 --- a/Felix/bundle-dev/planetary-0.0.2-SNAPSHOT.jar +++ /dev/null @@ -1 +0,0 @@ -/home/costea/workspace_sally4/sally4.git/planetary/target/planetary-0.0.2-SNAPSHOT.jar \ No newline at end of file diff --git a/Felix/bundle-dev/planetary-0.0.3-SNAPSHOT.jar b/Felix/bundle-dev/planetary-0.0.3-SNAPSHOT.jar new file mode 120000 index 0000000000000000000000000000000000000000..d8950be370f487f99fadd4a1e961330f6449f748 --- /dev/null +++ b/Felix/bundle-dev/planetary-0.0.3-SNAPSHOT.jar @@ -0,0 +1 @@ +/home/costea/workspace_sally4/sally4.git/planetary/target/planetary-0.0.3-SNAPSHOT.jar \ No newline at end of file diff --git a/Felix/bundle-dev/servlet-0.0.2-SNAPSHOT.jar b/Felix/bundle-dev/servlet-0.0.2-SNAPSHOT.jar deleted file mode 120000 index a6cfa41908d777e94d5fd57ed65fa1850f9fb8ae..0000000000000000000000000000000000000000 --- a/Felix/bundle-dev/servlet-0.0.2-SNAPSHOT.jar +++ /dev/null @@ -1 +0,0 @@ -/home/costea/workspace_sally4/sally4.git/servlet/target/servlet-0.0.2-SNAPSHOT.jar \ No newline at end of file diff --git a/Felix/bundle-dev/servlet-0.0.3-SNAPSHOT.jar b/Felix/bundle-dev/servlet-0.0.3-SNAPSHOT.jar new file mode 120000 index 0000000000000000000000000000000000000000..f685055a6cfb526d01a7ed1f6d8be0a67d4a3617 --- /dev/null +++ b/Felix/bundle-dev/servlet-0.0.3-SNAPSHOT.jar @@ -0,0 +1 @@ +/home/costea/workspace_sally4/sally4.git/servlet/target/servlet-0.0.3-SNAPSHOT.jar \ No newline at end of file diff --git a/Felix/bundle-dev/utils-0.0.3-SNAPSHOT.jar b/Felix/bundle-dev/utils-0.0.3-SNAPSHOT.jar new file mode 120000 index 0000000000000000000000000000000000000000..0077bcc811937965614c5ff9b263d5736a634485 --- /dev/null +++ b/Felix/bundle-dev/utils-0.0.3-SNAPSHOT.jar @@ -0,0 +1 @@ +/home/costea/workspace_sally4/sally4.git/utils/target/utils-0.0.3-SNAPSHOT.jar \ No newline at end of file diff --git a/Felix/bundle/org.apache.felix.ipojo.webconsole-1.7.0.jar b/Felix/bundle/org.apache.felix.ipojo.webconsole-1.7.0.jar new file mode 120000 index 0000000000000000000000000000000000000000..9dc72c38ac7548229c58b8e7787420c72ce0f583 --- /dev/null +++ b/Felix/bundle/org.apache.felix.ipojo.webconsole-1.7.0.jar @@ -0,0 +1 @@ +/home/costea/workspace_sally4/sally4.git/Felix/bundle/web/org.apache.felix.ipojo.webconsole-1.7.0.jar \ No newline at end of file diff --git a/Felix/bundle/org.apache.felix.webconsole-4.2.2-all.jar b/Felix/bundle/org.apache.felix.webconsole-4.2.2-all.jar new file mode 120000 index 0000000000000000000000000000000000000000..e47f38c91335ba387100838c0f1756b8acb0a15a --- /dev/null +++ b/Felix/bundle/org.apache.felix.webconsole-4.2.2-all.jar @@ -0,0 +1 @@ +/home/costea/workspace_sally4/sally4.git/Felix/bundle/web/org.apache.felix.webconsole-4.2.2-all.jar \ No newline at end of file diff --git a/Felix/bundle/web/org.apache.felix.ipojo.webconsole-1.7.0.jar b/Felix/bundle/web/org.apache.felix.ipojo.webconsole-1.7.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..c4e54f7b268d1b92d3337d81fd506e6f57d3091a Binary files /dev/null and b/Felix/bundle/web/org.apache.felix.ipojo.webconsole-1.7.0.jar differ diff --git a/Felix/bundle/web/org.apache.felix.webconsole-4.2.2-all.jar b/Felix/bundle/web/org.apache.felix.webconsole-4.2.2-all.jar new file mode 100644 index 0000000000000000000000000000000000000000..8738d0c5cf3fa86b2bd3854df3ffb49dedbad244 Binary files /dev/null and b/Felix/bundle/web/org.apache.felix.webconsole-4.2.2-all.jar differ diff --git a/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/PlanetaryClient.java b/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/PlanetaryClient.java new file mode 100644 index 0000000000000000000000000000000000000000..34f9c6b52836cc139c71cc8aceed2ee843a8726e --- /dev/null +++ b/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/PlanetaryClient.java @@ -0,0 +1,9 @@ +package info.kwarc.sally4.mathhubworker; + +import info.kwarc.sally.comm.planetaryclient.NewService; +import info.kwarc.sally.comm.planetaryclient.RemoveService; + +public interface PlanetaryClient { + void newService(NewService service); + void stopService(RemoveService service); +} diff --git a/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/factories/MathHubFactory.java b/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/factories/MathHubFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..9abc9f371401e0eb5dd77ea6e2f944ce2f1dd78a --- /dev/null +++ b/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/factories/MathHubFactory.java @@ -0,0 +1,63 @@ +package info.kwarc.sally4.mathhubworker.factories; + +import info.kwarc.sally4.docmanager.SallyDoc; + +import java.util.Dictionary; +import java.util.Hashtable; + +import org.apache.felix.ipojo.ComponentInstance; +import org.apache.felix.ipojo.ConfigurationException; +import org.apache.felix.ipojo.Factory; +import org.apache.felix.ipojo.InstanceStateListener; +import org.apache.felix.ipojo.MissingHandlerException; +import org.apache.felix.ipojo.UnacceptableConfiguration; +import org.apache.felix.ipojo.annotations.Bind; +import org.apache.felix.ipojo.annotations.Component; +import org.apache.felix.ipojo.annotations.Instantiate; +import org.apache.felix.ipojo.annotations.Requires; + +@Component +@Instantiate +public class MathHubFactory { + @Requires(filter="(factory.name=LMHWorkflowInstance)") + Factory lmhWorkflow; + + @Requires(filter="(factory.name=PlanetaryWorkflowInstance)") + Factory planetaryWorkflow; + + void createInstance(Factory factory, String name, String docQueue) throws UnacceptableConfiguration, MissingHandlerException, ConfigurationException { + Dictionary<String, Object> configuration = new Hashtable<String, Object>(); + Dictionary<String, Object> filters = new Hashtable<String, Object>(); + + filters.put("docQueue", "(docQueue="+docQueue+")"); + + configuration.put("requires.filters", filters); + + configuration.put("instance.name", name+" for doc:"+docQueue); + + ComponentInstance inst = factory.createComponentInstance(configuration); + inst.addInstanceStateListener(new InstanceStateListener() { + + @Override + public void stateChanged(ComponentInstance arg0, int arg1) { + if (arg1 == ComponentInstance.INVALID) { + arg0.dispose(); + } + } + }); + } + + @Bind(aggregate=true) + void newSallyDoc(SallyDoc newDoc) throws UnacceptableConfiguration, MissingHandlerException, ConfigurationException { + for (String iface : newDoc.getInterfaces()) { + if ("planetaryclient".equals(iface)) { + createInstance(planetaryWorkflow, "PlanetaryClient", newDoc.getDocQueue()); + return; + } + if ("lmhworker".equals(iface)) { + createInstance(lmhWorkflow, "LMHWorker ", newDoc.getDocQueue()); + return; + } + } + } +} diff --git a/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/impl/LMHWorkflow.java b/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/impl/LMHWorkflow.java deleted file mode 100644 index 2d0ddc9672aa86eb933e1f98fdd4e636834a52fe..0000000000000000000000000000000000000000 --- a/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/impl/LMHWorkflow.java +++ /dev/null @@ -1,58 +0,0 @@ -package info.kwarc.sally4.mathhubworker.impl; - -import info.kwarc.sally4.core.CamelContextProvider; -import info.kwarc.sally4.docmanager.AlexRoute; -import info.kwarc.sally4.docmanager.IDocWorkflow; -import info.kwarc.sally4.docmanager.IDocWorkflowInstance; -import info.kwarc.sally4.mathhubworker.MathHubWorkerManager; -import info.kwarc.sally4.mathhubworker.routes.LMHWorkflowInstance; - -import org.apache.camel.CamelContext; -import org.apache.camel.impl.DefaultCamelContext; -import org.apache.felix.ipojo.annotations.Component; -import org.apache.felix.ipojo.annotations.Instantiate; -import org.apache.felix.ipojo.annotations.Provides; -import org.apache.felix.ipojo.annotations.Requires; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -@Component -@Instantiate -@Provides -public class LMHWorkflow implements IDocWorkflow { - @Requires - CamelContextProvider camelContextProvider; - - @Requires - MathHubWorkerManager workerManager; - - Logger log; - - public LMHWorkflow() { - log = LoggerFactory.getLogger(getClass()); - } - - @Override - public String[] getInterfaceRequirements() { - return new String[]{"lmhworker"}; - } - - @Override - public String[] getHandlingNamespaces() { - return new String[] {"http://kwarc.info/sally/comm/mathhubworker"}; - } - - @Override - public IDocWorkflowInstance createDocumentInstance(AlexRoute route) { - CamelContext context = new DefaultCamelContext(); - LMHWorkflowInstance lmhWorkflowInstance = new LMHWorkflowInstance(route, this); - try { - context.addRoutes(lmhWorkflowInstance); - context.start(); - } catch (Exception e) { - e.printStackTrace(); - } - return lmhWorkflowInstance; - } - -} diff --git a/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/impl/LMHWorkflowInstance.java b/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/impl/LMHWorkflowInstance.java new file mode 100644 index 0000000000000000000000000000000000000000..463f918d051065c2eee284e0a1d13f7aa81120e8 --- /dev/null +++ b/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/impl/LMHWorkflowInstance.java @@ -0,0 +1,52 @@ +package info.kwarc.sally4.mathhubworker.impl; + +import info.kwarc.sally4.core.CamelContextProvider; +import info.kwarc.sally4.core.SallyInteraction; +import info.kwarc.sally4.docmanager.SallyDoc; +import info.kwarc.sally4.marshalling.CommUtils; +import info.kwarc.sally4.planetary.PlanetaryConnection; +import info.kwarc.sally4.servlet.SallyServlet; + +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.spi.DataFormat; +import org.apache.felix.ipojo.annotations.Component; +import org.apache.felix.ipojo.annotations.Requires; +import org.apache.felix.ipojo.annotations.Validate; + +@Component(name="LMHWorkflowInstance") +public class LMHWorkflowInstance extends RouteBuilder { + String planetaryClientNamespace = "http://kwarc.info/sally/comm/planetaryclient"; + + @Requires + SallyServlet t; + + @Requires(id="docQueue", filter="(filterThatWillNeverSucceed=1)") + SallyDoc route; + + @Requires + PlanetaryConnection conn; + + @Requires + SallyInteraction interact; + + @Requires + CamelContextProvider camelContextProvider; + + @Validate + void doStart() { + log.info(">>>> doing lmh workflow for "+route.getDocQueue()); + } + + public LMHWorkflowInstance() { + } + + @Override + public void configure() throws Exception { + DataFormat worker = CommUtils.getDataFormat("mathhubworker", getClass().getClassLoader()); + getContext().addComponent("alex", route.getAlexComponent()); + + from("direct:start") + .to("direct:requestAuthKey"); + } + +} diff --git a/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/impl/MathHubWorkerManagerImpl.java b/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/impl/MathHubWorkerSelectorService.java similarity index 66% rename from MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/impl/MathHubWorkerManagerImpl.java rename to MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/impl/MathHubWorkerSelectorService.java index a03931763f0faa386c817a2d6813c94285bfe11a..39bc99086b0d280192c5068edf4237b6ca2c57c5 100644 --- a/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/impl/MathHubWorkerManagerImpl.java +++ b/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/impl/MathHubWorkerSelectorService.java @@ -1,8 +1,9 @@ package info.kwarc.sally4.mathhubworker.impl; +import info.kwarc.sally.comm.planetaryclient.NewService; +import info.kwarc.sally.comm.planetaryclient.RemoveService; import info.kwarc.sally4.core.CamelContextProvider; -import info.kwarc.sally4.docmanager.DocumentManager; -import info.kwarc.sally4.mathhubworker.MathHubWorkerManager; +import info.kwarc.sally4.mathhubworker.PlanetaryClient; import info.kwarc.sally4.processors.FileServeProcessor; import info.kwarc.sally4.servlet.utils.QueryParser; @@ -13,32 +14,48 @@ import org.apache.camel.Header; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.freemarker.FreemarkerComponent; import org.apache.camel.impl.DefaultCamelContext; +import org.apache.felix.ipojo.annotations.Bind; import org.apache.felix.ipojo.annotations.Component; import org.apache.felix.ipojo.annotations.Instantiate; import org.apache.felix.ipojo.annotations.Invalidate; -import org.apache.felix.ipojo.annotations.Provides; import org.apache.felix.ipojo.annotations.Requires; +import org.apache.felix.ipojo.annotations.Unbind; import org.apache.felix.ipojo.annotations.Validate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Component @Instantiate -@Provides -public class MathHubWorkerManagerImpl extends RouteBuilder implements MathHubWorkerManager { +public class MathHubWorkerSelectorService extends RouteBuilder { Logger log; @Requires CamelContextProvider camelContextProvider; @Requires - DocumentManager docManager; + PlanetaryClient [] planetaryClients; - MathHubManagerModel model; + @Bind(aggregate=true) + public void addPlanetaryClient(PlanetaryClient planetaryClients) { + NewService serv = new NewService(); + String host = "http://localhost:8181/sally"; + serv.setIcon(host+"/planetary/libs/mhwsettings.png"); + serv.setId("mhwsettings"); + serv.setName("Math Hub Worker Settings"); + serv.setType("toolbar"); + serv.setUrl(host+"/planetary/mhwsettings?id=123");//+route.getDocQueue()); + planetaryClients.newService(serv); + } + + @Unbind(aggregate=true) + public void removePlanetaryClient(PlanetaryClient planetaryClients) { + + } + HashMap<String, MathHubEnvironment> environments; - public MathHubWorkerManagerImpl() { + public MathHubWorkerSelectorService() { log = LoggerFactory.getLogger(getClass()); environments = new HashMap<String, MathHubEnvironment>(); } @@ -46,7 +63,8 @@ public class MathHubWorkerManagerImpl extends RouteBuilder implements MathHubWor public HashMap<String, Object> getSettings(@Header(QueryParser.QueryMapHeader) HashMap<String, String> query) { HashMap<String, Object> data = new HashMap<String, Object>(); - data.put("env", model.getAvailableWorkersForRoute(query.get("id"))); + String id = query.get("id"); + //data.put("env", model.getAvailableWorkersForRoute()); return data; } @@ -55,7 +73,6 @@ public class MathHubWorkerManagerImpl extends RouteBuilder implements MathHubWor @Validate public void start() { resourceContext = new DefaultCamelContext(); - model = new MathHubManagerModel(docManager); resourceContext.addComponent("sallyservlet", camelContextProvider.getComponent("sallyservlet")); try { resourceContext.addRoutes(this); @@ -69,6 +86,11 @@ public class MathHubWorkerManagerImpl extends RouteBuilder implements MathHubWor public void stop() { try { resourceContext.stop(); + for (PlanetaryClient client : planetaryClients) { + RemoveService rm = new RemoveService(); + rm.setId("mhwsettings"); + client.stopService(rm); + } } catch (Exception e) { e.printStackTrace(); } diff --git a/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/impl/PlanetaryClientWorkflow.java b/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/impl/PlanetaryClientWorkflow.java deleted file mode 100644 index e1a3cf5e06845380ea2f63d6f0cad838d53b9517..0000000000000000000000000000000000000000 --- a/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/impl/PlanetaryClientWorkflow.java +++ /dev/null @@ -1,74 +0,0 @@ -package info.kwarc.sally4.mathhubworker.impl; - -import info.kwarc.sally4.core.CamelContextProvider; -import info.kwarc.sally4.core.SallyInteraction; -import info.kwarc.sally4.docmanager.AlexRoute; -import info.kwarc.sally4.docmanager.IDocWorkflow; -import info.kwarc.sally4.docmanager.IDocWorkflowInstance; -import info.kwarc.sally4.mathhubworker.routes.PlanetaryClientWorkflowInstance; -import info.kwarc.sally4.planetary.PlanetaryConnection; -import info.kwarc.sally4.servlet.SallyServlet; - -import org.apache.camel.CamelContext; -import org.apache.camel.impl.DefaultCamelContext; -import org.apache.felix.ipojo.annotations.Component; -import org.apache.felix.ipojo.annotations.Instantiate; -import org.apache.felix.ipojo.annotations.Invalidate; -import org.apache.felix.ipojo.annotations.Provides; -import org.apache.felix.ipojo.annotations.Requires; -import org.apache.felix.ipojo.annotations.Validate; - -@Component -@Instantiate -@Provides -public class PlanetaryClientWorkflow implements IDocWorkflow { - String planetaryClientNamespace = "http://kwarc.info/sally/comm/planetaryclient"; - - @Requires - PlanetaryConnection conn; - - @Requires - SallyInteraction interact; - - @Requires - CamelContextProvider camelContextProvider; - - @Requires - SallyServlet t; - - @Validate - public void start() { - } - - @Invalidate - public void stop() { - } - - public String[] getInterfaceRequirements() { - return new String[]{"planetaryclient"}; - } - - public String[] getHandlingNamespaces() { - return new String[] { planetaryClientNamespace }; - } - - @Override - public IDocWorkflowInstance createDocumentInstance(AlexRoute route) { - CamelContext context = new DefaultCamelContext(); - - PlanetaryClientWorkflowInstance planetaryWorkflowInstance = new PlanetaryClientWorkflowInstance( - camelContextProvider.getComponent("activemq"), - camelContextProvider.getComponent("planetary"), - interact, - this, - route); - - try { - context.addRoutes(planetaryWorkflowInstance); - context.start(); - } catch (Exception e) { - e.printStackTrace(); - } - return planetaryWorkflowInstance; - } -} diff --git a/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/routes/PlanetaryClientWorkflowInstance.java b/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/impl/PlanetaryClientWorkflowInstance.java similarity index 52% rename from MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/routes/PlanetaryClientWorkflowInstance.java rename to MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/impl/PlanetaryClientWorkflowInstance.java index 276408ae1b3fc8e5ec59f37638f58fb8c698e477..3e6b71921a7e08dfa39a3ae668af341157df5845 100644 --- a/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/routes/PlanetaryClientWorkflowInstance.java +++ b/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/impl/PlanetaryClientWorkflowInstance.java @@ -1,14 +1,14 @@ -package info.kwarc.sally4.mathhubworker.routes; +package info.kwarc.sally4.mathhubworker.impl; import info.kwarc.sally.comm.planetaryclient.GetSessionIDRequest; import info.kwarc.sally.comm.planetaryclient.GetSessionIDResponse; import info.kwarc.sally.comm.planetaryclient.NewService; +import info.kwarc.sally.comm.planetaryclient.RemoveService; +import info.kwarc.sally4.core.CamelContextProvider; import info.kwarc.sally4.core.SallyInteraction; -import info.kwarc.sally4.docmanager.AlexRoute; -import info.kwarc.sally4.docmanager.IDocWorkflow; -import info.kwarc.sally4.docmanager.IDocWorkflowInstance; +import info.kwarc.sally4.docmanager.SallyDoc; import info.kwarc.sally4.marshalling.CommUtils; -import info.kwarc.sally4.marshalling.MarshallUtils; +import info.kwarc.sally4.mathhubworker.PlanetaryClient; import info.kwarc.sally4.mathhubworker.internal.comm.GetLMHWorkers; import java.util.ArrayList; @@ -16,30 +16,52 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; -import org.apache.camel.Component; +import org.apache.camel.CamelContext; import org.apache.camel.Exchange; import org.apache.camel.ExchangeTimedOutException; import org.apache.camel.LoggingLevel; import org.apache.camel.Property; import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.spi.DataFormat; +import org.apache.felix.ipojo.annotations.Component; +import org.apache.felix.ipojo.annotations.Invalidate; +import org.apache.felix.ipojo.annotations.Provides; +import org.apache.felix.ipojo.annotations.Requires; +import org.apache.felix.ipojo.annotations.Validate; -public class PlanetaryClientWorkflowInstance extends RouteBuilder implements IDocWorkflowInstance { +@Component(name="PlanetaryWorkflowInstance") +@Provides(specifications=PlanetaryClient.class) +public class PlanetaryClientWorkflowInstance extends RouteBuilder implements PlanetaryClient{ + + @Requires(id="docQueue", filter="(filterThatWillNeverSucceed=1)") + SallyDoc route; + + @Requires SallyInteraction interact; - Component activemqComponent; - Component alexComponent; - Component planetaryComponent; - IDocWorkflow workflow; - AlexRoute route; + + @Requires + CamelContextProvider camelContextProvider; + + CamelContext context; + + @Validate + void start() throws Exception { + context = new DefaultCamelContext(); + context.addComponent("activemq", camelContextProvider.getComponent("activemq")); + context.addComponent("alex", route.getAlexComponent()); + context.addComponent("planetary", camelContextProvider.getComponent("planetary")); + context.addRoutes(this); + context.start(); + } - public PlanetaryClientWorkflowInstance(Component activemqComponent, Component planetaryComponent, SallyInteraction interact, IDocWorkflow workflow, AlexRoute route) { - this.interact = interact; - this.activemqComponent = activemqComponent; - this.alexComponent = route.getAlexComponent(); - this.planetaryComponent = planetaryComponent; - this.workflow = workflow; - this.route = route; + @Invalidate + void stop() throws Exception { + context.stop(); + } + + public PlanetaryClientWorkflowInstance() { } public String getSessionID(GetSessionIDResponse response) { @@ -73,15 +95,11 @@ public class PlanetaryClientWorkflowInstance extends RouteBuilder implements IDo @Override public void configure() throws Exception { DataFormat planetaryClient = CommUtils.getDataFormat("planetaryclient", getClass().getClassLoader()); - getContext().addComponent("activemq", activemqComponent); - getContext().addComponent("alex", alexComponent); - getContext().addComponent("planetary", planetaryComponent); + from("direct:start") .to("direct:requestSessionID") - .to("direct:getPlanetaryUser") - .to("direct:assignMHW"); - + .to("direct:getPlanetaryUser"); from("direct:requestSessionID") .setBody(constant(new GetSessionIDRequest())) @@ -107,61 +125,19 @@ public class PlanetaryClientWorkflowInstance extends RouteBuilder implements IDo .stop() .endChoice(); - from("direct:assignMHW") - .inOut("planetary:select 'key' from mhw_assignment where uid=#?outputType=SelectOne") - .choice() - .when(simple("${body} == null")) - // .to("direct:getNewMHW") - .endChoice(); - - /* - from("direct:getNewMHW") - // get already taken keys - .inOut("planetary:select 'key' from mhw_assignment") - // compute list of free and available keys - .bean(thisWorkflow, "getFreeAvailableKeys") - // choose one key based on user info - .bean(thisWorkflow, "getNewMHW") - .choice() - .when(simple("${body} == null")) - .end() - .endChoice() - */ - } - - @Override - public boolean handleMessage(AlexRoute route, String namespace, - String type, Exchange exchange) { - - if (type.equals("GetServices")) { - NewService serv = new NewService(); - String host = "http://localhost:8181/sally"; - serv.setIcon(host+"/planetary/libs/mhwsettings.png"); - serv.setId("mhwsettings"); - serv.setName("Math Hub Worker Settings"); - serv.setType("toolbar"); - serv.setUrl(host+"/planetary/mhwsettings?id="+route.getDocQueue()); - String xml = MarshallUtils.marshallToXML("planetaryclient", serv, getClass().getClassLoader()); - log.info("sending back"+xml); - exchange.getIn().setBody(xml); - return true; - } - return false; - } - - @Override - public void stop() { - + from("direct:sendToPlanetaryClient") + .marshal(planetaryClient) + .to("alex:defaultOut"); } @Override - public IDocWorkflow getDocumentWorkflow() { - return workflow; + public void newService(NewService service) { + context.createProducerTemplate().sendBody("direct:sendToPlanetaryClient", service); } @Override - public AlexRoute getRoute() { - return route; + public void stopService(RemoveService service) { + context.createProducerTemplate().sendBody("direct:sendToPlanetaryClient", service); } } diff --git a/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/routes/LMHWorkflowInstance.java b/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/routes/LMHWorkflowInstance.java deleted file mode 100644 index 7e0b81cfe67928a2794021e3dfbdb0024f4946e3..0000000000000000000000000000000000000000 --- a/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/routes/LMHWorkflowInstance.java +++ /dev/null @@ -1,64 +0,0 @@ -package info.kwarc.sally4.mathhubworker.routes; - -import info.kwarc.sally.comm.mathhubworker.GetAuthKeyRequest; -import info.kwarc.sally.comm.mathhubworker.GetAuthKeyResponse; -import info.kwarc.sally4.docmanager.AlexRoute; -import info.kwarc.sally4.docmanager.IDocWorkflow; -import info.kwarc.sally4.docmanager.IDocWorkflowInstance; -import info.kwarc.sally4.marshalling.CommUtils; - -import org.apache.camel.Exchange; -import org.apache.camel.ExchangeTimedOutException; -import org.apache.camel.LoggingLevel; -import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.spi.DataFormat; - -public class LMHWorkflowInstance extends RouteBuilder implements IDocWorkflowInstance { - - AlexRoute route; - IDocWorkflow workflow; - - public LMHWorkflowInstance(AlexRoute route, IDocWorkflow workflow) { - this.route = route; - this.workflow = workflow; - } - - public void setWorkerKey(GetAuthKeyResponse response) { -// thisWorklow.setWorkerKey(route.getID(), response.getAuthkey()); - } - - - @Override - public void configure() throws Exception { - DataFormat worker = CommUtils.getDataFormat("mathhubworker", getClass().getClassLoader()); - getContext().addComponent("alex", route.getAlexComponent()); - - from("direct:start") - .to("direct:requestAuthKey"); - - - } - - @Override - public boolean handleMessage(AlexRoute route, String namespace, - String type, Exchange exchange) { - return false; - } - - @Override - public void stop() { - // TODO Auto-generated method stub - - } - - @Override - public IDocWorkflow getDocumentWorkflow() { - return workflow; - } - - @Override - public AlexRoute getRoute() { - return route; - } - -} diff --git a/MathHubWorker/src/test/java/info/kwarc/sally4/mathhubworker/impl/MathHubWorkerManagerImplTest.java b/MathHubWorker/src/test/java/info/kwarc/sally4/mathhubworker/impl/MathHubWorkerManagerImplTest.java index c67ae36cbb970e9a79e08bb5e2f5e4f0b1ad856a..947cfcaaa63f0fdfbaca12d815168385dcefb3c8 100644 --- a/MathHubWorker/src/test/java/info/kwarc/sally4/mathhubworker/impl/MathHubWorkerManagerImplTest.java +++ b/MathHubWorker/src/test/java/info/kwarc/sally4/mathhubworker/impl/MathHubWorkerManagerImplTest.java @@ -1,7 +1,8 @@ package info.kwarc.sally4.mathhubworker.impl; +/* -import info.kwarc.sally4.docmanager.AlexRoute; -import info.kwarc.sally4.docmanager.impl.AlexRouteImpl; +import info.kwarc.sally4.docmanager.SallyDoc; +import info.kwarc.sally4.docmanager.impl.SallyDocImpl; import info.kwarc.sally4.docmanager.mocks.MockDocumentManager; import info.kwarc.sally4.docmanager.mocks.MockGlobalContextProvider; import info.kwarc.sally4.mathhubworker.routes.LMHWorkflowInstance; @@ -13,7 +14,6 @@ import org.apache.camel.ProducerTemplate; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.Test; - public class MathHubWorkerManagerImplTest extends CamelTestSupport{ MockDocumentManager man; MathHubWorkerManagerImpl workerManager; @@ -31,7 +31,7 @@ public class MathHubWorkerManagerImplTest extends CamelTestSupport{ public void test() throws Exception { LMHWorkflow lmhWorkflow = new LMHWorkflow(); - AlexRoute alexRoute = new AlexRouteImpl("lmhqueue", "e1", "u1", new String[]{"lmhworker"}); + SallyDoc alexRoute = new SallyDocImpl("lmhqueue", "e1", "u1", "", new String[]{"lmhworker"}); LMHWorkflowInstance lmhInstance = new LMHWorkflowInstance(alexRoute, lmhWorkflow); man.addWorkflowInstances(lmhInstance); @@ -44,7 +44,7 @@ public class MathHubWorkerManagerImplTest extends CamelTestSupport{ @Test public void test2() throws Exception { LMHWorkflow lmhWorkflow = new LMHWorkflow(); - AlexRoute alexRoute = new AlexRouteImpl("q1", "e1", "u1", new String[]{"lmhworker"}); + SallyDoc alexRoute = new SallyDocImpl("q1", "e1", "u1", "", new String[]{"lmhworker"}); LMHWorkflowInstance lmhInstance = new LMHWorkflowInstance(alexRoute, lmhWorkflow); man.addWorkflowInstances(lmhInstance); starter.sendBody(""); @@ -60,3 +60,4 @@ public class MathHubWorkerManagerImplTest extends CamelTestSupport{ return workerManager.getContext(); } } +*/ \ No newline at end of file diff --git a/docmanager/src/main/java/info/kwarc/sally4/docmanager/DocumentManager.java b/docmanager/src/main/java/info/kwarc/sally4/docmanager/DocumentManager.java index 1e485415ecafb92b8f645fb6c423062e20eb800a..2b5a247560849c7221f120cbd7ca83e91d9f4c06 100644 --- a/docmanager/src/main/java/info/kwarc/sally4/docmanager/DocumentManager.java +++ b/docmanager/src/main/java/info/kwarc/sally4/docmanager/DocumentManager.java @@ -1,7 +1,12 @@ package info.kwarc.sally4.docmanager; import info.kwarc.sally.comm.core.Registerdocument; +import info.kwarc.sally.comm.core.Registerdocumentresponse; + +import org.apache.felix.ipojo.ConfigurationException; +import org.apache.felix.ipojo.MissingHandlerException; +import org.apache.felix.ipojo.UnacceptableConfiguration; public interface DocumentManager { - AlexRoute registerDocument(Registerdocument doc); + Registerdocumentresponse registerDocument(Registerdocument doc) throws UnacceptableConfiguration, MissingHandlerException, ConfigurationException; } diff --git a/docmanager/src/main/java/info/kwarc/sally4/docmanager/IDocWorkflow.java b/docmanager/src/main/java/info/kwarc/sally4/docmanager/IDocWorkflow.java index df32659eb70670ff15b4ba8b5a724e256e5ab009..a726369838da1f57422e459046667b1bf9e2011d 100644 --- a/docmanager/src/main/java/info/kwarc/sally4/docmanager/IDocWorkflow.java +++ b/docmanager/src/main/java/info/kwarc/sally4/docmanager/IDocWorkflow.java @@ -5,5 +5,5 @@ public interface IDocWorkflow { String [] getInterfaceRequirements(); String [] getHandlingNamespaces(); - IDocWorkflowInstance createDocumentInstance(AlexRoute route); + IDocWorkflowInstance createDocumentInstance(SallyDoc route); } diff --git a/docmanager/src/main/java/info/kwarc/sally4/docmanager/IDocWorkflowInstance.java b/docmanager/src/main/java/info/kwarc/sally4/docmanager/IDocWorkflowInstance.java index 4719e4a8161b5a2516d26c86e98dd9d2cbb9d818..9891c09b94c35cc8b7551b5266d7557951ab8c56 100644 --- a/docmanager/src/main/java/info/kwarc/sally4/docmanager/IDocWorkflowInstance.java +++ b/docmanager/src/main/java/info/kwarc/sally4/docmanager/IDocWorkflowInstance.java @@ -3,9 +3,6 @@ package info.kwarc.sally4.docmanager; import org.apache.camel.Exchange; public interface IDocWorkflowInstance { - boolean handleMessage(AlexRoute route, String namespace, String type, Exchange exchange); - IDocWorkflow getDocumentWorkflow(); - AlexRoute getRoute(); - - void stop(); + boolean handleMessage(SallyDoc route, String namespace, String type, Exchange exchange); + SallyDoc getRoute(); } diff --git a/docmanager/src/main/java/info/kwarc/sally4/docmanager/AlexRoute.java b/docmanager/src/main/java/info/kwarc/sally4/docmanager/SallyDoc.java similarity index 87% rename from docmanager/src/main/java/info/kwarc/sally4/docmanager/AlexRoute.java rename to docmanager/src/main/java/info/kwarc/sally4/docmanager/SallyDoc.java index 5ba51ffdef4697f6cd70538a016041dbeb12b975..54f39e0c1ec5342b03b2903b68cfc22f20796404 100644 --- a/docmanager/src/main/java/info/kwarc/sally4/docmanager/AlexRoute.java +++ b/docmanager/src/main/java/info/kwarc/sally4/docmanager/SallyDoc.java @@ -5,13 +5,13 @@ import info.kwarc.sally4.processors.TypedCallback; import info.kwarc.sally4.processors.XMLMessageWithTypeInfo; -public interface AlexRoute { +public interface SallyDoc { public String getDocStateQueue(); public String getDocQueue(); public String getEnvironmentID(); public String getUserID(); public ProducerConsumerSplitterComponent getAlexComponent(); + public String[] getInterfaces(); - public void addOnStopHandler(Runnable r); public void setMessageHandler(TypedCallback<XMLMessageWithTypeInfo> callback); } diff --git a/docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/DocumentManagerAdapter.java b/docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/DocumentManagerAdapter.java index 3b9c5ba211f8cd8ab42d11882335fe496d61cc33..bdedc85598ead15ee6225d19c7be587a9ddbec95 100644 --- a/docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/DocumentManagerAdapter.java +++ b/docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/DocumentManagerAdapter.java @@ -5,26 +5,30 @@ import info.kwarc.sally.comm.core.Registerdocumentresponse; import info.kwarc.sally4.activemq.ActiveMQService; import info.kwarc.sally4.components.TemplatingComponent; import info.kwarc.sally4.core.CamelContextProvider; -import info.kwarc.sally4.docmanager.AlexRoute; import info.kwarc.sally4.docmanager.DocumentManager; -import info.kwarc.sally4.docmanager.IDocWorkflow; +import info.kwarc.sally4.docmanager.SallyDoc; import info.kwarc.sally4.marshalling.CommUtils; import info.kwarc.sally4.servlet.SallyServlet; +import java.util.Dictionary; import java.util.HashMap; +import java.util.Hashtable; import org.apache.camel.CamelContext; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.spi.DataFormat; +import org.apache.felix.ipojo.ComponentInstance; +import org.apache.felix.ipojo.ConfigurationException; import org.apache.felix.ipojo.Factory; -import org.apache.felix.ipojo.annotations.Bind; +import org.apache.felix.ipojo.InstanceStateListener; +import org.apache.felix.ipojo.MissingHandlerException; +import org.apache.felix.ipojo.UnacceptableConfiguration; import org.apache.felix.ipojo.annotations.Component; import org.apache.felix.ipojo.annotations.Instantiate; import org.apache.felix.ipojo.annotations.Invalidate; import org.apache.felix.ipojo.annotations.Provides; import org.apache.felix.ipojo.annotations.Requires; -import org.apache.felix.ipojo.annotations.Unbind; import org.apache.felix.ipojo.annotations.Validate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -40,14 +44,15 @@ import org.slf4j.LoggerFactory; public class DocumentManagerAdapter extends RouteBuilder implements DocumentManager { public static final String sallyRegisterQueue = "sally_register"; + @Requires(filter="(factory.name=SallyDocFactory)") + private Factory factory; + @Requires(optional=true) - IDocWorkflow[] workflows; + SallyDoc[] docs; @Requires SallyServlet servlet; @Requires ActiveMQService activeMQ; - DocumentManagerModel model; - @Requires CamelContextProvider camelContextProvider; @@ -56,37 +61,10 @@ public class DocumentManagerAdapter extends RouteBuilder implements DocumentMana public HashMap<String, Object> prepareDocManagement() { HashMap<String, Object> result = new HashMap<String, Object>(); - result.put("routes", model.getRoutes()); + result.put("routes", docs); return result; } - public Registerdocumentresponse createRouteContext(AlexRouteImpl route) throws Exception { - final CamelContext alexRouteContext = new DefaultCamelContext(); - alexRouteContext.addComponent("activemq", camelContextProvider.getComponent("activemq")); - alexRouteContext.addComponent("alex", route.getAlexComponent()); - - alexRouteContext.addRoutes(route); - alexRouteContext.getShutdownStrategy().setTimeout(10); - alexRouteContext.start(); - - /* - route.addOnStopHandler(new Runnable() { - - public void run() { - try { - alexRouteContext.stop(); - } catch (Exception e) { - e.printStackTrace(); - } - } - }); - */ - - Registerdocumentresponse response = new Registerdocumentresponse(); - response.setSallyqueue(route.getDocStateQueue()); - return response; - } - @Override public void configure() throws Exception { DataFormat core = CommUtils.getDataFormat("core", getClass().getClassLoader()); @@ -100,26 +78,16 @@ public class DocumentManagerAdapter extends RouteBuilder implements DocumentMana from("activemq:queue:"+sallyRegisterQueue) .unmarshal(core) .bean(method(this, "registerDocument")) - .setProperty("route", body()) - .bean(method(this, "createRouteContext")) .marshal(core); } public DocumentManagerAdapter() { log = LoggerFactory.getLogger(getClass()); - model = new DocumentManagerModel(); - } - - @Bind(aggregate=true, optional=true) - public void bindWorkflow(IDocWorkflow workflow) - { - model.addWorkflow(workflow); } - @Unbind(aggregate=true, optional=true) - private void unbindWorkflow(IDocWorkflow workflow) - { - model.removeWorkflow(workflow); + String generateUUID(String doc_queue) { + //"/queue/sally_doc_"+UUID.randomUUID().toString() + return "sally_doc_"+doc_queue; } @@ -135,19 +103,31 @@ public class DocumentManagerAdapter extends RouteBuilder implements DocumentMana @Invalidate public void stop() throws Exception { camelContext.stop(); - model.stopAllRoutes(); } @Override - public AlexRoute registerDocument(Registerdocument doc) { - final AlexRoute route = model.addDocument(doc.getDocumentqueue(), doc.getEnvironmentid(), doc.getUserid(), doc.getInterfaces().toArray(new String[0])); - route.addOnStopHandler(new Runnable() { - + public Registerdocumentresponse registerDocument(Registerdocument doc) throws UnacceptableConfiguration, MissingHandlerException, ConfigurationException { + Dictionary<String, Object> configuration = new Hashtable<String, Object>(); + String docQueue = generateUUID(doc.getDocumentqueue()); + configuration.put("docQueue", doc.getDocumentqueue()); + configuration.put("environmentid", doc.getEnvironmentid()); + configuration.put("userid", "0"); + configuration.put("docStateQueue", docQueue); + configuration.put("interfaces", doc.getInterfaces().toArray(new String[0])); + configuration.put("instance.name", "doc:"+doc.getDocumentqueue()); + ComponentInstance inst = factory.createComponentInstance(configuration); + inst.addInstanceStateListener(new InstanceStateListener() { + @Override - public void run() { - model.removeDocument(route.getDocQueue()); + public void stateChanged(ComponentInstance arg0, int state) { + if (state == ComponentInstance.INVALID) { + arg0.dispose(); + } } }); - return route; + + Registerdocumentresponse response = new Registerdocumentresponse(); + response.setSallyqueue(docQueue); + return response; } } diff --git a/docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/DocumentManagerModel.java b/docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/DocumentManagerModel.java deleted file mode 100644 index 32b40c5cf3eaebc5e5199ae4156141b83b56b777..0000000000000000000000000000000000000000 --- a/docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/DocumentManagerModel.java +++ /dev/null @@ -1,155 +0,0 @@ -package info.kwarc.sally4.docmanager.impl; - -import info.kwarc.sally4.docmanager.AlexRoute; -import info.kwarc.sally4.docmanager.IDocWorkflow; -import info.kwarc.sally4.docmanager.IDocWorkflowInstance; -import info.kwarc.sally4.processors.TypedCallback; -import info.kwarc.sally4.processors.XMLMessageWithTypeInfo; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -public class DocumentManagerModel { - Map<String, AlexRouteImpl> documents; - HashSet<IDocWorkflow> workflows; - - HashMap<String, HashMap<IDocWorkflow, IDocWorkflowInstance>> workflowDocInstances; - - public DocumentManagerModel() { - documents = new HashMap<String, AlexRouteImpl>(); - workflows = new HashSet<IDocWorkflow>(); - - workflowDocInstances = new HashMap<String, HashMap<IDocWorkflow,IDocWorkflowInstance>>(); - } - - // N^2 algo but the strings list are small so will be faster - public boolean containsAll(String[] required, String[] available) { - boolean ok; - for (String req : required) { - ok = false; - for (String avail : available) { - if (req.equals(avail)) { - ok = true; - break; - } - } - if (!ok) - return false; - } - return true; - } - - public AlexRoute addDocument(String docQueue, String environment, String userid, String[] interfaces) { - if (documents.containsKey(docQueue)) - return documents.get(docQueue); - - final AlexRouteImpl route = new AlexRouteImpl(docQueue, environment, userid, interfaces); - documents.put(docQueue, route); - route.setMessageHandler(new TypedCallback<XMLMessageWithTypeInfo>() { - - @Override - public void run(XMLMessageWithTypeInfo obj) { - forwardMessage(route, obj); - } - }); - - HashMap<IDocWorkflow,IDocWorkflowInstance> workflowInstances = new HashMap<IDocWorkflow, IDocWorkflowInstance>(); - for (IDocWorkflow workflow : workflows) { - if (containsAll(workflow.getInterfaceRequirements(), interfaces)) { - IDocWorkflowInstance instance = workflow.createDocumentInstance(route); - workflowInstances.put(workflow, instance); - } - } - workflowDocInstances.put(docQueue, workflowInstances); - return route; - } - - public void removeDocument(String docQueue) { - if (!documents.containsKey(docQueue)) - return; - documents.remove(docQueue); - for (IDocWorkflowInstance instances : workflowDocInstances.get(docQueue).values()) { - instances.stop(); - } - workflowDocInstances.remove(docQueue); - } - - public void addWorkflow(IDocWorkflow workflow) { - workflows.add(workflow); - - for (AlexRouteImpl route : getRoutes()) { - if (containsAll(workflow.getInterfaceRequirements(), route.getInterfaces())) { - workflowDocInstances.get(route.getDocQueue()).put(workflow, workflow.createDocumentInstance(route)); - } - } - } - - public void removeWorkflow(IDocWorkflow workflow) { - workflows.remove(workflow); - for (AlexRouteImpl route : getRoutes()) { - final HashMap<IDocWorkflow, IDocWorkflowInstance> instanceMap = workflowDocInstances.get(route.getDocQueue()); - - IDocWorkflowInstance t = instanceMap.get(workflow); - if (t == null) - continue; - t.stop(); - instanceMap.remove(workflow); - } - } - - - public void forwardMessage(AlexRoute r, XMLMessageWithTypeInfo info) { - final HashMap<IDocWorkflow, IDocWorkflowInstance> workflows = workflowDocInstances.get(r.getDocQueue()); - for (Entry<IDocWorkflow, IDocWorkflowInstance> work : workflows.entrySet()) { - if (containsAll(new String[] {info.getXmlMessageNamespace()}, work.getKey().getHandlingNamespaces())) { - if (work.getValue().handleMessage(r, info.getXmlMessageNamespace(), info.getXmlMessageType(), info.getExchange())) { - return; - } - } - } - } - - public Collection<AlexRouteImpl> getRoutes() { - return documents.values(); - } - - public Collection<IDocWorkflowInstance> getDocWorkflowInstances(String []requiredInterfaces) { - ArrayList<IDocWorkflowInstance> result = new ArrayList<IDocWorkflowInstance>(); - List<IDocWorkflow> validWorkflows = new ArrayList<IDocWorkflow>(); - for (IDocWorkflow workflow : workflows) { - if (containsAll(requiredInterfaces, workflow.getInterfaceRequirements())) { - validWorkflows.add(workflow); - } - } - - for (final HashMap<IDocWorkflow, IDocWorkflowInstance> instancesForRoute : workflowDocInstances.values()) { - for (IDocWorkflow validWorkflow : validWorkflows) { - if (instancesForRoute.containsKey(validWorkflow)) { - result.add(instancesForRoute.get(validWorkflow)); - } - } - } - return result; - } - - public void stopAllRoutes() { - for (String routeID : workflowDocInstances.keySet()) { - for (IDocWorkflow workflow : workflowDocInstances.get(routeID).keySet()) { - workflowDocInstances.get(routeID).get(workflow).stop(); - } - try { - documents.get(routeID).getContext().stop(); - } catch (Exception e) { - e.printStackTrace(); - } - workflowDocInstances.get(routeID).clear(); - } - workflowDocInstances.clear(); - documents.clear(); - } -} diff --git a/docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/AlexRouteImpl.java b/docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/SallyDocImpl.java similarity index 63% rename from docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/AlexRouteImpl.java rename to docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/SallyDocImpl.java index 9b132fb7b226181908a676c1049ea6d35e9fc5fc..07c51d4d89ef543cbd0c79947d2339c9321737ff 100644 --- a/docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/AlexRouteImpl.java +++ b/docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/SallyDocImpl.java @@ -2,44 +2,56 @@ package info.kwarc.sally4.docmanager.impl; import info.kwarc.sally.comm.core.Heartbeatrequest; import info.kwarc.sally4.components.ProducerConsumerSplitterComponent; -import info.kwarc.sally4.docmanager.AlexRoute; +import info.kwarc.sally4.core.CamelContextProvider; +import info.kwarc.sally4.docmanager.SallyDoc; import info.kwarc.sally4.marshalling.CommUtils; import info.kwarc.sally4.processors.EnrichMessageProperties; import info.kwarc.sally4.processors.TypedCallback; import info.kwarc.sally4.processors.XMLMessageWithTypeInfo; -import java.util.ArrayList; -import java.util.List; - +import org.apache.camel.CamelContext; import org.apache.camel.Exchange; import org.apache.camel.ExchangeTimedOutException; import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.spi.DataFormat; import org.apache.felix.ipojo.annotations.Component; +import org.apache.felix.ipojo.annotations.Controller; +import org.apache.felix.ipojo.annotations.Invalidate; +import org.apache.felix.ipojo.annotations.Property; import org.apache.felix.ipojo.annotations.Provides; +import org.apache.felix.ipojo.annotations.Requires; +import org.apache.felix.ipojo.annotations.Validate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -@Component -@Provides(specifications=AlexRoute.class) -public class AlexRouteImpl extends RouteBuilder implements AlexRoute { +@Component(name="SallyDocFactory") +@Provides(specifications=SallyDoc.class) +public class SallyDocImpl extends RouteBuilder implements SallyDoc { + @Property String docQueue; + @Property String environmentid; + @Property String userid; - + @Property String docStateQueue; - + @Property String[] interfaces; - List<Runnable> stopHandlers; + + @Requires + CamelContextProvider camelContextProvider; + + @Controller + private boolean m_state = true; + + CamelContext camelContext; + TypedCallback<XMLMessageWithTypeInfo> messageHandler; Logger log; - - String generateUUID(String doc_queue) { - //"/queue/sally_doc_"+UUID.randomUUID().toString() - return "sally_doc_"+doc_queue; - } + public String getEnvironmentid() { return environmentid; @@ -48,16 +60,18 @@ public class AlexRouteImpl extends RouteBuilder implements AlexRoute { public String getUserid() { return userid; } + + public SallyDocImpl() { + log = LoggerFactory.getLogger(getClass()); + } - public AlexRouteImpl(String alexQueue, String environmentid, String userid, String[] interfaces) { + public SallyDocImpl(String docQueue, String environmentid, String userid, String docStateQueue, String[] interfaces) { log = LoggerFactory.getLogger(getClass()); - this.docQueue = alexQueue; + this.docQueue = docQueue; this.environmentid = environmentid; this.userid = userid; - this.interfaces = interfaces; - this.docStateQueue = generateUUID(alexQueue); - stopHandlers = new ArrayList<Runnable>(); + this.docStateQueue = docStateQueue; } public Heartbeatrequest generateHeartbeat() { @@ -72,32 +86,13 @@ public class AlexRouteImpl extends RouteBuilder implements AlexRoute { return docQueue; } - public void addOnStopHandler(Runnable stopHandler) { - stopHandlers.add(stopHandler); - } - public String[] getInterfaces() { return interfaces; } - public void notifyStop() { - for (Runnable r : stopHandlers) { - try { - r.run(); - } catch (Exception e) { - e.printStackTrace(); - } - } - try { - getContext().stopRoute("timer"); - getContext().stop(); - } catch (Exception e) { - e.printStackTrace(); - } - } - @Override public ProducerConsumerSplitterComponent getAlexComponent() { + log.info("will start on queue "+docStateQueue); return new ProducerConsumerSplitterComponent("activemq:queue:"+docStateQueue, "activemq:queue:"+docQueue); } @@ -110,7 +105,12 @@ public class AlexRouteImpl extends RouteBuilder implements AlexRoute { public String getUserID() { return userid; } - + + public void notifyStop() throws Exception { + m_state = false; + getContext().removeRoute("timer"); + } + @Override public void configure() throws Exception { DataFormat core = CommUtils.getDataFormat("core", getClass().getClassLoader()); @@ -138,6 +138,22 @@ public class AlexRouteImpl extends RouteBuilder implements AlexRoute { .to("log:willsend"); } + @Validate + public void start() throws Exception { + camelContext = new DefaultCamelContext(); + camelContext.addComponent("activemq", camelContextProvider.getComponent("activemq")); + camelContext.addComponent("sallyservlet", camelContextProvider.getComponent("sallyservlet")); + camelContext.addComponent("alex", getAlexComponent()); + camelContext.addRoutes(this); + camelContext.getShutdownStrategy().setTimeout(10); + camelContext.start(); + } + + @Invalidate + public void stop() throws Exception { + camelContext.stop(); + } + @Override public void setMessageHandler(TypedCallback<XMLMessageWithTypeInfo> callback) { messageHandler = callback; @@ -151,4 +167,5 @@ public class AlexRouteImpl extends RouteBuilder implements AlexRoute { } return exchange.getIn().getBody(String.class); } + } diff --git a/docmanager/src/main/java/info/kwarc/sally4/docmanager/mocks/MockAbstractWorkflow.java b/docmanager/src/main/java/info/kwarc/sally4/docmanager/mocks/MockAbstractWorkflow.java index 253044a12bc796fcd7afe2ef7ad771332311e3bf..7b6dc4f25ef18614a9f06f915d9cc3cf1e94196d 100644 --- a/docmanager/src/main/java/info/kwarc/sally4/docmanager/mocks/MockAbstractWorkflow.java +++ b/docmanager/src/main/java/info/kwarc/sally4/docmanager/mocks/MockAbstractWorkflow.java @@ -1,6 +1,6 @@ package info.kwarc.sally4.docmanager.mocks; -import info.kwarc.sally4.docmanager.AlexRoute; +import info.kwarc.sally4.docmanager.SallyDoc; import info.kwarc.sally4.docmanager.IDocWorkflow; import info.kwarc.sally4.docmanager.IDocWorkflowInstance; @@ -25,7 +25,7 @@ public class MockAbstractWorkflow implements IDocWorkflow { } @Override - public IDocWorkflowInstance createDocumentInstance(AlexRoute route) { + public IDocWorkflowInstance createDocumentInstance(SallyDoc route) { return null; } diff --git a/docmanager/src/main/java/info/kwarc/sally4/docmanager/mocks/MockCountingWorkflow.java b/docmanager/src/main/java/info/kwarc/sally4/docmanager/mocks/MockCountingWorkflow.java deleted file mode 100644 index f25eaf108197c81d2996de8268a3c8172fb3d5d1..0000000000000000000000000000000000000000 --- a/docmanager/src/main/java/info/kwarc/sally4/docmanager/mocks/MockCountingWorkflow.java +++ /dev/null @@ -1,63 +0,0 @@ -package info.kwarc.sally4.docmanager.mocks; - -import org.apache.camel.Exchange; - -import info.kwarc.sally4.docmanager.AlexRoute; -import info.kwarc.sally4.docmanager.IDocWorkflow; -import info.kwarc.sally4.docmanager.IDocWorkflowInstance; - -public class MockCountingWorkflow implements IDocWorkflow { - String [] ifaces; - String [] namespaces; - int instances; - - public MockCountingWorkflow(String [] ifaces, String [] namespaces) { - this.ifaces = ifaces; - this.namespaces = namespaces; - instances = 0; - } - - @Override - public String[] getInterfaceRequirements() { - return ifaces; - } - - @Override - public String[] getHandlingNamespaces() { - return namespaces; - } - - public int getInstances() { - return instances; - } - - @Override - public IDocWorkflowInstance createDocumentInstance(final AlexRoute route) { - instances++; - final IDocWorkflow workflow = this; - return new IDocWorkflowInstance() { - - @Override - public void stop() { - instances--; - } - - @Override - public boolean handleMessage(AlexRoute route, String namespace, - String type, Exchange exchange) { - return false; - } - - @Override - public IDocWorkflow getDocumentWorkflow() { - return workflow; - } - - @Override - public AlexRoute getRoute() { - return route; - } - }; - } - -} diff --git a/docmanager/src/main/java/info/kwarc/sally4/docmanager/mocks/MockDocumentManager.java b/docmanager/src/main/java/info/kwarc/sally4/docmanager/mocks/MockDocumentManager.java index c082c0524f13e4d34fcd0838cf21858056333662..b88de62182b3b4f9b401381195dd02b71595cdbb 100644 --- a/docmanager/src/main/java/info/kwarc/sally4/docmanager/mocks/MockDocumentManager.java +++ b/docmanager/src/main/java/info/kwarc/sally4/docmanager/mocks/MockDocumentManager.java @@ -1,7 +1,7 @@ package info.kwarc.sally4.docmanager.mocks; import info.kwarc.sally.comm.core.Registerdocument; -import info.kwarc.sally4.docmanager.AlexRoute; +import info.kwarc.sally.comm.core.Registerdocumentresponse; import info.kwarc.sally4.docmanager.DocumentManager; import info.kwarc.sally4.docmanager.IDocWorkflowInstance; @@ -11,7 +11,7 @@ import java.util.List; public class MockDocumentManager implements DocumentManager { @Override - public AlexRoute registerDocument(Registerdocument doc) { + public Registerdocumentresponse registerDocument(Registerdocument doc) { return null; } diff --git a/docmanager/src/test/java/info/kwarc/sally4/docmanager/impl/DocumentManagerAdapterTest.java b/docmanager/src/test/java/info/kwarc/sally4/docmanager/impl/DocumentManagerAdapterTest.java index 51752f1a1b4ba41036de243393ca82760abd42d4..97cb4f7cdf8988b907c549742c0c16dd67b0124c 100644 --- a/docmanager/src/test/java/info/kwarc/sally4/docmanager/impl/DocumentManagerAdapterTest.java +++ b/docmanager/src/test/java/info/kwarc/sally4/docmanager/impl/DocumentManagerAdapterTest.java @@ -11,14 +11,15 @@ public class DocumentManagerAdapterTest { Registerdocument r1; String r1xml; - + public DocumentManagerAdapterTest() { r1 = new Registerdocument(); r1.setDocumentqueue("d1"); r1.setEnvironmentid("e1"); r1xml = MarshallUtils.marshallToXML("core", r1, getClass().getClassLoader()); } - + + /* @Test public void testStartingAndStopping() throws Exception { DocumentManagerAdapter adapter = new DocumentManagerAdapter(); @@ -36,5 +37,5 @@ public class DocumentManagerAdapterTest { temp.sendBody("activemq:queue:"+DocumentManagerAdapter.sallyRegisterQueue, r1); adapter.stop(); } - + */ } diff --git a/docmanager/src/test/java/info/kwarc/sally4/docmanager/impl/DocumentManagerModelTest.java b/docmanager/src/test/java/info/kwarc/sally4/docmanager/impl/DocumentManagerModelTest.java deleted file mode 100644 index a96b5367665890666db421cf4b7e84e5d246b691..0000000000000000000000000000000000000000 --- a/docmanager/src/test/java/info/kwarc/sally4/docmanager/impl/DocumentManagerModelTest.java +++ /dev/null @@ -1,165 +0,0 @@ -package info.kwarc.sally4.docmanager.impl; - -import static org.junit.Assert.*; -import info.kwarc.sally4.docmanager.AlexRoute; -import info.kwarc.sally4.docmanager.mocks.MockCountingWorkflow; - -import org.junit.Test; - -public class DocumentManagerModelTest { - - DocumentManagerModel model; - - public DocumentManagerModelTest() { - model = new DocumentManagerModel(); - } - - @Test - public void testSameQueueSameRoute() { - model.addDocument("doc1", "env1", "user1", new String[] {"i1", "i2"}); - AlexRoute route2 = model.addDocument("doc1", "env2", "user2", new String[] {"i1", "i2"}); - - assertEquals("env1", route2.getEnvironmentID()); - assertEquals("user1", route2.getUserID()); - } - - @Test - public void testRemovingRoute() { - AlexRoute route1 = model.addDocument("doc1", "env1", "user1", new String[] {"i1", "i2"}); - model.removeDocument(route1.getDocQueue()); - - AlexRoute route2 = model.addDocument("doc1", "env2", "user2", new String[] {"i1", "i2"}); - assertEquals("env2", route2.getEnvironmentID()); - assertEquals("user2", route2.getUserID()); - } - - @Test - public void testRemovingAllRoutes() { - model.addDocument("doc1", "env1", "user1", new String[] {"i1", "i2"}); - model.addDocument("doc2", "env1", "user1", new String[] {"i1", "i2"}); - model.addDocument("doc3", "env1", "user1", new String[] {"i1", "i2"}); - model.addDocument("doc1", "env1", "user1", new String[] {"i1", "i2"}); - model.removeDocument("doc1"); - model.removeDocument("doc2"); - model.removeDocument("doc3"); - assertEquals(0, model.getRoutes().size()); - } - - @Test - public void testMatchingRouteAndWorkflow() { - MockCountingWorkflow cnt1 = new MockCountingWorkflow(new String[]{"i1"}, new String[]{"n1"}); - MockCountingWorkflow cnt2 = new MockCountingWorkflow(new String[]{"i1", "i3"}, new String[]{"n1"}); - model.addDocument("doc1", "env1", "user1", new String[] {"i1", "i2", "i3"}); - model.addDocument("doc2", "env2", "user2", new String[] {"i1", "i2"}); - model.addWorkflow(cnt1); - assertEquals(2, cnt1.getInstances()); - model.addWorkflow(cnt2); - assertEquals(1, cnt2.getInstances()); - } - - @Test - public void testMatchingRouteAndWorkflowAndRemovingRoute() { - MockCountingWorkflow cnt1 = new MockCountingWorkflow(new String[]{"i1"}, new String[]{"n1"}); - MockCountingWorkflow cnt2 = new MockCountingWorkflow(new String[]{"i1", "i3"}, new String[]{"n1"}); - model.addDocument("doc1", "env1", "user1", new String[] {"i1", "i2", "i3"}); - model.addDocument("doc2", "env2", "user2", new String[] {"i1", "i2"}); - model.addWorkflow(cnt1); - assertEquals(2, cnt1.getInstances()); - model.addWorkflow(cnt2); - assertEquals(1, cnt2.getInstances()); - model.removeDocument("doc1"); - - assertEquals(1, cnt1.getInstances()); - assertEquals(0, cnt2.getInstances()); - } - - @Test - public void testMatchingRouteAndWorkflowAndRemovingWorkflow() { - MockCountingWorkflow cnt1 = new MockCountingWorkflow(new String[]{"i1"}, new String[]{"n1"}); - MockCountingWorkflow cnt2 = new MockCountingWorkflow(new String[]{"i1", "i3"}, new String[]{"n1"}); - model.addDocument("doc1", "env1", "user1", new String[] {"i1", "i2", "i3"}); - model.addDocument("doc2", "env2", "user2", new String[] {"i1", "i2"}); - model.addWorkflow(cnt1); - assertEquals(2, cnt1.getInstances()); - model.addWorkflow(cnt2); - assertEquals(1, cnt2.getInstances()); - model.removeWorkflow(cnt1); - - assertEquals(0, cnt1.getInstances()); - assertEquals(1, cnt2.getInstances()); - } - - @Test - public void testMatchingRouteAndWorkflowAndRemovingAllWorkflows() { - MockCountingWorkflow cnt1 = new MockCountingWorkflow(new String[]{"i1"}, new String[]{"n1"}); - MockCountingWorkflow cnt2 = new MockCountingWorkflow(new String[]{"i1", "i3"}, new String[]{"n1"}); - model.addDocument("doc1", "env1", "user1", new String[] {"i1", "i2", "i3"}); - model.addDocument("doc2", "env2", "user2", new String[] {"i1", "i2"}); - model.addWorkflow(cnt1); - assertEquals(2, cnt1.getInstances()); - model.addWorkflow(cnt2); - assertEquals(1, cnt2.getInstances()); - model.removeWorkflow(cnt1); - model.removeWorkflow(cnt2); - - assertEquals(0, cnt1.getInstances()); - assertEquals(0, cnt2.getInstances()); - } - - @Test - public void testMatchingWorkflowAndRoute() { - MockCountingWorkflow cnt1 = new MockCountingWorkflow(new String[]{"i1"}, new String[]{"n1"}); - MockCountingWorkflow cnt2 = new MockCountingWorkflow(new String[]{"i1", "i3"}, new String[]{"n1"}); - - model.addWorkflow(cnt1); - - model.addDocument("doc1", "env1", "user1", new String[] {"i1", "i2", "i3"}); - assertEquals(1, cnt1.getInstances()); - model.addWorkflow(cnt2); - assertEquals(1, cnt2.getInstances()); - - model.addDocument("doc2", "env2", "user2", new String[] {"i1", "i2"}); - - assertEquals(2, cnt1.getInstances()); - assertEquals(1, cnt2.getInstances()); - model.removeWorkflow(cnt1); - model.removeWorkflow(cnt2); - - assertEquals(0, cnt1.getInstances()); - assertEquals(0, cnt2.getInstances()); - } - - @Test - public void testRemovingRouteTwice() { - model.addDocument("doc1", "env1", "user1", new String[] {"i1", "i2", "i3"}); - model.removeDocument("doc1"); - model.removeDocument("doc1"); - assertEquals(0, model.getRoutes().size()); - } - - @Test - public void testWorkflowTwice() { - model.addDocument("doc1", "env1", "user1", new String[] {"i1", "i2", "i3"}); - MockCountingWorkflow cnt1 = new MockCountingWorkflow(new String[]{"i1"}, new String[]{"n1"}); - model.removeWorkflow(cnt1); - model.removeWorkflow(cnt1); - } - - @Test - public void testStoppingAllRoutes() { - MockCountingWorkflow cnt1 = new MockCountingWorkflow(new String[]{"i1"}, new String[]{"n1"}); - MockCountingWorkflow cnt2 = new MockCountingWorkflow(new String[]{"i1", "i3"}, new String[]{"n1"}); - model.addDocument("doc1", "env1", "user1", new String[] {"i1", "i2", "i3"}); - model.addDocument("doc2", "env2", "user2", new String[] {"i1", "i2"}); - model.addWorkflow(cnt1); - model.addWorkflow(cnt2); - - model.stopAllRoutes(); - - assertEquals(0, cnt1.getInstances()); - assertEquals(0, cnt2.getInstances()); - assertEquals(0, model.getRoutes().size()); - } - - -} diff --git a/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/GetSessionIDRequest.java b/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/GetSessionIDRequest.java index bfabeb09cb9e90fd6f5cc4d85447f860449b0ffb..a0f471d9ee964249b799cbf213c5b0480fdb6436 100644 --- a/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/GetSessionIDRequest.java +++ b/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/GetSessionIDRequest.java @@ -2,7 +2,7 @@ // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> // Any modifications to this file will be lost upon recompilation of the source schema. -// Generated on: 2014.04.17 at 11:52:15 AM CEST +// Generated on: 2014.04.22 at 07:50:56 PM CEST // diff --git a/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/GetSessionIDResponse.java b/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/GetSessionIDResponse.java index a3e4540aca15f4f5c14987742235fe92851c3085..0b31f519ab18764246060b63963ad000c7625093 100644 --- a/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/GetSessionIDResponse.java +++ b/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/GetSessionIDResponse.java @@ -2,7 +2,7 @@ // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> // Any modifications to this file will be lost upon recompilation of the source schema. -// Generated on: 2014.04.17 at 11:52:15 AM CEST +// Generated on: 2014.04.22 at 07:50:56 PM CEST // diff --git a/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/NewService.java b/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/NewService.java index f6a00423380a0ad106a082bc7841049183244139..315a8fa61aa9c9fb4f81ff78710faeb1c64fe4b8 100644 --- a/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/NewService.java +++ b/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/NewService.java @@ -2,7 +2,7 @@ // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> // Any modifications to this file will be lost upon recompilation of the source schema. -// Generated on: 2014.04.17 at 11:52:15 AM CEST +// Generated on: 2014.04.22 at 07:50:56 PM CEST // diff --git a/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/ObjectFactory.java b/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/ObjectFactory.java index ff4bd416ccf3738f5ccbb1f9f89b22438356127d..05b90f41a4688fc9c39db65a61f8c97f34aa2cdc 100644 --- a/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/ObjectFactory.java +++ b/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/ObjectFactory.java @@ -2,7 +2,7 @@ // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> // Any modifications to this file will be lost upon recompilation of the source schema. -// Generated on: 2014.04.17 at 11:52:15 AM CEST +// Generated on: 2014.04.22 at 07:50:56 PM CEST // @@ -61,11 +61,11 @@ public class ObjectFactory { } /** - * Create an instance of {@link GetServices } + * Create an instance of {@link RemoveService } * */ - public GetServices createGetServices() { - return new GetServices(); + public RemoveService createRemoveService() { + return new RemoveService(); } } diff --git a/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/GetServices.java b/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/RemoveService.java similarity index 53% rename from planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/GetServices.java rename to planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/RemoveService.java index d76cdb4d10b30effdc077057f71c1e807d4c9700..58b40b4ceb544d3290480488eb752c399b6d76b4 100644 --- a/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/GetServices.java +++ b/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/RemoveService.java @@ -2,7 +2,7 @@ // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> // Any modifications to this file will be lost upon recompilation of the source schema. -// Generated on: 2014.04.17 at 11:52:15 AM CEST +// Generated on: 2014.04.22 at 07:50:56 PM CEST // @@ -10,6 +10,7 @@ package info.kwarc.sally.comm.planetaryclient; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; @@ -23,6 +24,9 @@ import javax.xml.bind.annotation.XmlType; * <complexType> * <complexContent> * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> + * <sequence> + * <element name="id" type="{http://www.w3.org/2001/XMLSchema}string"/> + * </sequence> * </restriction> * </complexContent> * </complexType> @@ -31,9 +35,37 @@ import javax.xml.bind.annotation.XmlType; * */ @XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "") -@XmlRootElement(name = "GetServices") -public class GetServices { +@XmlType(name = "", propOrder = { + "id" +}) +@XmlRootElement(name = "RemoveService") +public class RemoveService { + @XmlElement(required = true) + protected String id; + + /** + * Gets the value of the id property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getId() { + return id; + } + + /** + * Sets the value of the id property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setId(String value) { + this.id = value; + } } diff --git a/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/package-info.java b/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/package-info.java index a1f87af04a92f21603565140175e3cc0efdee428..593c6eab70d758864d8a34ca2aefa1a4288fb659 100644 --- a/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/package-info.java +++ b/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/package-info.java @@ -2,7 +2,7 @@ // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> // Any modifications to this file will be lost upon recompilation of the source schema. -// Generated on: 2014.04.17 at 11:52:15 AM CEST +// Generated on: 2014.04.22 at 07:50:56 PM CEST // @javax.xml.bind.annotation.XmlSchema(namespace = "http://kwarc.info/sally/comm/planetaryclient", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED) diff --git a/planetary/src/main/resources/planetaryclient.xsd b/planetary/src/main/resources/planetaryclient.xsd index 4812246922d6c6694921c14bccd033277815a240..6fceac75a04c985d0d4709a71a423f46cc2a261c 100644 --- a/planetary/src/main/resources/planetaryclient.xsd +++ b/planetary/src/main/resources/planetaryclient.xsd @@ -19,11 +19,6 @@ </xs:complexType> </xs:element> - <xs:element name="GetServices"> - <xs:complexType> - </xs:complexType> - </xs:element> - <xs:element name="NewService"> <xs:complexType> <xs:sequence> @@ -36,4 +31,12 @@ </xs:complexType> </xs:element> + <xs:element name="RemoveService"> + <xs:complexType> + <xs:sequence> + <xs:element name="id" type="xs:string"></xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:schema> \ No newline at end of file