Skip to content
Snippets Groups Projects
Commit bbe2beb5 authored by Constantin Jucovschi's avatar Constantin Jucovschi
Browse files

SallyCore is more stable.

parent 13fe0626
No related branches found
No related tags found
No related merge requests found
Showing
with 117 additions and 113 deletions
package info.kwarc.sally4.docmanager;
import info.kwarc.sally.comm.core.Registerdocument;
import info.kwarc.sally4.docmanager.component.AlexComponent;
import info.kwarc.sally4.core.ProducerConsumerSplitterComponent;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.camel.component.ActiveMQComponent;
......@@ -30,24 +30,7 @@ public class TT extends RouteBuilder {
ActiveMQComponent comp = new ActiveMQComponent(config);
context.addComponent("activemq", comp);
context.addComponent("alex", new AlexComponent(new AlexRoute() {
public String getAlexStateQueue() {
return "sally_alex";
}
public String getAlexQueue() {
return "alex";
}
public void addOnStopHandler(Runnable r) {
}
public void stop() {
}
}));
context.addComponent("alex", new ProducerConsumerSplitterComponent("direct:consumer", "direct:producer"));
context.addRoutes(new TT());
context.start();
......
package info.kwarc.sally4.docmanager.impl;
import info.kwarc.sally4.core.ProducerConsumerSplitterComponent;
import info.kwarc.sally4.docmanager.AlexRoute;
import info.kwarc.sally4.docmanager.IDocWorkflow;
......@@ -10,6 +11,7 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Queue;
import java.util.UUID;
import org.apache.camel.Exchange;
import org.slf4j.Logger;
......@@ -92,4 +94,14 @@ public class AlexRouteImpl implements AlexRoute {
}
}
}
@Override
public String getID() {
return UUID.randomUUID().toString();
}
@Override
public ProducerConsumerSplitterComponent getAlexComponent() {
return new ProducerConsumerSplitterComponent("activemq:queue:"+alexStateQueue, "activemq:queue:"+alexQueue);
}
}
......@@ -61,15 +61,17 @@ public class DocumentManagerImpl implements DocumentManager {
AlexRouteImpl route = new AlexRouteImpl(doc.getDocumentqueue(), doc.getTheoqueue(), doc.getInterfaces());
docs.put(doc.getDocumentqueue(), route);
return route;
}
public void addRouteToWorkflows(AlexRouteImpl 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;
}
......
package info.kwarc.sally4.docmanager.impl;
import info.kwarc.sally4.docmanager.AlexRoute;
import info.kwarc.sally4.docmanager.IDocWorkflow;
import org.apache.camel.Exchange;
import org.apache.felix.ipojo.annotations.Component;
import org.apache.felix.ipojo.annotations.Instantiate;
import org.apache.felix.ipojo.annotations.Provides;
@Component
@Instantiate
@Provides
public class DummyWorkflow implements IDocWorkflow {
@Override
public String[] getInterfaceRequirements() {
return new String[]{"SomeNearlyImpossibleInterfaceRequirement"};
}
@Override
public String[] getHandlingNamespaces() {
return new String[]{};
}
@Override
public boolean handleMessage(String namespace, String type,
Exchange exchange) {
return false;
}
@Override
public void onNewDocument(AlexRoute route) {
}
}
......@@ -4,6 +4,7 @@ import info.kwarc.sally.comm.CommUtils;
import info.kwarc.sally.comm.core.Heartbeatrequest;
import info.kwarc.sally4.docmanager.impl.AlexRouteImpl;
import info.kwarc.sally4.docmanager.impl.AlexRouteMessageProcessor;
import info.kwarc.sally4.docmanager.impl.DocumentManagerImpl;
import org.apache.camel.ExchangeTimedOutException;
import org.apache.camel.builder.RouteBuilder;
......@@ -15,6 +16,7 @@ public class SallyAlexRoute extends RouteBuilder {
Logger log;
AlexRouteImpl route;
DocumentManagerImpl docManager;
public Heartbeatrequest generateHeartbeat() {
return new Heartbeatrequest();
......@@ -43,14 +45,16 @@ public class SallyAlexRoute extends RouteBuilder {
.inOut("alex:default")
.doCatch(ExchangeTimedOutException.class)
.bean(method(this, "stopSallyRoute"));
/**
*
*/
from("alex:defaultin")
.convertBodyTo(String.class)
.process(new AlexRouteMessageProcessor(route))
.to("alex:defaultout");
.to("alex:defaultout");
}
}
......@@ -2,12 +2,13 @@ package info.kwarc.sally4.docmanager.routes;
import info.kwarc.sally.comm.CommUtils;
import info.kwarc.sally.comm.core.Registerdocumentresponse;
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;
import org.apache.camel.ExchangePattern;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.jms.JmsConstants;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.spi.DataFormat;
......@@ -18,7 +19,7 @@ public class SallyRegisterRoute extends RouteBuilder {
public static final String mockSallyRegisterQueueOutput = "mock:/queue/sally_register_out";
DocumentManagerImpl docManager;
public SallyRegisterRoute(DocumentManagerImpl docManager) {
this.docManager = docManager;
}
......@@ -26,13 +27,14 @@ public class SallyRegisterRoute extends RouteBuilder {
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.addComponent("alex", route.getAlexComponent());
alexRouteContext.addRoutes(new SallyAlexRoute(route));
alexRouteContext.getShutdownStrategy().setTimeout(10);
alexRouteContext.start();
route.addOnStopHandler(new Runnable() {
public void run() {
try {
alexRouteContext.stop();
......@@ -41,21 +43,33 @@ public class SallyRegisterRoute extends RouteBuilder {
}
}
});
Registerdocumentresponse response = new Registerdocumentresponse();
response.setSallyqueue(route.getAlexStateQueue());
return response;
}
@Override
public void configure() throws Exception {
DataFormat core = CommUtils.getDataFormat("core");
from("activemq:queue:"+sallyRegisterQueue)
.unmarshal(core)
.bean(docManager, "registerDocument")
.bean(method(this, "createRouteContext"))
.marshal(core);
.bean(docManager, "registerDocument")
.setProperty("route", body())
.bean(method(this, "createRouteContext"))
.setExchangePattern(ExchangePattern.InOnly)
.multicast().parallelProcessing()
.to("direct:sendResponse", "direct:alexRoute");
from("direct:alexRoute")
.setBody(property("route"))
.bean(docManager, "addRouteToWorkflows")
.end();
from("direct:sendResponse")
.marshal(core)
.setHeader(JmsConstants.JMS_DESTINATION, header("JMSReplyTo"))
.to("activemq:mock");
}
}
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;
}
}
......@@ -18,7 +18,7 @@
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
......
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.compliance=1.6
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.7
org.eclipse.jdt.core.compiler.source=1.6
......@@ -54,14 +54,12 @@
<version>${sally4.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-sql</artifactId>
......
......@@ -4,21 +4,20 @@ import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.sql.SqlComponent;
import org.apache.camel.impl.DefaultCamelContext;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
public class TestMain {
public static void main(String[] args) throws Exception {
CamelContext context = new DefaultCamelContext();
SqlComponent sqlComponent = new SqlComponent();
MysqlDataSource mysqlDataSource = new MysqlDataSource();
mysqlDataSource.setUser("root");
mysqlDataSource.setPassword("rootul");
mysqlDataSource.setServerName("localhost");
mysqlDataSource.setDatabaseName("planetmmt1");
sqlComponent.setDataSource(mysqlDataSource);
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/planetmmt1");
dataSource.setUsername("root");
dataSource.setPassword("rootul");
SqlComponent sqlComponent = new SqlComponent();
sqlComponent.setDataSource(dataSource);
context.addComponent("planetary", sqlComponent);
context.addRoutes(new RouteBuilder() {
......
......@@ -3,7 +3,6 @@ package info.kwarc.sally4.planetary.impl;
import info.kwarc.sally4.core.CamelContextProvider;
import info.kwarc.sally4.planetary.PlanetaryConnection;
import org.apache.camel.CamelContext;
import org.apache.camel.component.sql.SqlComponent;
import org.apache.felix.ipojo.annotations.Component;
import org.apache.felix.ipojo.annotations.Instantiate;
......@@ -20,12 +19,20 @@ import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
public class PlanetaryConnectionImpl implements PlanetaryConnection {
@Requires
CamelContextProvider camelContextProvider;
MysqlDataSource mysqlDataSource;
@Validate
public void start() {
// DriverManagerDataSource dataSource = new DriverManagerDataSource();
// dataSource.setDriverClassName("com.mysql.jdbc.Driver");
// dataSource.setUrl("jdbc:mysql://localhost:3306/planetmmt1");
// dataSource.setUsername("root");
// dataSource.setPassword("rootul");
//
// SqlComponent sqlComponent = new SqlComponent();
// sqlComponent.setDataSource(dataSource);
SqlComponent sqlComponent = new SqlComponent();
mysqlDataSource = new MysqlDataSource();
MysqlDataSource mysqlDataSource = new MysqlDataSource();
mysqlDataSource.setUser("root");
mysqlDataSource.setPassword("rootul");
mysqlDataSource.setServerName("localhost");
......
......@@ -29,8 +29,8 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
......
......@@ -18,7 +18,7 @@
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
......
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.compliance=1.6
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.7
org.eclipse.jdt.core.compiler.source=1.6
/home/costea/workspace_sally4/Felix/start.sh
\ No newline at end of file
/home/costea/workspace_sally4/sally4.git/Felix/start.sh
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment