[jboss-svn-commits] JBL Code SVN: r32414 - in labs/jbossrules/branches/drools_server_camel_lucaz_baunax: drools-container/drools-spring and 10 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Apr 5 11:42:56 EDT 2010


Author: lucazamador
Date: 2010-04-05 11:42:54 -0400 (Mon, 05 Apr 2010)
New Revision: 32414

Added:
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/KnowledgeServiceBeanFactory.java
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/KnowledgeServiceConfigurationBeanFactory.java
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeServiceConfigurationDefinitionParser.java
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeServiceConfigurationRefDefinitionParser.java
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeServiceDefinitionParser.java
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/ResourceRefDefinitionParser.java
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/SpringDroolsServiceHandler.java
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-service-spring.xsd
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/test/resources/org/drools/container/spring/model.xsd
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-core/src/main/java/org/drools/server/
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-core/src/main/java/org/drools/server/KnowledgeService.java
Modified:
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/pom.xml
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/KnowledgeBaseBeanFactory.java
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeBaseDefinitionParser.java
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/SpringDroolsHandler.java
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/resources/META-INF/spring.handlers
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/resources/META-INF/spring.schemas
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring.xsd
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/test/java/org/drools/container/spring/SpringDroolsTest.java
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans.xml
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-core/src/main/java/org/drools/xml/jaxb/util/DroolsJaxbContextHelper.java
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-pipeline/drools-camel/src/main/java/org/drools/camel/component/DroolsJaxbDataFormat.java
   labs/jbossrules/branches/drools_server_camel_lucaz_baunax/pom.xml
Log:
added new configuration to drools-spring

Modified: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/pom.xml
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/pom.xml	2010-04-05 15:28:36 UTC (rev 32413)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/pom.xml	2010-04-05 15:42:54 UTC (rev 32414)
@@ -40,75 +40,72 @@
     	
     	<dependency>
     		<groupId>org.drools</groupId>
-    		<artifactId>drools-decisiontables</artifactId>
+    		<artifactId>drools-server-spring</artifactId>
+    		<version>${project.version}</version>
     	</dependency>
     	
     	<dependency>
     		<groupId>org.drools</groupId>
+    		<artifactId>drools-decisiontables</artifactId>
+    	</dependency>
+    	
+    	 <dependency>
+    		<groupId>org.drools</groupId>
     		<artifactId>drools-persistence-jpa</artifactId>
     		<optional>true</optional>
-    	</dependency>    	
-        
-    	<dependency>
+    	</dependency>
+    	 <dependency>
     		<groupId>org.springframework</groupId>
     		<artifactId>spring-core</artifactId>
             <version>${spring.version}</version>
-    	</dependency>     
-
-        <dependency>
+    	</dependency>
+    	 <dependency>
     		<groupId>org.springframework</groupId>
     		<artifactId>spring-beans</artifactId>
             <version>${spring.version}</version>
-    	</dependency> 
-        
-        <dependency>
+    	</dependency>
+    	 <dependency>
     		<groupId>org.springframework</groupId>
     		<artifactId>spring-orm</artifactId>
             <version>${spring.version}</version>
             <optional>true</optional>
     	</dependency>
-    	
-    	<dependency>
+    	 <dependency>
     		<groupId>org.springframework</groupId>
     		<artifactId>spring-jdbc</artifactId>
             <version>${spring.version}</version>
             <optional>true</optional>
     	</dependency>
-        
-        <dependency>
+    	 <dependency>
     		<groupId>org.springframework</groupId>
     		<artifactId>spring-context</artifactId>
             <version>${spring.version}</version>
     	</dependency>
-
-        <dependency>
+    	 <dependency>
         	<groupId>javax.persistence</groupId>
         	<artifactId>persistence-api</artifactId>
         	<version>1.0</version>
         	<optional>true</optional>
         </dependency>
-
-        <dependency>
+    	 <dependency>
             <groupId>org.hibernate</groupId>
             <artifactId>hibernate-entitymanager</artifactId>
             <version>3.4.0.GA</version>
             <scope>test</scope>
         </dependency>
-
-        <dependency>
+    	 <dependency>
         	<groupId>org.slf4j</groupId>
         	<artifactId>slf4j-log4j12</artifactId>
         	<version>1.5.2</version>
         	<scope>test</scope>
         </dependency>
-
-        <dependency>
+    	 <dependency>
         	<groupId>com.h2database</groupId>
             <artifactId>h2</artifactId>
             <version>1.1.117</version>
         	<scope>test</scope>
         </dependency>         
 
-      </dependencies>              
+      </dependencies>
                   
 </project>

Modified: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/KnowledgeBaseBeanFactory.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/KnowledgeBaseBeanFactory.java	2010-04-05 15:28:36 UTC (rev 32413)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/KnowledgeBaseBeanFactory.java	2010-04-05 15:42:54 UTC (rev 32414)
@@ -1,16 +1,21 @@
 package org.drools.container.spring.beans;
 
+import java.io.IOException;
 import java.util.Collections;
 import java.util.List;
 
 import org.drools.KnowledgeBase;
 import org.drools.builder.KnowledgeBuilder;
 import org.drools.builder.KnowledgeBuilderErrors;
+import org.drools.builder.help.KnowledgeBuilderHelper;
 import org.drools.vsm.ServiceManager;
 import org.drools.vsm.local.ServiceManagerLocalClient;
 import org.springframework.beans.factory.FactoryBean;
 import org.springframework.beans.factory.InitializingBean;
 
