diff --git a/Felix/bundle-dev/servlet-0.0.1-SNAPSHOT.jar b/Felix/bundle-dev/servlet-0.0.1-SNAPSHOT.jar index 5f22df2b5935d2e4f34235b18775a31822383742..48e0125fe98c46dc771ed290cf82d86e42730a6c 120000 --- a/Felix/bundle-dev/servlet-0.0.1-SNAPSHOT.jar +++ b/Felix/bundle-dev/servlet-0.0.1-SNAPSHOT.jar @@ -1 +1 @@ -/home/costea/workspace_sally4/SallyServlet/target/servlet-0.0.1-SNAPSHOT.jar \ No newline at end of file +/home/costea/workspace_sally4/servlet/target/servlet-0.0.1-SNAPSHOT.jar \ No newline at end of file diff --git a/Felix/bundle/javax.servlet-api-3.1.0.jar b/Felix/bundle/javax.servlet-api-3.1.0.jar deleted file mode 100644 index 6b14c3d267867e76c04948bb31b3de18e01412ee..0000000000000000000000000000000000000000 Binary files a/Felix/bundle/javax.servlet-api-3.1.0.jar and /dev/null differ diff --git a/Felix/conf/config.properties b/Felix/conf/config.properties index c1f0de0aaed42ba6ed73b8a252bf60ceb327c6a7..12f3e8eb0f873a158be0cda2bb92f3ef47caea06 100644 --- a/Felix/conf/config.properties +++ b/Felix/conf/config.properties @@ -96,7 +96,7 @@ felix.log.level=1 # Bundle config properties. # -org.osgi.service.http.port=8080 +org.osgi.service.http.port=8181 obr.repository.url=http://felix.apache.org/obr/releases.xml diff --git a/Felix/start.sh b/Felix/start.sh index 7522e929512b6b078a8194f2e280a72889237efe..0c1eb7cf3f78184dade77b1cee584866f4968879 100755 --- a/Felix/start.sh +++ b/Felix/start.sh @@ -1,2 +1,3 @@ +cd /home/costea/workspace_sally4/Felix; rm -rf felix-cache -java -Dorg.osgi.framework.bootdelegation=sun.misc -jar bin/felix.jar +java -Dorg.osgi.framework.bootdelegation=* -jar bin/felix.jar diff --git a/MathHubWorker/pom.xml b/MathHubWorker/pom.xml index 5581e8d3510fc86816918f3b25f928ed8137921c..a47747d55b3a951a9f45b0c94a98c6f1571c2001 100644 --- a/MathHubWorker/pom.xml +++ b/MathHubWorker/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> <dependency> @@ -53,7 +53,13 @@ <artifactId>planetary</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> - + + + <dependency> + <groupId>info.kwarc.sally4</groupId> + <artifactId>docmanager</artifactId> + <version>0.0.1-SNAPSHOT</version> + </dependency> </dependencies> @@ -66,7 +72,7 @@ <extensions>true</extensions> <configuration> <instructions> - <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName> + <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> <Private-Package>info.kwarc.sally4.mathhubworker.impl*</Private-Package> <Export-Package>info.kwarc.sally4.mathhubworker*</Export-Package> </instructions> diff --git a/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/impl/MathHubWorkerImpl.java b/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/impl/MathHubWorkerImpl.java index 4818fb43ef603a7eda4638ddbb16733ce54d02dd..623721453cdad18361cfacd4fdcd0b206722b212 100644 --- a/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/impl/MathHubWorkerImpl.java +++ b/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/impl/MathHubWorkerImpl.java @@ -1,12 +1,19 @@ 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.component.AlexComponent; import info.kwarc.sally4.mathhubworker.MathHubWorker; +import info.kwarc.sally4.mathhubworker.routes.MathHubRoute; import info.kwarc.sally4.planetary.PlanetaryConnection; +import java.util.HashMap; +import java.util.Map; + import org.apache.camel.CamelContext; -import org.apache.camel.ProducerTemplate; -import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.Exchange; +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; @@ -19,7 +26,7 @@ import org.slf4j.LoggerFactory; @Component @Instantiate @Provides -public class MathHubWorkerImpl implements MathHubWorker { +public class MathHubWorkerImpl implements MathHubWorker, IDocWorkflow { @Requires CamelContextProvider camelContextProvider; @@ -27,49 +34,66 @@ public class MathHubWorkerImpl implements MathHubWorker { @Requires PlanetaryConnection conn; - CamelContext camelContext; + Map<AlexRoute, CamelContext> routeContexts; Logger log; public MathHubWorkerImpl() { log = LoggerFactory.getLogger(getClass()); + routeContexts = new HashMap<AlexRoute, CamelContext>(); + } + + @Validate + public void start() { } - static class MyRoute extends RouteBuilder{ + @Invalidate + public void stop() { + + } - @Override - public void configure() throws Exception { - from("direct:getUserForSessionID") - .id("getUserFromPlanetary") - .to("planetary:select uid from sessions where sid=#?outputType=SelectOne"); + public void onNewDocument(final AlexRoute route) { + CamelContext camelContext = new DefaultCamelContext(); + routeContexts.put(route, camelContext); + + route.addOnStopHandler(new Runnable() { - from("activemq:") - } + public void run() { + try { + routeContexts.get(route).stop(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + routeContexts.remove(route); + } + } + }); + + camelContext.addComponent("planetary", camelContextProvider.getComponent("planetary")); + camelContext.addComponent("alex", new AlexComponent(route)); - } - - @Validate - public void start() { - camelContext = camelContextProvider.getSallyCamelContext(); try { - camelContext.addRoutes(new MyRoute()); + camelContext.start(); + camelContext.addRoutes(new MathHubRoute()); + camelContext.createProducerTemplate().sendBody("direct:start", route); } catch (Exception e) { log.error(e.getMessage()); e.printStackTrace(); } + } - ProducerTemplate temp = camelContext.createProducerTemplate(); - temp.sendBody("direct:getUserForSessionID", "VgCb5cQwrAhj1XG4rSxU0ygW6ZkYFYGovg_pCgWem4g"); + public String[] getInterfaceRequirements() { + return new String[]{"planetaryclient"}; } - - @Invalidate - public void stop() { - try { - camelContext.removeRoute("getUserFromPlanetary"); - } catch (Exception e) { - e.printStackTrace(); - } + + public String[] getHandlingNamespaces() { + return new String[] {"http://kwarc.info/sally/comm/planetaryclient"}; + } + + public boolean handleMessage(String namespace, String type, Exchange body) { + + return false; } } diff --git a/activemq/pom.xml b/activemq/pom.xml index e5469e611d0fe42445824b2866aa83a5880fd21e..e37cf54d20d462b72852f2f23bd9a2d6c2ca0a73 100644 --- a/activemq/pom.xml +++ b/activemq/pom.xml @@ -49,17 +49,10 @@ <version>${camel.version}</version> </dependency> - <dependency> - <groupId>javax.servlet</groupId> - <artifactId>servlet-api</artifactId> - <version>2.5</version> - <scope>compile</scope> - </dependency> - <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-camel</artifactId> - <version>5.9.1</version> + <version>5.9.0</version> </dependency> <dependency> @@ -91,7 +84,7 @@ <extensions>true</extensions> <configuration> <instructions> - <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName> + <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> <Private-Package>info.kwarc.sally4.activemq.impl</Private-Package> <Import-Package>*;</Import-Package> <Export-Package>info.kwarc.sally4.activemq*</Export-Package> diff --git a/activemq/src/main/java/info/kwarc/sally4/activemq/impl/ActiveMQServiceImpl.java b/activemq/src/main/java/info/kwarc/sally4/activemq/impl/ActiveMQServiceImpl.java index 125f6b418b8615a013ee7e9d2b0bd02c8110cb40..97f8f2ed563347237b776a2f6d232a74a915a4e0 100644 --- a/activemq/src/main/java/info/kwarc/sally4/activemq/impl/ActiveMQServiceImpl.java +++ b/activemq/src/main/java/info/kwarc/sally4/activemq/impl/ActiveMQServiceImpl.java @@ -13,6 +13,8 @@ import org.apache.felix.ipojo.annotations.Provides; import org.apache.felix.ipojo.annotations.Requires; import org.apache.felix.ipojo.annotations.Validate; import org.osgi.framework.BundleContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; @Component @Provides @@ -21,16 +23,22 @@ public class ActiveMQServiceImpl implements ActiveMQService { @Requires CamelContextProvider camelContextProvider; - - @Requires - BundleContext bundleContext; + + Logger log; + + public ActiveMQServiceImpl(BundleContext bundleContext) { + log = LoggerFactory.getLogger(getClass()); + } boolean ownConnection = false; @Validate public void start() { - if (camelContextProvider.getComponent("activemq") == null) + log.info(camelContextProvider.getName()); + if (camelContextProvider.getComponent("activemq") != null) { return; + } + log.info("connecting to a new ActiveMQ"); ownConnection = true; ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616"); connectionFactory.setUserName("webclient"); diff --git a/core/pom.xml b/core/pom.xml index 83ae759e50b693346c8a64fd51abb7722503010d..b230ffea742c93b3975f7eb1e784ab239e4a8024 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -3,7 +3,7 @@ <packaging>bundle</packaging> <groupId>info.kwarc.sally4</groupId> <artifactId>core</artifactId> - <version>0.0.1-SNAPSHOT</version> + <version>0.0.2-SNAPSHOT</version> <name>Sally4 Core</name> <properties> @@ -51,7 +51,7 @@ <configuration> <instructions> <Bundle-Activator>info.kwarc.sally4.core.impl.Activator</Bundle-Activator> - <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName> + <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> <Private-Package>info.kwarc.sally4.core.impl</Private-Package> <Export-Package>info.kwarc.sally4.core*;info.kwarc.sally.comm*</Export-Package> <Import-Package>*;</Import-Package> diff --git a/core/src/main/java/info/kwarc/sally/comm/CommUtils.java b/core/src/main/java/info/kwarc/sally/comm/CommUtils.java index 8a69b3eed6403bcfa89c7f5a949ccf6991019a27..f8f7ebfa1825f0797ed0ec83ac946dd956fc57c1 100644 --- a/core/src/main/java/info/kwarc/sally/comm/CommUtils.java +++ b/core/src/main/java/info/kwarc/sally/comm/CommUtils.java @@ -16,4 +16,16 @@ public class CommUtils { } } + + + public static DataFormat getDataFormat(String iFace, ClassLoader loader) { + try { + JAXBContext context = JAXBContext.newInstance("info.kwarc.sally.comm."+iFace, loader); + return new JaxbDataFormat(context); + } catch (JAXBException e) { + return null; + } + + } + } diff --git a/mmt/pom.xml b/mmt/pom.xml index 3d38fe79d8fa969bc2826a67c8c9c6e3791f0d3e..adddee541687acc27a446bccd0e3ed07e3e302ee 100644 --- a/mmt/pom.xml +++ b/mmt/pom.xml @@ -102,7 +102,7 @@ <extensions>true</extensions> <configuration> <instructions> - <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName> + <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> <Private-Package>info.kwarc.sally4.mmt.impl</Private-Package> <Import-Package>*;</Import-Package> <Export-Package>info.kwarc.sally4.mmt*</Export-Package> diff --git a/pom.xml b/pom.xml index 2d3bea219650376ca8536ceb864b5aab2697f42a..a3c61dca91102ed2cb480559b3a0a36bcff8b667 100644 --- a/pom.xml +++ b/pom.xml @@ -14,6 +14,7 @@ <module>docmanager</module> <module>planetary</module> <module>servlet</module> + <module>MathHubWorker</module> </modules> <build> diff --git a/servlet/.project b/servlet/.project index da0815d7e5fa2578995b5b1acc0b291f48411ae1..d861ace9e9541e7ac32ffbec2b1ef6a4856c970d 100644 --- a/servlet/.project +++ b/servlet/.project @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <projectDescription> - <name>SallyServlet</name> + <name>servlet</name> <comment></comment> <projects> </projects> diff --git a/servlet/pom.xml b/servlet/pom.xml index f316c9b43875676c103e85c807e14537a80b8dcb..4df724d6c7f86086d606c7475d9c1f994aa56cba 100644 --- a/servlet/pom.xml +++ b/servlet/pom.xml @@ -86,7 +86,7 @@ <extensions>true</extensions> <configuration> <instructions> - <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName> + <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> <Private-Package>info.kwarc.sally4.servlet.impl</Private-Package> <Import-Package>*;</Import-Package> <Export-Package>info.kwarc.sally4.servlet*</Export-Package> diff --git a/servlet/src/main/java/info/kwarc/sally4/servlet/impl/ServletImpl.java b/servlet/src/main/java/info/kwarc/sally4/servlet/impl/ServletImpl.java index b93499cc18b1ea4b0da4c614d41f2d6ec128896e..abfa7876de7bc27556a8741543894da7a3b39c5d 100644 --- a/servlet/src/main/java/info/kwarc/sally4/servlet/impl/ServletImpl.java +++ b/servlet/src/main/java/info/kwarc/sally4/servlet/impl/ServletImpl.java @@ -33,13 +33,13 @@ public class ServletImpl implements SallyServlet { httpSevlet.registerServlet("/sally", srvlet, null, null); ServletComponent servletComponent = new ServletComponent(); servletComponent.setServletName(srvlet.getServletName()); - camelContextProvider.getSallyCamelContext().addComponent("sallyservlet", servletComponent); + camelContextProvider.registerGlobalComponent("sallyservlet", servletComponent); } @Invalidate public void stop() { httpSevlet.unregister("/sally"); - camelContextProvider.getSallyCamelContext().removeComponent("sallyservlet"); + camelContextProvider.unregisterGlobalComponent("sallyservlet"); } }