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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Feb 25 16:52:11 EST 2010


Author: lucazamador
Date: 2010-02-25 16:52:10 -0500 (Thu, 25 Feb 2010)
New Revision: 31843

Added:
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/service/
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/service/KnowledgeServiceRest.java
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/service/KnowledgeServiceSoap.java
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/service/KnowledgeServiceSoapImpl.java
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/resources/profiles.xml
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/webapp/WEB-INF/cxf.xml
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/pipeline/
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/pipeline/camel/
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/pipeline/camel/Person.java
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/service/
   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
Removed:
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/client/
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/rest/
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/rest/
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/org/
Modified:
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/pom.xml
   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/KnowledgeServiceServlet.java
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/profile/KnowledgeServerProfile.java
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/webapp/WEB-INF/web.xml
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/profile/KnowledgeContextProfileTest.java
Log:
soap & rest integration

Modified: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/pom.xml
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/pom.xml	2010-02-25 18:28:23 UTC (rev 31842)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/pom.xml	2010-02-25 21:52:10 UTC (rev 31843)
@@ -61,24 +61,18 @@
          <groupId>javax.servlet</groupId>
          <artifactId>servlet-api</artifactId>
       </dependency>
-      <!-- Resteasy deps -->
-      <dependency>
-      	<groupId>org.jboss.resteasy</groupId>
-      	<artifactId>resteasy-jaxrs</artifactId>
-      	<version>1.2.1.GA</version>
-	  </dependency>
+      <!-- CXF deps -->
 	  <dependency>
-      	<groupId>tjws</groupId>
-      	<artifactId>webserver</artifactId>
-      	<version>1.3.3</version>
-      	<scope>test</scope>
+		<groupId>org.apache.cxf</groupId>
+		<artifactId>cxf-rt-frontend-jaxws</artifactId>
+		<version>2.2.6</version>
 	  </dependency>
 	  <dependency>
-	  	<groupId>javax.servlet</groupId>
-		<artifactId>servlet-api</artifactId>
-		<version>2.5</version>
-		<scope>test</scope>
-	  </dependency>
+		<groupId>org.apache.cxf</groupId>
+		<artifactId>cxf-bundle-jaxrs</artifactId>
+		<version>2.2.6</version>
+  	  </dependency>
+      
 	  <dependency>
 	  	<groupId>commons-httpclient</groupId>
 	  	<artifactId>commons-httpclient</artifactId>

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 18:28:23 UTC (rev 31842)
+++ 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)
@@ -1,9 +1,7 @@
 package org.drools.server;
 
-import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.InputStreamReader;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -17,6 +15,7 @@
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.util.jndi.JndiContext;
+import org.drools.CheckedDroolsException;
 import org.drools.KnowledgeBase;
 import org.drools.builder.KnowledgeBuilder;
 import org.drools.builder.ResourceType;
@@ -107,7 +106,7 @@
 						}
 						kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
 					} catch (IOException e) {
-						throw new Exception("Error creating XSD model", e);
+						throw new CheckedDroolsException("Error creating XSD model", e);
 					}
 				}
 			}
@@ -131,7 +130,7 @@
 				serviceManager.register(contextProfile.getId(), session);
 			}
 			else 
-				throw new Exception("Bad session type. Expected stateless or stateful");
+				throw new CheckedDroolsException("Bad session type. Expected stateless or stateful");
 
 			kbases.put(contextProfile.getId(), kbase);
 
@@ -145,25 +144,7 @@
 		}
 	}
 
