Package org.drools.integrationtests

Source Code of org.drools.integrationtests.StatelessKnowledgeSessionPipelineTest$ResultHandlerImpl

package org.drools.integrationtests;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import junit.framework.TestCase;

import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.StatelessSessionResult;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
import org.drools.io.ResourceFactory;
import org.drools.runtime.Parameters;
import org.drools.runtime.StatelessKnowledgeSession;
import org.drools.runtime.StatelessKnowledgeSessionResults;
import org.drools.runtime.pipeline.Action;
import org.drools.runtime.pipeline.KnowledgeRuntimeCommand;
import org.drools.runtime.pipeline.Pipeline;
import org.drools.runtime.pipeline.PipelineFactory;
import org.drools.runtime.pipeline.ResultHandler;
import org.drools.runtime.pipeline.impl.MvelAction;
import org.drools.runtime.pipeline.impl.StatefulKnowledgeSessionInsertStage;
import org.drools.runtime.pipeline.impl.StatelessKnowledgeSessionExecuteStage;
import org.drools.runtime.pipeline.impl.StatelessKnowledgeSessionPipelineImpl;

public class StatelessKnowledgeSessionPipelineTest extends TestCase {
    public void testExecuteObjectAsDefault() {
        String str = "";
        str += "package org.sample \n";
        str += "global java.util.List list; \n";
        str += "rule rule1 \n";
        str += "  when \n";
        str += "    s : String() \n";
        str += "  then \n";
        str += "    list.add( s ); ";
        str += "end\n";
       
        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
        kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL );

        if ( kbuilder.hasErrors() ) {
            System.out.println( kbuilder.getErrors() );
        }
        assertFalse( kbuilder.hasErrors() );
       
        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
        StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
        List list = new ArrayList();
        ksession.setGlobal( "list", list );
       
       
        StatelessKnowledgeSessionExecuteStage stage1 = new StatelessKnowledgeSessionExecuteStage();
       
        StatelessKnowledgeSessionPipelineImpl pipeline = new StatelessKnowledgeSessionPipelineImpl(ksession);
        pipeline.setReceiver( stage1 );
       
        pipeline.insert( "hello world", null );
       
        assertEquals( 1, list.size() );
       
