[jboss-svn-commits] JBL Code SVN: r31844 - in labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src: test/java/org/drools/server and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Feb 25 17:24:48 EST 2010


Author: lucazamador
Date: 2010-02-25 17:24:47 -0500 (Thu, 25 Feb 2010)
New Revision: 31844

Modified:
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/KnowledgeService.java
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/KnowledgeServiceServletTest.java
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/service/KnowledgeServiceRestTest.java
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/service/KnowledgeServiceSoapTest.java
Log:
camel routes created dinamically

Modified: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/KnowledgeService.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/KnowledgeService.java	2010-02-25 21:52:10 UTC (rev 31843)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/KnowledgeService.java	2010-02-25 22:24:47 UTC (rev 31844)
@@ -20,7 +20,6 @@
 import org.drools.builder.KnowledgeBuilder;
 import org.drools.builder.ResourceType;
 import org.drools.builder.help.KnowledgeBuilderHelper;
-import org.drools.camel.component.DroolsComponent;
 import org.drools.io.ResourceFactory;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.StatelessKnowledgeSession;
@@ -62,7 +61,6 @@
 		Context context = new JndiContext();
 		context.bind("sm", serviceManager);
 		camelContext = new DefaultCamelContext(context);
-		camelContext.addRoutes(createRouteBuilder());
 		camelContext.start();
 		template = camelContext.createProducerTemplate();
 		readKnowledgeContextProfiles();
@@ -133,6 +131,8 @@
 				throw new CheckedDroolsException("Bad session type. Expected stateless or stateful");
 
 			kbases.put(contextProfile.getId(), kbase);
