[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