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;
// }
}