-	public String executeService(InputStream inputStream, KnowledgeContextProfile contextProfile) throws Exception {
-		StringBuilder sb = new StringBuilder();
-		String line;
-		try {
-			BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
-			while ((line = reader.readLine()) != null) {
-				sb.append(line).append("\n");
-			}
-			return executeCommand(contextProfile, sb.toString());
-		} catch (IOException e) {
-			throw new Exception("Unable to read the xml command", e);
-		}
-		finally {
-			inputStream.close();
-		}
-
-	}
-
-	private String executeCommand(KnowledgeContextProfile contextProfile, String cmd) throws Exception {
+	public String executeCommand(KnowledgeContextProfile contextProfile, String cmd) throws CheckedDroolsException {
 		if (contextProfile.hasJaxbModels()) {
 			JAXBContext jaxbContext = getJaxbContext(contextProfile.getId());
 			if ("stateless".equalsIgnoreCase(contextProfile.getSessionType())) {
@@ -173,7 +154,7 @@
 				return new String((byte[])template.requestBodyAndHeader("direct:with-session-jaxb", cmd, "jaxb-context", jaxbContext));
 			}
 			else
-				throw new Exception("Bad session type. Expected stateless or stateful");
+				throw new CheckedDroolsException("Bad session type. Expected stateless or stateful");
 		}
 		else {
 			if ("stateless".equalsIgnoreCase(contextProfile.getSessionType())) {
@@ -183,7 +164,7 @@
 				return new String((byte[])template.requestBody("direct:with-session-xstream", cmd));
 			}
 			else
-				throw new Exception("Bad session type. Expected stateless or stateful");
+				throw new CheckedDroolsException("Bad session type. Expected stateless or stateful");
 		}
 //		if (contextProfile.hasJaxbModels()) {
 //			JAXBContext jaxbContext = getJaxbContext(contextProfile.getId());
@@ -222,7 +203,7 @@
 			profiles = (KnowledgeServerProfile) xstream.fromXML(stream);
 		}
 		catch (Exception e) {
-			throw new Exception("Error reading profiles configurations", e);
+			throw new CheckedDroolsException("Error reading profiles configurations", e);
 		}
 	}
 
@@ -230,9 +211,7 @@
 		if (cachedJaxbContexts.containsKey(profileId)) {
 			return cachedJaxbContexts.get(profileId);
 		}
-		// TODO: work on this possible error. Trying to execute jaxb command on xstream session?
 		return null;
 	}
 
-
 }

Modified: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/KnowledgeServiceServlet.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/KnowledgeServiceServlet.java	2010-02-25 18:28:23 UTC (rev 31842)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/KnowledgeServiceServlet.java	2010-02-25 21:52:10 UTC (rev 31843)
@@ -1,8 +1,10 @@
 package org.drools.server;
 
+import java.io.BufferedReader;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.io.OutputStream;
 import java.io.PrintStream;
 import java.util.regex.Matcher;
@@ -13,6 +15,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.drools.CheckedDroolsException;
 import org.drools.RuntimeDroolsException;
 import org.drools.server.profile.KnowledgeContextProfile;
 
@@ -26,7 +29,7 @@
 	private static final long serialVersionUID = 1L;
 
 	public static Pattern urlPattern = Pattern.compile(".*/servlet/(.*)");
-	
+
 	private static KnowledgeService service;
 
 	static {
@@ -36,7 +39,7 @@
 			throw new RuntimeDroolsException(e);
 		}
 	}
-	
+
 	@Override
 	protected void doPost(HttpServletRequest request, HttpServletResponse resp) throws ServletException, IOException {
 		String uri = request.getRequestURI();
@@ -57,7 +60,7 @@
 		}
 		try {
 			service.checkContextStatus(contextProfile);
-			String response = service.executeService(getInputStream(request), contextProfile);
+			String response = service.executeCommand(contextProfile, getCommand(request));
 			// Write response to OutputStream
 			OutputStream outputStream = getOutputStream(resp);
 			outputStream.write(response.getBytes());
@@ -69,11 +72,34 @@
 		}
 	}
 
+	private String getCommand(HttpServletRequest request) throws CheckedDroolsException {
+		InputStream inputStream = null;
+		try {
+			inputStream = getInputStream(request);
+			StringBuilder sb = new StringBuilder();
+			String line;
+			BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
+			while ((line = reader.readLine()) != null) {
+				sb.append(line).append("\n");
+			}
+			return sb.toString();
+		} catch (IOException e) {
+			throw new CheckedDroolsException("Unable to read the xml command", e);
+		}
+		finally {
+			try {
+				inputStream.close();
+			} catch (IOException e) {
+				throw new CheckedDroolsException(e.getMessage());
+			}
+		}
+	}
+
 	@Override
 	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 		resp.sendRedirect("");
 	}
-	
+
 	OutputStream getOutputStream(HttpServletResponse resp) throws IOException {
 		return resp.getOutputStream();
 	}

