⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ruleexecutionsetprovidertestcase.java

📁 rule engine drools-2.0-beta-18
💻 JAVA
字号:
package org.drools.jsr94.rules.admin;/* * $Id: RuleExecutionSetProviderTestCase.java,v 1.12 2004/11/17 03:09:57 dbarnett Exp $ * * Copyright 2002-2004 (C) The Werken Company. All Rights Reserved. * * Redistribution and use of this software and associated documentation * ("Software"), with or without modification, are permitted provided that the * following conditions are met: * * 1. Redistributions of source code must retain copyright statements and * notices. Redistributions must also contain a copy of this document. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * 3. The name "drools" must not be used to endorse or promote products derived * from this Software without prior written permission of The Werken Company. * For written permission, please contact bob@werken.com. * * 4. Products derived from this Software may not be called "drools" nor may * "drools" appear in their names without prior written permission of The Werken * Company. "drools" is a registered trademark of The Werken Company. * * 5. Due credit should be given to The Werken Company. * (http://drools.werken.com/). * * THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS ``AS IS'' * AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE WERKEN COMPANY OR ITS CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * */import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.Reader;import java.util.ArrayList;import javax.rules.admin.RuleAdministrator;import javax.rules.admin.RuleExecutionSet;import javax.rules.admin.RuleExecutionSetProvider;import org.apache.xerces.parsers.DOMParser;import org.drools.io.RuleSetReader;import org.drools.jsr94.rules.RuleEngineTestBase;import org.drools.rule.RuleSet;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.InputSource;import org.xml.sax.SAXException;/** * Test the RuleExecutionSetProvider implementation. * * @author N. Alex Rupp (n_alex <at>codehaus.org) */public class RuleExecutionSetProviderTestCase extends RuleEngineTestBase{    private RuleAdministrator ruleAdministrator;    private RuleExecutionSetProvider ruleSetProvider;    private RuleSet ruleSet;    /**     * Setup the test case.     */    protected void setUp( ) throws Exception    {        super.setUp( );        ruleAdministrator = ruleServiceProvider.getRuleAdministrator( );        ruleSetProvider = ruleAdministrator.getRuleExecutionSetProvider( null );        initRuleSet( );    }    private void initRuleSet( )    {        InputStream resourceAsStream = null;        try        {            resourceAsStream =                RuleEngineTestBase.class.getResourceAsStream( bindUri );            Reader reader = new InputStreamReader( resourceAsStream );            RuleSetReader ruleSetReader = new RuleSetReader( );            this.ruleSet = ruleSetReader.read( reader );        }        catch ( IOException e )        {            throw new ExceptionInInitializerError(                "setUp() could not init the " +                "RuleSet due to an IOException in the InputStream: " + e );        }        catch ( Exception e )        {            throw new ExceptionInInitializerError(                "setUp() could not init the RuleSet, " + e );        }        finally        {            if ( resourceAsStream != null )            {                try                {                    resourceAsStream.close( );                }                catch ( IOException e )                {                    e.printStackTrace( );                }            }        }    }    protected void tearDown( )    {        ruleSet = null;    }    /**     * Test createRuleExecutionSet from DOM.     */    public void testCreateFromElement( ) throws Exception    {        DOMParser parser = new DOMParser( );        Document doc = null;        try        {            parser.parse( new InputSource(                RuleEngineTestBase.class.getResourceAsStream( bindUri ) ) );            doc = parser.getDocument( );        }        catch ( SAXException e )        {            fail( "could not parse incoming data stream: " + e );        }        catch ( IOException e )        {            fail( "could not open incoming data stream: " + e );        }        Element element = null;        NodeList children = doc.getChildNodes( );        if ( children != null )        {            for ( int i = 0; i < children.getLength( ); i++ )            {                Node child = children.item( i );                if ( Node.ELEMENT_NODE == child.getNodeType( ) )                {                    element = ( Element ) child;                }            }        }        if ( element != null )        {            RuleExecutionSet testRuleSet =                ruleSetProvider.createRuleExecutionSet( element, null );            assertEquals(                "rule set name", "Sisters Rules", testRuleSet.getName( ) );            assertEquals(                "number of rules", 1, testRuleSet.getRules( ).size( ) );        }        else        {            fail( "could not build an org.w3c.dom.Element" );        }    }    /**     * Test createRuleExecutionSet from Serializable.     */    public void testCreateFromSerializable( ) throws Exception    {        RuleExecutionSet ruleExecutionSet =            ruleSetProvider.createRuleExecutionSet( this.ruleSet, null );        assertEquals( "rule set name", "Sisters Rules",                      ruleExecutionSet.getName( ) );        assertEquals(            "number of rules", 1, ruleExecutionSet.getRules( ).size( ) );    }    /**     * Test createRuleExecutionSet from URI.     */    public void testCreateFromURI( ) throws Exception    {        String rulesUri =            RuleEngineTestBase.class.getResource( bindUri ).toExternalForm( );        RuleExecutionSet testRuleSet =            ruleSetProvider.createRuleExecutionSet( rulesUri, null );        assertEquals(            "rule set name", "Sisters Rules", testRuleSet.getName( ) );        assertEquals( "number of rules", 1, testRuleSet.getRules( ).size( ) );    }    public void testIncompatibleSerializableCreation( ) throws Exception    {        try        {            RuleExecutionSet testRuleSet =                ruleSetProvider.createRuleExecutionSet( new ArrayList( ), null );            fail( "Should have thrown an IllegalArgumentException. ArrayList " +                  "objects are not valid AST representations. " + testRuleSet );        }        catch ( IllegalArgumentException e )        {            /*             * this is supposed to happen if you pass in a serializable object             * that isn't a supported AST representation.             */        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -