[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