+			
+			createCamelRoutes(contextProfile);
 
 			// Execute the startups commands
 			if (contextProfile.hasStartupCommands()) {
@@ -147,45 +147,27 @@
 	public String executeCommand(KnowledgeContextProfile contextProfile, String cmd) throws CheckedDroolsException {
 		if (contextProfile.hasJaxbModels()) {
 			JAXBContext jaxbContext = getJaxbContext(contextProfile.getId());
-			if ("stateless".equalsIgnoreCase(contextProfile.getSessionType())) {
-				return new String((byte[])template.requestBodyAndHeader("direct:no-session-jaxb", cmd, "jaxb-context", jaxbContext));
-			}
-			else if ("stateful".equalsIgnoreCase(contextProfile.getSessionType())) {
-				return new String((byte[])template.requestBodyAndHeader("direct:with-session-jaxb", cmd, "jaxb-context", jaxbContext));
-			}
-			else
-				throw new CheckedDroolsException("Bad session type. Expected stateless or stateful");
+			return new String((byte[])template.requestBodyAndHeader("direct:with-session-jaxb", cmd, "jaxb-context", jaxbContext));
 		}
 		else {
-			if ("stateless".equalsIgnoreCase(contextProfile.getSessionType())) {
-				return new String((byte[])template.requestBodyAndHeader("direct:no-session-xstream", cmd, DroolsComponent.DROOLS_LOOKUP, contextProfile.getId()));
-			}
-			else if ("stateful".equalsIgnoreCase(contextProfile.getSessionType())) {
-				return new String((byte[])template.requestBody("direct:with-session-xstream", cmd));
-			}
-			else
-				throw new CheckedDroolsException("Bad session type. Expected stateless or stateful");
+			return new String((byte[])template.requestBody("direct:with-session-xstream", cmd));
 		}
-//		if (contextProfile.hasJaxbModels()) {
-//			JAXBContext jaxbContext = getJaxbContext(contextProfile.getId());
-//			return new String((byte[])template.requestBodyAndHeader("direct:with-session-jaxb", cmd, "jaxb-context", jaxbContext));
-//		}
-//		else {
-//			return new String((byte[])template.requestBody("direct:with-session-xstream", cmd));
-//		}
 	}
 
-	private static RouteBuilder createRouteBuilder() throws Exception {
-		return new RouteBuilder() {
+	private void createCamelRoutes(KnowledgeContextProfile contextProfile) throws Exception {
+		RouteBuilder rb = new RouteBuilder() {
 			public void configure() throws Exception {
-				from("direct:no-session-jaxb").to("drools:sm?dataFormat=drools-jaxb");
-				from("direct:no-session-xstream").to("drools:sm?dataFormat=drools-xstream");
-				from("direct:with-session-jaxb").to("drools:sm/ksession1?dataFormat=drools-jaxb");
-				from("direct:with-session-xstream").to("drools:sm/ksession1?dataFormat=drools-xstream");
 			}
 		};
+		if (contextProfile.hasJaxbModels()) {
+			rb.from("direct:with-session-jaxb").to("drools:sm/" + contextProfile.getId() + "?dataFormat=drools-jaxb");
+		}
+		else {
+			rb.from("direct:with-session-xstream").to("drools:sm/" + contextProfile.getId() + "?dataFormat=drools-xstream");
+		}
+		camelContext.addRoutes(rb);
 	}
-	
+
 	/**
 	 * Read the initial profile configuration
 	 * @throws Exception

Modified: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/KnowledgeServiceServletTest.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/KnowledgeServiceServletTest.java	2010-02-25 21:52:10 UTC (rev 31843)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/KnowledgeServiceServletTest.java	2010-02-25 22:24:47 UTC (rev 31844)
@@ -87,4 +87,47 @@
 
 	}
 
+	public void testBothSessions() throws Exception {
+
+		String cmd = getXStreamCommand();
+
+		StubbedServlet stubbedServlet = new StubbedServlet();
+		InputStream inXML = new ByteArrayInputStream(cmd.getBytes());
+		ByteArrayOutputStream outStream = new ByteArrayOutputStream();
+		stubbedServlet.setInputStream(inXML);
+		stubbedServlet.setOutputStream(outStream);
+
+		// Execution 
+		MockHTTPResponse resp = new MockHTTPResponse();
+		stubbedServlet.doPost(new MockHttpRequest("hostname/servlet/ksession2", "application/xml"), resp);
+
+		String response = new String(outStream.toByteArray());
+
+		ExecutionResults result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML(response);
+
+		assertNotNull(result.getFactHandle("lucaz"));
+
+		FlatQueryResults personsQuery = (FlatQueryResults) result.getValue("persons");
+		assertEquals(2, personsQuery.size());
+
+		cmd = getJaxbCommand();
+
+		stubbedServlet = new StubbedServlet();
+		inXML = new ByteArrayInputStream(cmd.getBytes());
+		outStream = new ByteArrayOutputStream();
+		stubbedServlet.setInputStream(inXML);
+		stubbedServlet.setOutputStream(outStream);
+
+		// Execution 
+		resp = new MockHTTPResponse();
+		stubbedServlet.doPost(new MockHttpRequest("hostname/servlet/ksession1", "application/xml"), resp);
+
+		response = new String(outStream.toByteArray());
+
+		assertTrue(response.indexOf("<ns2:name>santa</ns2:name>") > -1);
+		assertTrue(response.indexOf("<item key=\"lucaz\">\n            <value xsi:type=\"disconnectedFactHandle\"") > -1);
+		assertTrue(response.indexOf("<item key=\"baunax\">\n            <value xsi:type=\"disconnectedFactHandle\"") > -1);
+
+	}
+
 }

Modified: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/service/KnowledgeServiceRestTest.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/service/KnowledgeServiceRestTest.java	2010-02-25 21:52:10 UTC (rev 31843)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/service/KnowledgeServiceRestTest.java	2010-02-25 22:24:47 UTC (rev 31844)
@@ -110,6 +110,52 @@
 		server.stop();
 	}
 
+	public void testBothsessions() throws Exception {
+		String cmd = getJaxbCommand();
+
+		PostMethod postMethod = new PostMethod("/drools-server/services/rest/execute");
+		NameValuePair profile = new NameValuePair("profile", "ksession1");
+		NameValuePair command = new NameValuePair("command", cmd);
+
+		postMethod.setRequestBody(new NameValuePair[] {profile, command});
+		httpClient.executeMethod(postMethod);
+
+		assertEquals(200, postMethod.getStatusCode());
+
+		InputStream responseBodyAsStream = postMethod.getResponseBodyAsStream();
+
+		String response = readInputStream(responseBodyAsStream);
+
+		assertTrue(response.indexOf("<ns2:name>santa</ns2:name>") > -1);
+		assertTrue(response.indexOf("<item key=\"lucaz\">\n            <value xsi:type=\"disconnectedFactHandle\"") > -1);
+		assertTrue(response.indexOf("<item key=\"baunax\">\n            <value xsi:type=\"disconnectedFactHandle\"") > -1);
+
+		cmd = getXStreamCommand();
+
+		postMethod = new PostMethod("/drools-server/services/rest/execute");
+		profile = new NameValuePair("profile", "ksession2");
+		command = new NameValuePair("command", cmd);
+
+		postMethod.setRequestBody(new NameValuePair[] {profile, command});
+		httpClient.executeMethod(postMethod);
+
+		assertEquals(200, postMethod.getStatusCode());
+
+		responseBodyAsStream = postMethod.getResponseBodyAsStream();
+
+		response = readInputStream(responseBodyAsStream);
+
+		ExecutionResults result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML(response);
+
+		assertNotNull(result.getFactHandle("lucaz"));
+
+		FlatQueryResults personsQuery = (FlatQueryResults) result.getValue("persons");
+		assertEquals(2, personsQuery.size());
+
+		server.stop();
+
+	}
+
 	private String readInputStream(InputStream inputStream) throws UnsupportedEncodingException, IOException {
 		StringBuilder sb = new StringBuilder();
 		String line;

Modified: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/service/KnowledgeServiceSoapTest.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/service/KnowledgeServiceSoapTest.java	2010-02-25 21:52:10 UTC (rev 31843)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/service/KnowledgeServiceSoapTest.java	2010-02-25 22:24:47 UTC (rev 31844)
@@ -58,4 +58,29 @@
 		server.stop();
 	}
 
+	public void testBothSessions() throws Exception {
+		JaxWsProxyFactoryBean clientFactory = new JaxWsProxyFactoryBean();
+		clientFactory.setServiceClass(KnowledgeServiceSoap.class);
+		clientFactory.setAddress(SERVICE_URL);
+		KnowledgeServiceSoap client = (KnowledgeServiceSoap) clientFactory.create();
+
+		String response = client.execute("ksession1", getJaxbCommand());
+
+		assertTrue(response.indexOf("<ns2:name>santa</ns2:name>") > -1);
+		assertTrue(response.indexOf("<item key=\"lucaz\">\n            <value xsi:type=\"disconnectedFactHandle\"") > -1);
+		assertTrue(response.indexOf("<item key=\"baunax\">\n            <value xsi:type=\"disconnectedFactHandle\"") > -1);
+
+		response = client.execute("ksession2", getXStreamCommand());
+
+		ExecutionResults result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML(response);
+
+		assertNotNull(result.getFactHandle("lucaz"));
+
+		FlatQueryResults personsQuery = (FlatQueryResults) result.getValue("persons");
+		assertEquals(2, personsQuery.size());
+
+		server.stop();
+
+	}
+
 }



More information about the jboss-svn-commits mailing list