From c01fbaba15e058ce88d12578d6523ee74e37acab Mon Sep 17 00:00:00 2001 From: Constantin Jucovschi <jucovschi@gmail.com> Date: Tue, 15 Apr 2014 14:40:51 +0200 Subject: [PATCH] before pom editing --- .../mathhubworker/routes/MathHubRoute.java | 29 +++++++ docmanager/pom.xml | 15 +++- .../kwarc/sally4/docmanager/AlexRoute.java | 3 - .../sally4/docmanager/DocumentManager.java | 2 +- .../kwarc/sally4/docmanager/IDocWorkflow.java | 11 +++ .../kwarc/sally4/docmanager/TestMain.java | 29 +++---- .../sally4/docmanager/impl/AlexRouteImpl.java | 41 +++++++++ .../impl/AlexRouteMessageProcessor.java | 34 ++++++++ .../docmanager/impl/DocumentManagerImpl.java | 85 +++++++++++++------ .../docmanager/routes/SallyAlexRoute.java | 20 +++-- .../docmanager/routes/SallyRegisterRoute.java | 6 +- .../docmanager/routes/SallyAlexRouteTest.java | 51 +++++++++++ planetary/pom.xml | 6 +- .../comm/planetaryclient/GetServices.java | 39 +++++++++ .../planetaryclient/GetSessionIDRequest.java | 41 +++++++++ .../planetaryclient/GetSessionIDResponse.java | 71 ++++++++++++++++ .../comm/planetaryclient/ObjectFactory.java | 63 ++++++++++++++ .../comm/planetaryclient/package-info.java | 9 ++ .../impl/PlanetaryConnectionImpl.java | 7 +- .../src/main/resources/planetaryclient.xsd | 27 ++++++ 20 files changed, 524 insertions(+), 65 deletions(-) create mode 100644 MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/routes/MathHubRoute.java create mode 100644 docmanager/src/main/java/info/kwarc/sally4/docmanager/IDocWorkflow.java create mode 100644 docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/AlexRouteMessageProcessor.java create mode 100644 docmanager/src/test/java/info/kwarc/sally4/docmanager/routes/SallyAlexRouteTest.java create mode 100644 planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/GetServices.java create mode 100644 planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/GetSessionIDRequest.java create mode 100644 planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/GetSessionIDResponse.java create mode 100644 planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/ObjectFactory.java create mode 100644 planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/package-info.java create mode 100644 planetary/src/main/resources/planetaryclient.xsd diff --git a/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/routes/MathHubRoute.java b/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/routes/MathHubRoute.java new file mode 100644 index 0000000..ab8072a --- /dev/null +++ b/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/routes/MathHubRoute.java @@ -0,0 +1,29 @@ +package info.kwarc.sally4.mathhubworker.routes; + +import info.kwarc.sally.comm.CommUtils; +import info.kwarc.sally.comm.planetaryclient.GetSessionIDRequest; + +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.spi.DataFormat; + +public class MathHubRoute extends RouteBuilder { + + public MathHubRoute() { + + } + + @Override + public void configure() throws Exception { + DataFormat planetaryClient = CommUtils.getDataFormat("planetaryclient", getClass().getClassLoader()); + + from("direct:start") + .multicast().to("direct:requestSessionID"); + + from("direct:requestSessionID") + .setBody(constant(new GetSessionIDRequest())) + .marshal(planetaryClient) + .inOut("alex:requestSessionID") + .unmarshal(planetaryClient); + } + +} diff --git a/docmanager/pom.xml b/docmanager/pom.xml index 49079f2..6daeb8a 100644 --- a/docmanager/pom.xml +++ b/docmanager/pom.xml @@ -54,6 +54,12 @@ <version>2.12.3</version> </dependency> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-test</artifactId> + <version>2.12.3</version> + </dependency> + <dependency> <groupId>info.kwarc.sally4</groupId> <artifactId>core</artifactId> @@ -65,6 +71,13 @@ <artifactId>slf4j-simple</artifactId> <version>1.7.7</version> </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.11</version> + <scope>test</scope> + </dependency> </dependencies> <build> @@ -76,7 +89,7 @@ <extensions>true</extensions> <configuration> <instructions> - <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName> + <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> <Private-Package>info.kwarc.sally4.docmanager.impl</Private-Package> <Import-Package>*;</Import-Package> <Export-Package>info.kwarc.sally4.docmanager*</Export-Package> diff --git a/docmanager/src/main/java/info/kwarc/sally4/docmanager/AlexRoute.java b/docmanager/src/main/java/info/kwarc/sally4/docmanager/AlexRoute.java index d612b62..a670cdd 100644 --- a/docmanager/src/main/java/info/kwarc/sally4/docmanager/AlexRoute.java +++ b/docmanager/src/main/java/info/kwarc/sally4/docmanager/AlexRoute.java @@ -1,12 +1,9 @@ package info.kwarc.sally4.docmanager; - - public interface AlexRoute { public String getAlexStateQueue(); public String getAlexQueue(); public void addOnStopHandler(Runnable r); - public void stop(); } 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 1e48541..7353175 100644 --- a/docmanager/src/main/java/info/kwarc/sally4/docmanager/DocumentManager.java +++ b/docmanager/src/main/java/info/kwarc/sally4/docmanager/DocumentManager.java @@ -3,5 +3,5 @@ package info.kwarc.sally4.docmanager; import info.kwarc.sally.comm.core.Registerdocument; public interface DocumentManager { - AlexRoute registerDocument(Registerdocument doc); + AlexRoute registerDocument(Registerdocument doc); } diff --git a/docmanager/src/main/java/info/kwarc/sally4/docmanager/IDocWorkflow.java b/docmanager/src/main/java/info/kwarc/sally4/docmanager/IDocWorkflow.java new file mode 100644 index 0000000..b7e435b --- /dev/null +++ b/docmanager/src/main/java/info/kwarc/sally4/docmanager/IDocWorkflow.java @@ -0,0 +1,11 @@ +package info.kwarc.sally4.docmanager; + +import org.apache.camel.Exchange; + +public interface IDocWorkflow { + String [] getInterfaceRequirements(); + String [] getHandlingNamespaces(); + + boolean handleMessage(String namespace, String type, Exchange exchange); + void onNewDocument(AlexRoute route); +} diff --git a/docmanager/src/main/java/info/kwarc/sally4/docmanager/TestMain.java b/docmanager/src/main/java/info/kwarc/sally4/docmanager/TestMain.java index 85d49fe..a5f8526 100644 --- a/docmanager/src/main/java/info/kwarc/sally4/docmanager/TestMain.java +++ b/docmanager/src/main/java/info/kwarc/sally4/docmanager/TestMain.java @@ -1,7 +1,9 @@ package info.kwarc.sally4.docmanager; +import info.kwarc.sally.comm.BodyHasType; import info.kwarc.sally.comm.CommUtils; -import info.kwarc.sally.comm.core.Onsallyframe; +import info.kwarc.sally.comm.core.Heartbeatrequest; +import info.kwarc.sally.comm.core.Heartbeatresponse; import info.kwarc.sally.comm.core.Registerdocument; import info.kwarc.sally.comm.core.Registerdocumentresponse; import info.kwarc.sally4.docmanager.routes.SallyRegisterRoute; @@ -46,34 +48,25 @@ public class TestMain extends RouteBuilder { Registerdocument reg = new Registerdocument(); reg.setDocumentqueue("client123"); reg.setTheoqueue("theo"); - reg.getInterfaces().add("test"); + reg.getInterfaces().add("planetaryclient"); temp.sendBody("direct:client-register", reg); } @Override public void configure() throws Exception { DataFormat core = CommUtils.getDataFormat("core"); + Heartbeatresponse response = new Heartbeatresponse(); from("direct:client-register") .marshal(core) + .to("log:too") .inOut("activemq:queue:"+SallyRegisterRoute.sallyRegisterQueue) - .to("log:msg") .unmarshal(core) .process(new Processor() { public void process(Exchange exchange) throws Exception { Registerdocumentresponse resp = exchange.getIn().getBody(Registerdocumentresponse.class); sally_queue = resp.getSallyqueue(); } - }) - .process(new Processor() { - - public void process(Exchange exchange) throws Exception { - ProducerTemplate temp = exchange.getContext().createProducerTemplate(); - Onsallyframe onSallyFrame = new Onsallyframe(); - onSallyFrame.setPosx(100); - onSallyFrame.setPosy(100); - temp.sendBody("direct:send_sally_doc", onSallyFrame); - } }); from("direct:send_sally_doc").marshal(core).inOut("activemq:queue:sally_doc_client123").to("log:asd"); @@ -81,12 +74,10 @@ public class TestMain extends RouteBuilder { from("activemq:queue:client123") .to("log:test") .unmarshal(core) - .process(new Processor() { - - public void process(Exchange exchange) throws Exception { - System.out.println(exchange.getIn().getBody()); - } - }); + .choice() + .when(new BodyHasType(Heartbeatrequest.class)) + .setBody(constant(response)) + .endChoice(); } diff --git a/docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/AlexRouteImpl.java b/docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/AlexRouteImpl.java index e4552d2..c98de18 100644 --- a/docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/AlexRouteImpl.java +++ b/docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/AlexRouteImpl.java @@ -1,11 +1,19 @@ package info.kwarc.sally4.docmanager.impl; import info.kwarc.sally4.docmanager.AlexRoute; +import info.kwarc.sally4.docmanager.IDocWorkflow; +import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; +import java.util.Iterator; import java.util.List; +import java.util.Queue; + +import org.apache.camel.Exchange; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class AlexRouteImpl implements AlexRoute { @@ -15,6 +23,10 @@ public class AlexRouteImpl implements AlexRoute { HashSet<String> interfaces; List<Runnable> stopHandlers; + Queue<IDocWorkflow> workflows; + + Logger log; + String alexStateQueue; String generateUUID(String doc_queue) { @@ -22,14 +34,39 @@ public class AlexRouteImpl implements AlexRoute { return "sally_doc_"+doc_queue; } + protected void forwardMessage(String namespace, String msgType, Exchange e) { + Iterator<IDocWorkflow> iter = workflows.iterator(); + while (iter.hasNext()) { + IDocWorkflow work = iter.next(); + for (String s : work.getHandlingNamespaces()) { + if (s.equals(namespace)) { + if (work.handleMessage(namespace, msgType, e)) { + return; + } + } + } + } + } + public AlexRouteImpl(String alexQueue, String theoQueue, Collection<String> interfaces) { + log = LoggerFactory.getLogger(getClass()); this.alexQueue = alexQueue; this.theoQueue = theoQueue; this.interfaces = new HashSet<String>(interfaces); this.alexStateQueue = generateUUID(alexQueue); stopHandlers = new ArrayList<Runnable>(); + workflows = new ArrayDeque<IDocWorkflow>(); } + public void addDocumentWorkflow(IDocWorkflow workflow) { + workflows.add(workflow); + workflow.onNewDocument(this); + } + + public void removeDocumentWorkflow(IDocWorkflow workflow) { + workflows.remove(workflow); + } + public String getAlexStateQueue() { return alexStateQueue; } @@ -42,6 +79,10 @@ public class AlexRouteImpl implements AlexRoute { stopHandlers.add(stopHandler); } + public HashSet<String> getInterfaces() { + return interfaces; + } + public void stop() { for (Runnable r : stopHandlers) { try { diff --git a/docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/AlexRouteMessageProcessor.java b/docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/AlexRouteMessageProcessor.java new file mode 100644 index 0000000..31c965c --- /dev/null +++ b/docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/AlexRouteMessageProcessor.java @@ -0,0 +1,34 @@ +package info.kwarc.sally4.docmanager.impl; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.apache.camel.Exchange; +import org.apache.camel.Processor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class AlexRouteMessageProcessor implements Processor { + AlexRouteImpl route; + + Logger log; + + Pattern xmlNamespace = Pattern.compile("<(\\w+)\\s+xmlns=\"([\\w/:.]+)\"/>"); + + public AlexRouteMessageProcessor(AlexRouteImpl route) { + this.route = route; + log = LoggerFactory.getLogger(getClass()); + } + + public void process(Exchange exchange) throws Exception { + Matcher m = xmlNamespace.matcher(exchange.getIn().getBody(String.class)); + if (m.find()) { + String msgType = m.group(1); + String namespace = m.group(2); + route.forwardMessage(namespace, msgType, exchange); + } else { + exchange.setException(new Exception("Could not detect namespace in incoming message")); + } + } + +} diff --git a/docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/DocumentManagerImpl.java b/docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/DocumentManagerImpl.java index 1af2e17..0e7030a 100644 --- a/docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/DocumentManagerImpl.java +++ b/docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/DocumentManagerImpl.java @@ -5,18 +5,23 @@ import info.kwarc.sally4.activemq.ActiveMQService; 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.routes.SallyRegisterRoute; +import java.util.Arrays; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import org.apache.camel.CamelContext; 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; @@ -25,40 +30,72 @@ import org.slf4j.LoggerFactory; @Instantiate @Provides public class DocumentManagerImpl implements DocumentManager { - - Map<String, AlexRoute> docs; - SallyRegisterRoute registerRoute; - - CamelContext camelContext; - - Logger log; - + + @Requires + IDocWorkflow[] workflows; + @Requires ActiveMQService activeMQ; - + @Requires CamelContextProvider camelContextProvider; + Map<String, AlexRouteImpl> docs; + SallyRegisterRoute registerRoute; + + CamelContext camelContext; + + Logger log; + + public DocumentManagerImpl() { - docs = new HashMap<String, AlexRoute>(); + docs = new HashMap<String, AlexRouteImpl>(); registerRoute = new SallyRegisterRoute(this); - log = LoggerFactory.getLogger(getClass()); + log = LoggerFactory.getLogger(getClass()); } - + public AlexRoute registerDocument(Registerdocument doc) { if (docs.containsKey(doc.getDocumentqueue())) return docs.get(doc.getDocumentqueue()); - - AlexRouteImpl route = new AlexRouteImpl(doc.getDocumentqueue(), doc.getTheoqueue(), doc.getInterfaces()); + AlexRouteImpl route = new AlexRouteImpl(doc.getDocumentqueue(), doc.getTheoqueue(), doc.getInterfaces()); + docs.put(doc.getDocumentqueue(), route); + + for (IDocWorkflow workflow : workflows) { + HashSet<String> required = new HashSet<String>(Arrays.asList(workflow.getInterfaceRequirements())); + if (route.getInterfaces().containsAll(required)) { + route.addDocumentWorkflow(workflow); + } + } + return route; } + + @Bind(aggregate=true) + private void bindWorkflow(IDocWorkflow workflow) + { + HashSet<String> required = new HashSet<String>(Arrays.asList(workflow.getInterfaceRequirements())); + for (AlexRouteImpl route : docs.values()) { + if (route.getInterfaces().containsAll(required)) { + route.addDocumentWorkflow(workflow); + } + } + } + + @Unbind + private void unbindWorkflow(IDocWorkflow workflow) + { + for (AlexRouteImpl route : docs.values()) { + route.removeDocumentWorkflow(workflow); + } + } + + @Validate public void start() { try { - log.info(camelContextProvider.getName()); camelContext = new DefaultCamelContext(); camelContext.addComponent("activemq", camelContextProvider.getComponent("activemq")); camelContext.addRoutes(registerRoute); @@ -67,19 +104,19 @@ public class DocumentManagerImpl implements DocumentManager { log.info(e.getMessage()); e.printStackTrace(); } - + } - + @Invalidate public void stop() { - try { - camelContext.stop(); - for (AlexRoute route : docs.values()) { - route.stop(); - } - } catch (Exception e) { - e.printStackTrace(); + try { + camelContext.stop(); + for (AlexRouteImpl route : docs.values()) { + route.stop(); } + } catch (Exception e) { + e.printStackTrace(); + } } } diff --git a/docmanager/src/main/java/info/kwarc/sally4/docmanager/routes/SallyAlexRoute.java b/docmanager/src/main/java/info/kwarc/sally4/docmanager/routes/SallyAlexRoute.java index fc75b86..32a6695 100644 --- a/docmanager/src/main/java/info/kwarc/sally4/docmanager/routes/SallyAlexRoute.java +++ b/docmanager/src/main/java/info/kwarc/sally4/docmanager/routes/SallyAlexRoute.java @@ -2,7 +2,8 @@ package info.kwarc.sally4.docmanager.routes; import info.kwarc.sally.comm.CommUtils; import info.kwarc.sally.comm.core.Heartbeatrequest; -import info.kwarc.sally4.docmanager.AlexRoute; +import info.kwarc.sally4.docmanager.impl.AlexRouteImpl; +import info.kwarc.sally4.docmanager.impl.AlexRouteMessageProcessor; import org.apache.camel.ExchangeTimedOutException; import org.apache.camel.builder.RouteBuilder; @@ -13,7 +14,7 @@ import org.slf4j.LoggerFactory; public class SallyAlexRoute extends RouteBuilder { Logger log; - AlexRoute route; + AlexRouteImpl route; public Heartbeatrequest generateHeartbeat() { return new Heartbeatrequest(); @@ -23,7 +24,7 @@ public class SallyAlexRoute extends RouteBuilder { route.stop(); } - SallyAlexRoute(AlexRoute route) { + SallyAlexRoute(AlexRouteImpl route) { log = LoggerFactory.getLogger(getClass()); this.route = route; } @@ -32,6 +33,9 @@ public class SallyAlexRoute extends RouteBuilder { public void configure() throws Exception { DataFormat core = CommUtils.getDataFormat("core"); + /** + * Sends a Heartbeat message to the Alex. if it does not respond after 20sec, this route will shutdown. + */ from("timer://foo?fixedRate=true&period=60000") .bean(method(this, "generateHeartbeat")) .marshal(core) @@ -40,9 +44,13 @@ public class SallyAlexRoute extends RouteBuilder { .doCatch(ExchangeTimedOutException.class) .bean(method(this, "stopSallyRoute")); - from("alex:default") - .to("log:test") - .to("alex:default"); + /** + * + */ + from("alex:defaultin") + .convertBodyTo(String.class) + .process(new AlexRouteMessageProcessor(route)) + .to("alex:defaultout"); } } diff --git a/docmanager/src/main/java/info/kwarc/sally4/docmanager/routes/SallyRegisterRoute.java b/docmanager/src/main/java/info/kwarc/sally4/docmanager/routes/SallyRegisterRoute.java index 5aeb204..bdd6453 100644 --- a/docmanager/src/main/java/info/kwarc/sally4/docmanager/routes/SallyRegisterRoute.java +++ b/docmanager/src/main/java/info/kwarc/sally4/docmanager/routes/SallyRegisterRoute.java @@ -2,8 +2,8 @@ package info.kwarc.sally4.docmanager.routes; import info.kwarc.sally.comm.CommUtils; import info.kwarc.sally.comm.core.Registerdocumentresponse; -import info.kwarc.sally4.docmanager.AlexRoute; import info.kwarc.sally4.docmanager.component.AlexComponent; +import info.kwarc.sally4.docmanager.impl.AlexRouteImpl; import info.kwarc.sally4.docmanager.impl.DocumentManagerImpl; import org.apache.camel.CamelContext; @@ -23,12 +23,12 @@ public class SallyRegisterRoute extends RouteBuilder { this.docManager = docManager; } - public Registerdocumentresponse createRouteContext(AlexRoute route) throws Exception { + public Registerdocumentresponse createRouteContext(AlexRouteImpl route) throws Exception { final CamelContext alexRouteContext = new DefaultCamelContext(); alexRouteContext.addComponent("activemq", getContext().getComponent("activemq")); alexRouteContext.addComponent("alex", new AlexComponent(route)); alexRouteContext.addRoutes(new SallyAlexRoute(route)); - alexRouteContext.getShutdownStrategy().setTimeout(1); + alexRouteContext.getShutdownStrategy().setTimeout(10); alexRouteContext.start(); route.addOnStopHandler(new Runnable() { diff --git a/docmanager/src/test/java/info/kwarc/sally4/docmanager/routes/SallyAlexRouteTest.java b/docmanager/src/test/java/info/kwarc/sally4/docmanager/routes/SallyAlexRouteTest.java new file mode 100644 index 0000000..c300b4e --- /dev/null +++ b/docmanager/src/test/java/info/kwarc/sally4/docmanager/routes/SallyAlexRouteTest.java @@ -0,0 +1,51 @@ +package info.kwarc.sally4.docmanager.routes; + +import info.kwarc.sally4.docmanager.impl.AlexRouteImpl; + +import java.util.Arrays; + +import org.apache.camel.EndpointInject; +import org.apache.camel.ProducerTemplate; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.component.direct.DirectComponent; +import org.apache.camel.component.mock.MockEndpoint; +import org.apache.camel.test.junit4.CamelTestSupport; +import org.junit.Test; + +public class SallyAlexRouteTest extends CamelTestSupport { + + SallyAlexRoute route; + + @EndpointInject(uri="mock:result") + MockEndpoint result; + + @Test + public void ValidMessage() throws InterruptedException { + ProducerTemplate temp = context.createProducerTemplate(); + temp.sendBody("alex:defaultin", " <GetServices xmlns=\"http://kwarc.info/sally/comm/planetaryclient\"/> "); + result.expectedMessageCount(1); + result.assertIsSatisfied(); + } + + + @Test + public void InvalidMessage() throws InterruptedException { + ProducerTemplate temp = context.createProducerTemplate(); + try { + temp.sendBody("alex:defaultin", " <GetServices/> "); + fail(); + } catch (Exception e) { + } + result.expectedMessageCount(0); + result.assertIsSatisfied(); + } + + @Override + protected RouteBuilder createRouteBuilder() throws Exception { + route = new SallyAlexRoute(new AlexRouteImpl("a", "b", Arrays.asList(new String[]{"asd"}))); + route.from("alex:defaultout").to("mock:result"); + context.addComponent("alex", new DirectComponent()); + return route; + } + +} diff --git a/planetary/pom.xml b/planetary/pom.xml index 0d19616..d92dbff 100644 --- a/planetary/pom.xml +++ b/planetary/pom.xml @@ -45,7 +45,7 @@ <dependency> <groupId>info.kwarc.sally4</groupId> <artifactId>core</artifactId> - <version>0.0.1-SNAPSHOT</version> + <version>0.0.2-SNAPSHOT</version> </dependency> @@ -78,10 +78,10 @@ <extensions>true</extensions> <configuration> <instructions> - <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName> + <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> <Private-Package>info.kwarc.sally4.planetary.impl</Private-Package> <Import-Package>*;com.mysql.jdbc</Import-Package> - <Export-Package>info.kwarc.sally4.planetary*</Export-Package> + <Export-Package>info.kwarc.sally4.planetary*;info.kwarc.sally.comm*</Export-Package> </instructions> </configuration> </plugin> diff --git a/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/GetServices.java b/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/GetServices.java new file mode 100644 index 0000000..e1bd8d3 --- /dev/null +++ b/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/GetServices.java @@ -0,0 +1,39 @@ +// +// 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.14 at 11:27:21 PM CEST +// + + +package info.kwarc.sally.comm.planetaryclient; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + + +/** + * <p>Java class for anonymous complex type. + * + * <p>The following schema fragment specifies the expected content contained within this class. + * + * <pre> + * <complexType> + * <complexContent> + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> + * </restriction> + * </complexContent> + * </complexType> + * </pre> + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "") +@XmlRootElement(name = "GetServices") +public class GetServices { + + +} 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 new file mode 100644 index 0000000..80fe528 --- /dev/null +++ b/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/GetSessionIDRequest.java @@ -0,0 +1,41 @@ +// +// 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.14 at 11:27:21 PM CEST +// + + +package info.kwarc.sally.comm.planetaryclient; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + + +/** + * <p>Java class for anonymous complex type. + * + * <p>The following schema fragment specifies the expected content contained within this class. + * + * <pre> + * <complexType> + * <complexContent> + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> + * <sequence> + * </sequence> + * </restriction> + * </complexContent> + * </complexType> + * </pre> + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "") +@XmlRootElement(name = "GetSessionIDRequest") +public class GetSessionIDRequest { + + +} 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 new file mode 100644 index 0000000..a232d3d --- /dev/null +++ b/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/GetSessionIDResponse.java @@ -0,0 +1,71 @@ +// +// 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.14 at 11:27:21 PM CEST +// + + +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; + + +/** + * <p>Java class for anonymous complex type. + * + * <p>The following schema fragment specifies the expected content contained within this class. + * + * <pre> + * <complexType> + * <complexContent> + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> + * <sequence> + * <element name="sessionid" type="{http://www.w3.org/2001/XMLSchema}string"/> + * </sequence> + * </restriction> + * </complexContent> + * </complexType> + * </pre> + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "sessionid" +}) +@XmlRootElement(name = "GetSessionIDResponse") +public class GetSessionIDResponse { + + @XmlElement(required = true) + protected String sessionid; + + /** + * Gets the value of the sessionid property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getSessionid() { + return sessionid; + } + + /** + * Sets the value of the sessionid property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setSessionid(String value) { + this.sessionid = value; + } + +} 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 new file mode 100644 index 0000000..a8893b7 --- /dev/null +++ b/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/ObjectFactory.java @@ -0,0 +1,63 @@ +// +// 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.14 at 11:27:21 PM CEST +// + + +package info.kwarc.sally.comm.planetaryclient; + +import javax.xml.bind.annotation.XmlRegistry; + + +/** + * This object contains factory methods for each + * Java content interface and Java element interface + * generated in the info.kwarc.sally.comm.planetaryclient package. + * <p>An ObjectFactory allows you to programatically + * construct new instances of the Java representation + * for XML content. The Java representation of XML + * content can consist of schema derived interfaces + * and classes representing the binding of schema + * type definitions, element declarations and model + * groups. Factory methods for each of these are + * provided in this class. + * + */ +@XmlRegistry +public class ObjectFactory { + + + /** + * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: info.kwarc.sally.comm.planetaryclient + * + */ + public ObjectFactory() { + } + + /** + * Create an instance of {@link GetSessionIDResponse } + * + */ + public GetSessionIDResponse createGetSessionIDResponse() { + return new GetSessionIDResponse(); + } + + /** + * Create an instance of {@link GetSessionIDRequest } + * + */ + public GetSessionIDRequest createGetSessionIDRequest() { + return new GetSessionIDRequest(); + } + + /** + * Create an instance of {@link GetServices } + * + */ + public GetServices createGetServices() { + return new GetServices(); + } + +} 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 new file mode 100644 index 0000000..0655923 --- /dev/null +++ b/planetary/src/main/java/info/kwarc/sally/comm/planetaryclient/package-info.java @@ -0,0 +1,9 @@ +// +// 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.14 at 11:27:21 PM CEST +// + +@javax.xml.bind.annotation.XmlSchema(namespace = "http://kwarc.info/sally/comm/planetaryclient", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED) +package info.kwarc.sally.comm.planetaryclient; diff --git a/planetary/src/main/java/info/kwarc/sally4/planetary/impl/PlanetaryConnectionImpl.java b/planetary/src/main/java/info/kwarc/sally4/planetary/impl/PlanetaryConnectionImpl.java index 2b9c811..b08cad0 100644 --- a/planetary/src/main/java/info/kwarc/sally4/planetary/impl/PlanetaryConnectionImpl.java +++ b/planetary/src/main/java/info/kwarc/sally4/planetary/impl/PlanetaryConnectionImpl.java @@ -20,12 +20,10 @@ import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; public class PlanetaryConnectionImpl implements PlanetaryConnection { @Requires CamelContextProvider camelContextProvider; - CamelContext context ; MysqlDataSource mysqlDataSource; @Validate public void start() { - context = camelContextProvider.getSallyCamelContext(); SqlComponent sqlComponent = new SqlComponent(); mysqlDataSource = new MysqlDataSource(); mysqlDataSource.setUser("root"); @@ -34,13 +32,12 @@ public class PlanetaryConnectionImpl implements PlanetaryConnection { mysqlDataSource.setDatabaseName("planetmmt1"); sqlComponent.setDataSource(mysqlDataSource); - context.addComponent("planetary", sqlComponent); - + camelContextProvider.registerGlobalComponent("planetary", sqlComponent); } @Invalidate public void stop() { - context.removeComponent("planetary"); + camelContextProvider.unregisterGlobalComponent("planetary"); } diff --git a/planetary/src/main/resources/planetaryclient.xsd b/planetary/src/main/resources/planetaryclient.xsd new file mode 100644 index 0000000..6139dd4 --- /dev/null +++ b/planetary/src/main/resources/planetaryclient.xsd @@ -0,0 +1,27 @@ +<?xml version="1.0"?> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" + targetNamespace="http://kwarc.info/sally/comm/planetaryclient" elementFormDefault="qualified"> + + <xs:element name="GetSessionIDRequest"> + <xs:complexType> + <xs:sequence> + </xs:sequence> + </xs:complexType> + </xs:element> + + + <xs:element name="GetSessionIDResponse"> + <xs:complexType> + <xs:sequence> + <xs:element name="sessionid" type="xs:string" /> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="GetServices"> + <xs:complexType> + </xs:complexType> + </xs:element> + + +</xs:schema> \ No newline at end of file -- GitLab