        assertEquals( "hello world", list.get( 0 ) );          
    }
   
    public void testExecuteObject() {
        String str = "";
        str += "package org.sample \n";
        str += "global java.util.List list; \n";
        str += "rule rule1 \n";
        str += "  when \n";
        str += "    s : String() \n";
        str += "  then \n";
        str += "    list.add( s ); ";
        str += "end\n";
       
        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
        kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL );

        if ( kbuilder.hasErrors() ) {
            System.out.println( kbuilder.getErrors() );
        }
        assertFalse( kbuilder.hasErrors() );
       
        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
        StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
        List list = new ArrayList();
        ksession.setGlobal( "list", list );
       
       
        MvelAction mvelAction = new MvelAction( "context.object = this");
        StatelessKnowledgeSessionExecuteStage stage1 = new StatelessKnowledgeSessionExecuteStage();
        mvelAction.setReceiver( stage1 );
       
        StatelessKnowledgeSessionPipelineImpl pipeline = new StatelessKnowledgeSessionPipelineImpl(ksession);
        pipeline.setReceiver( mvelAction );
       
        pipeline.insert( "hello world", null );
       
        assertEquals( 1, list.size() );
       
        assertEquals( "hello world", list.get( 0 ) );          
    }
   
    public void testExecuteIterable() {
        String str = "";
        str += "package org.sample \n";
        str += "global java.util.List list; \n";
        str += "rule rule1 \n";
        str += "  when \n";
        str += "    s : String() \n";
        str += "  then \n";
        str += "    list.add( s ); ";
        str += "end\n";
       
        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
        kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL );

        if ( kbuilder.hasErrors() ) {
            System.out.println( kbuilder.getErrors() );
        }
        assertFalse( kbuilder.hasErrors() );
       
        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
        StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
        List list = new ArrayList();
        ksession.setGlobal( "list", list );
       
       
        MvelAction mvelAction = new MvelAction( "context.setIterable( this )");
        StatelessKnowledgeSessionExecuteStage stage1 = new StatelessKnowledgeSessionExecuteStage();
        mvelAction.setReceiver( stage1 );
       
        StatelessKnowledgeSessionPipelineImpl pipeline = new StatelessKnowledgeSessionPipelineImpl(ksession);
        pipeline.setReceiver( mvelAction );
       
        List items = new ArrayList();
        items.add( "hello world" );
        items.add( "goodbye world" );
       
        pipeline.insert( items, null );
       
        assertEquals( 2, list.size() );
       
        Collections.sort( list );       
        assertEquals( "goodbye world", list.get( 0 ) );
        assertEquals( "hello world", list.get( 1 ) );
    }   
   
    public void testExecuteObjectAsDefaultWithParameters() {
        String str = "";
        str += "package org.sample \n";
        str += "global java.util.List list; \n";
        str += "rule rule1 \n";
        str += "  when \n";
        str += "    s : String() \n";
        str += "  then \n";
        str += "    list.add( s ); ";
        str += "end\n";
       
        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
        kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL );

        if ( kbuilder.hasErrors() ) {
            System.out.println( kbuilder.getErrors() );
        }
        assertFalse( kbuilder.hasErrors() );
       
        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
        StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
       
        MvelAction mvelAction2 = new MvelAction( "context.parameters.globalParams.setInOut( ['list' : new java.util.ArrayList()] )");
       
        StatelessKnowledgeSessionExecuteStage stage1 = new StatelessKnowledgeSessionExecuteStage();
        mvelAction2.setReceiver( stage1 );
       
        MvelAction mvelAction3 = new MvelAction( "context.resultHandler.handleResult( context.result )");
        stage1.setReceiver( mvelAction3 );
       
        StatelessKnowledgeSessionPipelineImpl pipeline = new StatelessKnowledgeSessionPipelineImpl(ksession);
        pipeline.setReceiver( mvelAction2 );
       
        ResultHandlerImpl handler = new ResultHandlerImpl();
       
        pipeline.insert( "hello world", handler );
       
        List list = (List)handler.getStatelessKnowledgeSessionResults().getValue( "list" );
       
        assertEquals( 1, list.size() );
       
        assertEquals( "hello world", list.get( 0 ) );             
    }    
   
    public void testExecuteObjectWithParameters() {
        String str = "";
        str += "package org.sample \n";
        str += "global java.util.List list; \n";
        str += "rule rule1 \n";
        str += "  when \n";
        str += "    s : String() \n";
        str += "  then \n";
        str += "    list.add( s ); ";
        str += "end\n";
       
        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
        kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL );

        if ( kbuilder.hasErrors() ) {
            System.out.println( kbuilder.getErrors() );
        }
        assertFalse( kbuilder.hasErrors() );
       
        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
        StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
       
        MvelAction mvelAction1 = new MvelAction( "context.object = this");
        MvelAction mvelAction2 = new MvelAction( "context.parameters.globalParams.setInOut( ['list' : new java.util.ArrayList()] )");
       
        mvelAction1.setReceiver( mvelAction2 );
       
        StatelessKnowledgeSessionExecuteStage stage1 = new StatelessKnowledgeSessionExecuteStage();
        mvelAction2.setReceiver( stage1 );
       
        MvelAction mvelAction3 = new MvelAction( "context.resultHandler.handleResult( context.result )");
        stage1.setReceiver( mvelAction3 );
       
        StatelessKnowledgeSessionPipelineImpl pipeline = new StatelessKnowledgeSessionPipelineImpl(ksession);
        pipeline.setReceiver( mvelAction1 );
       
        ResultHandlerImpl handler = new ResultHandlerImpl();
       
        pipeline.insert( "hello world", handler );
       
        List list = (List)handler.getStatelessKnowledgeSessionResults().getValue( "list" );
       
        assertEquals( 1, list.size() );
       
        assertEquals( "hello world", list.get( 0 ) );             
    }   
   
    public void testExecuteIterableWithParameters() {
        String str = "";
        str += "package org.sample \n";
        str += "global java.util.List list; \n";
        str += "rule rule1 \n";
        str += "  when \n";
        str += "    s : String() \n";
        str += "  then \n";
        str += "    list.add( s ); ";
        str += "end\n";
       
        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
        kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL );

        if ( kbuilder.hasErrors() ) {
            System.out.println( kbuilder.getErrors() );
        }
        assertFalse( kbuilder.hasErrors() );
       
        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
        StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
       
        Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
       
        KnowledgeRuntimeCommand execute = PipelineFactory.newStatelessKnowledgeSessionExecute();
        execute.setReceiver( executeResultHandler );
       
        Action assignParameters = PipelineFactory.newMvelAction( "context.parameters.globalParams.setInOut( ['list' : new java.util.ArrayList()] )");
        assignParameters.setReceiver( execute );
       
        Action assignIterable = PipelineFactory.newMvelAction( "context.setIterable( this )");               
        assignIterable.setReceiver( assignParameters );
               
        Pipeline pipeline = PipelineFactory.newStatelessKnowledgeSessionPipeline(ksession);
        pipeline.setReceiver( assignIterable );
       
        ResultHandlerImpl handler = new ResultHandlerImpl();
       
        List items = new ArrayList();
        items.add( "hello world" );
        items.add( "goodbye world" );
       
        pipeline.insert( items, handler );
       
        List list = (List)handler.getStatelessKnowledgeSessionResults().getValue( "list" );
       
        assertEquals( 2, list.size() );
       
        Collections.sort( list );       
        assertEquals( "goodbye world", list.get( 0 ) );
        assertEquals( "hello world", list.get( 1 ) );        
    }      
   
    public static class ResultHandlerImpl implements ResultHandler {       
        StatelessKnowledgeSessionResults results;
       
        public void handleResult(Object object) {
           this.results = ( StatelessKnowledgeSessionResults ) object;            
        }
       
        public StatelessKnowledgeSessionResults getStatelessKnowledgeSessionResults() {
            return this.results;
        }
       
    }
}
TOP

Related Classes of org.drools.integrationtests.StatelessKnowledgeSessionPipelineTest$ResultHandlerImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.