package org.drools.camel.component; import org.codehaus.jackson.JsonNode; import org.codehaus.jackson.map.ObjectMapper; import org.junit.BeforeClass; public class JSonBatchExecutionTest extends BatchTest {//extends ContextTestSupport { public JSonBatchExecutionTest() { super(); this.dataformat = "json"; //copyToDataFormat = "jaxb"; } public void assertXMLEqual(String expectedXml, String resultXml) { try { ObjectMapper mapper = new ObjectMapper(); JsonNode tree1 = mapper.readTree( expectedXml ); JsonNode tree2 = mapper.readTree( resultXml ); assertTrue( "Expected:" + expectedXml + "\nwas:" + resultXml, tree1.equals( tree2 ) ); } catch ( Exception e ) { throw new RuntimeException( "XML Assertion failure", e ); } } @BeforeClass public static void beforeClass() throws Exception { //new PrintWriter(new BufferedWriter( new FileWriter( "jaxb.mvt", false ))); } // // public void testVsmPipeline() throws Exception { // String str = ""; // str += "package org.drools \n"; // str += "import org.drools.Cheese \n"; // str += "rule rule1 \n"; // str += " when \n"; // str += " $c : Cheese() \n"; // str += " \n"; // str += " then \n"; // str += " $c.setPrice( $c.getPrice() + 5 ); \n"; // str += "end\n"; // // String inXml = ""; // inXml += "{\"batch-execution\":{\"lookup\":\"ksession1\", \"commands\":["; // inXml += "{\"insert\":{\"object\":{\"org.drools.Cheese\":{\"type\":\"stilton\",\"price\":25,\"oldPrice\":0}}, \"out-identifier\":\"outStilton\" } }"; // inXml += ", {\"fire-all-rules\":\"\"}"; // inXml += "]}}"; // inXml = roundTripFromXml( inXml ); // // LocalConnection connection = new LocalConnection(); // ExecutionNode node = connection.getExecutionNode(null); // // StatefulKnowledgeSession ksession = getExecutionNodeSessionStateful(node, ResourceFactory.newByteArrayResource( str.getBytes() ) ); // // node.get(DirectoryLookupFactoryService.class).register("ksession1", ksession); // // XStreamResolverStrategy xstreamStrategy = new XStreamResolverStrategy() { // public XStream lookup(String name) { // return BatchExecutionHelper.newJSonMarshaller(); // } // }; // // ResultHandlerImpl resultHandler = new ResultHandlerImpl(); // getPipelineSessionStateful(node, xstreamStrategy).insert(inXml, resultHandler); // String outXml = (String) resultHandler.getObject(); // // ExecutionResults result = (ExecutionResults) BatchExecutionHelper.newJSonMarshaller().fromXML( outXml ); // Cheese stilton = (Cheese) result.getValue( "outStilton" ); // assertEquals( 30, // stilton.getPrice() ); // // FactHandle factHandle = (FactHandle) result.getFactHandle( "outStilton" ); // stilton = (Cheese) ksession.getObject( factHandle ); // assertEquals( 30, // stilton.getPrice() ); // //// String expectedXml = ""; //// expectedXml += "<execution-results>\n"; //// expectedXml += " <result identifier=\"outStilton\">\n"; //// expectedXml += " <org.drools.Cheese>\n"; //// expectedXml += " <type>stilton</type>\n"; //// expectedXml += " <oldPrice>0</oldPrice>\n"; //// expectedXml += " <price>30</price>\n"; //// expectedXml += " </org.drools.Cheese>\n"; //// expectedXml += " </result>\n"; //// expectedXml += " <fact-handle identifier=\"outStilton\" externalForm=\"" + ((InternalFactHandle) result.getFactHandle( "outStilton" )).toExternalForm() + "\" /> \n"; //// expectedXml += "</execution-results>\n"; //// //// assertXMLEqual( expectedXml, //// outXml ); // } // private StatefulKnowledgeSession getExecutionNodeSessionStateful(ExecutionNode node, Resource resource) throws Exception { // KnowledgeBuilder kbuilder = node.get(KnowledgeBuilderFactoryService.class).newKnowledgeBuilder(); // kbuilder.add( resource, // ResourceType.DRL ); // // if ( kbuilder.hasErrors() ) { // System.out.println( kbuilder.getErrors() ); // } // // assertFalse( kbuilder.hasErrors() ); // Collection<KnowledgePackage> pkgs = kbuilder.getKnowledgePackages(); // // KnowledgeBase kbase = node.get(KnowledgeBaseFactoryService.class).newKnowledgeBase(); // // kbase.addKnowledgePackages( pkgs ); // StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession(); // // return session; // } }