[jboss-svn-commits] JBL Code SVN: r31744 - in labs/jbossrules/branches/drools_server_camel_lucaz_baunax: drools-server/src/main/java/org/drools and 8 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Feb 19 10:54:41 EST 2010
Author: lucazamador
Date: 2010-02-19 10:54:39 -0500 (Fri, 19 Feb 2010)
New Revision: 31744
Added:
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/
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/profile/KnowledgeContextProfile.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/java/org/drools/server/profile/ProfileFile.java
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/profile/ProfileFileConverter.java
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/profile/StartupCommand.java
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/profile/StartupCommandConverter.java
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/profile/
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/resources/changesets/
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/changesets/change-set-1.xml
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/changesets/change-set-2.xml
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/profiles.xml
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/rules/
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/rules/person.drl
Removed:
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/sample-clients/
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/Person.java
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/AnonFact.java
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/ExampleFact.java
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/InsertedFact.java
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/KnowledgeStatelessServlet.java
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/NamedFact.java
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/QueryType.java
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/ServiceRequestMessage.java
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/ServiceResponseMessage.java
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/QueryKnowledgeServiceServletTest.java
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/QueryTypeToXmlTest.java
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/TeamAllocationTest.java
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/TeamAllocation.drl
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/testservice.properties
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/testservice2.properties
Modified:
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/pom.xml
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/StubbedServlet.java
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-vsm/src/main/java/org/drools/vsm/local/ServiceManagerLocalClient.java
Log:
execution server servlet impl
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-19 15:49:16 UTC (rev 31743)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/pom.xml 2010-02-19 15:54:39 UTC (rev 31744)
@@ -24,6 +24,16 @@
<finalName>drools-server</finalName>
</build>
<dependencies>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-camel</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-vsm</artifactId>
+ <version>${project.version}</version>
+ </dependency>
<!-- we are using the most excellent XStream library for fast XML and JSON streaming -->
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
Deleted: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/Person.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/Person.java 2010-02-19 15:49:16 UTC (rev 31743)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/Person.java 2010-02-19 15:54:39 UTC (rev 31744)
@@ -1,233 +0,0 @@
-package org.drools;
-/*
- * Copyright 2005 JBoss Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-
-
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-
-public class Person
- implements
- Serializable{
- /**
- *
- */
- private static final long serialVersionUID = 400L;
- private String name;
- private String likes;
- private int age;
- private BigDecimal bigDecimal;
- private BigInteger bigInteger;
- private String hair;
-
- private char sex;
-
- private boolean alive;
-
- private String status;
-
-
- public Person() {
-
- }
-
- public Person(final String name) {
- this( name,
- "",
- 0 );
- }
-
- public Person(final String name,
- final String likes) {
- this( name,
- likes,
- 0 );
- }
-
- public Person(final String name,
- final String likes,
- final int age) {
- this.name = name;
- this.likes = likes;
- this.age = age;
- }
-
- /* (non-Javadoc)
- * @see org.drools.PersonInterface#getStatus()
- */
- public String getStatus() {
- return this.status;
- }
-
- /* (non-Javadoc)
- * @see org.drools.PersonInterface#setStatus(java.lang.String)
- */
- public void setStatus(final String status) {
- this.status = status;
- }
-
- /* (non-Javadoc)
- * @see org.drools.PersonInterface#getLikes()
- */
- public String getLikes() {
- return this.likes;
- }
-
- /* (non-Javadoc)
- * @see org.drools.PersonInterface#getName()
- */
- public String getName() {
- return this.name;
- }
-
- public void setName(final String name) {
- this.name = name;
- }
-
- /* (non-Javadoc)
- * @see org.drools.PersonInterface#getAge()
- */
- public int getAge() {
- return this.age;
- }
-
- public void setAge(final int age) {
- this.age = age;
- }
-
- /* (non-Javadoc)
- * @see org.drools.PersonInterface#isAlive()
- */
- public boolean isAlive() {
- return this.alive;
- }
-
- /* (non-Javadoc)
- * @see org.drools.PersonInterface#setAlive(boolean)
- */
- public void setAlive(final boolean alive) {
- this.alive = alive;
- }
-
- /* (non-Javadoc)
- * @see org.drools.PersonInterface#getSex()
- */
- public char getSex() {
- return this.sex;
- }
-
- /* (non-Javadoc)
- * @see org.drools.PersonInterface#setSex(char)
- */
- public void setSex(final char sex) {
- this.sex = sex;
- }
-
- public String getHair() {
- return this.hair;
- }
-
- public void setHair(final String hair) {
- this.hair = hair;
- }
-
- public String toString() {
- return "[Person name='" + this.name + "']";
- }
-
- /**
- * @inheritDoc
- */
- public int hashCode() {
- final int PRIME = 31;
- int result = 1;
- result = PRIME * result + this.age;
- result = PRIME * result + (this.alive ? 1231 : 1237);
- result = PRIME * result + ((this.name == null) ? 0 : this.name.hashCode());
- result = PRIME * result + this.sex;
- return result;
- }
-
- /**
- * @inheritDoc
- */
- public boolean equals(final Object obj) {
- if ( this == obj ) {
- return true;
- }
- if ( obj == null ) {
- return false;
- }
- if ( getClass() != obj.getClass() ) {
- return false;
- }
- final Person other = (Person) obj;
- if ( this.age != other.age ) {
- return false;
- }
- if ( this.alive != other.alive ) {
- return false;
- }
- if ( this.name == null ) {
- if ( other.name != null ) {
- return false;
- }
- } else if ( !this.name.equals( other.name ) ) {
- return false;
- }
- if ( this.sex != other.sex ) {
- return false;
- }
- return true;
- }
-
- /* (non-Javadoc)
- * @see org.drools.PersonInterface#getBigDecimal()
- */
- public BigDecimal getBigDecimal() {
- return this.bigDecimal;
- }
-
- /* (non-Javadoc)
- * @see org.drools.PersonInterface#setBigDecimal(java.math.BigDecimal)
- */
- public void setBigDecimal(final BigDecimal bigDecimal) {
- this.bigDecimal = bigDecimal;
- }
-
- /* (non-Javadoc)
- * @see org.drools.PersonInterface#getBigInteger()
- */
- public BigInteger getBigInteger() {
- return this.bigInteger;
- }
-
- /* (non-Javadoc)
- * @see org.drools.PersonInterface#setBigInteger(java.math.BigInteger)
- */
- public void setBigInteger(final BigInteger bigInteger) {
- this.bigInteger = bigInteger;
- }
-
- public void setLikes(final String likes) {
- this.likes = likes;
- }
-
-
-}
\ No newline at end of file
Deleted: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/AnonFact.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/AnonFact.java 2010-02-19 15:49:16 UTC (rev 31743)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/AnonFact.java 2010-02-19 15:54:39 UTC (rev 31744)
@@ -1,14 +0,0 @@
-package org.drools.server;
-
-public class AnonFact {
-
- public Object fact;
-
- public AnonFact(Object fact) {
- this.fact = fact;
- }
-
- public AnonFact() {}
-
-}
-
Deleted: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/ExampleFact.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/ExampleFact.java 2010-02-19 15:49:16 UTC (rev 31743)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/ExampleFact.java 2010-02-19 15:54:39 UTC (rev 31744)
@@ -1,25 +0,0 @@
-package org.drools.server;
-
-public class ExampleFact {
- private String carType;
- private int carPrice;
- public String getCarType() {
- return carType;
- }
- public void setCarType(String carType) {
- this.carType = carType;
- }
- public int getCarPrice() {
- return carPrice;
- }
- public void setCarPrice(int carPrice) {
- this.carPrice = carPrice;
- }
- public ExampleFact(String carType, int carPrice) {
- super();
- this.carType = carType;
- this.carPrice = carPrice;
- }
-
- public ExampleFact() {}
-}
Deleted: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/InsertedFact.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/InsertedFact.java 2010-02-19 15:49:16 UTC (rev 31743)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/InsertedFact.java 2010-02-19 15:54:39 UTC (rev 31744)
@@ -1,20 +0,0 @@
-package org.drools.server;
-
-public class InsertedFact {
-
- String name;
-
- public InsertedFact(String name) {
- super();
- this.name = name;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
-}
Added: 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 (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/KnowledgeService.java 2010-02-19 15:54:39 UTC (rev 31744)
@@ -0,0 +1,215 @@
+package org.drools.server;
+
+import java.io.BufferedInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.bind.JAXBContext;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.drools.KnowledgeBase;
+import org.drools.agent.KnowledgeAgent;
+import org.drools.agent.KnowledgeAgentProvider;
+import org.drools.builder.KnowledgeBuilder;
+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.server.profile.KnowledgeContextProfile;
+import org.drools.server.profile.KnowledgeServerProfile;
+import org.drools.server.profile.ProfileFile;
+import org.drools.server.profile.ProfileFileConverter;
+import org.drools.server.profile.StartupCommand;
+import org.drools.server.profile.StartupCommandConverter;
+import org.drools.vsm.ServiceManager;
+import org.drools.vsm.local.ServiceManagerLocalClient;
+
+import com.sun.tools.xjc.Language;
+import com.sun.tools.xjc.Options;
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.DomDriver;
+
+/**
+ * Singleton service to execute commands
+ * @author Lucas Amador
+ *
+ */
+public class KnowledgeService {
+
+ private static final String PROFILE_FILENAME = "/profiles.xml";
+
+ private static KnowledgeService instance;
+
+ private Map<String, KnowledgeAgent> cachedAgents = new HashMap<String, KnowledgeAgent>();
+ private Map<String, JAXBContext> cachedJaxbContexts = new HashMap<String, JAXBContext>();
+
+ private CamelContext camelContext;
+ private KnowledgeServerProfile profiles;
+ private ServiceManager serviceManager;
+ private ProducerTemplate template;
+
+ public KnowledgeService() throws Exception {
+ serviceManager = new ServiceManagerLocalClient();
+ camelContext = new DefaultCamelContext();
+ camelContext.addComponent("drools", new DroolsComponent(camelContext));
+ camelContext.addRoutes(createRouteBuilder());
+ template = camelContext.createProducerTemplate();
+ readKnowledgeContextProfiles();
+ }
+
+ public static KnowledgeService getInstance() throws Exception {
+ if (instance==null) {
+ instance = new KnowledgeService();
+ }
+ return instance;
+ }
+
+ public KnowledgeContextProfile getContextProfile(String profileName) {
+ return profiles.getProfile(profileName);
+ }
+
+ public void checkContextStatus(KnowledgeContextProfile contextProfile) throws Exception {
+ synchronized (cachedAgents) {
+ if (!cachedAgents.containsKey(contextProfile.getId())) {
+ KnowledgeAgentProvider knowledgeAgentFactory = serviceManager.getKnowledgeAgentFactory();
+ KnowledgeBase kbase = serviceManager.getKnowledgeBaseFactoryService().newKnowledgeBase();
+
+ List<String> allClassNames = new ArrayList<String>();
+
+ if (contextProfile.hasJaxbModels()) {
+ for (ProfileFile modelFile : contextProfile.getJaxbModels()) {
+ // Create model from xsd definition and add to kbase classloader
+ KnowledgeBuilder kbuilder = serviceManager.getKnowledgeBuilderFactoryService().newKnowledgeBuilder();
+
+ Options xjcOpts = new Options();
+ xjcOpts.setSchemaLanguage( Language.XMLSCHEMA );
+
+ try {
+ String classNames[] = KnowledgeBuilderHelper.addXsdModel( ResourceFactory.newClassPathResource(modelFile.getFileName(), getClass()),
+ kbuilder,
+ xjcOpts,
+ "xsd" );
+ for (int i = 0; i < classNames.length; i++) {
+ allClassNames.add(classNames[i]);
+ }
+ } catch (IOException e) {
+ throw new Exception("Error creating XSD model", e);
+ }
+ }
+
+ if (allClassNames.size() > 0) {
+ JAXBContext jaxbContext = KnowledgeBuilderHelper.newJAXBContext( allClassNames.toArray(new String[allClassNames.size()]), kbase );
+ cachedJaxbContexts.put(contextProfile.getId(), jaxbContext);
+ }
+ }
+
+ KnowledgeAgent kagent = knowledgeAgentFactory.newKnowledgeAgent(contextProfile.getId(), kbase);
+ for (ProfileFile changeSet : contextProfile.getChangeSetFiles()) {
+ kagent.applyChangeSet(ResourceFactory.newClassPathResource(changeSet.getFileName()));
+ }
+ StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
+ serviceManager.register(contextProfile.getId(), session);
+ cachedAgents.put(contextProfile.getId(), kagent);
+
+ // Execute the startups commands
+ for (StartupCommand command : contextProfile.getStartupCommands()) {
+ executeCommand(contextProfile, command.getContent());
+ }
+
+ }
+ }
+ }
+
+ public String executeService(InputStream inputStream, KnowledgeContextProfile contextProfile) throws Exception {
+ BufferedInputStream bis = new BufferedInputStream(inputStream);
+ ByteArrayOutputStream buf = new ByteArrayOutputStream();
+ int result;
+ String cmd = null;
+ try {
+ result = bis.read();
+ while (result != -1) {
+ byte b = (byte)result;
+ buf.write(b);
+ result = bis.read();
+ }
+ cmd = buf.toString();
+ } catch (IOException e) {
+ throw new Exception("Unable to read the xml command", e);
+ }
+ return executeCommand(contextProfile, cmd);
+ }
+
+ private String executeCommand(KnowledgeContextProfile contextProfile, String cmd) throws Exception {
+ if (contextProfile.hasJaxbModels()) {
+ JAXBContext jaxbContext = getJaxbContext(contextProfile.getId());
+ if (contextProfile.getSessionType().equalsIgnoreCase("stateless")) {
+ return new String((byte[])template.requestBodyAndHeader("direct:no-session-jaxb", cmd, "jaxb-context", jaxbContext));
+ }
+ else if (contextProfile.getSessionType().equalsIgnoreCase("stateful")) {
+ 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");
+ }
+ else {
+ if (contextProfile.getSessionType().equalsIgnoreCase("stateless")) {
+ return new String((byte[])template.requestBody("direct:no-session-xstream", cmd));
+ }
+ else if (contextProfile.getSessionType().equalsIgnoreCase("stateful")) {
+ return new String((byte[])template.requestBody("direct:with-session-xstream", cmd));
+ }
+ else
+ throw new Exception("Bad session type. Expected stateless or stateful");
+ }
+ }
+
+ private static RouteBuilder createRouteBuilder() throws Exception {
+ return 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");
+ }
+ };
+ }
+
+ /**
+ * Read the initial profile configuration
+ * @throws Exception
+ */
+ private void readKnowledgeContextProfiles() throws Exception {
+ XStream xstream = new XStream(new DomDriver());
+ xstream.processAnnotations(KnowledgeServerProfile.class);
+ xstream.processAnnotations(KnowledgeContextProfile.class);
+ xstream.processAnnotations(ProfileFile.class);
+ xstream.registerConverter(new ProfileFileConverter());
+ xstream.registerConverter(new StartupCommandConverter());
+
+ try {
+ InputStream stream = KnowledgeServiceServlet.class.getResourceAsStream(PROFILE_FILENAME);
+ profiles = (KnowledgeServerProfile) xstream.fromXML(stream);
+ }
+ catch (Exception e) {
+ throw new Exception("Error reading profiles configurations", e);
+ }
+ }
+
+ private JAXBContext getJaxbContext(String profileId) {
+ if (cachedJaxbContexts.containsKey(profileId)) {
+ return cachedJaxbContexts.get(profileId);
+ }
+ // TODO: work on this possible error. Trying to execute jaxb command on xstream session?
+ return null;
+ }
+
+
+}
Property changes on: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/KnowledgeService.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: 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 (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/KnowledgeServiceServlet.java 2010-02-19 15:54:39 UTC (rev 31744)
@@ -0,0 +1,81 @@
+package org.drools.server;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.drools.server.profile.KnowledgeContextProfile;
+
+/**
+ *
+ * @author Lucas Amador
+ *
+ */
+public class KnowledgeServiceServlet extends HttpServlet {
+
+ private static final long serialVersionUID = 1L;
+
+ public static Pattern urlPattern = Pattern.compile(".*/(.*)/");
+
+ private static KnowledgeService service;
+
+ static {
+ try {
+ service = KnowledgeService.getInstance();
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse resp) throws ServletException, IOException {
+ String uri = request.getRequestURI();
+ String contentType = request.getContentType();
+ resp.setContentType(contentType);
+
+ Matcher matcher = urlPattern.matcher(uri);
+ if (!matcher.matches()) {
+ resp.sendError(HttpServletResponse.SC_BAD_REQUEST, "URI needs to be of the form /{configName}/");
+ return;
+ }
+ String config = matcher.group(1);
+
+ KnowledgeContextProfile contextProfile = service.getContextProfile(config);
+ if (contextProfile==null) {
+ resp.sendError(HttpServletResponse.SC_BAD_REQUEST, "Profile " + config + " don't exists");
+ return;
+ }
+ try {
+ service.checkContextStatus(contextProfile);
+ String response = service.executeService(getInputStream(request), contextProfile);
+ // Write response to OutputStream
+ OutputStream outputStream = getOutputStream(resp);
+ outputStream.write(response.getBytes());
+ }
+ catch (Exception e) {
+ resp.sendError(HttpServletResponse.SC_NOT_ACCEPTABLE, "Error: " + e.getMessage());
+ }
+ }
+
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+ resp.sendRedirect("");
+ }
+
+ OutputStream getOutputStream(HttpServletResponse resp) throws IOException {
+ return resp.getOutputStream();
+ }
+
+ InputStream getInputStream(HttpServletRequest request) throws IOException {
+ return request.getInputStream();
+ }
+
+}
\ 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/KnowledgeServiceServlet.java
___________________________________________________________________
Name: svn:eol-style
+ native
Deleted: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/KnowledgeStatelessServlet.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/KnowledgeStatelessServlet.java 2010-02-19 15:49:16 UTC (rev 31743)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/KnowledgeStatelessServlet.java 2010-02-19 15:54:39 UTC (rev 31744)
@@ -1,293 +0,0 @@
-package org.drools.server;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.servlet.ServletException;
-import javax.servlet.ServletInputStream;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.drools.Person;
-import org.drools.QueryResult;
-import org.drools.QueryResults;
-import org.drools.RuleBase;
-import org.drools.StatelessSession;
-import org.drools.StatelessSessionResult;
-import org.drools.agent.RuleAgent;
-import org.drools.common.InternalRuleBase;
-
-import com.thoughtworks.xstream.XStream;
-import com.thoughtworks.xstream.converters.ConversionException;
-import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver;
-
-/**
- * This provides a stateless service for dealing with rules/knowledge bases.
- *
- * Supported operations are:
- *
- * POST: this will execute the service and return the results.
- *
- * Content-Type: by default XML will be assumed, if application/json is used, then JSON will be used instead.
- *
- * URIs:
- *
- * http://server/drools-server/knowledgebase/{configName}
- *
- * {configName} is the name of the rule agent configuration to load - this is generally a properties file located in the root of the classpath
- * for this app.
- *
- * @author Michael Neale
- */
-public class KnowledgeStatelessServlet extends HttpServlet {
-
-
- private static final long serialVersionUID = -8239975288596976901L;
- static Map<String, RuleAgent> cachedAgents = new HashMap<String, RuleAgent>();
- static Pattern urlPattern = Pattern.compile(".*knowledgebase/(.*)");
-
- @Override
- protected void doPost(HttpServletRequest request, HttpServletResponse resp)
- throws ServletException, IOException {
- String uri = request.getRequestURI();
- String contentType = request.getContentType();
- resp.setContentType(contentType);
- Matcher m = urlPattern.matcher(uri);
- if (!m.matches()) {
- resp.sendError(HttpServletResponse.SC_BAD_REQUEST, "URI needs to be of the form /knowledgebase/{configName}");
- return;
- }
- String conf = m.group(1);
- RuleBase rb = getRuleBase(conf);
- if (rb == null) {
- resp.sendError(HttpServletResponse.SC_NOT_FOUND, "The rulebase [" + conf + "] was not found or not valid.");
- return;
- }
- try {
- if (contentType != null && (contentType.indexOf("json") > -1)) {
- //do json version
- doService(getInputStream(request), getOutputStream(resp), rb, true);
- } else {
- //xml version
- doService(getInputStream(request), getOutputStream(resp), rb, false);
- }
- } catch (ConversionException e) {
- e.printStackTrace();
- resp.sendError(HttpServletResponse.SC_NOT_ACCEPTABLE, "Unable to convert. Error: " + e.getMessage() );
- } catch (IllegalArgumentException e) {
- e.printStackTrace();
- resp.sendError(HttpServletResponse.SC_NOT_ACCEPTABLE, "Unable to process request. Error: " + e.getMessage() );
- }
- }
-
-
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException {
- resp.sendRedirect("");
- }
-
-
-
- RuleBase getRuleBase(String configName) {
- if (cachedAgents.containsKey(configName)) {
- return cachedAgents.get(configName).getRuleBase();
- } else {
- synchronized (cachedAgents) {
- if (!cachedAgents.containsKey(configName)) {
- try {
- RuleAgent ag = RuleAgent.newRuleAgent("/" + configName + ".properties");
- cachedAgents.put(configName, ag);
- } catch (NullPointerException npe) {
- npe.printStackTrace();
- return null;
- }
- }
- return cachedAgents.get(configName).getRuleBase();
- }
- }
- }
-
-
-
-
- void doService(InputStream inputStream,
- OutputStream outputStream, RuleBase rb, boolean json) {
- InternalRuleBase irb = (InternalRuleBase) rb;
- ClassLoader originalCL = Thread.currentThread().getContextClassLoader();
- try {
- ClassLoader cl = irb.getRootClassLoader();
- Thread.currentThread().setContextClassLoader(cl);
-
- XStream xs = configureXStream(json);
- ServiceRequestMessage req = (ServiceRequestMessage) xs.fromXML(inputStream);
- StatelessSession session = rb.newStatelessSession();
- if (req.globals != null) {
- for (NamedFact nf : req.globals) {
- session.setGlobal(nf.id, nf.fact);
- }
- }
- List<Object> facts = new ArrayList<Object>();
- if (req.inFacts != null) {
- for (AnonFact f : req.inFacts) {
- facts.add(f.fact);
- }
- }
- if (req.inOutFacts != null) {
- for (NamedFact nf : req.inOutFacts) {
- facts.add(nf.fact);
- }
- }
-
- session.execute(facts);
- StatelessSessionResult ssr = session.executeWithResults(facts);
-
- ServiceResponseMessage res = new ServiceResponseMessage();
- if (req.globals != null) {
- res.globals = req.globals;
- }
- if (req.inOutFacts != null) {
- res.inOutFacts = req.inOutFacts;
- }
- if (req.queries != null) {
- res.outFacts = processQueries(req.queries, ssr);
- }
-
- xs.toXML(res, outputStream);
-
-
- } finally {
-
- Thread.currentThread().setContextClassLoader(originalCL);
- }
- }
-
- private NamedFact[] processQueries(QueryType[] queries, StatelessSessionResult ssr)
- throws IllegalArgumentException
- {
- List<NamedFact> queryFacts = new ArrayList<NamedFact>();
-
- for (QueryType qt : queries) {
- QueryResults qResults = ssr.getQueryResults(qt.queryName, qt.args);
- Iterator<QueryResult> qIter = qResults.iterator();
- while (qIter.hasNext()) {
- QueryResult qResult = qIter.next();
- for (String factName : qt.factNames) {
- queryFacts.add(new NamedFact(factName, qResult.get(factName)));
- }
- }
- }
-
- if (queryFacts.size() == 0)
- return null;
- else
- return (NamedFact[]) queryFacts.toArray(new NamedFact[queryFacts.size()]);
- }
-
- static XStream configureXStream(boolean json) {
- if (json) {
- XStream xs = new XStream(new JettisonMappedXmlDriver());
- alias(xs);
- return xs;
-
- } else {
- XStream xs = new XStream();
- alias(xs);
- return xs;
- }
- }
-
- private static void alias(XStream xs) {
- xs.alias("knowledgebase-request", ServiceRequestMessage.class);
- xs.alias("knowledgebase-response", ServiceResponseMessage.class);
- xs.alias("named-fact", NamedFact.class);
- xs.alias("anon-fact", AnonFact.class);
- xs.alias("query-type", QueryType.class);
- }
-
-
-
-
- OutputStream getOutputStream(HttpServletResponse resp) throws IOException {
- return resp.getOutputStream();
- }
-
- InputStream getInputStream(HttpServletRequest request) throws IOException {
- return request.getInputStream();
- }
-
-
-
-
- private void sample() {
- XStream xs = configureXStream(true);
-
- ServiceRequestMessage req = new ServiceRequestMessage();
-
- req.globals = new NamedFact[1];
- req.inFacts = new AnonFact[1];
- req.inOutFacts = new NamedFact[1];
- req.globals[0] = new NamedFact("jo", new Person("Jo", "Chocolote"));
- //req.inFacts[0] = new AnonFact(new Person("Mike", "beer"));
- req.inFacts[0] = new AnonFact(new Person("Mike", "wine"));
- req.inOutFacts[0] = new NamedFact("mark", new Person("Mark", "Cheese"));
-
- String requestMessage = xs.toXML(req);
-
- ServiceRequestMessage req_ = (ServiceRequestMessage) xs.fromXML(requestMessage);
- String requestMessage_ = xs.toXML(req_);
-
- System.out.println(requestMessage);
-
- if (!requestMessage_.equals(requestMessage)) throw new RuntimeException("fail !");
- }
-
-
-
- public static void main(String[] args) throws ServletException, IOException {
- KnowledgeStatelessServlet rs = new KnowledgeStatelessServlet();
- rs.sample();
-
- }
-
- public static String getRequestExample(boolean json) {
- ServiceRequestMessage req = new ServiceRequestMessage();
- req.queries = new QueryType[1];
- String nameFacts[] = { "ninsf" };
- Object args[] = { new String("one"), new String("two") };
- req.queries[0] = new QueryType("Get named inserted fact", nameFacts, args);
- req.globals = new NamedFact[1];
- req.globals[0] = new NamedFact("myglobal", new ExampleFact("Saab", 42));
- req.inFacts = new AnonFact[2];
- req.inFacts[0] = new AnonFact(new ExampleFact("Audi", 55));
- req.inFacts[1] = new AnonFact(new ExampleFact("Mercedes", 65));
- req.inOutFacts = new NamedFact[1];
- req.inOutFacts[0] = new NamedFact("myfact", new ExampleFact("BMW", 50));
- return configureXStream(json).toXML(req);
- }
-
-
- public static String getResponseExample(boolean json) {
- ServiceResponseMessage req = new ServiceResponseMessage();
- req.globals = new NamedFact[1];
- req.globals[0] = new NamedFact("myglobal", new ExampleFact("Saab", 42));
- req.inOutFacts = new NamedFact[1];
- req.inOutFacts[0] = new NamedFact("myfact", new ExampleFact("BMW", 50));
- req.outFacts = new NamedFact[2];
- req.outFacts[0] = new NamedFact("ninsf", new InsertedFact("one"));
- req.outFacts[1] = new NamedFact("ninsf", new InsertedFact("two"));
- return configureXStream(json).toXML(req);
- }
-
-
-}
Deleted: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/NamedFact.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/NamedFact.java 2010-02-19 15:49:16 UTC (rev 31743)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/NamedFact.java 2010-02-19 15:54:39 UTC (rev 31744)
@@ -1,17 +0,0 @@
-package org.drools.server;
-
-
-public class NamedFact {
-
-
-
- public NamedFact(String id, Object fact) {
- this.id = id;
- this.fact = fact;
- }
-
- public NamedFact() {}
- public String id;
- public Object fact;
-
-}
Deleted: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/QueryType.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/QueryType.java 2010-02-19 15:49:16 UTC (rev 31743)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/QueryType.java 2010-02-19 15:54:39 UTC (rev 31744)
@@ -1,16 +0,0 @@
-package org.drools.server;
-
-public class QueryType {
-
- public String queryName;
- public String[] factNames;
- public Object[] args;
-
- public QueryType(String queryName, String[] factNames, Object[] args) {
- super();
- this.queryName = queryName;
- this.factNames = factNames;
- this.args = args;
- }
-
-}
Deleted: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/ServiceRequestMessage.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/ServiceRequestMessage.java 2010-02-19 15:49:16 UTC (rev 31743)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/ServiceRequestMessage.java 2010-02-19 15:54:39 UTC (rev 31744)
@@ -1,9 +0,0 @@
-package org.drools.server;
-
-
-public class ServiceRequestMessage {
- public QueryType[] queries;
- public NamedFact[] globals;
- public NamedFact[] inOutFacts;
- public AnonFact[] inFacts;
-}
Deleted: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/ServiceResponseMessage.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/ServiceResponseMessage.java 2010-02-19 15:49:16 UTC (rev 31743)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/ServiceResponseMessage.java 2010-02-19 15:54:39 UTC (rev 31744)
@@ -1,9 +0,0 @@
-package org.drools.server;
-
-import java.util.List;
-
-public class ServiceResponseMessage {
- public NamedFact[] globals;
- public NamedFact[] inOutFacts;
- public NamedFact[] outFacts;
-}
Added: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/profile/KnowledgeContextProfile.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/profile/KnowledgeContextProfile.java (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/profile/KnowledgeContextProfile.java 2010-02-19 15:54:39 UTC (rev 31744)
@@ -0,0 +1,100 @@
+package org.drools.server.profile;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+
+ at XStreamAlias("knowledge-server-profile")
+public class KnowledgeContextProfile {
+
+ @XStreamAsAttribute
+ private String id;
+
+ @XStreamAlias("session-type")
+ private String sessionType;
+
+ @XStreamAlias("change-sets")
+ private List<ProfileFile> changeSetFiles;
+
+ @XStreamAlias("jaxb-models")
+ private List<ProfileFile> jaxbModels;
+
+ @XStreamAlias("startup-commands")
+ private List<StartupCommand> startupCommands;
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setSessionType(String sessionType) {
+ this.sessionType = sessionType;
+ }
+
+ public String getSessionType() {
+ return sessionType;
+ }
+
+ public List<ProfileFile> getChangeSetFiles() {
+ return changeSetFiles;
+ }
+
+ public void setChangeSetFiles(List<ProfileFile> changeSetFiles) {
+ this.changeSetFiles = changeSetFiles;
+ }
+
+ public void addChangeSet(String filename) {
+ if (this.changeSetFiles==null) {
+ this.changeSetFiles = new ArrayList<ProfileFile>();
+ }
+ this.changeSetFiles.add(new ProfileFile(filename));
+ }
+
+ public void setJaxbModels(List<ProfileFile> jaxbModels) {
+ this.jaxbModels = jaxbModels;
+ }
+
+ public List<ProfileFile> getJaxbModels() {
+ return jaxbModels;
+ }
+
+ public void addJaxbModel(String filename) {
+ if (this.jaxbModels==null) {
+ this.jaxbModels = new ArrayList<ProfileFile>();
+ }
+ this.jaxbModels.add(new ProfileFile(filename));
+ }
+
+ public boolean hasJaxbModels() {
+ return this.jaxbModels!=null && this.jaxbModels.size() > 0;
+ }
+
+ public void setStartupCommands(List<StartupCommand> startupCommands) {
+ this.startupCommands = startupCommands;
+ }
+
+ public List<StartupCommand> getStartupCommands() {
+ return startupCommands;
+ }
+
+ public void addStartupCommand(String content) {
+ if (this.startupCommands==null) {
+ this.startupCommands = new ArrayList<StartupCommand>();
+ }
+ this.startupCommands.add(new StartupCommand(content));
+ }
+
+ public boolean isValid() {
+ return id!=null && sessionType!=null && changeSetFiles.size()>0 && sessionType!=null &&
+ (sessionType.equalsIgnoreCase("stateless") || sessionType.equalsIgnoreCase("stateful"));
+ }
+
+}
+
+
+
Property changes on: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/profile/KnowledgeContextProfile.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: 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 (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/profile/KnowledgeServerProfile.java 2010-02-19 15:54:39 UTC (rev 31744)
@@ -0,0 +1,49 @@
+package org.drools.server.profile;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamImplicit;
+
+ at XStreamAlias("profiles")
+public class KnowledgeServerProfile {
+
+ @XStreamImplicit(itemFieldName="knowledge-context-profile")
+ private List<KnowledgeContextProfile> profiles;
+
+ public void setProfilse(List<KnowledgeContextProfile> profiles) {
+ this.profiles = profiles;
+ }
+
+ public List<KnowledgeContextProfile> getProfiles() {
+ return profiles;
+ }
+
+ public void addProfile(KnowledgeContextProfile profile) {
+ if (this.profiles==null) {
+ this.profiles = new ArrayList<KnowledgeContextProfile>();
+ }
+ this.profiles.add(profile);
+ }
+
+ public KnowledgeContextProfile getProfile(String id) {
+ // TODO change this
+ for (KnowledgeContextProfile profile : profiles) {
+ if (profile.getId().equals(id)) {
+ return profile;
+ }
+ }
+ return null;
+ }
+
+ public boolean isValid() {
+ for (KnowledgeContextProfile context : profiles) {
+ if (!context.isValid()) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+}
Property changes on: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/profile/KnowledgeServerProfile.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/profile/ProfileFile.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/profile/ProfileFile.java (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/profile/ProfileFile.java 2010-02-19 15:54:39 UTC (rev 31744)
@@ -0,0 +1,22 @@
+package org.drools.server.profile;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+
+ at XStreamAlias("file")
+public class ProfileFile {
+
+ private String fileName;
+
+ public ProfileFile(String fileName) {
+ this.fileName = fileName;
+ }
+
+ public void setFileName(String fileName) {
+ this.fileName = fileName;
+ }
+
+ public String getFileName() {
+ return fileName;
+ }
+
+}
\ 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/profile/ProfileFile.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/profile/ProfileFileConverter.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/profile/ProfileFileConverter.java (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/profile/ProfileFileConverter.java 2010-02-19 15:54:39 UTC (rev 31744)
@@ -0,0 +1,25 @@
+package org.drools.server.profile;
+
+import com.thoughtworks.xstream.converters.Converter;
+import com.thoughtworks.xstream.converters.MarshallingContext;
+import com.thoughtworks.xstream.converters.UnmarshallingContext;
+import com.thoughtworks.xstream.io.HierarchicalStreamReader;
+import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
+
+public class ProfileFileConverter implements Converter {
+
+ @SuppressWarnings("unchecked")
+ public boolean canConvert(Class type) {
+ return type.equals(ProfileFile.class);
+ }
+
+ public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) {
+ ProfileFile profileFile = (ProfileFile) source;
+ writer.setValue(profileFile.getFileName());
+ }
+
+ public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
+ return new ProfileFile(reader.getValue());
+ }
+
+}
\ 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/profile/ProfileFileConverter.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/profile/StartupCommand.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/profile/StartupCommand.java (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/profile/StartupCommand.java 2010-02-19 15:54:39 UTC (rev 31744)
@@ -0,0 +1,22 @@
+package org.drools.server.profile;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+
+ at XStreamAlias("command")
+public class StartupCommand {
+
+ private String content;
+
+ public StartupCommand(String content) {
+ this.content = content;
+ }
+
+ public void setContent(String content) {
+ this.content = content;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+}
\ 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/profile/StartupCommand.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/profile/StartupCommandConverter.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/profile/StartupCommandConverter.java (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/profile/StartupCommandConverter.java 2010-02-19 15:54:39 UTC (rev 31744)
@@ -0,0 +1,26 @@
+package org.drools.server.profile;
+
+import com.thoughtworks.xstream.converters.Converter;
+import com.thoughtworks.xstream.converters.MarshallingContext;
+import com.thoughtworks.xstream.converters.UnmarshallingContext;
+import com.thoughtworks.xstream.io.HierarchicalStreamReader;
+import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
+
+public class StartupCommandConverter implements Converter {
+
+ @SuppressWarnings("unchecked")
+ public boolean canConvert(Class type) {
+ return type.equals(StartupCommand.class);
+ }
+
+ public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) {
+ StartupCommand startupCommand = (StartupCommand) source;
+ writer.setValue(startupCommand.getContent());
+ }
+
+ public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
+ String content = reader.getValue();
+ return new StartupCommand(content);
+ }
+
+}
\ 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/profile/StartupCommandConverter.java
___________________________________________________________________
Name: svn:eol-style
+ native
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-19 15:49:16 UTC (rev 31743)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/KnowledgeServiceServletTest.java 2010-02-19 15:54:39 UTC (rev 31744)
@@ -1,228 +1,139 @@
package org.drools.server;
import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
import java.util.regex.Matcher;
import javax.servlet.http.HttpServletResponse;
import junit.framework.TestCase;
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.common.InternalRuleBase;
-import org.drools.compiler.PackageBuilder;
+import org.apache.camel.CamelContext;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.drools.camel.component.DroolsComponent;
-import com.thoughtworks.xstream.XStream;
-
public class KnowledgeServiceServletTest extends TestCase {
-
- public void testEndToEndIntegration() throws Exception {
- File source = new File("TestService.drl");
- if (source.exists()) source.delete();
- try {
- InputStream original = getClass().getResourceAsStream("test_rules1.drl");
- copy(original, source);
- Thread.sleep(120);
- StubbedServlet serv = new StubbedServlet();
- final InputStream inXML = getClass().getResourceAsStream("sample_request.xml");
- ByteArrayOutputStream outStream = new ByteArrayOutputStream();
- serv.inputStream = inXML;
- serv.outputStream = outStream;
-
- MockHTTPResponse resp = new MockHTTPResponse();
- serv.doPost(new MockHttpRequest("something/knowledgebase/testservice", "application/xml"), resp);
-
- String resultXML = new String(outStream.toByteArray());
- assertTrue(resultXML.indexOf("<value>42</value>") > -1);
- assertEquals("application/xml", resp.contentType);
-
-
- resp = new MockHTTPResponse();
- serv.inputStream = getClass().getResourceAsStream("sample_request.json");
- outStream = new ByteArrayOutputStream();
- serv.outputStream = outStream;
- serv.doPost(new MockHttpRequest("something/knowledgebase/testservice", "application/json"), resp);
-
- String resultJSON = new String(outStream.toByteArray());
- assertNotNull(resultJSON);
- assertEquals("application/json", resp.contentType);
- assertTrue(resultJSON.indexOf("\"status\":\"crazy\"") > -1);
-
- resp = new MockHTTPResponse();
- serv.inputStream = getClass().getResourceAsStream("sample_request.json");
- outStream = new ByteArrayOutputStream();
- serv.outputStream = outStream;
- serv.doPost(new MockHttpRequest("something/foox", "application/json"), resp);
- assertEquals(HttpServletResponse.SC_BAD_REQUEST, resp.errorCode);
-
- resp = new MockHTTPResponse();
- serv.doGet(new MockHttpRequest(null, null), resp);
- assertNotNull(resp.redirect);
- //assertTrue(resp.redirect.endsWith("index.jsp"));
-
-
- //check bad
- serv.doPost(new MockHttpRequest("something/knowledgebase/XXX", "application/json"), resp);
- assertEquals(HttpServletResponse.SC_NOT_FOUND, resp.errorCode);
-
-
- //check bad request
- resp = new MockHTTPResponse();
- serv.inputStream = getClass().getResourceAsStream("sample_request_bad.json");
- outStream = new ByteArrayOutputStream();
- serv.outputStream = outStream;
- serv.doPost(new MockHttpRequest("something/knowledgebase/testservice", "application/json"), resp);
- assertEquals(HttpServletResponse.SC_NOT_ACCEPTABLE, resp.errorCode);
-
-
- } finally {
- source.delete();
- }
+ public void testURLPattern() {
+ Matcher matcher = KnowledgeServiceServlet.urlPattern.matcher("hostname/xstreamSession/");
+ assertTrue(matcher.matches());
+ assertEquals("xstreamSession", matcher.group(1));
+ matcher = KnowledgeServiceServlet.urlPattern.matcher("hostname/xstreamSession");
+ assertFalse(matcher.matches());
}
+
+ public void testCreateCamelContext() throws Exception {
+ CamelContext camelContext = new DefaultCamelContext();
+ camelContext.addComponent("drools", new DroolsComponent(camelContext));
+ camelContext.addRoutes(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");
+ }
+ });
+ ProducerTemplate template = camelContext.createProducerTemplate();
+ System.out.println(template);
+ }
- public void testSample() throws Exception {
-
- PackageBuilder pb = new PackageBuilder();
- pb.addPackageFromDrl(new InputStreamReader(getClass().getResourceAsStream("test_rules1.drl")));
- assertFalse(pb.hasErrors());
-
- RuleBase rb = RuleBaseFactory.newRuleBase();
- rb.addPackage(pb.getPackage());
-
- KnowledgeStatelessServlet serv = new KnowledgeStatelessServlet();
-
-
- //serv.xmlInstance = KnowledgeStatelessServlet.configureXStream(false);
-
- final InputStream inXML = getClass().getResourceAsStream("sample_request.xml");
+ public void testEndToEndIntegration() throws Exception {
+ StubbedServlet stubbedServlet = new StubbedServlet();
+ InputStream inXML = getClass().getResourceAsStream("samples/command1.xml");
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
+ stubbedServlet.setInputStream(inXML);
+ stubbedServlet.setOutputStream(outStream);
+ // Execution
+ MockHTTPResponse resp = new MockHTTPResponse();
+ stubbedServlet.doPost(new MockHttpRequest("something/xstreamProfile/", "application/xml"), resp);
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ String resultXML = new String(outStream.toByteArray());
+ assertTrue(resultXML.indexOf("<value>42</value>") > -1);
+ assertEquals("application/xml", resp.contentType);
- serv.doService(inXML, outStream, rb, false);
-
-
-
- String result = new String(outStream.toByteArray());
-
-
- assertTrue(result.indexOf("<id>prs</id>") > -1);
- assertTrue(result.indexOf("<id>result</id>") > -1);
- assertTrue(result.indexOf("<name>Jo</name>") > -1);
- assertTrue(result, result.indexOf("<status>crazy</status>") > -1);
- assertTrue(result.indexOf("<value>42</value>") > -1);
- assertTrue(result.indexOf("<explanation>just cause it is</explanation>") > -1);
-
- assertSame(cl, Thread.currentThread().getContextClassLoader());
-
-
- InputStream inJSON = getClass().getResourceAsStream("sample_request.json");
+ // Bad URL Request
+ resp = new MockHTTPResponse();
+ stubbedServlet.setInputStream(getClass().getResourceAsStream("samples/command1.xml"));
outStream = new ByteArrayOutputStream();
- serv.doService(inJSON, outStream, rb, true);
+ stubbedServlet.setOutputStream(outStream);
+ stubbedServlet.doPost(new MockHttpRequest("something/foox", "application/xml"), resp);
+ assertEquals(HttpServletResponse.SC_BAD_REQUEST, resp.errorCode);
- result = new String(outStream.toByteArray());
+ //check bad
+ stubbedServlet.doPost(new MockHttpRequest("something/knowledgebase/XXX", "application/json"), resp);
+ assertEquals(HttpServletResponse.SC_NOT_FOUND, resp.errorCode);
- assertTrue(result.indexOf("\"id\":\"prs\"") > -1);
- assertTrue(result.indexOf("\"id\":\"result\"") > -1);
- assertTrue(result.indexOf("\"status\":\"crazy\"") > -1);
-
+ // Check inexistent knowledge context request
+ resp = new MockHTTPResponse();
+ stubbedServlet.setInputStream(getClass().getResourceAsStream("samples/command1.xml"));
+ stubbedServlet.setOutputStream(new ByteArrayOutputStream());
+ stubbedServlet.doPost(new MockHttpRequest("something/knowledgebase/testservice", "application/json"), resp);
+ assertEquals(HttpServletResponse.SC_NOT_ACCEPTABLE, resp.errorCode);
}
+// public void testSample() throws Exception {
+//
+// PackageBuilder pb = new PackageBuilder();
+// pb.addPackageFromDrl(new InputStreamReader(getClass().getResourceAsStream("test_rules1.drl")));
+// assertFalse(pb.hasErrors());
+//
+// RuleBase rb = RuleBaseFactory.newRuleBase();
+// rb.addPackage(pb.getPackage());
+//
+// KnowledgeStatelessServlet serv = new KnowledgeStatelessServlet();
+//
+//
+// //serv.xmlInstance = KnowledgeStatelessServlet.configureXStream(false);
+//
+// final InputStream inXML = getClass().getResourceAsStream("sample_request.xml");
+// ByteArrayOutputStream outStream = new ByteArrayOutputStream();
+//
+//
+// ClassLoader cl = Thread.currentThread().getContextClassLoader();
+//
+// serv.doService(inXML, outStream, rb, false);
+//
+// String result = new String(outStream.toByteArray());
+//
+// assertTrue(result.indexOf("<id>prs</id>") > -1);
+// assertTrue(result.indexOf("<id>result</id>") > -1);
+// assertTrue(result.indexOf("<name>Jo</name>") > -1);
+// assertTrue(result, result.indexOf("<status>crazy</status>") > -1);
+// assertTrue(result.indexOf("<value>42</value>") > -1);
+// assertTrue(result.indexOf("<explanation>just cause it is</explanation>") > -1);
+//
+// assertSame(cl, Thread.currentThread().getContextClassLoader());
+//
+//
+// InputStream inJSON = getClass().getResourceAsStream("sample_request.json");
+// outStream = new ByteArrayOutputStream();
+// serv.doService(inJSON, outStream, rb, true);
+//
+// result = new String(outStream.toByteArray());
+//
+// assertTrue(result.indexOf("\"id\":\"prs\"") > -1);
+// assertTrue(result.indexOf("\"id\":\"result\"") > -1);
+// assertTrue(result.indexOf("\"status\":\"crazy\"") > -1);
+//
+// }
- public void testURLPattern() {
- Matcher m = KnowledgeStatelessServlet.urlPattern.matcher("foo/knowledgebase/whee");
- assertTrue(m.matches());
- assertEquals("whee", m.group(1));
- m = KnowledgeStatelessServlet.urlPattern.matcher("foo/knowledgebase");
- assertFalse(m.matches());
- }
+// public void testExample() {
+// String xml = KnowledgeStatelessServlet.getRequestExample(false);
+// assertNotNull(xml);
+// String json = KnowledgeStatelessServlet.getRequestExample(true);
+// assertNotNull(json);
+// assertFalse(json.equals(xml));
+//
+//
+// xml = KnowledgeStatelessServlet.getResponseExample(false);
+// assertNotNull(xml);
+// json = KnowledgeStatelessServlet.getResponseExample(true);
+// assertNotNull(json);
+// assertFalse(json.equals(xml));
+//
+// }
- public void testXmlVsJSON() throws Exception {
- PackageBuilder pb = new PackageBuilder();
- pb.addPackageFromDrl(new InputStreamReader(getClass().getResourceAsStream("test_rules1.drl")));
- assertFalse(pb.hasErrors());
-
- RuleBase rb = RuleBaseFactory.newRuleBase();
- rb.addPackage(pb.getPackage());
-
- Thread.currentThread().setContextClassLoader(((InternalRuleBase) rb).getRootClassLoader());
-
- long time = System.currentTimeMillis();
- for (int i = 0; i < 99; i++) {
- InputStream inXML = getClass().getResourceAsStream("sample_request.xml");
- XStream xs = KnowledgeStatelessServlet.configureXStream(false);
- xs.fromXML(inXML);
- }
- System.out.println("XML time:" + (System.currentTimeMillis() - time));
-
- time = System.currentTimeMillis();
- for (int i = 0; i < 99; i++) {
- InputStream inXML = getClass().getResourceAsStream("sample_request.json");
- XStream xs = KnowledgeStatelessServlet.configureXStream(true);
- xs.fromXML(inXML);
- }
- System.out.println("JSON time:" + (System.currentTimeMillis() - time));
-
-// time = System.currentTimeMillis();
-// for (int i = 0; i < 99; i++) {
-// InputStream inXML = getClass().getResourceAsStream("sample_request_large.xml");
-// XStream xs = KnowledgeStatelessServlet.configureXStream(false);
-// xs.fromXML(inXML);
-// }
-// System.out.println("LARGE XML time:" + (System.currentTimeMillis() - time));
-
- }
-
-
-
- public void testExample() {
- String xml = KnowledgeStatelessServlet.getRequestExample(false);
- assertNotNull(xml);
- String json = KnowledgeStatelessServlet.getRequestExample(true);
- assertNotNull(json);
- assertFalse(json.equals(xml));
-
-
- xml = KnowledgeStatelessServlet.getResponseExample(false);
- assertNotNull(xml);
- json = KnowledgeStatelessServlet.getResponseExample(true);
- assertNotNull(json);
- assertFalse(json.equals(xml));
-
- }
-
-
-
- void copy(InputStream in, File dst) throws IOException {
- OutputStream out = new FileOutputStream(dst);
-
- // Transfer bytes from in to out
- byte[] buf = new byte[1024];
- int len;
- while ((len = in.read(buf)) > 0) {
- out.write(buf, 0, len);
- }
- in.close();
- out.close();
- }
-
- public void testInitTiming() {
- long time = System.currentTimeMillis();
- for (int i = 0; i < 100; i++) {
- XStream xs = KnowledgeStatelessServlet.configureXStream(false);
- }
- System.out.println("Timing: " + (System.currentTimeMillis() - time));
- }
-
-
-
-
}
Deleted: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/QueryKnowledgeServiceServletTest.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/QueryKnowledgeServiceServletTest.java 2010-02-19 15:49:16 UTC (rev 31743)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/QueryKnowledgeServiceServletTest.java 2010-02-19 15:54:39 UTC (rev 31744)
@@ -1,70 +0,0 @@
-package org.drools.server;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.util.regex.Matcher;
-
-import javax.servlet.http.HttpServletResponse;
-
-import junit.framework.TestCase;
-
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.common.InternalRuleBase;
-import org.drools.compiler.PackageBuilder;
-
-import com.thoughtworks.xstream.XStream;
-
-
-public class QueryKnowledgeServiceServletTest extends TestCase {
-
- public void testEndToEndIntegration() throws Exception {
- File source = new File("TestService2.drl");
- if (source.exists()) {
- System.err.println("Deleting !");
- source.delete();
- }
- try {
- InputStream original = getClass().getResourceAsStream("test_query_rules1.drl");
- copy(original, source);
- Thread.sleep(120);
- StubbedServlet serv = new StubbedServlet();
- final InputStream inXML = getClass().getResourceAsStream("sample_query_request.xml");
- ByteArrayOutputStream outStream = new ByteArrayOutputStream();
- serv.inputStream = inXML;
- serv.outputStream = outStream;
-
- MockHTTPResponse resp = new MockHTTPResponse();
- serv.doPost(new MockHttpRequest("something/knowledgebase/testservice2", "application/xml"), resp);
-
- String resultXML = new String(outStream.toByteArray());
- System.out.println("\nResult:\n" + resultXML);
-
- assertTrue(resultXML.indexOf("<value>42</value>") > -1);
- assertEquals("application/xml", resp.contentType);
-
- } finally {
- source.delete();
- }
- }
-
- void copy(InputStream in, File dst) throws IOException {
- OutputStream out = new FileOutputStream(dst);
-
- // Transfer bytes from in to out
- byte[] buf = new byte[1024];
- int len;
- while ((len = in.read(buf)) > 0) {
- out.write(buf, 0, len);
- }
- in.close();
- out.close();
- }
-
-}
Deleted: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/QueryTypeToXmlTest.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/QueryTypeToXmlTest.java 2010-02-19 15:49:16 UTC (rev 31743)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/QueryTypeToXmlTest.java 2010-02-19 15:54:39 UTC (rev 31744)
@@ -1,33 +0,0 @@
-package org.drools.server;
-
-import junit.framework.TestCase;
-
-import com.thoughtworks.xstream.XStream;
-
-public class QueryTypeToXmlTest extends TestCase {
-
- public void testSimpleQueryType() throws Exception {
-
- String[] factNames = {"fact1", "fact2" };
- Object[] args = { new Integer(1), new Integer(2) };
-
- QueryType qt = new QueryType("MyQuery", factNames, args);
-
- XStream xstream = new XStream();
- xstream.alias("query-type", QueryType.class);
-
- System.out.println(xstream.toXML(qt));
- }
-
- public void testEmptyQueryType() throws Exception {
-
- QueryType qt = new QueryType("MyEmptyQuery", null, null);
-
- XStream xstream = new XStream();
- xstream.alias("query-type", QueryType.class);
-
- System.out.println(xstream.toXML(qt));
-
- }
-
-}
Modified: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/StubbedServlet.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/StubbedServlet.java 2010-02-19 15:49:16 UTC (rev 31743)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/StubbedServlet.java 2010-02-19 15:54:39 UTC (rev 31744)
@@ -7,24 +7,30 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-public class StubbedServlet extends KnowledgeStatelessServlet {
+public class StubbedServlet extends KnowledgeServiceServlet {
- InputStream inputStream;
- OutputStream outputStream;
+ private static final long serialVersionUID = 1L;
+ private InputStream inputStream;
+ private OutputStream outputStream;
+
@Override
InputStream getInputStream(HttpServletRequest request)
- throws IOException {
+ throws IOException {
return inputStream;
}
-
@Override
OutputStream getOutputStream(HttpServletResponse resp) throws IOException {
return outputStream;
}
+
+ public void setInputStream(InputStream inputStream) {
+ this.inputStream = inputStream;
+ }
+ public void setOutputStream(OutputStream outputStream) {
+ this.outputStream = outputStream;
+ }
-
-
}
Deleted: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/TeamAllocationTest.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/TeamAllocationTest.java 2010-02-19 15:49:16 UTC (rev 31743)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/TeamAllocationTest.java 2010-02-19 15:54:39 UTC (rev 31744)
@@ -1,27 +0,0 @@
-package org.drools.server;
-
-import java.io.InputStreamReader;
-
-import junit.framework.TestCase;
-
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.compiler.PackageBuilder;
-
-public class TeamAllocationTest extends TestCase {
-
- public void testBasics() throws Exception {
- PackageBuilder pb = new PackageBuilder();
- pb.addPackageFromDrl(new InputStreamReader(getClass().getResourceAsStream("/TeamAllocation.drl")));
- if( pb.hasErrors() ) {
- System.out.println(pb.getErrors().toString());
- }
- assertFalse(pb.hasErrors());
-
- RuleBase rb = RuleBaseFactory.newRuleBase();
- rb.addPackage(pb.getPackage());
-
-
- }
-
-}
Added: 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 (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/profile/KnowledgeContextProfileTest.java 2010-02-19 15:54:39 UTC (rev 31744)
@@ -0,0 +1,73 @@
+package org.drools.server.profile;
+
+import java.io.IOException;
+
+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;
+import com.thoughtworks.xstream.io.xml.DomDriver;
+
+public class KnowledgeContextProfileTest extends TestCase {
+
+ private XStream xstream;
+
+ @Override
+ protected void setUp() throws Exception {
+ xstream = new XStream(new DomDriver());
+ xstream.processAnnotations(KnowledgeServerProfile.class);
+ xstream.processAnnotations(KnowledgeContextProfile.class);
+ xstream.processAnnotations(ProfileFile.class);
+ xstream.registerConverter(new ProfileFileConverter());
+ xstream.registerConverter(new StartupCommandConverter());
+ }
+
+ public void testFromObject() {
+ KnowledgeServerProfile serverProfiles = new KnowledgeServerProfile();
+ KnowledgeContextProfile contextProfile = new KnowledgeContextProfile();
+ contextProfile.setId("profile");
+ contextProfile.setSessionType("stateless");
+ contextProfile.addChangeSet("rules.xml");
+ contextProfile.addChangeSet("guvnor.xml");
+ contextProfile.addJaxbModel("person.xsd");
+ contextProfile.addJaxbModel("cat.xsd");
+ contextProfile.addStartupCommand("command1");
+ contextProfile.addStartupCommand("command2");
+
+ serverProfiles.addProfile(contextProfile);
+
+ String xml = xstream.toXML(serverProfiles);
+
+ assertEquals(444, xml.length());
+ }
+
+ public void testFromXML() throws IOException {
+ 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 = (KnowledgeAgent) 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");
+ }
+ }
+
+}
Property changes on: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/java/org/drools/server/profile/KnowledgeContextProfileTest.java
___________________________________________________________________
Name: svn:eol-style
+ native
Deleted: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/TeamAllocation.drl
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/TeamAllocation.drl 2010-02-19 15:49:16 UTC (rev 31743)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/TeamAllocation.drl 2010-02-19 15:54:39 UTC (rev 31744)
@@ -1,57 +0,0 @@
-package teamallocation
-
-dialect "mvel"
-
-declare Team
- currentCases: int
- name: String
- specialty: String
- address1: String
- address2: String
-end
-
-declare Claim
- specialty: String
- value: int
- customerName: String
-end
-
-declare Assignment
- explanation: String
- teamName: String
-end
-
-global Assignment a
-
-rule "Hi value"
- when
- Claim(value > 100)
- then
- a.teamName = "GOLD"
- a.explanation = "Hi value claim"
-end
-
-rule "Low value"
- when
- Claim(value < 10)
- then
- a.teamName = "RED"
- a.explanation = "Low value claim"
-end
-
-rule "Assign waiting team"
- when
- t: Team(currentCases == 0)
- then
- a.teamName = t.name
- a.explanation = "They have nothing on the slackers !"
-end
-
-
-rule "too busy, panic"
- when
- not Team(currentCases < 10)
- then
- a.teamName = "NONE"
- a.explanation = "They are all to busy do it yourself !"
-end
\ No newline at end of file
Added: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/changesets/change-set-1.xml
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/changesets/change-set-1.xml (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/changesets/change-set-1.xml 2010-02-19 15:54:39 UTC (rev 31744)
@@ -0,0 +1,7 @@
+<change-set xmlns='http://drools.org/drools-5.0/change-set'
+ xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'
+ xs:schemaLocation='http://drools.org/drools-5.0/change-set.xsd' >
+ <add>
+ <resource source='classpath:rules/person.drl' type='DRL' />
+ </add>
+</change-set>
\ No newline at end of file
Property changes on: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/changesets/change-set-1.xml
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/changesets/change-set-2.xml
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/changesets/change-set-2.xml (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/changesets/change-set-2.xml 2010-02-19 15:54:39 UTC (rev 31744)
@@ -0,0 +1,10 @@
+<change-set xmlns='http://drools.org/drools-5.0/change-set'
+ xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'
+ xs:schemaLocation='http://drools.org/drools-5.0/change-set.xsd' >
+ <add>
+<!--
+ ADD CLASSPATH RESOURCE
+ <resource source='file:/project/myrules.drl' type='DRL' />
+-->
+ </add>
+</change-set>
\ No newline at end of file
Property changes on: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/changesets/change-set-2.xml
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/profiles.xml
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/profiles.xml (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/profiles.xml 2010-02-19 15:54:39 UTC (rev 31744)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<profiles>
+ <knowledge-context-profile id="xstreamProfile">
+ <session-type>stateless</session-type>
+ <change-sets>
+ <file>changesets/change-set-1.xml</file>
+ <file>changesets/change-set-2.xml</file>
+ </change-sets>
+ <startup-commands>
+ <command>
+ <![CDATA[
+ <batch-execution lookup='ksession1'>
+ <insert out-identifier='lucaz'>
+ <org.drools.pipeline.camel.Person>
+ <name>lucaz</name>
+ <age>25</age>
+ </org.drools.pipeline.camel.Person>
+ </insert>
+ <insert out-identifier='baunax'>
+ <org.drools.pipeline.camel.Person>
+ <name>baunax</name>
+ <age>21</age>
+ </org.drools.pipeline.camel.Person>
+ </insert>
+ <fire-all-rules />
+ </batch-execution>
+ ]]>
+ </command>
+ </startup-commands>
+ </knowledge-context-profile>
+
+ <knowledge-context-profile id="jaxbProfile">
+ <session-type>stateful</session-type>
+ <change-sets>
+ <file>changesets/change-set-1.xml</file>
+ </change-sets>
+ <jaxb-models>
+ <file>person.xsd</file>
+ </jaxb-models>
+ </knowledge-context-profile>
+
+</profiles>
Property changes on: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/profiles.xml
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/rules/person.drl
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/rules/person.drl (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/rules/person.drl 2010-02-19 15:54:39 UTC (rev 31744)
@@ -0,0 +1,8 @@
+package org.drools.test.model
+
+rule "Test Rule"
+ when
+ eval (true)
+ then
+ System.out.println("fired");
+end
Property changes on: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/rules/person.drl
___________________________________________________________________
Name: svn:eol-style
+ native
Deleted: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/testservice.properties
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/testservice.properties 2010-02-19 15:49:16 UTC (rev 31743)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/testservice.properties 2010-02-19 15:54:39 UTC (rev 31744)
@@ -1,2 +0,0 @@
-newInstance=true
-file=TestService.drl
\ No newline at end of file
Deleted: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/testservice2.properties
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/testservice2.properties 2010-02-19 15:49:16 UTC (rev 31743)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/test/resources/testservice2.properties 2010-02-19 15:54:39 UTC (rev 31744)
@@ -1,2 +0,0 @@
-newInstance=true
-file=TestService2.drl
\ No newline at end of file
Modified: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-vsm/src/main/java/org/drools/vsm/local/ServiceManagerLocalClient.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-vsm/src/main/java/org/drools/vsm/local/ServiceManagerLocalClient.java 2010-02-19 15:49:16 UTC (rev 31743)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-vsm/src/main/java/org/drools/vsm/local/ServiceManagerLocalClient.java 2010-02-19 15:54:39 UTC (rev 31744)
@@ -6,6 +6,7 @@
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactoryService;
import org.drools.agent.KnowledgeAgentProvider;
+import org.drools.agent.impl.KnowledgeAgentProviderImpl;
import org.drools.builder.DecisionTableConfiguration;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderConfiguration;
@@ -47,8 +48,7 @@
}
public KnowledgeAgentProvider getKnowledgeAgentFactory() {
- // TODO Auto-generated method stub
- return null;
+ return new KnowledgeAgentProviderImpl();
}
public JPAKnowledgeServiceProvider JPAKnowledgeService() {
More information about the jboss-svn-commits
mailing list