[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