[jboss-svn-commits] JBL Code SVN: r31681 - labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Feb 15 17:15:15 EST 2010


Author: baunax
Date: 2010-02-15 17:15:15 -0500 (Mon, 15 Feb 2010)
New Revision: 31681

Modified:
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbXSDModelTest.java
Log:
changes to generate the xml from objects

Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbXSDModelTest.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbXSDModelTest.java	2010-02-15 22:14:36 UTC (rev 31680)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbXSDModelTest.java	2010-02-15 22:15:15 UTC (rev 31681)
@@ -2,20 +2,29 @@
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
+import java.io.StringWriter;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
 import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Marshaller;
 
 import org.apache.camel.builder.RouteBuilder;
 import org.drools.KnowledgeBase;
 import org.drools.builder.KnowledgeBuilder;
 import org.drools.builder.ResourceType;
 import org.drools.builder.help.KnowledgeBuilderHelper;
+import org.drools.command.runtime.BatchExecutionCommand;
+import org.drools.command.runtime.rule.FireAllRulesCommand;
 import org.drools.command.runtime.rule.InsertObjectCommand;
+import org.drools.common.InternalRuleBase;
+import org.drools.impl.KnowledgeBaseImpl;
 import org.drools.io.ResourceFactory;
 import org.drools.pipeline.camel.Person;
+import org.drools.rule.DroolsCompositeClassLoader;
 import org.drools.runtime.ExecutionResults;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.rule.FactHandle;
@@ -33,31 +42,59 @@
 
 	private String handle;
 	private JAXBContext jaxbContext;
+	private DroolsCompositeClassLoader classLoader;
 
 	public void testSessionInsert() throws Exception {
+		Class<?> personClass = classLoader.loadClass("org.drools.model.Person");
+		System.out.println(personClass.getPackage());
+		assertNotNull(personClass.getPackage());
+//		Class<?> fact = classLoader.loadClass("org.drools.model.ObjectFactory");
+		Object baunax = personClass.newInstance();
+		Object lucaz = personClass.newInstance();
 		
-		String cmd = "";
-		cmd += "<batch-execution lookup='ksession1'>\n";
-		cmd += "   <insert out-identifier='lucaz'>\n";
-		cmd += "    <object>\n";
-		cmd += "      <Person xmlns='http://drools.org/model' >\n";
-		cmd += "         <name>lucaz</name>\n";
-		cmd += "         <age>25</age>\n";
-		cmd += "      </Person>\n";
-		cmd += "    </object>\n";
-		cmd += "   </insert>\n";
-		cmd += "   <insert out-identifier='baunax'>\n";
-		cmd += "    <object>\n";
-		cmd += "      <Person xmlns='http://drools.org/model' >\n";
-		cmd += "         <name>baunax</name>\n";
-		cmd += "         <age>21</age>\n";
-		cmd += "      </Person>\n";
-		cmd += "    </object>\n";
-		cmd += "   </insert>\n";
-		cmd += "   <fire-all-rules />";
-		cmd += "</batch-execution>\n";
+		Method setName = personClass.getMethod("setName", String.class);
+		setName.invoke(baunax, "baunax");
+		setName.invoke(lucaz, "lucaz");
+		
+		Annotation[] annotations = personClass.getAnnotations();
+		assertTrue(annotations.length >= 2);
+		System.out.println(Arrays.asList(annotations));
+		
+		BatchExecutionCommand cmd = new BatchExecutionCommand();
+		cmd.setLookup("ksession1");
+		cmd.getCommands().add(new InsertObjectCommand(lucaz, "lucaz"));
+		cmd.getCommands().add(new InsertObjectCommand(baunax, "baunax"));
+		cmd.getCommands().add(new FireAllRulesCommand());
+		
+		StringWriter xmlReq = new StringWriter();
+		Marshaller marshaller = jaxbContext.createMarshaller();
+		marshaller.setProperty("jaxb.formatted.output", true);
+		marshaller.marshal(cmd, xmlReq);
+		
+		System.out.println(xmlReq.toString());
+		
+//		String cmd = "";
+//		cmd += "<batch-execution lookup='ksession1'>\n";
+//		cmd += "   <insert out-identifier='lucaz'>\n";
+//		cmd += "    <object>\n";
+//		cmd += "      <Person xmlns='http://drools.org/model' >\n";
+//		cmd += "         <name>lucaz</name>\n";
+//		cmd += "         <age>25</age>\n";
+//		cmd += "      </Person>\n";
+//		cmd += "    </object>\n";
+//		cmd += "   </insert>\n";
+//		cmd += "   <insert out-identifier='baunax'>\n";
+//		cmd += "    <object>\n";
+//		cmd += "      <Person xmlns='http://drools.org/model' >\n";
+//		cmd += "         <name>baunax</name>\n";
+//		cmd += "         <age>21</age>\n";
+//		cmd += "      </Person>\n";
+//		cmd += "    </object>\n";
+//		cmd += "   </insert>\n";
+//		cmd += "   <fire-all-rules />";
+//		cmd += "</batch-execution>\n";
 
-		byte[] xmlResp = (byte[]) template.requestBodyAndHeader("direct:test-with-session", cmd, "jaxb-context", jaxbContext);
+		byte[] xmlResp = (byte[]) template.requestBodyAndHeader("direct:test-with-session", xmlReq.toString(), "jaxb-context", jaxbContext);
 		assertNotNull(xmlResp);
 		System.out.println(new String(xmlResp));
 
@@ -230,11 +267,13 @@
 		assertFalse(kbuilder.hasErrors());
 
 		KnowledgeBase kbase = serviceManager.getKnowledgeBaseFactoryService().newKnowledgeBase();
+		
+		classLoader = ((InternalRuleBase) ((KnowledgeBaseImpl) kbase).getRuleBase()).getRootClassLoader();
 		kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
 
 		// Add object model to classes array
 		List<String> allClasses = new ArrayList<String>(Arrays.asList(classNames));		
-		allClasses.add("org.drools.pipeline.camel.Person");
+		allClasses.add(Person.class.getName());
 
 		try {
 			jaxbContext = KnowledgeBuilderHelper.newJAXBContext( allClasses.toArray(new String[allClasses.size()]), kbase );



More information about the jboss-svn-commits mailing list