craigmcc 01/08/19 21:14:19 Modified: workflow/src/java/org/apache/commons/workflow/base BaseContext.java BaseContextBean.java BaseScope.java workflow/src/test/org/apache/commons/workflow/base BaseContextTestCase.java Log: The problem with JPath integration was that JPath needed to be told that BaseScope was a "dynamic class". Now, a bean named "foo" in local scope can be accessed by XPath expression "local/foo", while (assuming the web integration layer provided by WebContext) a session attribute would be accessed as "local/session/foo". The next step will be to update the core "get" and "put" step implementations to support XPath syntax as well. Revision Changes Path 1.6 +14 -4 jakarta-commons-sandbox/workflow/src/java/org/apache/commons/workflow/base/BaseContext.java Index: BaseContext.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/workflow/src/java/org/apache/commons/workflow/base/BaseContext.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- BaseContext.java 2001/08/19 23:53:10 1.5 +++ BaseContext.java 2001/08/20 04:14:19 1.6 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-commons-sandbox/workflow/src/java/org/apache/commons/workflow/base/BaseContext.java,v 1.5 2001/08/19 23:53:10 craigmcc Exp $ - * $Revision: 1.5 $ - * $Date: 2001/08/19 23:53:10 $ + * $Header: /home/cvs/jakarta-commons-sandbox/workflow/src/java/org/apache/commons/workflow/base/BaseContext.java,v 1.6 2001/08/20 04:14:19 craigmcc Exp $ + * $Revision: 1.6 $ + * $Date: 2001/08/20 04:14:19 $ * * ==================================================================== * @@ -84,7 +84,7 @@ * class. If it is used in a multiple thread environment, callers must * take suitable precations.</p> * - * @version $Revision: 1.5 $ $Date: 2001/08/19 23:53:10 $ + * @version $Revision: 1.6 $ $Date: 2001/08/20 04:14:19 $ * @author Craig R. McClanahan */ @@ -367,6 +367,16 @@ scopes[scope] = impl; } bean = null; + + } + + + /** + * Return the Scope instance for our local Scope as a simple property. + */ + public Scope getLocal() { + + return (getScope(LOCAL_SCOPE)); } 1.2 +4 -17 jakarta-commons-sandbox/workflow/src/java/org/apache/commons/workflow/base/BaseContextBean.java Index: BaseContextBean.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/workflow/src/java/org/apache/commons/workflow/base/BaseContextBean.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- BaseContextBean.java 2001/08/19 23:53:10 1.1 +++ BaseContextBean.java 2001/08/20 04:14:19 1.2 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-commons-sandbox/workflow/src/java/org/apache/commons/workflow/base/BaseContextBean.java,v 1.1 2001/08/19 23:53:10 craigmcc Exp $ - * $Revision: 1.1 $ - * $Date: 2001/08/19 23:53:10 $ + * $Header: /home/cvs/jakarta-commons-sandbox/workflow/src/java/org/apache/commons/workflow/base/BaseContextBean.java,v 1.2 2001/08/20 04:14:19 craigmcc Exp $ + * $Revision: 1.2 $ + * $Date: 2001/08/20 04:14:19 $ * * ==================================================================== * @@ -84,20 +84,7 @@ } public Map getLocal() { - return ((Map) baseContext.getScope(Context.LOCAL_SCOPE)); - } - - public Map getScopes() { - if (scopes != null) - return (scopes); - scopes = new HashMap(); - String names[] = baseContext.getScopeNames(); - for (int i = 0; i < names.length; i++) { - if (names[i] == null) - continue; - scopes.put(names[i], baseContext.getScope(i)); - } - return (scopes); + return (baseContext.getScope(Context.LOCAL_SCOPE)); } } 1.2 +19 -4 jakarta-commons-sandbox/workflow/src/java/org/apache/commons/workflow/base/BaseScope.java Index: BaseScope.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/workflow/src/java/org/apache/commons/workflow/base/BaseScope.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- BaseScope.java 2001/08/13 21:16:01 1.1 +++ BaseScope.java 2001/08/20 04:14:19 1.2 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-commons-sandbox/workflow/src/java/org/apache/commons/workflow/base/BaseScope.java,v 1.1 2001/08/13 21:16:01 craigmcc Exp $ - * $Revision: 1.1 $ - * $Date: 2001/08/13 21:16:01 $ + * $Header: /home/cvs/jakarta-commons-sandbox/workflow/src/java/org/apache/commons/workflow/base/BaseScope.java,v 1.2 2001/08/20 04:14:19 craigmcc Exp $ + * $Revision: 1.2 $ + * $Date: 2001/08/20 04:14:19 $ * * ==================================================================== * @@ -67,6 +67,8 @@ import java.util.Iterator; import java.util.Map; import java.util.Set; +import org.apache.commons.jpath.JPathIntrospector; +import org.apache.commons.jpath.tree.MapDynamicPropertyHandler; import org.apache.commons.workflow.Scope; import org.apache.commons.workflow.ScopeListener; import org.apache.commons.workflow.util.ScopeSupport; @@ -82,11 +84,24 @@ * class. If it is used in a multiple thread environment, callers must * take suitable precations.</p> * - * @version $Revision: 1.1 $ $Date: 2001/08/13 21:16:01 $ + * @version $Revision: 1.2 $ $Date: 2001/08/20 04:14:19 $ * @author Craig R. McClanahan */ public class BaseScope implements Scope { + + + // -------------------------------------------------- Static Initialization + + + /** + * Register ourselves with JPathIntrospector as an instance of a + * dynamic class (in JPath terminology). + */ + static { + JPathIntrospector.registerDynamicClass + (BaseScope.class, MapDynamicPropertyHandler.class); + } // ----------------------------------------------------- Instance Variables 1.5 +10 -80 jakarta-commons-sandbox/workflow/src/test/org/apache/commons/workflow/base/BaseContextTestCase.java Index: BaseContextTestCase.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/workflow/src/test/org/apache/commons/workflow/base/BaseContextTestCase.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- BaseContextTestCase.java 2001/08/19 23:53:10 1.4 +++ BaseContextTestCase.java 2001/08/20 04:14:19 1.5 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-commons-sandbox/workflow/src/test/org/apache/commons/workflow/base/BaseContextTestCase.java,v 1.4 2001/08/19 23:53:10 craigmcc Exp $ - * $Revision: 1.4 $ - * $Date: 2001/08/19 23:53:10 $ + * $Header: /home/cvs/jakarta-commons-sandbox/workflow/src/test/org/apache/commons/workflow/base/BaseContextTestCase.java,v 1.5 2001/08/20 04:14:19 craigmcc Exp $ + * $Revision: 1.5 $ + * $Date: 2001/08/20 04:14:19 $ * * ==================================================================== * @@ -77,7 +77,7 @@ * functions that are not dependent upon an associated Activity.</p> * * @author Craig R. McClanahan - * @version $Revision: 1.4 $ $Date: 2001/08/19 23:53:10 $ + * @version $Revision: 1.5 $ $Date: 2001/08/20 04:14:19 $ */ public class BaseContextTestCase extends TestCase { @@ -280,85 +280,18 @@ // Extract the associated JPathContext JPathContext jpc = context.getJPathContext(); assertNotNull("Context can find JPathContext", jpc); - assertNotNull("JPathContext can find scopes", - jpc.getValue("scopes")); assertNotNull("JPathContext can find local", - jpc.getValue("scopes/local")); - assertNotNull("JPathContext can find extra #1", - jpc.getValue("scopes/extra")); - try { - Object value = jpc.getValue("local"); - System.out.println("local --> " + value); - } catch (Throwable t) { - System.out.println("local --> EXCEPTION"); - t.printStackTrace(System.out); - } - try { - Object value = jpc.getValue("local/extra"); - System.out.println("local/extra --> " + value); - } catch (Throwable t) { - System.out.println("local/extra --> EXCEPTION"); - t.printStackTrace(System.out); - } - try { - Object value = jpc.getValue("local/local0"); - System.out.println("local/local0 --> " + value); - } catch (Throwable t) { - System.out.println("local/local0 --> EXCEPTION"); - t.printStackTrace(System.out); - } - try { - Object value = jpc.getValue("scopes/extra"); - System.out.println("scopes/extra --> " + value); - } catch (Throwable t) { - System.out.println("scopes/extra --> EXCEPTION"); - t.printStackTrace(System.out); - } - try { - Object value = jpc.getValue("scopes/extra/extra0"); - System.out.println("scopes/extra/extra0 --> " + value); - } catch (Throwable t) { - System.out.println("scopes/extra/extra0 --> EXCEPTION"); - t.printStackTrace(System.out); - } - try { - Object value = jpc.getValue("scopes/local"); - System.out.println("scopes/local --> " + value); - } catch (Throwable t) { - System.out.println("scopes/local --> EXCEPTION"); - t.printStackTrace(System.out); - } - try { - Object value = jpc.getValue("scopes/local/extra"); - System.out.println("scopes/local/extra --> " + value); - } catch (Throwable t) { - System.out.println("scopes/local/extra --> EXCEPTION"); - t.printStackTrace(System.out); - } - try { - Object value = jpc.getValue("scopes/local/local0"); - System.out.println("scopes/local/local0 --> " + value); - } catch (Throwable t) { - System.out.println("scopes/local/local0 --> EXCEPTION"); - t.printStackTrace(System.out); - } - - - /* FIXME - these fail accessing a Scope as a Map is not working - assertNotNull("JPathContext can find extra #2", - jpc.getValue("scopes/local/extra")); + jpc.getValue("local")); + assertNotNull("JPathContext can find extra", + jpc.getValue("local/extra")); // Validate access using JPath access methods assertEquals("JPathContext can find local0", "This is local0", - (String) jpc.getValue("scopes/local/local0")); - assertEquals("JPathContext can find extra0 #1", + (String) jpc.getValue("local/local0")); + assertEquals("JPathContext can find extra0", "This is extra0", - (String) jpc.getValue("scopes/extra/extra0")); - assertEquals("JPathContext can find extra0 #1", - "This is extra0", - (String) jpc.getValue("scopes/local/extra/extra0")); - */ + (String) jpc.getValue("local/extra/extra0")); } @@ -384,15 +317,12 @@ assertEquals("Get lastName", "Test Last Name", (String) jpc.getValue("lastName")); assertNotNull("Get addresses", jpc.getValue("addresses")); - System.out.println("addresses is " + jpc.getValue("addresses")); assertEquals("Get addresses/home/zipCode", "HmZip", (String) jpc.getValue("addresses/home/zipCode")); assertEquals("Get addresses/office/zipCode", "OfZip", (String) jpc.getValue("addresses/office/zipCode")); - System.out.println("addresses/home is " + jpc.getValue("addresses/home")); - System.out.println("addresses/office is " + jpc.getValue("addresses/office")); }