+import com.sun.tools.xjc.Language;
+import com.sun.tools.xjc.Options;
+
 public class KnowledgeBaseBeanFactory implements FactoryBean, InitializingBean {
 
 	private KnowledgeBase kbase;
@@ -19,6 +24,7 @@
 //	private String name;
 //	private String beanName;
 	private List<DroolsResourceAdapter> resources = Collections.emptyList();
+	private List<DroolsResourceAdapter> models = Collections.emptyList();
 
 	public Object getObject() throws Exception {
 		return kbase;
@@ -37,9 +43,29 @@
 //			setName(getBeanName());
 //		}
 		if (serviceManager == null) {
+			System.out.println("creating NEW SERVICE MANAGER LOCAL CLIENT");
 			serviceManager = new ServiceManagerLocalClient();
 		}
+
 		KnowledgeBuilder kbuilder = getServiceManager().getKnowledgeBuilderFactoryService().newKnowledgeBuilder();
+		kbase = getServiceManager().getKnowledgeBaseFactoryService().newKnowledgeBase();
+
+		if (models != null && models.size() > 0) {
+			for (DroolsResourceAdapter res: models) {
+				Options xjcOptions = new Options();
+				xjcOptions.setSchemaLanguage(Language.XMLSCHEMA);
+				try {
+					KnowledgeBuilderHelper.addXsdModel(res.getDroolsResource(),
+														kbuilder,
+														xjcOptions, 
+														"xsd" );
+					kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
+				} catch (IOException e) {
+					throw new RuntimeException("Error creating XSD model", e);
+				}
+			}
+		}
+		
 		for (DroolsResourceAdapter res: resources) {
 			if (res.getResourceConfiguration() == null) {
 				kbuilder.add(res.getDroolsResource(), res.getResourceType());
@@ -53,12 +79,8 @@
 			throw new RuntimeException(errors.toString());
 		}
 		
-//		kbase = getServiceManager().getKnowledgeBaseFactory().newKnowledgeBase(getName());
-		kbase = getServiceManager().getKnowledgeBaseFactoryService().newKnowledgeBase();
 		kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
-		
-		///
-		
+
 	}
 
 	public KnowledgeBase getKbase() {
@@ -100,4 +122,12 @@
 	public void setServiceManager(ServiceManager serviceManager) {
 		this.serviceManager = serviceManager;
 	}
+
+	public void setModels(List<DroolsResourceAdapter> models) {
+		this.models = models;
+	}
+
+	public List<DroolsResourceAdapter> getModels() {
+		return models;
+	}
 }

Added: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/KnowledgeServiceBeanFactory.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/KnowledgeServiceBeanFactory.java	                        (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/KnowledgeServiceBeanFactory.java	2010-04-05 15:42:54 UTC (rev 32414)
@@ -0,0 +1,98 @@
+package org.drools.container.spring.beans;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.PackageScanClassResolver;
+import org.drools.server.KnowledgeService;
+import org.drools.server.KnowledgeServiceImpl;
+import org.drools.server.profile.KnowledgeServiceConfiguration;
+import org.springframework.beans.factory.FactoryBean;
+import org.springframework.beans.factory.InitializingBean;
+
+/**
+ * 
+ * @author Lucas Amador
+ *
+ */
+public class KnowledgeServiceBeanFactory  implements FactoryBean, InitializingBean {
+
+	private String id;
+	private CamelContext camelContext;
+	private PackageScanClassResolver packageClassLoaderResolver;
+	private KnowledgeService service;
+	private List<KnowledgeServiceConfiguration> configurations = Collections.emptyList();
+	private String smId;
+
+	public Object getObject() throws Exception {
+		return service;
+	}
+
+	public Class<? extends KnowledgeService> getObjectType() {
+		return KnowledgeService.class;
+	}
+
+	public boolean isSingleton() {
+		return true;
+	}
+
+	public void afterPropertiesSet() throws Exception {
+		Map<String, KnowledgeServiceConfiguration> configs = new HashMap<String, KnowledgeServiceConfiguration>();
+		for (KnowledgeServiceConfiguration cfg : configurations) {
+			configs.put(cfg.getSessionId(), cfg);
+		}
+		service = new KnowledgeServiceImpl(camelContext, configs, smId);
+	}
+
+	public void setId(String id) {
+		this.id = id;
+	}
+
+	public String getId() {
+		return id;
+	}
+
+	public void setCamelContext(CamelContext camelContext) {
+		this.camelContext = camelContext;
+	}
+
+	public CamelContext getCamelContext() {
+		return camelContext;
+	}
+
+	public void setService(KnowledgeService service) {
+		this.service = service;
+	}
+
+	public KnowledgeService getService() {
+		return service;
+	}
+
+	public void setConfigurations(List<KnowledgeServiceConfiguration> configurations) {
+		this.configurations = configurations;
+	}
+
+	public List<KnowledgeServiceConfiguration> getConfigurations() {
+		return configurations;
+	}
+
+	public void setPackageClassLoaderResolver(PackageScanClassResolver packageClassLoaderResolver) {
+		this.packageClassLoaderResolver = packageClassLoaderResolver;
+	}
+
+	public PackageScanClassResolver getPackageClassLoaderResolver() {
+		return packageClassLoaderResolver;
+	}
+
+	public void setSmId(String smId) {
+		this.smId = smId;
+	}
+
+	public String getSmId() {
+		return smId;
+	}
+
+}


Property changes on: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/KnowledgeServiceBeanFactory.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/KnowledgeServiceConfigurationBeanFactory.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/KnowledgeServiceConfigurationBeanFactory.java	                        (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/KnowledgeServiceConfigurationBeanFactory.java	2010-04-05 15:42:54 UTC (rev 32414)
@@ -0,0 +1,120 @@
+package org.drools.container.spring.beans;
+
+import java.util.Collections;
+import java.util.List;
+
+import javax.xml.bind.JAXBContext;
+
+import org.drools.KnowledgeBase;
+import org.drools.builder.help.KnowledgeBuilderHelper;
+import org.drools.common.InternalRuleBase;
+import org.drools.impl.KnowledgeBaseImpl;
+import org.drools.impl.StatefulKnowledgeSessionImpl;
+import org.drools.impl.StatelessKnowledgeSessionImpl;
+import org.drools.runtime.CommandExecutor;
+import org.drools.runtime.StatelessKnowledgeSession;
+import org.drools.server.profile.KnowledgeServiceConfiguration;
+import org.springframework.beans.factory.FactoryBean;
+import org.springframework.beans.factory.InitializingBean;
+
+/**
+ * 
+ * @author Lucas Amador
+ *
+ */
+public class KnowledgeServiceConfigurationBeanFactory implements FactoryBean, InitializingBean {
+
+	private KnowledgeServiceConfiguration service;
+	private String id;
+	private String sessionId;
+	private CommandExecutor session;
+	private String marshaller;
+	private List<String> classes = Collections.emptyList();
+	private List<String> commands = Collections.emptyList();
+
+	public Object getObject() throws Exception {
+		return service;
+	}
+
+	public Class<? extends KnowledgeServiceConfiguration> getObjectType() {
+		return KnowledgeServiceConfiguration.class;
+	}
+
+	public boolean isSingleton() {
+		return true;
+	}
+
+	public void afterPropertiesSet() throws Exception {
+		JAXBContext context = null;
+		if (classes != null && classes.size() > 0) {
+			KnowledgeBase kbase = null;
+			if (session instanceof StatelessKnowledgeSession) {
+				InternalRuleBase ruleBase = ((StatelessKnowledgeSessionImpl)session).getRuleBase();
+				kbase = new KnowledgeBaseImpl(ruleBase);
+			} else if (session instanceof StatefulKnowledgeSessionImpl) {
+				kbase = ((StatefulKnowledgeSessionImpl) session).getKnowledgeBase();
+			} else {
+			    throw new IllegalArgumentException("Unable to set ClassLoader on " + session);
+			}
+			context = KnowledgeBuilderHelper.newJAXBContext(classes.toArray(new String[classes.size()]), kbase);
+		}
+		service = new KnowledgeServiceConfiguration(id, sessionId, session, marshaller, context, commands);
+	}
+
+	public void setService(KnowledgeServiceConfiguration service) {
+		this.service = service;
+	}
+
+	public KnowledgeServiceConfiguration getService() {
+		return service;
+	}
+
+	public void setId(String id) {
+		this.id = id; 
+	}
+
+	public String getId() {
+		return id;
+	}
+
+	public void setSessionId(String sessionId) {
+		this.sessionId = sessionId;
+	}
+
+	public String getSessionId() {
+		return sessionId;
+	}
+
+	public void setSession(CommandExecutor session) {
+		this.session = session;
+	}
+
+	public CommandExecutor getSession() {
+		return session;
+	}
+
+	public void setMarshaller(String marshaller) {
+		this.marshaller = marshaller;
+	}
+
+	public String getMarshaller() {
+		return marshaller;
+	}
+
+	public void setClasses(List<String> classes) {
+		this.classes = classes;
+	}
+
+	public List<String> getClasses() {
+		return classes;
+	}
+
+	public void setCommands(List<String> commands) {
+		this.commands = commands;
+	}
+
+	public List<String> getCommands() {
+		return commands;
+	}
+
+}


Property changes on: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/KnowledgeServiceConfigurationBeanFactory.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeBaseDefinitionParser.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeBaseDefinitionParser.java	2010-04-05 15:28:36 UTC (rev 32413)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeBaseDefinitionParser.java	2010-04-05 15:42:54 UTC (rev 32414)
@@ -25,15 +25,42 @@
 		factory.addPropertyReference(SERVICE_MANAGER_ATTRIBUTE, smRef);
 		List<Element> childElements = DomUtils.getChildElementsByTagName(element, "resource");
 		
+		ManagedList resources = null;
 		if (childElements != null && !childElements.isEmpty()) {
-			ManagedList resources = new ManagedList(childElements.size());
+			resources = new ManagedList();
 			for (Element childResource : childElements) {
 				BeanDefinition resourceDefinition = parserContext.getDelegate().parseCustomElement(childResource, factory.getBeanDefinition());
 				resources.add(resourceDefinition);
 			}
+		}
+		
+		childElements = DomUtils.getChildElementsByTagName(element, "resource-ref");
+		
+		if (childElements != null && !childElements.isEmpty()) {
+			if (resources==null) {
+				resources = new ManagedList(childElements.size());
+			}
+			for (Element childResource : childElements) {
+				BeanDefinition resourceDefinition = parserContext.getDelegate().parseCustomElement(childResource, factory.getBeanDefinition());
+				resources.add(resourceDefinition);
+			}
+		}
+
+		if (resources!=null) {
 			factory.addPropertyValue("resources", resources);
 		}
-		
+
+		childElements = DomUtils.getChildElementsByTagName(element, "model");
+
+		if (childElements != null && !childElements.isEmpty()) {
+			ManagedList models = new ManagedList(childElements.size());
+			for (Element childResource : childElements) {
+				BeanDefinition resourceDefinition = parserContext.getDelegate().parseCustomElement(childResource, factory.getBeanDefinition());
+				models.add(resourceDefinition);
+			}
+			factory.addPropertyValue("models", models);
+		}
+
 		return factory.getBeanDefinition();
 	}
 	

Added: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeServiceConfigurationDefinitionParser.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeServiceConfigurationDefinitionParser.java	                        (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeServiceConfigurationDefinitionParser.java	2010-04-05 15:42:54 UTC (rev 32414)
@@ -0,0 +1,88 @@
+package org.drools.container.spring.namespace;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.container.spring.beans.KnowledgeServiceConfigurationBeanFactory;
+import org.springframework.beans.factory.support.AbstractBeanDefinition;
+import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser;
+import org.springframework.beans.factory.xml.ParserContext;
+import org.springframework.util.xml.DomUtils;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * 
+ * @author Lucas Amador
+ *
+ */
+public class KnowledgeServiceConfigurationDefinitionParser extends AbstractBeanDefinitionParser {
+
+	private static final String ID_ATTRIBUTE = "id";
+	private static final String SESSION_ATTRIBUTE = "session";
+	private static final String MARSHALLER_ATTRIBUTE = "marshaller";
+	private static final String CLASS_ELEMENT = "class";
+	private static final String STARTUP_COMMAND_ELEMENT = "startup-command";
+
+	@SuppressWarnings("unchecked")
+	@Override
+	protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) {
+
+		String id = element.getAttribute(ID_ATTRIBUTE);
+
+		BeanDefinitionBuilder factory = BeanDefinitionBuilder.rootBeanDefinition(KnowledgeServiceConfigurationBeanFactory.class);
+		if (id!=null && id.length() > 0) {
+			factory.addPropertyValue("id", id);
+		}
+
+		String ksession = element.getAttribute(SESSION_ATTRIBUTE);
+		emptyAttributeCheck(element.getLocalName(), SESSION_ATTRIBUTE, ksession);
+		factory.addPropertyReference("session", ksession);
+		factory.addPropertyValue("sessionId", ksession);
+
+		String marshaller = element.getAttribute(MARSHALLER_ATTRIBUTE);
+		emptyAttributeCheck(element.getLocalName(), MARSHALLER_ATTRIBUTE, marshaller);
+		factory.addPropertyValue("marshaller", marshaller);
+
+		List<Element> childElements = DomUtils.getChildElementsByTagName(element, CLASS_ELEMENT);
+
+		if (childElements != null && !childElements.isEmpty()) {
+			List<String> classes = new ArrayList<String>();
+			for (Element childResource : childElements) {
+				NodeList childNodes = childResource.getChildNodes();
+				for (int i = 0; i < childNodes.getLength(); i++) {
+					Node item = childNodes.item(i);
+					classes.add(item.getNodeValue());
+				}
+			}
+			factory.addPropertyValue("classes", classes);
+		}
+		
+		childElements = DomUtils.getChildElementsByTagName(element, STARTUP_COMMAND_ELEMENT);
+
+		if (childElements != null && !childElements.isEmpty()) {
+			List<String> commands = new ArrayList<String>();
+			for (Element childResource : childElements) {
+				NodeList childNodes = childResource.getChildNodes();
+				for (int i = 0; i < childNodes.getLength(); i++) {
+					Node item = childNodes.item(i);
+					if (item.getNodeValue().trim().length() > 0) {
+						commands.add(item.getNodeValue().trim());
+					}
+				}
+			}
+			factory.addPropertyValue("commands", commands);
+		}
+		
+		return factory.getBeanDefinition();
+	}
+
+	public void emptyAttributeCheck(final String element, final String attributeName, final String attribute) {
+		if (attribute == null || attribute.trim().length() == 0) {
+			throw new IllegalArgumentException("<" + element + "> requires a '" + attributeName + "' attribute");
+		}
+	}
+
+}


Property changes on: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeServiceConfigurationDefinitionParser.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeServiceConfigurationRefDefinitionParser.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeServiceConfigurationRefDefinitionParser.java	                        (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeServiceConfigurationRefDefinitionParser.java	2010-04-05 15:42:54 UTC (rev 32414)
@@ -0,0 +1,30 @@
+package org.drools.container.spring.namespace;
+
+import org.springframework.beans.factory.support.AbstractBeanDefinition;
+import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser;
+import org.springframework.beans.factory.xml.ParserContext;
+import org.w3c.dom.Element;
+
+/**
+ * 
+ * @author Lucas Amador
+ *
+ */
+public class KnowledgeServiceConfigurationRefDefinitionParser extends AbstractBeanDefinitionParser {
+
+	private static final String ID_ATTRIBUTE = "id";
+
+	@Override
+	protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) {
+		String id = element.getAttribute(ID_ATTRIBUTE);
+		emptyAttributeCheck(element.getLocalName(), ID_ATTRIBUTE, id);
+		return (AbstractBeanDefinition) parserContext.getRegistry().getBeanDefinition(id);
+	}
+
+	public void emptyAttributeCheck(final String element, final String attributeName, final String attribute) {
+		if (attribute == null || attribute.trim().length() == 0) {
+			throw new IllegalArgumentException("<" + element + "> requires a '" + attributeName + "' attribute");
+		}
+	}
+
+}


Property changes on: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeServiceConfigurationRefDefinitionParser.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeServiceDefinitionParser.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeServiceDefinitionParser.java	                        (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeServiceDefinitionParser.java	2010-04-05 15:42:54 UTC (rev 32414)
@@ -0,0 +1,85 @@
+package org.drools.container.spring.namespace;
+
+import java.util.List;
+
+import org.drools.container.spring.beans.KnowledgeServiceBeanFactory;
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.support.AbstractBeanDefinition;
+import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import org.springframework.beans.factory.support.ManagedList;
+import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser;
+import org.springframework.beans.factory.xml.ParserContext;
+import org.springframework.util.xml.DomUtils;
+import org.w3c.dom.Element;
+
+/**
+ * 
+ * @author Lucas Amador
+ *
+ */
+public class KnowledgeServiceDefinitionParser extends AbstractBeanDefinitionParser {
+
+	private static final String ID_ATTRIBUTE = "id";
+	private static final String CAMEL_CONTEXT_ATTRIBUTE = "camelContext";
+	private static final String SM_ID_ATTRIBUTE = "smId";
+	private static final String CONFIGURATION_ELEMENT = "configuration";
+	private static final String CONFIGURATION_REF_ELEMENT = "configuration-ref";
+
+	@SuppressWarnings("unchecked")
+	@Override
+	protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) {
+
+		String id = element.getAttribute(ID_ATTRIBUTE);
+		emptyAttributeCheck(element.getLocalName(), ID_ATTRIBUTE, id);
+		
+		BeanDefinitionBuilder factory = BeanDefinitionBuilder.rootBeanDefinition(KnowledgeServiceBeanFactory.class);
+
+		factory.addPropertyValue("id", id);
+		
+		String smId = element.getAttribute(SM_ID_ATTRIBUTE);
+		emptyAttributeCheck(element.getLocalName(), SM_ID_ATTRIBUTE, smId);
+
+		factory.addPropertyValue("smId", smId);
+		
+		String camelContextId = element.getAttribute(CAMEL_CONTEXT_ATTRIBUTE);
+		emptyAttributeCheck(element.getLocalName(), CAMEL_CONTEXT_ATTRIBUTE, camelContextId);
+		
+		factory.addPropertyReference(CAMEL_CONTEXT_ATTRIBUTE, camelContextId);
+
+		List<Element> childElements = DomUtils.getChildElementsByTagName(element, CONFIGURATION_ELEMENT);
+		ManagedList configurations = null;
+
+		if (childElements != null && !childElements.isEmpty()) {
+			configurations = new ManagedList(childElements.size());
+			for (Element childResource : childElements) {
+				BeanDefinition resourceDefinition = parserContext.getDelegate().parseCustomElement(childResource, factory.getBeanDefinition());
+				configurations.add(resourceDefinition);
+			}
+		}
+
+		childElements = DomUtils.getChildElementsByTagName(element, CONFIGURATION_REF_ELEMENT);
+
+		if (childElements != null && !childElements.isEmpty()) {
+			if (configurations==null) {
+				configurations = new ManagedList(childElements.size());
+			}
+			for (Element childResource : childElements) {
+				BeanDefinition resourceDefinition = parserContext.getDelegate().parseCustomElement(childResource, factory.getBeanDefinition());
+				configurations.add(resourceDefinition);
+			}
+		}
+
+		if (configurations!=null) {
+			factory.addPropertyValue("configurations", configurations);
+		}
+
+		return factory.getBeanDefinition();
+	}
+
+	public void emptyAttributeCheck(final String element, final String attributeName, final String attribute) {
+		if (attribute == null || attribute.trim().length() == 0) {
+			throw new IllegalArgumentException("<" + element + "> requires a '" + attributeName + "' attribute");
+		}
+	}
+
+}


Property changes on: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeServiceDefinitionParser.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/ResourceRefDefinitionParser.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/ResourceRefDefinitionParser.java	                        (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/ResourceRefDefinitionParser.java	2010-04-05 15:42:54 UTC (rev 32414)
@@ -0,0 +1,24 @@
+package org.drools.container.spring.namespace;
+
+import org.springframework.beans.factory.support.AbstractBeanDefinition;
+import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser;
+import org.springframework.beans.factory.xml.ParserContext;
+import org.w3c.dom.Element;
+
+public class ResourceRefDefinitionParser extends AbstractBeanDefinitionParser {
+
+	private static final String ID_ATTRIBUTE = "id";
+
+	@Override
+	protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) {
+		String id = element.getAttribute(ID_ATTRIBUTE);
+		emptyAttributeCheck(element.getLocalName(), ID_ATTRIBUTE, id);
+		return (AbstractBeanDefinition) parserContext.getRegistry().getBeanDefinition(id);
+	}
+
+	public void emptyAttributeCheck(final String element, final String attributeName, final String attribute) {
+		if (attribute == null || attribute.trim().equals("")) {
+			throw new IllegalArgumentException("<" + element + "> requires a '" + attributeName + "' attribute");
+		}
+	}
+}


Property changes on: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/ResourceRefDefinitionParser.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/SpringDroolsHandler.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/SpringDroolsHandler.java	2010-04-05 15:28:36 UTC (rev 32413)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/SpringDroolsHandler.java	2010-04-05 15:42:54 UTC (rev 32414)
@@ -9,11 +9,19 @@
     	
     	registerBeanDefinitionParser("resource", new ResourceDefinitionParser());
     	
+    	registerBeanDefinitionParser("resource-ref", new ResourceRefDefinitionParser());
+    	
+    	registerBeanDefinitionParser("model", new ResourceDefinitionParser());
+    	
         registerBeanDefinitionParser("kbase", new KnowledgeBaseDefinitionParser());
         
         registerBeanDefinitionParser("ksession", new KnowledgeSessionDefinitionParser());
         
+        registerBeanDefinitionParser("service", new KnowledgeServiceDefinitionParser());
         
+        registerBeanDefinitionParser("service-conf", new KnowledgeServiceConfigurationDefinitionParser());
+        
+        registerBeanDefinitionParser("service-conf-ref", new KnowledgeServiceConfigurationRefDefinitionParser());
 
     }
 

Added: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/SpringDroolsServiceHandler.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/SpringDroolsServiceHandler.java	                        (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/SpringDroolsServiceHandler.java	2010-04-05 15:42:54 UTC (rev 32414)
@@ -0,0 +1,17 @@
+package org.drools.container.spring.namespace;
+
+import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
+
+public class SpringDroolsServiceHandler extends NamespaceHandlerSupport {
+
+	public void init() {
+
+		registerBeanDefinitionParser("definition", new KnowledgeServiceDefinitionParser());
+
+		registerBeanDefinitionParser("configuration", new KnowledgeServiceConfigurationDefinitionParser());
+
+		registerBeanDefinitionParser("configuration-ref", new KnowledgeServiceConfigurationRefDefinitionParser());
+
+	}
+
+}
\ No newline at end of file


Property changes on: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/SpringDroolsServiceHandler.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/resources/META-INF/spring.handlers
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/resources/META-INF/spring.handlers	2010-04-05 15:28:36 UTC (rev 32413)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/resources/META-INF/spring.handlers	2010-04-05 15:42:54 UTC (rev 32414)
@@ -1 +1,2 @@
-http\://drools.org/schema/drools-spring=org.drools.container.spring.namespace.SpringDroolsHandler
\ No newline at end of file
+http\://drools.org/schema/drools-spring=org.drools.container.spring.namespace.SpringDroolsHandler
+http\://drools.org/schema/drools-service-spring=org.drools.container.spring.namespace.SpringDroolsServiceHandler
\ No newline at end of file

Modified: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/resources/META-INF/spring.schemas
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/resources/META-INF/spring.schemas	2010-04-05 15:28:36 UTC (rev 32413)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/resources/META-INF/spring.schemas	2010-04-05 15:42:54 UTC (rev 32414)
@@ -1 +1,2 @@
-http\://drools.org/schema/drools-spring.xsd=org/drools/container/spring/drools-spring.xsd
\ No newline at end of file
+http\://drools.org/schema/drools-spring.xsd=org/drools/container/spring/drools-spring.xsd
+http\://drools.org/schema/drools-service-spring.xsd=org/drools/container/spring/drools-service-spring.xsd
\ No newline at end of file

Added: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-service-spring.xsd
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-service-spring.xsd	                        (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-service-spring.xsd	2010-04-05 15:42:54 UTC (rev 32414)
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns="http://drools.org/schema/drools-service-spring"
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
+	targetNamespace="http://drools.org/schema/drools-service-spring"
+	elementFormDefault="qualified" 
+	attributeFormDefault="unqualified">
+
+	<xsd:simpleType name="marshallerTypeEnum">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="JAXB" />
+			<xsd:enumeration value="XSTREAM" />
+		</xsd:restriction>
+	</xsd:simpleType>
+	
+	<xsd:complexType name="serviceConfType">
+		<xsd:sequence>
+			<xsd:element name="class" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
+			<xsd:element name="startup-command" type="xsd:string" minOccurs="0" maxOccurs="unbounded" /> 
+		</xsd:sequence>
+		<xsd:attribute name="session" use="required" type="xsd:string" />
+		<xsd:attribute name="marshaller" use="required" type="marshallerTypeEnum"/>
+	</xsd:complexType>
+	
+	<xsd:complexType name="serviceConfRefType">
+		<xsd:attribute name="id" use="required" type="xsd:string"/>
+	</xsd:complexType>
+	
+	<xsd:element name="configuration">
+		<xsd:complexType>
+			<xsd:complexContent>
+				<xsd:extension base="serviceConfType">
+					<xsd:attribute name="id" use="required" type="xsd:ID"/>
+				</xsd:extension>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	
+	<xsd:element name="definition">
+		<xsd:complexType>
+			<xsd:sequence>
+				<xsd:element name="configuration" type="serviceConfType" minOccurs="0" maxOccurs="unbounded" /> 
+				<xsd:element name="configuration-ref" type="serviceConfRefType" minOccurs="0" maxOccurs="unbounded" />
+			</xsd:sequence>
+			<xsd:attribute name="id" use="required" type="xsd:ID"/>
+			<xsd:attribute name="smId" use="required" type="xsd:string"/>
+			<xsd:attribute name="camelContext" use="required" type="xsd:string"/>
+		</xsd:complexType>
+	</xsd:element>
+
+</xsd:schema>


Property changes on: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-service-spring.xsd
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring.xsd
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring.xsd	2010-04-05 15:28:36 UTC (rev 32413)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring.xsd	2010-04-05 15:42:54 UTC (rev 32414)
@@ -25,7 +25,7 @@
 			<xsd:enumeration value="CHANGE_SET" />
 		</xsd:restriction>
 	</xsd:simpleType>
-
+	
 	<xsd:complexType name="resourceType">
 		<xsd:sequence>
 			<xsd:element name="decisiontable-conf" minOccurs="0" maxOccurs="1">
@@ -38,6 +38,10 @@
 		<xsd:attribute name="source" use="required" type="xsd:string"/>
 		<xsd:attribute name="type" use="required" type="resourceTypeEnum"/>
 	</xsd:complexType>
+	
+	<xsd:complexType name="resourceRefType">
+		<xsd:attribute name="id" use="required" type="xsd:string"/>
+	</xsd:complexType>
 
 	<xsd:element name="resource">
 		<xsd:complexType>
@@ -47,12 +51,24 @@
 				</xsd:extension>
 			</xsd:complexContent>
 		</xsd:complexType>
-	</xsd:element>			
+	</xsd:element>
+	
+	<xsd:complexType name="modelType">
+		<xsd:attribute name="source" use="required" type="xsd:string"/>
+	</xsd:complexType>
+	
+	<xsd:complexType name="classesType">
+		<xsd:sequence>
+			<xsd:element name="class" type="xsd:string"  />
+		</xsd:sequence>
+	</xsd:complexType>
 
 	<xsd:element name="kbase">
 		<xsd:complexType>
 			<xsd:sequence>
 				<xsd:element name="resource" type="resourceType" maxOccurs="unbounded"/>
+				<xsd:element name="resource-ref" type="resourceRefType" minOccurs="0" maxOccurs="unbounded"/>
+				<xsd:element name="model" type="modelType" minOccurs="0" maxOccurs="unbounded"/>
 			</xsd:sequence>
 			<xsd:attribute name="id" use="optional" type="xsd:ID"/>
 			<xsd:attribute name="serviceManager" use="optional" type="xsd:string"/>
@@ -68,7 +84,7 @@
 			<xsd:attribute name="name" use="optional" type="xsd:string"/>
 		</xsd:complexType>
 	</xsd:element>
-	
+
 	<!-- 
 	<xsd:element name="serviceManager">
 		

Modified: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/test/java/org/drools/container/spring/SpringDroolsTest.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/test/java/org/drools/container/spring/SpringDroolsTest.java	2010-04-05 15:28:36 UTC (rev 32413)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/test/java/org/drools/container/spring/SpringDroolsTest.java	2010-04-05 15:42:54 UTC (rev 32414)
@@ -8,6 +8,8 @@
 import org.drools.Person;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.StatelessKnowledgeSession;
+import org.drools.server.KnowledgeService;
+import org.drools.server.profile.KnowledgeServiceConfiguration;
 import org.drools.vsm.ServiceManager;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
@@ -50,4 +52,13 @@
         kstateful.fireAllRules();   
         assertEquals( 2, list.size() );	    
 	}
+	
+	public void test3() {
+		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( "org/drools/container/spring/beans.xml" );
+		KnowledgeServiceConfiguration kserviceConf1 = (KnowledgeServiceConfiguration)context.getBean( "service-conf-1" );
+		assertNotNull(kserviceConf1);
+		assertEquals("XSTREAM", kserviceConf1.getMarshaller());
+		KnowledgeService kservice = (KnowledgeService)context.getBean( "service" );
+		assertNotNull(kservice);
+	}
 }

Modified: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans.xml
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans.xml	2010-04-05 15:28:36 UTC (rev 32413)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans.xml	2010-04-05 15:42:54 UTC (rev 32414)
@@ -1,23 +1,40 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xmlns:drools="http://drools.org/schema/drools-spring"       
+       xmlns:drools="http://drools.org/schema/drools-spring"
+       xmlns:drools-service="http://drools.org/schema/drools-service-spring"       
+       xmlns:camel="http://camel.apache.org/schema/spring"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
-                           http://drools.org/schema/drools-spring http://drools.org/schema/drools-spring.xsd">
-  
+                           http://drools.org/schema/drools-spring http://drools.org/schema/drools-spring.xsd
+                           http://drools.org/schema/drools-service-spring http://drools.org/schema/drools-service-spring.xsd
+                           http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
+
+
+<camelContext id="executionContext" xmlns="http://camel.apache.org/schema/spring" />
+
 <bean id="sm1" class="org.drools.vsm.local.ServiceManagerLocalClient" />
 
+<drools:resource id="resource1" type="DRL" source="classpath:org/drools/container/spring/testSpring.drl"/>
+
 <drools:kbase id="kbase1" serviceManager="sm1">
-	<drools:resource type="DRL" source="classpath:org/drools/container/spring/testSpring.drl"/>
 	<drools:resource source="classpath:org/drools/container/spring/IntegrationExampleTest.xls" type="DTABLE">
 		<drools:decisiontable-conf input-type="XLS" worksheet-name="Tables_2" />
 	</drools:resource>
+	<drools:resource-ref id="resource1"/>
+	<drools:model source="classpath:org/drools/container/spring/model.xsd" />
 </drools:kbase>
 
-<drools:ksession id="ksession1" type="stateless" name="stateless1" 
-	kbase="kbase1" serviceManager="sm1"/>
+<drools:ksession id="ksession1" type="stateless" name="stateless1" kbase="kbase1" serviceManager="sm1"/>
 
-<drools:ksession id="ksession2" type="stateful" 
-	kbase="kbase1" serviceManager="sm1"/>
-	
+<drools:ksession id="ksession2" type="stateful" kbase="kbase1" serviceManager="sm1"/>
+
+<drools-service:configuration id="service-conf-1" marshaller="XSTREAM" session="ksession1">
+	<drools-service:class>org.drools.model.Person</drools-service:class>
+</drools-service:configuration>
+
+<drools-service:definition id="service" smId="sm1" camelContext="executionContext">
+	<drools-service:configuration marshaller="JAXB" session="ksession2" />
+	<drools-service:configuration-ref id="service-conf-1" />
+</drools-service:definition>
+
 </beans>
\ No newline at end of file

Added: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/test/resources/org/drools/container/spring/model.xsd
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/test/resources/org/drools/container/spring/model.xsd	                        (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/test/resources/org/drools/container/spring/model.xsd	2010-04-05 15:42:54 UTC (rev 32414)
@@ -0,0 +1,14 @@
+<xsd:schema 
+	xmlns:person="http://drools.org/model" 
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+	targetNamespace="http://drools.org/model" 
+	elementFormDefault="qualified"
+>
+	<xsd:complexType name="person">
+		<xsd:sequence>
+			<xsd:element name="name" type="xsd:string" />
+			<xsd:element name="age" type="xsd:integer" />
+		</xsd:sequence>
+	</xsd:complexType>
+
+</xsd:schema>
\ No newline at end of file


Property changes on: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-container/drools-spring/src/test/resources/org/drools/container/spring/model.xsd
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-core/src/main/java/org/drools/server/KnowledgeService.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-core/src/main/java/org/drools/server/KnowledgeService.java	                        (rev 0)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-core/src/main/java/org/drools/server/KnowledgeService.java	2010-04-05 15:42:54 UTC (rev 32414)
@@ -0,0 +1,9 @@
+package org.drools.server;
+
+import org.drools.CheckedDroolsException;
+
+public interface KnowledgeService {
+	
+	public String executeCommand(String cmd) throws CheckedDroolsException;
+
+}


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

Modified: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-core/src/main/java/org/drools/xml/jaxb/util/DroolsJaxbContextHelper.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-core/src/main/java/org/drools/xml/jaxb/util/DroolsJaxbContextHelper.java	2010-04-05 15:28:36 UTC (rev 32413)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-core/src/main/java/org/drools/xml/jaxb/util/DroolsJaxbContextHelper.java	2010-04-05 15:42:54 UTC (rev 32414)
@@ -46,42 +46,39 @@
  */
 public class DroolsJaxbContextHelper {
 
-    public static final String[] JAXB_ANNOTATED_CMD = {BatchExecutionCommand.class.getName(),
-        SetGlobalCommand.class.getName(),
-        GetGlobalCommand.class.getName(),
-        FireAllRulesCommand.class.getName(),
-        InsertElementsCommand.class.getName(),
-        InsertObjectCommand.class.getName(),
-        ModifyCommand.class.getName(),
-        SetterImpl.class.getName(),
-        QueryCommand.class.getName(),
-        RetractCommand.class.getName(),
-        AbortWorkItemCommand.class.getName(),
-        SignalEventCommand.class.getName(),
-        StartProcessCommand.class.getName(),
-        BatchExecutionCommand.class.getName(),
-        ExecutionResultImpl.class.getName(),
-        DefaultFactHandle.class.getName(),
-        JaxbListWrapper.class.getName(),
-        DisconnectedFactHandle.class.getName(),
-        FlatQueryResults.class.getName()
-    };
+	public static final String[] JAXB_ANNOTATED_CMD = {BatchExecutionCommand.class.getName(),
+														SetGlobalCommand.class.getName(),
+														GetGlobalCommand.class.getName(),
+														FireAllRulesCommand.class.getName(),
+														InsertElementsCommand.class.getName(),
+														InsertObjectCommand.class.getName(),
+														ModifyCommand.class.getName(),
+														SetterImpl.class.getName(),
+														QueryCommand.class.getName(),
+														RetractCommand.class.getName(),
+														AbortWorkItemCommand.class.getName(),
+														SignalEventCommand.class.getName(),
+														StartProcessCommand.class.getName(),
+														BatchExecutionCommand.class.getName(),
+														ExecutionResultImpl.class.getName(),
+														DefaultFactHandle.class.getName(),
+														JaxbListWrapper.class.getName(),
+														DisconnectedFactHandle.class.getName(),
+														FlatQueryResults.class.getName()
+	};
 
-    public static JAXBContext createDroolsJaxbContext(List<String> classNames, Map<String, ?> properties) throws ClassNotFoundException, JAXBException {
-        int i = 0;
-        
-            Class<?>[] classes = new Class[classNames.size()
-                    + JAXB_ANNOTATED_CMD.length];
+	public static JAXBContext createDroolsJaxbContext(List<String> classNames, Map<String, ?> properties) throws ClassNotFoundException, JAXBException {
+		int i = 0;
+		Class<?>[] classes = new Class[classNames.size() + JAXB_ANNOTATED_CMD.length];
 
-            for (i = 0; i < classNames.size(); i++) {
-                classes[i] = Class.forName(classNames.get(i));
-            }
-            int j = 0;
-            for (i = classNames.size(); i < classes.length; i++, j++) {
-                classes[i] = Class.forName(JAXB_ANNOTATED_CMD[j]);
-            }
-            return JAXBContext.newInstance(classes, properties);
-       
-        
-    }
+		for (i = 0; i < classNames.size(); i++) {
+			classes[i] = Class.forName(classNames.get(i));
+		}
+		int j = 0;
+		for (i = classNames.size(); i < classes.length; i++, j++) {
+			classes[i] = Class.forName(JAXB_ANNOTATED_CMD[j]);
+		}
+		return JAXBContext.newInstance(classes, properties);
+
+	}
 }

Modified: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-pipeline/drools-camel/src/main/java/org/drools/camel/component/DroolsJaxbDataFormat.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-pipeline/drools-camel/src/main/java/org/drools/camel/component/DroolsJaxbDataFormat.java	2010-04-05 15:28:36 UTC (rev 32413)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-pipeline/drools-camel/src/main/java/org/drools/camel/component/DroolsJaxbDataFormat.java	2010-04-05 15:42:54 UTC (rev 32414)
@@ -15,19 +15,12 @@
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
 import org.drools.command.runtime.BatchExecutionCommand;
-import org.drools.impl.StatefulKnowledgeSessionImpl;
-import org.drools.impl.StatelessKnowledgeSessionImpl;
 import org.drools.io.Resource;
-import org.drools.reteoo.ReteooRuleBase;
-import org.drools.runtime.CommandExecutor;
 import org.drools.runtime.ExecutionResults;
 import org.drools.runtime.impl.ExecutionResultImpl;
 import org.drools.runtime.pipeline.PipelineContext;
 import org.drools.runtime.pipeline.impl.CommandTranslator;
 import org.drools.runtime.pipeline.impl.ResultTranslator;
-import org.drools.runtime.pipeline.impl.ServiceManagerPipelineContextImpl;
-import org.drools.vsm.ServiceManager;
-import org.w3c.dom.Document;
 import org.xml.sax.InputSource;
 
 /**
@@ -74,29 +67,16 @@
 
 	public Object unmarshal(Exchange exchange, InputStream stream) throws Exception {
 		
-		JAXBContext jaxbContext = (JAXBContext) exchange.getIn().getHeader("jaxb-context");
+		Object header = exchange.getIn().getHeader("jaxb-context");
+		if (header==null || !(header instanceof JAXBContext)) {
+			throw new IllegalArgumentException("jaxb-context header param is null or not a valid JAXBContext");
+		}
 
+		JAXBContext jaxbContext = (JAXBContext) header;
+
 		PipelineContext context = (PipelineContext) exchange.getProperty("drools-context");
 		Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
-		Document d = exchange.getIn().getBody(Document.class);
 		Object body = exchange.getIn().getBody();
-		String name = d.getDocumentElement().getAttribute("lookup");
-		ServiceManagerPipelineContextImpl vsmContext = (ServiceManagerPipelineContextImpl) exchange.getProperty("drools-context");
-		ServiceManager sm = vsmContext.getServiceManager();
-		CommandExecutor executor = sm.lookup(name);
-		if (executor == null) {
-			throw new IllegalArgumentException("Unable to lookup CommandExecutor using name '" + name + "'");
-		}
-		vsmContext.setCommandExecutor(executor);
-		ClassLoader cl = null;
-		if (executor instanceof StatefulKnowledgeSessionImpl) {
-			cl = ((ReteooRuleBase) ((StatefulKnowledgeSessionImpl) executor).getRuleBase()).getRootClassLoader();
-		} else if (executor instanceof StatelessKnowledgeSessionImpl) {
-			cl = ((ReteooRuleBase) ((StatelessKnowledgeSessionImpl) executor).getRuleBase()).getRootClassLoader();
-		} else {
-			throw new IllegalArgumentException("Unable to set ClassLoader on " + executor);
-		}
-		vsmContext.setClassLoader(cl);
 		Object payload = null;
 		if ( body instanceof File ) {
 			payload = unmarshaller.unmarshal( (File) body );

Modified: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/pom.xml
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/pom.xml	2010-04-05 15:28:36 UTC (rev 32413)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/pom.xml	2010-04-05 15:42:54 UTC (rev 32414)
@@ -918,9 +918,14 @@
          </dependency>
          <dependency>
             <groupId>org.drools</groupId>
-            <artifactId>drools-server</artifactId>
+            <artifactId>drools-server-app</artifactId>
             <version>${project.version}</version>
          </dependency>
+          <dependency>
+            <groupId>org.drools</groupId>
+            <artifactId>drools-server-spring</artifactId>
+            <version>${project.version}</version>
+         </dependency>
          <dependency>
             <groupId>org.drools</groupId>
             <artifactId>drools-vsm</artifactId>



More information about the jboss-svn-commits mailing list