Modified: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/profile/KnowledgeServerProfile.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/profile/KnowledgeServerProfile.java	2010-02-25 18:28:23 UTC (rev 31842)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/profile/KnowledgeServerProfile.java	2010-02-25 21:52:10 UTC (rev 31843)
@@ -10,7 +10,7 @@
 public class KnowledgeServerProfile {
 
 	@XStreamImplicit(itemFieldName="knowledge-context-profile")
-	private List<KnowledgeContextProfile> profiles;
+	private List<KnowledgeContextProfile> profiles = new ArrayList<KnowledgeContextProfile>();
 
 	public void setProfilse(List<KnowledgeContextProfile> profiles) {
 		this.profiles = profiles;
@@ -29,6 +29,9 @@
 
 	public KnowledgeContextProfile getProfile(String id) {
 		// TODO change this
+		if (profiles==null) {
+			return null;
+		}
 		for (KnowledgeContextProfile profile : profiles) {
 			if (profile.getId().equals(id)) {
 				return profile;
@@ -38,6 +41,9 @@
 	}
 	
 	public boolean isValid() {
+		if (profiles==null) {
+			return true;
+		}
 		for (KnowledgeContextProfile context : profiles) {
 			if (!context.isValid()) {
 				return false;

Added: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/service/KnowledgeServiceRest.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/service/KnowledgeServiceRest.java	                        (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/service/KnowledgeServiceRest.java	2010-02-25 21:52:10 UTC (rev 31843)
@@ -0,0 +1,65 @@
+package org.drools.server.service;
+
+import java.io.IOException;
+
+import javax.ws.rs.FormParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.ResponseBuilder;
+import javax.ws.rs.core.Response.Status;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.server.KnowledgeService;
+import org.drools.server.profile.KnowledgeContextProfile;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * RestWS interface to execute commands
+ * @author lucas
+ *
+ */
+ at Path("/rest")
+public class KnowledgeServiceRest {
+	
+	private static Logger logger = LoggerFactory.getLogger(KnowledgeServiceRest.class);
+	private static KnowledgeService service;
+	
+	static {
+		try {
+			service = KnowledgeService.getInstance();
+		} catch (Exception e) {
+			throw new RuntimeDroolsException(e);
+		}
+	}
+	
+	@POST()
+	@Path("/execute")
+	public Response execute(@FormParam("profile") String profile, @FormParam("command") String command) {
+		if (profile==null || profile.length()==0 || command==null || command.length()==0) {
+			logger.error("Bad parameters:\nprofile: " + profile + "\ncommand: " + command + "\n");			
+			return Response.status(Status.BAD_REQUEST).build();
+		}
+		String response;
+		logger.info("profile: " + profile);
+		try {
+			KnowledgeContextProfile contextProfile = service.getContextProfile(profile);
+			if (contextProfile==null) {
+				logger.error("Context profile don't exists");
+				return Response.status(Status.FORBIDDEN).build();
+			}
+			service.checkContextStatus(contextProfile);
+			response = service.executeCommand(contextProfile, command);
+		} catch (IOException e) {
+			logger.error(e.getMessage());
+			return Response.status(Status.BAD_REQUEST).build();
+		} catch (Exception e) {
+			logger.error(e.getMessage());
+			return Response.status(Status.CONFLICT).build();
+		}
+		ResponseBuilder builder = Response.ok(response, "application/xml");
+        return builder.build();
+	}
+	
+}


Property changes on: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/service/KnowledgeServiceRest.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/service/KnowledgeServiceSoap.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/service/KnowledgeServiceSoap.java	                        (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/service/KnowledgeServiceSoap.java	2010-02-25 21:52:10 UTC (rev 31843)
@@ -0,0 +1,13 @@
+package org.drools.server.service;
+
+import javax.jws.WebParam;
+import javax.jws.WebService;
+
+import org.drools.CheckedDroolsException;
+
+ at WebService
+public interface KnowledgeServiceSoap {
+
+	String execute(@WebParam(name="profile") String profile, @WebParam(name="command") String command) throws CheckedDroolsException;
+
+}
\ No newline at end of file


Property changes on: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/service/KnowledgeServiceSoap.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/service/KnowledgeServiceSoapImpl.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/service/KnowledgeServiceSoapImpl.java	                        (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/service/KnowledgeServiceSoapImpl.java	2010-02-25 21:52:10 UTC (rev 31843)
@@ -0,0 +1,41 @@
+package org.drools.server.service;
+
+import javax.jws.WebService;
+
+import org.drools.CheckedDroolsException;
+import org.drools.RuntimeDroolsException;
+import org.drools.server.KnowledgeService;
+import org.drools.server.profile.KnowledgeContextProfile;
+
+ at WebService(endpointInterface = "org.drools.server.service.KnowledgeServiceSoap", serviceName = "knowledgeService")
+public class KnowledgeServiceSoapImpl implements KnowledgeServiceSoap {
+
+	private KnowledgeService service;
+	
+	public KnowledgeServiceSoapImpl() {
+		try {
+			service = KnowledgeService.getInstance();
+		} catch (Exception e) {
+			throw new RuntimeDroolsException(e);
+		}
+	}
+	
+	public String execute(String profile, String command) throws CheckedDroolsException {
+		if (profile==null || profile.length()==0 || command==null || command.length()==0) {
+			throw new CheckedDroolsException("Null or wrong parameters");
+		}
+		String response = null;
+		try {
+			KnowledgeContextProfile contextProfile = service.getContextProfile(profile);
+			if (contextProfile==null) {
+				throw new CheckedDroolsException("Context profile " + profile + " don't exists");
+			}
+			service.checkContextStatus(contextProfile);
+			response = service.executeCommand(contextProfile, command);
+		} catch (Exception e) {
+			throw new CheckedDroolsException(e.getMessage());
+		}
+        return response;
+	}
+
+}
\ No newline at end of file


Property changes on: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/service/KnowledgeServiceSoapImpl.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/resources/profiles.xml
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/resources/profiles.xml	                        (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/resources/profiles.xml	2010-02-25 21:52:10 UTC (rev 31843)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<profiles>
+	<knowledge-context-profile id="ksession1">
+		<session-type>stateful</session-type>
+		<change-sets>
+			<file>changesets/change-set-1.xml</file>
+		</change-sets>
+		<jaxb-models>
+			<file>model/person.xsd</file>
+		</jaxb-models>
+		<startup-commands>
+			<command>
+        	<![CDATA[
+			<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+			<batch-execution lookup="ksession1" xmlns:ns2="http://drools.org/model">
+			    <insert out-identifier="santa">
+			        <object xsi:type="ns2:person" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+			            <ns2:name>santa</ns2:name>
+			            <ns2:age>99</ns2:age>
+			        </object>
+			    </insert>
+			</batch-execution>
+  	   		]]>
+			</command>
+		</startup-commands>
+	</knowledge-context-profile>
+
+	<knowledge-context-profile id="ksession2">
+		<session-type>stateless</session-type>
+		<change-sets>
+			<file>changesets/change-set-2.xml</file>
+		</change-sets>
+	</knowledge-context-profile>
+
+</profiles>


Property changes on: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/resources/profiles.xml
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/webapp/WEB-INF/cxf.xml
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/webapp/WEB-INF/cxf.xml	                        (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/webapp/WEB-INF/cxf.xml	2010-02-25 21:52:10 UTC (rev 31843)
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<beans xmlns="http://www.springframework.org/schema/beans"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:context="http://www.springframework.org/schema/context"
+    xmlns:cxf="http://cxf.apache.org/core"
+    xmlns:jaxws="http://cxf.apache.org/jaxws"
+    xmlns:jaxrs="http://cxf.apache.org/jaxrs"
+    xsi:schemaLocation="http://www.springframework.org/schema/beans
+        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+        http://www.springframework.org/schema/context
+        http://www.springframework.org/schema/context/spring-context-2.5.xsd
+        http://cxf.apache.org/core
+        http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws
+        http://cxf.apache.org/schemas/jaxws.xsd
+        http://cxf.apache.org/jaxrs
+		http://cxf.apache.org/schemas/jaxrs.xsd"
+    default-autowire="byName">
+
+    <!-- Load CXF modules from cxf.jar -->
+    <import resource="classpath:META-INF/cxf/cxf.xml" />
+    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
+    <import resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml" />
+    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
+    
+    <!-- The service bean -->
+    <bean id="knowledgeServiceSoapImpl" class="org.drools.server.service.KnowledgeServiceSoapImpl"/>
+
+    <!-- Service endpoint -->
+    <jaxws:endpoint id="knowledgeServiceSoap"
+            implementorClass="org.drools.server.service.KnowledgeServiceSoalImpl"
+            implementor="#knowledgeServiceSoapImpl"
+            address="/soap">
+    </jaxws:endpoint>
+    
+    <jaxrs:server id="knowledgeServiceRest" address="/">
+        <jaxrs:serviceBeans>
+            <ref bean="knowledgeServiceRestImpl" />
+        </jaxrs:serviceBeans>
+    </jaxrs:server>
+
+    <bean id="knowledgeServiceRestImpl" class="org.drools.server.service.KnowledgeServiceRest" />
+    
+</beans>
\ No newline at end of file


Property changes on: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/webapp/WEB-INF/cxf.xml
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/webapp/WEB-INF/web.xml
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/webapp/WEB-INF/web.xml	2010-02-25 18:28:23 UTC (rev 31842)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/webapp/WEB-INF/web.xml	2010-02-25 21:52:10 UTC (rev 31843)
@@ -2,44 +2,37 @@
 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
 <web-app>
 
-    <display-name>JBoss Drools Execution Server</display-name>
+	<display-name>JBoss Drools Execution Server</display-name>
 
-	<context-param>                                                                                                                                                                                          
-		<param-name>javax.ws.rs.Application</param-name>                                                                                                                                                 
-        <param-value>org.drools.server.rest.KnowledgeServerApplication</param-value>                                                                                                                       
+	<context-param>
+		<param-name>contextConfigLocation</param-name>
+		<param-value>/WEB-INF/cxf.xml</param-value>
 	</context-param>
-
-    <context-param>                                                                                                                                                                                          
-		<param-name>resteasy.servlet.mapping.prefix</param-name>                                                                                                                                         
-        <param-value>/rest</param-value>                                                                                                                                                                 
-    </context-param>                                                                                                                                                                                         
-
-    <listener>                                                                                                                                                                                               
-        <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>                                                                                                             
-    </listener>                                                                                                                                                                                              
-
+	
+	<listener>
+		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
+	</listener>
+	
 	<servlet>
 		<servlet-name>knowledgeService</servlet-name>
 		<servlet-class>org.drools.server.KnowledgeServiceServlet</servlet-class>
 	</servlet>
+	<servlet>
+		<servlet-name>CXFServlet</servlet-name>
+		<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
+	</servlet>
 	
-	<servlet>                                                                                                                                                                                                
-        <servlet-name>Resteasy</servlet-name>                                                                                                                                                                    
-        <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>                                                                                                           
-    </servlet>   
-
 	<servlet-mapping>
 		<servlet-name>knowledgeService</servlet-name>
 		<url-pattern>/servlet/*</url-pattern>
 	</servlet-mapping>
-                                                                                                                                                                                         
-    <servlet-mapping>                                                                                                                                                                                        
-        <servlet-name>Resteasy</servlet-name>                                                                                                                                                                    
-        <url-pattern>/rest/*</url-pattern>                                                                                                                                                                       
-    </servlet-mapping>                                     
+	<servlet-mapping>
+		<servlet-name>CXFServlet</servlet-name>
+		<url-pattern>/services/*</url-pattern>
+	</servlet-mapping>
 
-    <session-config>
-        <session-timeout>10</session-timeout>
-    </session-config>
+	<session-config>
+		<session-timeout>10</session-timeout>
+	</session-config>
 
 </web-app>

Added: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/pipeline/camel/Person.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/pipeline/camel/Person.java	                        (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/pipeline/camel/Person.java	2010-02-25 21:52:10 UTC (rev 31843)
@@ -0,0 +1,49 @@
+package org.drools.pipeline.camel;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * 
+ * @author salaboy
+ */
+ at XmlRootElement
+public class Person {
+	private String name;
+	private Integer age;
+
+	public Person() {
+	}
+
+	public Person(String name) {
+		super();
+		this.name = name;
+	}
+
+	public Person(String name, int age) {
+		super();
+		this.name = name;
+		this.age = age;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public void setAge(Integer age) {
+		this.age = age;
+	}
+
+	public Integer getAge() {
+		return age;
+	}
+
+	@Override
+	public String toString() {
+		return "Person [age=" + age + ", name=" + name + "]";
+	}
+	
+}


Property changes on: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/pipeline/camel/Person.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/profile/KnowledgeContextProfileTest.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/profile/KnowledgeContextProfileTest.java	2010-02-25 18:28:23 UTC (rev 31842)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/profile/KnowledgeContextProfileTest.java	2010-02-25 21:52:10 UTC (rev 31843)
@@ -4,11 +4,6 @@
 
 import junit.framework.TestCase;
 
-import org.drools.KnowledgeBase;
-import org.drools.KnowledgeBaseFactory;
-import org.drools.agent.KnowledgeAgent;
-import org.drools.agent.KnowledgeAgentFactory;
-import org.drools.io.ResourceFactory;
 import org.drools.io.impl.ClassPathResource;
 
 import com.thoughtworks.xstream.XStream;
@@ -51,23 +46,22 @@
 		KnowledgeServerProfile profiles = (KnowledgeServerProfile) xstream.fromXML(new ClassPathResource("profiles.xml").getInputStream());
 		assertEquals(true, profiles.isValid());
 	}
+//
+//	public void testCreateKnowledgeAgent() throws Exception {
+//		KnowledgeServerProfile profiles = (KnowledgeServerProfile) xstream.fromXML(new ClassPathResource("profiles.xml").getInputStream());
+//		for (KnowledgeContextProfile context : profiles.getProfiles()) {
+//			System.out.println("creating kagent profile: " + context.getId());
+//			KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent(context.getId());
+//			ResourceFactory.getResourceChangeNotifierService().start();
+//			ResourceFactory.getResourceChangeScannerService().start();
+//			KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+//			kagent = KnowledgeAgentFactory.newKnowledgeAgent("incremental builder", kbase);
+//			for (ProfileFile changeSetFile : context.getChangeSetFiles()) {
+//				System.out.println("reading " + changeSetFile.getFileName());
+//				kagent.applyChangeSet(new ClassPathResource(changeSetFile.getFileName()));
+//			}
+//			System.out.println("kagent profile: " + context.getId() + " created successful");
+//		}
+//	}
 
-	public void testCreateKnowledgeAgent() throws Exception {
-		KnowledgeServerProfile profiles = (KnowledgeServerProfile) xstream.fromXML(new ClassPathResource("profiles.xml").getInputStream());
-		for (KnowledgeContextProfile context : profiles.getProfiles()) {
-			System.out.println("creating kagent profile: " + context.getId());
-			KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent(context.getId());
-			ResourceFactory.getResourceChangeNotifierService().start();
-			ResourceFactory.getResourceChangeScannerService().start();
-			KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
-			kagent = KnowledgeAgentFactory.newKnowledgeAgent("incremental builder", kbase);
-			
-			for (ProfileFile changeSetFile : context.getChangeSetFiles()) {
-				System.out.println("reading " + changeSetFile.getFileName());
-				kagent.applyChangeSet(new ClassPathResource(changeSetFile.getFileName()));
-			}
-			System.out.println("kagent profile: " + context.getId() + " created successful");
-		}
-	}
-
 }

Added: 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	                        (rev 0)
+++ 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)
@@ -0,0 +1,128 @@
+package org.drools.server.service;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+
+import javax.ws.rs.core.Response.Status;
+
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.NameValuePair;
+import org.apache.commons.httpclient.methods.PostMethod;
+import org.apache.cxf.endpoint.Server;
+import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
+import org.drools.runtime.ExecutionResults;
+import org.drools.runtime.help.BatchExecutionHelper;
+import org.drools.runtime.rule.impl.FlatQueryResults;
+import org.drools.server.KnowledgeServiceBaseTest;
+
+public class KnowledgeServiceRestTest extends KnowledgeServiceBaseTest {
+
+	private static final String SERVICE_URL = "http://localhost:9000/drools-server/services/";
+
+	private HttpClient httpClient;
+	private Server server;
+
+	protected void setUp() throws Exception {
+		JAXRSServerFactoryBean serverFactory = new JAXRSServerFactoryBean();
+		serverFactory.setServiceClass(KnowledgeServiceRest.class);
+		serverFactory.setAddress(SERVICE_URL);
+		serverFactory.setResourceClasses(KnowledgeServiceRest.class);
+		server = serverFactory.create();
+		httpClient = new HttpClient();
+		httpClient.getHostConfiguration().setHost("localhost", 9000, "http");
+	}
+
+	public void testInvalidCommand() throws Exception {
+		PostMethod postMethod = new PostMethod("/drools-server/services/rest/execute");
+		NameValuePair profile = new NameValuePair("profile", "ksession1");
+		NameValuePair command = new NameValuePair("command", null);
+
+		postMethod.setRequestBody(new NameValuePair[] {profile, command});
+		httpClient.executeMethod(postMethod);
+
+		assertEquals(Status.BAD_REQUEST.getStatusCode(), postMethod.getStatusCode());
+
+		server.stop();
+	}
+
+	public void testInvalidProfile() throws Exception {
+		PostMethod postMethod = new PostMethod("/drools-server/services/rest/execute");
+		NameValuePair profile = new NameValuePair("profile", "inexistentProfile");
+		NameValuePair command = new NameValuePair("command", "xml definition");
+
+		postMethod.setRequestBody(new NameValuePair[] {profile, command});
+		httpClient.executeMethod(postMethod);
+
+		assertEquals(Status.FORBIDDEN.getStatusCode(), postMethod.getStatusCode());
+
+		server.stop();
+	}
+
+	public void testJaxbInsertCommand() 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);
+
+		server.stop();
+	}
+
+	public void testXStreamInsertCommand() throws Exception {
+		String cmd = getXStreamCommand();
+
+		PostMethod postMethod = new PostMethod("/drools-server/services/rest/execute");
+		NameValuePair profile = new NameValuePair("profile", "ksession2");
+		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);
+
+		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;
+		try {
+			BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
+			while ((line = reader.readLine()) != null) {
+				sb.append(line).append("\n");
+			}
+		}
+		finally {
+			inputStream.close();
+		}
+		return sb.toString();
+	}
+
+}


Property changes on: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/service/KnowledgeServiceRestTest.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: 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	                        (rev 0)
+++ 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)
@@ -0,0 +1,61 @@
+package org.drools.server.service;
+
+import org.apache.cxf.endpoint.Server;
+import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
+import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
+import org.drools.runtime.ExecutionResults;
+import org.drools.runtime.help.BatchExecutionHelper;
+import org.drools.runtime.rule.impl.FlatQueryResults;
+import org.drools.server.KnowledgeServiceBaseTest;
+
+public class KnowledgeServiceSoapTest extends KnowledgeServiceBaseTest {
+
+	private static final String SERVICE_URL = "http://localhost:9000/drools-server/services/soap";
+	private Server server;
+
+	@Override
+	protected void setUp() throws Exception {
+		super.setUp();
+		JaxWsServerFactoryBean serverFactory = new JaxWsServerFactoryBean();
+		serverFactory.setServiceClass(KnowledgeServiceSoap.class);
+		serverFactory.setAddress(SERVICE_URL);
+		serverFactory.setServiceBean(new KnowledgeServiceSoapImpl());
+//		serverFactory.getInInterceptors().add(new LoggingInInterceptor());
+//		serverFactory.getOutInterceptors().add(new LoggingOutInterceptor());
+		server = serverFactory.create();
+	}
+
+	public void testJaxbCommand() 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);
+
+		server.stop();
+	}
+
+	public void testXStreamCommand() throws Exception {
+		JaxWsProxyFactoryBean clientFactory = new JaxWsProxyFactoryBean();
+		clientFactory.setServiceClass(KnowledgeServiceSoap.class);
+		clientFactory.setAddress(SERVICE_URL);
+		KnowledgeServiceSoap client = (KnowledgeServiceSoap) clientFactory.create();
+
+		String 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();
+	}
+
+}


Property changes on: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/service/KnowledgeServiceSoapTest.java
___________________________________________________________________
Name: svn:eol-style
   + native



More information about the jboss-svn-commits mailing list