commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bugzi...@apache.org
Subject DO NOT REPLY [Bug 39534] New: - External Digester does not addCustomActions
Date Tue, 09 May 2006 17:33:39 GMT
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG·
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=39534>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND·
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=39534

           Summary: External Digester does not addCustomActions
           Product: Commons
           Version: 1.0 Alpha
          Platform: Other
        OS/Version: other
            Status: NEW
          Severity: normal
          Priority: P2
         Component: SCXML
        AssignedTo: commons-dev@jakarta.apache.org
        ReportedBy: fasihullah.askiri@gmail.com


I was not sure where to put my test-case. So attaching it here.

/*
 * Copyright 2006 The Apache Software Foundation.
 *
 * 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.apache.commons.scxml.model;

import java.net.URL;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

import org.apache.commons.digester.Digester;
import org.apache.commons.scxml.Context;
import org.apache.commons.scxml.Evaluator;
import org.apache.commons.scxml.SCXMLExecutor;
import org.apache.commons.scxml.SCXMLTestHelper;
import org.apache.commons.scxml.env.jexl.JexlContext;
import org.apache.commons.scxml.env.jexl.JexlEvaluator;
import org.apache.commons.scxml.io.SCXMLDigester;
import org.apache.commons.scxml.model.SCXML;
import org.apache.commons.scxml.model.State;

public class ExternalCustomActionTest extends TestCase {

    public ExternalCustomActionTest(String testName) {
        super(testName);
    }

    public static Test suite() {
        return new TestSuite(ExternalCustomActionTest.class);
    }

    public static void main(String args[]) {
        String[] testCaseName = { ExternalCustomActionTest.class.getName()};
        junit.textui.TestRunner.main(testCaseName);
    }

    private URL externalhello01, custom01;
    private Digester digester;
    private SCXMLExecutor exec;

    /**
     * Set up instance variables required by this test case.
     */
    public void setUp() {
        externalhello01 = this.getClass().getClassLoader().
            getResource("org/apache/commons/scxml/external-hello-world.xml");
        custom01 = this.getClass().getClassLoader().
            getResource("org/apache/commons/scxml/custom-hello-world.xml");
    }

    /**
     * Tear down instance variables required by this test case.
     */
    public void tearDown() {
    	externalhello01 = custom01 = null;
        digester = null;
        exec = null;
    }

    // Hello World example using the SCXML <log> action
    public void testHelloWorld() {
        // (1) Get Digester with "default" rules for parsing SCXML documents
        digester = SCXMLDigester.newInstance(null, null);
        // (2) Register the "custom" action(s)
        SCXMLDigester.addCustomAction(digester,
            "http://my.custom-actions.domain/CUSTOM", "hello", Hello.class);
        // (3) Parse the SCXML document containing the custom action(s)
        SCXML scxml = null;
        try {
            scxml = (SCXML) digester.parse(externalhello01.toString());
        } catch (Exception e) {
        	e.printStackTrace();
            fail(e.getMessage());
        }
        // (4) Wire up the object model for the SCXMLExecutor
        SCXMLDigester.updateSCXML(scxml);
        // (5) Get a SCXMLExecutor
        Context context = new JexlContext();
        Evaluator evaluator = new JexlEvaluator();
        exec = SCXMLTestHelper.getExecutor(scxml, context, evaluator);
        // (6) Single, final state
        assertEquals("external-hello", ((State) exec.getCurrentStatus().getStates().
                iterator().next()).getId());
        assertEquals ("external world", context.get("custom"));
    }

    // Hello World example using a custom <hello> action
    public void testCustomActionHelloWorld() {
        // (1) Get Digester with "default" rules for parsing SCXML documents
        digester = SCXMLDigester.newInstance(null, null);
        // (2) Register the "custom" action(s)
        SCXMLDigester.addCustomAction(digester,
            "http://my.custom-actions.domain/CUSTOM", "hello", Hello.class);
        // (3) Parse the SCXML document containing the custom action(s)
        SCXML scxml = null;
        try {
            scxml = (SCXML) digester.parse(custom01.toString());
        } catch (Exception e) {
        	e.printStackTrace();
            fail(e.getMessage());
        }
        // (4) Wire up the object model for the SCXMLExecutor
        SCXMLDigester.updateSCXML(scxml);
        // (5) Get a SCXMLExecutor
        Context context = new JexlContext();
        Evaluator evaluator = new JexlEvaluator();
        exec = SCXMLTestHelper.getExecutor(scxml, context, evaluator);
        // (6) Fire events, proceed as usual
        assertEquals("external-hello", ((State) exec.getCurrentStatus().getStates().
                iterator().next()).getId());
        assertEquals ("external world", context.get("custom"));
    }
}

<?xml version="1.0"?>
<scxml xmlns="http://www.w3.org/2005/07/SCXML"
       xmlns:my="http://my.custom-actions.domain/CUSTOM"
       version="1.0"
       initialstate="external-hello">

    <state id="external-hello">
        <onentry>
            <my:hello name="external world"/>
        </onentry>
    </state>

</scxml>



<?xml version="1.0"?>
<scxml xmlns="http://www.w3.org/2005/07/SCXML"
       xmlns:my="http://my.custom-actions.domain/CUSTOM"
       version="1.0"
       initialstate="custom">
	<datamodel/>
    <state id="custom" final="true"
src="test/org/apache/commons/scxml/external-hello-world.xml"/>
</scxml>

-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Mime
View raw message