You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by "Rahul Akolkar (JIRA)" <ji...@apache.org> on 2006/07/17 20:58:23 UTC

[jira] Updated: (SCXML-8) [scxml] External Digester does not addCustomActions

     [ http://issues.apache.org/jira/browse/SCXML-8?page=all ]

Rahul Akolkar updated SCXML-8:
------------------------------

    Fix Version/s: 0.5

> [scxml] External Digester does not addCustomActions
> ---------------------------------------------------
>
>                 Key: SCXML-8
>                 URL: http://issues.apache.org/jira/browse/SCXML-8
>             Project: Commons SCXML
>          Issue Type: Bug
>    Affects Versions: Nightly Builds
>         Environment: Operating System: other
> Platform: Other
>            Reporter: Fasihullah
>             Fix For: 0.5
>
>
> 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>

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

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