org.drools.server.CxfSoapClientServerGridTest.java Source code

Java tutorial

Introduction

Here is the source code for org.drools.server.CxfSoapClientServerGridTest.java

Source

/*
 * Copyright 2010 JBoss Inc
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.drools.server;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.namespace.QName;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;

import org.apache.camel.CamelContext;
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactoryService;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderError;
import org.drools.builder.KnowledgeBuilderErrors;
import org.drools.builder.KnowledgeBuilderFactoryService;
import org.drools.builder.ResourceType;
//import org.drools.grid.ConnectionFactoryService;
//import org.drools.grid.GridConnection;
//import org.drools.grid.GridNode;
//import org.drools.grid.GridServiceDescription;
//import org.drools.grid.SocketService;
//import org.drools.grid.service.directory.WhitePages;
import org.drools.io.impl.ByteArrayResource;
import org.drools.runtime.StatefulKnowledgeSession;
import org.junit.Ignore;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import static org.junit.Assert.*;

public class CxfSoapClientServerGridTest {

    @org.junit.Test
    @Ignore
    public void test1() throws Exception {
        //        ClassPathXmlApplicationContext springContext = new ClassPathXmlApplicationContext( "classpath:beans-test-grid.xml" );
        //
        //        SOAPMessage soapMessage = createMessageForKsession("ksession3");
        //
        //        Test test = new Test();
        //        String response = test.execute( soapMessage,
        //                                        (CamelContext) springContext.getBean( "camel-client-ctx" ) );
        //        
        //        //System.out.println("Response 1 = "+ response );
        //        assertTrue( response.contains( "execution-results" ) );
        //        assertTrue( response.contains( "echo" ) );
        //        
        //        
        //        GridImpl grid2 = (GridImpl) springContext.getBean("grid2");
        //        GridServiceDescription<GridNode> n1Gsd = grid2.get( WhitePages.class ).lookup( "node1" );
        //        GridConnection<GridNode> conn = grid2.get( ConnectionFactoryService.class ).createConnection( n1Gsd );
        //        GridNode remoteN1 = conn.connect();
        //
        //        KnowledgeBuilder kbuilder = remoteN1.get( KnowledgeBuilderFactoryService.class ).newKnowledgeBuilder();
        //
        //        assertNotNull( kbuilder );
        //        
        //        String rule = "package  org.grid.test\n"
        //                + "declare Message2\n"
        //                +    "text : String\n"
        //                + "end\n"
        //                + "rule \"echo2\" \n"
        //                + "dialect \"mvel\"\n"
        //                +   "when\n"
        //                + "     $m : Message2()\n"
        //                +   "then\n"
        //                +       "$m.text = \"echo2:\" + $m.text;\n"
        //                + "end\n";
        //                //System.out.println("Rule = "+rule);
        //        kbuilder.add( new ByteArrayResource( rule.getBytes() ),
        //                      ResourceType.DRL );
        //
        //        KnowledgeBuilderErrors errors = kbuilder.getErrors();
        //        if ( errors != null && errors.size() > 0 ) {
        //            for ( KnowledgeBuilderError error : errors ) {
        //                System.out.println( "Error: " + error.getMessage() );
        //
        //            }
        //            fail("KnowledgeBase did not build");
        //        }
        //
        //        KnowledgeBase kbase = remoteN1.get( KnowledgeBaseFactoryService.class ).newKnowledgeBase();
        //
        //        assertNotNull( kbase );
        //
        //        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
        //
        //        StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
        //
        //        assertNotNull( session );
        //        
        //        
        //        remoteN1.set("ksession2", session);
        //        
        //        
        //        soapMessage = createMessageForKsession("ksession2");
        //        
        //        String response2 = test.execute( soapMessage,
        //                                        (CamelContext) springContext.getBean( "camel-client-ctx" ) );
        //        
        //        //System.out.println("Response 2 = "+response2  );
        //        assertTrue( response2.contains( "execution-results" ) );
        //        assertTrue( response2.contains( "echo2" ) );
        //        
        //        remoteN1.dispose();
        //        GridImpl grid1 = (GridImpl) springContext.getBean("grid1");
        //        grid1.get(SocketService.class).close();
        //       
        //        springContext.registerShutdownHook();
        //        springContext.stop();

    }

    private SOAPMessage createMessageForKsession(String ksessionName) throws SOAPException {

        SOAPMessage soapMessage = MessageFactory.newInstance().createMessage();
        SOAPBody body = soapMessage.getSOAPPart().getEnvelope().getBody();
        QName payloadName = new QName("http://soap.jax.drools.org", "execute", "ns1");

        body.addBodyElement(payloadName);
        String add = "";
        String packages = "org.test";
        if (ksessionName.equals("ksession2")) {
            add = "2";
            packages = "org.grid.test";
        }
        String cmd = "";
        cmd += "<batch-execution lookup=\"" + ksessionName + "\">\n";
        cmd += "  <insert out-identifier=\"message\">\n";
        cmd += "      <" + packages + ".Message" + add + ">\n";
        cmd += "         <text>Helllo World" + ksessionName + "</text>\n";
        cmd += "      </" + packages + ".Message" + add + ">\n";
        cmd += "   </insert>\n";
        cmd += "   <fire-all-rules/>\n";
        cmd += "</batch-execution>\n";

        body.addTextNode(cmd);
        OutputStream os = new ByteArrayOutputStream();
        try {
            soapMessage.writeTo(os);
        } catch (IOException ex) {
            Logger.getLogger(CxfSoapClientServerGridTest.class.getName()).log(Level.SEVERE, null, ex);
        }
        //System.out.println("SOAP = "+os.toString());
        return soapMessage;

    }

}