You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by jk...@apache.org on 2007/03/27 05:20:36 UTC

svn commit: r522725 - in /tapestry/tapestry4/trunk: ./ tapestry-annotations/ tapestry-annotations/src/java/org/apache/tapestry/annotations/ tapestry-annotations/src/test/org/apache/tapestry/annotations/ tapestry-contrib/ tapestry-examples/TimeTracker/ ...

Author: jkuhnert
Date: Mon Mar 26 20:20:33 2007
New Revision: 522725

URL: http://svn.apache.org/viewvc?view=rev&rev=522725
Log:
-) Started partial implementation for doing form auto submissions on IFormComponent EventListener targets.

-) Updated styling of TimeTracker

-) Updated HiveMindExpressionCompiler to reflect new changes in ognl 2.7-SNAPSHOT.

Added:
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/junit/parse/MalformedXmlTag.page
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/resolver/context/WEB-INF/myapp/MalformedXmlTag.page
Modified:
    tapestry/tapestry4/trunk/tapestry-annotations/src/java/org/apache/tapestry/annotations/EventListener.java
    tapestry/tapestry4/trunk/tapestry-annotations/src/java/org/apache/tapestry/annotations/EventListenerAnnotationWorker.java
    tapestry/tapestry4/trunk/tapestry-annotations/src/test/org/apache/tapestry/annotations/TestEventListenerAnnotationWorker.java
    tapestry/tapestry4/trunk/tapestry-annotations/tapestry-annotations.iml
    tapestry/tapestry4/trunk/tapestry-contrib/tapestry-contrib.iml
    tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/   (props changed)
    tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/TimeTracker.iml
    tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/css/timetracker.css
    tapestry/tapestry4/trunk/tapestry-examples/Workbench/Workbench.iml
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/internal/event/ComponentEventProperty.java
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/internal/event/EventBoundListener.java
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/HiveMindExpressionCompiler.java
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/spec/ComponentSpecification.java
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/spec/IEventListener.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/internal/event/impl/ComponentEventInvokerTest.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/junit/TapestryTestCase.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/junit/parse/TestSpecificationParser.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/resolver/PageSpecificationResolverTest.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/ComponentEventConnectionWorkerTest.java
    tapestry/tapestry4/trunk/tapestry-framework/tapestry-framework.iml
    tapestry/tapestry4/trunk/tapestry-portlet/tapestry-portlet.iml
    tapestry/tapestry4/trunk/tapestry.iml
    tapestry/tapestry4/trunk/tapestry.ipr
    tapestry/tapestry4/trunk/tapestry.iws

Modified: tapestry/tapestry4/trunk/tapestry-annotations/src/java/org/apache/tapestry/annotations/EventListener.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-annotations/src/java/org/apache/tapestry/annotations/EventListener.java?view=diff&rev=522725&r1=522724&r2=522725
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-annotations/src/java/org/apache/tapestry/annotations/EventListener.java (original)
+++ tapestry/tapestry4/trunk/tapestry-annotations/src/java/org/apache/tapestry/annotations/EventListener.java Mon Mar 26 20:20:33 2007
@@ -13,20 +13,15 @@
 // limitations under the License.
 package org.apache.tapestry.annotations;
 
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
 import org.apache.tapestry.IComponent;
 
+import java.lang.annotation.*;
+
 /**
  * Annotation used to connect an event on a component / page with a particular listener method. This
  * is currently intended to be used to connect client side events to listener methods but may have
  * uses elsewhere.
  * 
- * @author jkuhnert
  */
 @Target( { ElementType.METHOD })
 @Retention(RetentionPolicy.RUNTIME)
@@ -58,6 +53,15 @@
      * @return The form name (or id of component) to submit when event is triggered.
      */
     String submitForm() default "";
+
+    /**
+     * When any of the components targeted for an event is an instance of {@link org.apache.tapestry.form.IFormComponent} this
+     * setting can allow the form to be automatically discovered when wiring this listener up to the event such that it is
+     * submitted for you automatically without having to specify a {@link #submitForm()} parameter. The default is true.
+     *
+     * @return True if {@link org.apache.tapestry.form.IFormComponent}s should submit their containing forms by default, false otherwise.
+     */
+    boolean autoSubmit() default true;
 
     /**
      * Whether or not to perform form validation if the {@link #submitForm()} parameter has been set.

Modified: tapestry/tapestry4/trunk/tapestry-annotations/src/java/org/apache/tapestry/annotations/EventListenerAnnotationWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-annotations/src/java/org/apache/tapestry/annotations/EventListenerAnnotationWorker.java?view=diff&rev=522725&r1=522724&r2=522725
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-annotations/src/java/org/apache/tapestry/annotations/EventListenerAnnotationWorker.java (original)
+++ tapestry/tapestry4/trunk/tapestry-annotations/src/java/org/apache/tapestry/annotations/EventListenerAnnotationWorker.java Mon Mar 26 20:20:33 2007
@@ -13,14 +13,14 @@
 // limitations under the License.
 package org.apache.tapestry.annotations;
 
-import java.lang.reflect.Method;
-
 import org.apache.hivemind.ApplicationRuntimeException;
 import org.apache.hivemind.Resource;
 import org.apache.tapestry.enhance.EnhancementOperation;
 import org.apache.tapestry.internal.event.IComponentEventInvoker;
 import org.apache.tapestry.spec.IComponentSpecification;
 
+import java.lang.reflect.Method;
+
 
 /**
  * Performs {@link EventListener} annotation enhancements on components.
@@ -54,6 +54,7 @@
         boolean validateForm = listener.validateForm();
         boolean async = listener.async();
         boolean focus = listener.focus();
+        boolean autoSubmit = listener.autoSubmit();
         
         if (targets.length < 1 && elements.length < 1)
             throw new ApplicationRuntimeException(AnnotationMessages.targetsNotFound(method));
@@ -61,7 +62,7 @@
         for (int i=0; i < targets.length; i++) {
             
             spec.addEventListener(targets[i], listener.events(), 
-                    method.getName(), formId, validateForm, async, focus);
+                    method.getName(), formId, validateForm, async, focus, autoSubmit);
             
             _invoker.addEventListener(targets[i], spec);
             

Modified: tapestry/tapestry4/trunk/tapestry-annotations/src/test/org/apache/tapestry/annotations/TestEventListenerAnnotationWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-annotations/src/test/org/apache/tapestry/annotations/TestEventListenerAnnotationWorker.java?view=diff&rev=522725&r1=522724&r2=522725
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-annotations/src/test/org/apache/tapestry/annotations/TestEventListenerAnnotationWorker.java (original)
+++ tapestry/tapestry4/trunk/tapestry-annotations/src/test/org/apache/tapestry/annotations/TestEventListenerAnnotationWorker.java Mon Mar 26 20:20:33 2007
@@ -13,9 +13,6 @@
 // limitations under the License.
 package org.apache.tapestry.annotations;
 
-import java.lang.reflect.Method;
-import java.util.List;
-
 import org.apache.hivemind.ApplicationRuntimeException;
 import org.apache.hivemind.Resource;
 import org.apache.tapestry.enhance.EnhancementOperation;
@@ -27,6 +24,9 @@
 import org.apache.tapestry.spec.IComponentSpecification;
 import org.testng.annotations.Test;
 
+import java.lang.reflect.Method;
+import java.util.List;
+
 
 /**
  * Tests functionality of {@link TestEventListenerAnnotationWorker}.
@@ -73,7 +73,7 @@
         assertNotNull(listeners);
         assertEquals(1, listeners.size());
         
-        assert ((EventBoundListener)listeners.get(0)).shouldFocusForm() == false;
+        assert !((EventBoundListener)listeners.get(0)).shouldFocusForm();
     }
     
     public void test_Form_Event_Connection()
@@ -109,6 +109,7 @@
         assertEquals("testForm", formListener.getFormId());
         assertFalse(formListener.isValidateForm());
         assert formListener.shouldFocusForm();
+        assert !formListener.isAutoSubmit();
     }
     
     public void test_Targets_Not_Found()

Modified: tapestry/tapestry4/trunk/tapestry-annotations/tapestry-annotations.iml
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-annotations/tapestry-annotations.iml?view=diff&rev=522725&r1=522724&r2=522725
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-annotations/tapestry-annotations.iml (original)
+++ tapestry/tapestry4/trunk/tapestry-annotations/tapestry-annotations.iml Mon Mar 26 20:20:33 2007
@@ -11,8 +11,7 @@
     </content>
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="module" module-name="tapestry" exported="" />
-    <orderEntry type="module" module-name="tapestry-framework" exported="" />
+    <orderEntry type="module" module-name="tapestry" />
     <orderEntry type="module-library" exported="">
       <library name="Maven Dependency: backport-util-concurrent:backport-util-concurrent:jar:2.2:compile">
         <CLASSES>

Modified: tapestry/tapestry4/trunk/tapestry-contrib/tapestry-contrib.iml
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-contrib/tapestry-contrib.iml?view=diff&rev=522725&r1=522724&r2=522725
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-contrib/tapestry-contrib.iml (original)
+++ tapestry/tapestry4/trunk/tapestry-contrib/tapestry-contrib.iml Mon Mar 26 20:20:33 2007
@@ -12,7 +12,6 @@
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
     <orderEntry type="module" module-name="tapestry" />
-    <orderEntry type="module" module-name="tapestry-framework" />
     <orderEntry type="module-library" exported="">
       <library name="Maven Dependency: backport-util-concurrent:backport-util-concurrent:jar:2.2:compile">
         <CLASSES>

Propchange: tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Mon Mar 26 20:20:33 2007
@@ -1,5 +1,3 @@
-tapestry-timetrackerdb.lck
-tapestry-timetrackerdb.script
-tapestry-timetrackerdb.properties
 target
 cobertura.ser
+tapestry-timetrackerdb*

Modified: tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/TimeTracker.iml
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/TimeTracker.iml?view=diff&rev=522725&r1=522724&r2=522725
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/TimeTracker.iml (original)
+++ tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/TimeTracker.iml Mon Mar 26 20:20:33 2007
@@ -14,9 +14,6 @@
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
     <orderEntry type="module" module-name="tapestry" />
-    <orderEntry type="module" module-name="tapestry-annotations" />
-    <orderEntry type="module" module-name="tapestry-contrib" />
-    <orderEntry type="module" module-name="tapestry-framework" />
     <orderEntry type="module-library">
       <library>
         <CLASSES>

Modified: tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/css/timetracker.css
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/css/timetracker.css?view=diff&rev=522725&r1=522724&r2=522725
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/css/timetracker.css (original)
+++ tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/css/timetracker.css Mon Mar 26 20:20:33 2007
@@ -5,6 +5,8 @@
 body {
     width: auto;
     margin-left: 3%;
+    background:#FFFFFF url(../images/body-bkg.png) repeat-x;
+    color:#000000;
 }
 
 body, td, th {

Modified: tapestry/tapestry4/trunk/tapestry-examples/Workbench/Workbench.iml
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-examples/Workbench/Workbench.iml?view=diff&rev=522725&r1=522724&r2=522725
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-examples/Workbench/Workbench.iml (original)
+++ tapestry/tapestry4/trunk/tapestry-examples/Workbench/Workbench.iml Mon Mar 26 20:20:33 2007
@@ -16,9 +16,6 @@
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
     <orderEntry type="module" module-name="tapestry" />
-    <orderEntry type="module" module-name="tapestry-annotations" />
-    <orderEntry type="module" module-name="tapestry-contrib" />
-    <orderEntry type="module" module-name="tapestry-framework" />
     <orderEntry type="module-library">
       <library>
         <CLASSES>

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/internal/event/ComponentEventProperty.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/internal/event/ComponentEventProperty.java?view=diff&rev=522725&r1=522724&r2=522725
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/internal/event/ComponentEventProperty.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/internal/event/ComponentEventProperty.java Mon Mar 26 20:20:33 2007
@@ -13,14 +13,10 @@
 // limitations under the License.
 package org.apache.tapestry.internal.event;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
 import org.apache.tapestry.event.BrowserEvent;
 
+import java.util.*;
+
 
 /**
  * Represents a configured listener/event(s) binding for a 
@@ -43,22 +39,40 @@
     {
         _componentId = componentId;
     }
-    
+
     /**
      * Adds a listener bound to the specified client side
      * events.
      * @param events
      * @param methodName
-     * @param async 
+     * @param async
      */
-    public void addListener(String[] events, String methodName, 
+    public void addListener(String[] events, String methodName,
             String formId, boolean validateForm, boolean async, boolean focus)
     {
+        addListener(events, methodName, formId, validateForm, async, focus, false);
+    }
+
+    /**
+     * Adds a listener bound to the specified client side
+     * events.
+     * 
+     * @param events The javascript events to bind to.
+     * @param methodName The method to invoke when triggered.
+     * @param formId Optional form to bind event to.
+     * @param validateForm Whether or not form client side validation should be performed.
+     * @param async  Whether or not the request should be asynchronous.
+     * @param focus Whether or not the form should recieve focus events. (if any forms are involved)
+     * @param autoSubmit Whether or not {@link org.apache.tapestry.form.IFormComponent}s should have their forms autowired for submission.
+     */
+    public void addListener(String[] events, String methodName, 
+            String formId, boolean validateForm, boolean async, boolean focus, boolean autoSubmit)
+    {
         for (int i=0; i < events.length; i++) {
             if (formId != null && formId.length() > 0)
                 addFormEventListener(events[i], methodName, formId, validateForm, async, focus);
             else
-                addEventListener(events[i], methodName);
+                addEventListener(events[i], methodName, autoSubmit);
         }
     }
     
@@ -84,10 +98,9 @@
      * @param event
      * @param methodName
      */
-    public void addEventListener(String event, String methodName)
+    public void addEventListener(String event, String methodName, boolean autoSubmit)
     {
-        EventBoundListener listener = 
-            new EventBoundListener(methodName, _componentId);
+        EventBoundListener listener = new EventBoundListener(methodName, _componentId);
         
         List listeners = getEventListeners(event);
         if (!listeners.contains(listener))

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/internal/event/EventBoundListener.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/internal/event/EventBoundListener.java?view=diff&rev=522725&r1=522724&r2=522725
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/internal/event/EventBoundListener.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/internal/event/EventBoundListener.java Mon Mar 26 20:20:33 2007
@@ -40,6 +40,8 @@
     private boolean _async;
     // Whether or not to focus the form
     private boolean _focus;
+    // If this is an autoSubmit form bound event, ie we need to discover the formId dynamically
+    private boolean _autoSubmit;
     
     /**
      * Creates a new listener binding. 
@@ -48,10 +50,19 @@
      */
     public EventBoundListener(String methodName, String componentId)
     {
-        _methodName = methodName;
-        _componentId = componentId;
+        this(methodName, componentId, false);
     }
-    
+
+    /**
+     * Creates a new listener binding.
+     * @param methodName
+     *          The method to invoke.
+     */
+    public EventBoundListener(String methodName, String componentId, boolean autoSubmit)
+    {
+        this(methodName, null, false, componentId, false, false, autoSubmit);
+    }
+
     /**
      * Creates a new listener binding. 
      * @param methodName
@@ -62,7 +73,7 @@
      *          If formId is set, whether or not to validate form when submitting.
      */
     public EventBoundListener(String methodName, String formId, 
-            boolean validateForm, String componentId, boolean async, boolean focus)
+            boolean validateForm, String componentId, boolean async, boolean focus, boolean autoSubmit)
     {
         _methodName = methodName;
         _formId = formId;
@@ -70,6 +81,22 @@
         _componentId = componentId;
         _async = async;
         _focus = focus;
+        _autoSubmit = autoSubmit;
+    }
+
+    /**
+     * Creates a new listener binding.
+     * @param methodName
+     *          The method to invoke.
+     * @param formId
+     *          If not null the form to submit before invoking listener
+     * @param validateForm
+     *          If formId is set, whether or not to validate form when submitting.
+     */
+    public EventBoundListener(String methodName, String formId,
+            boolean validateForm, String componentId, boolean async, boolean focus)
+    {
+        this(methodName, formId, validateForm, componentId, async, focus, false);
     }
     
     /**
@@ -79,7 +106,12 @@
     {
         return _formId;
     }
-    
+
+    public void setFormId(String id)
+    {
+        _formId = id;
+    }
+
     /**
      * @return the methodName
      */
@@ -151,8 +183,13 @@
     {
         return _focus;
     }
-    
-    /** 
+
+    public boolean isAutoSubmit()
+    {
+        return _autoSubmit;
+    }
+
+    /**
      * {@inheritDoc}
      */
     public int hashCode()

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/HiveMindExpressionCompiler.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/HiveMindExpressionCompiler.java?view=diff&rev=522725&r1=522724&r2=522725
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/HiveMindExpressionCompiler.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/HiveMindExpressionCompiler.java Mon Mar 26 20:20:33 2007
@@ -13,32 +13,8 @@
 //limitations under the License.
 package org.apache.tapestry.services.impl;
 
-import java.lang.reflect.Modifier;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import ognl.ASTAnd;
-import ognl.ASTChain;
-import ognl.ASTConst;
-import ognl.ASTMethod;
-import ognl.ASTOr;
-import ognl.ASTRootVarRef;
-import ognl.ASTStaticField;
-import ognl.ASTVarRef;
-import ognl.ExpressionNode;
-import ognl.Node;
-import ognl.NodeType;
-import ognl.Ognl;
-import ognl.OgnlContext;
-import ognl.enhance.ExpressionAccessor;
-import ognl.enhance.ExpressionCompiler;
-import ognl.enhance.OgnlExpressionCompiler;
-import ognl.enhance.OrderedReturn;
-import ognl.enhance.UnsupportedCompilationException;
-
+import ognl.*;
+import ognl.enhance.*;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hivemind.ApplicationRuntimeException;
@@ -48,6 +24,9 @@
 import org.apache.tapestry.IRender;
 import org.apache.tapestry.enhance.AbstractFab;
 
+import java.lang.reflect.Modifier;
+import java.util.*;
+
 /**
  * Adds to default ognl compiler class pools.
  * @author jkuhnert
@@ -106,8 +85,11 @@
         } else if (context.getCurrentAccessor().isArray()) {
 
             castClass = context.getCurrentAccessor().getCanonicalName();
-        } else
-            castClass = context.getCurrentAccessor().getName();
+        } else {
+            castClass = (context.getCurrentAccessor().getName().indexOf("$") > -1)
+            ? OgnlRuntime.getCompiler().getInterfaceClass(context.getCurrentAccessor()).getName()
+                : context.getCurrentAccessor().getName();
+        }
 
         ExpressionCompiler.addCastString(context, "((" + castClass + ")");
 

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/spec/ComponentSpecification.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/spec/ComponentSpecification.java?view=diff&rev=522725&r1=522724&r2=522725
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/spec/ComponentSpecification.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/spec/ComponentSpecification.java Mon Mar 26 20:20:33 2007
@@ -14,16 +14,6 @@
 
 package org.apache.tapestry.spec;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
 import org.apache.hivemind.ApplicationRuntimeException;
 import org.apache.hivemind.HiveMind;
 import org.apache.hivemind.Resource;
@@ -32,6 +22,8 @@
 import org.apache.tapestry.internal.event.ComponentEventProperty;
 import org.apache.tapestry.internal.event.EventBoundListener;
 
+import java.util.*;
+
 /**
  * A specification for a component, as read from an XML specification file.
  * <p>
@@ -709,7 +701,7 @@
      * {@inheritDoc}
      */
     public void addEventListener(String componentId, String[] events, 
-            String methodName, String formId, boolean validateForm, boolean async, boolean focus)
+            String methodName, String formId, boolean validateForm, boolean async, boolean focus, boolean autoSubmit)
     {
         ComponentEventProperty property = getComponentEvents(componentId);
         if (property == null) {
@@ -717,7 +709,7 @@
             _componentEvents.put(componentId, property);
         }
         
-        property.addListener(events, methodName, formId, validateForm, async, focus);
+        property.addListener(events, methodName, formId, validateForm, async, focus, autoSubmit);
     }
     
     /**

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/spec/IEventListener.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/spec/IEventListener.java?view=diff&rev=522725&r1=522724&r2=522725
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/spec/IEventListener.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/spec/IEventListener.java Mon Mar 26 20:20:33 2007
@@ -13,12 +13,12 @@
 // limitations under the License.
 package org.apache.tapestry.spec;
 
-import java.util.Map;
-
 import org.apache.tapestry.event.BrowserEvent;
 import org.apache.tapestry.internal.event.ComponentEventProperty;
 import org.apache.tapestry.internal.event.EventBoundListener;
 
+import java.util.Map;
+
 
 /**
  * Specification for something that can listen to and act on client side generated
@@ -44,7 +44,7 @@
      *          If submitting a form, controls whether or not to focus it after an update.
      */
     void addEventListener(String componentId, String[] events, 
-            String methodName, String formId, boolean validateForm, boolean async, boolean focus);
+            String methodName, String formId, boolean validateForm, boolean async, boolean focus, boolean autoSubmit);
     
     /**
      * Adds a deferred event listener binding for the specified html element.

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/internal/event/impl/ComponentEventInvokerTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/internal/event/impl/ComponentEventInvokerTest.java?view=diff&rev=522725&r1=522724&r2=522725
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/internal/event/impl/ComponentEventInvokerTest.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/internal/event/impl/ComponentEventInvokerTest.java Mon Mar 26 20:20:33 2007
@@ -13,19 +13,7 @@
 // limitations under the License.
 package org.apache.tapestry.internal.event.impl;
 
-import static org.easymock.EasyMock.checkOrder;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.isA;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.tapestry.BaseComponentTestCase;
-import org.apache.tapestry.IActionListener;
-import org.apache.tapestry.IComponent;
-import org.apache.tapestry.IForm;
-import org.apache.tapestry.IPage;
-import org.apache.tapestry.IRequestCycle;
+import org.apache.tapestry.*;
 import org.apache.tapestry.event.BrowserEvent;
 import org.apache.tapestry.event.EventTarget;
 import org.apache.tapestry.form.FormSupport;
@@ -34,8 +22,12 @@
 import org.apache.tapestry.listener.ListenerMap;
 import org.apache.tapestry.spec.ComponentSpecification;
 import org.apache.tapestry.spec.IComponentSpecification;
+import static org.easymock.EasyMock.*;
 import org.testng.annotations.Test;
 
+import java.util.HashMap;
+import java.util.Map;
+
 
 /**
  * Tests functionality of {@link ComponentEventInvoker}.
@@ -49,7 +41,7 @@
     public void test_Event_Properties()
     {
         IComponentSpecification spec = new ComponentSpecification();
-        spec.addEventListener("comp1", new String[] {"onClick"}, "testFoo", null, false, false, false);
+        spec.addEventListener("comp1", new String[] {"onClick"}, "testFoo", null, false, false, false, false);
         
         assert spec.getComponentEvents("comp1") != null;
         assert spec.getComponentEvents("comp1").getEvents().size() == 1;
@@ -65,8 +57,8 @@
     public void test_Form_Event_Properties()
     {
         IComponentSpecification spec = new ComponentSpecification();
-        spec.addEventListener("comp1", new String[] {"onClick"}, "testFoo", "form", false, true, false);
-        spec.addEventListener("comp1", new String[] {"onClick"}, "testBar", "form", false, true, false);
+        spec.addEventListener("comp1", new String[] {"onClick"}, "testFoo", "form", false, true, false, false);
+        spec.addEventListener("comp1", new String[] {"onClick"}, "testBar", "form", false, true, false, false);
         
         assert spec.getComponentEvents("comp1") != null;
         
@@ -106,7 +98,7 @@
         invoker.setInvoker(listenerInvoker);
         
         spec.addEventListener("testId", new String[] { "onSelect" }, 
-                "fooListener", null, false, false, false);
+                "fooListener", null, false, false, false, false);
         invoker.addEventListener("testId", spec);
         
         expect(comp.getId()).andReturn("testId").anyTimes();
@@ -203,7 +195,7 @@
         invoker.setInvoker(listenerInvoker);
         
         spec.addEventListener("form1", new String[] { "onSelect" }, "fooListener",
-                "form1", false, false, false);
+                "form1", false, false, false, false);
         invoker.addFormEventListener("form1", spec);
         
         expect(formSupport.getForm()).andReturn(form);
@@ -256,7 +248,7 @@
         invoker.setInvoker(listenerInvoker);
         
         spec.addEventListener("form1", new String[] { "onSelect" }, "fooListener",
-                "form1", false, false, true);
+                "form1", false, false, true, false);
         invoker.addFormEventListener("form1", spec);
         
         expect(formSupport.getForm()).andReturn(form);

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/junit/TapestryTestCase.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/junit/TapestryTestCase.java?view=diff&rev=522725&r1=522724&r2=522725
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/junit/TapestryTestCase.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/junit/TapestryTestCase.java Mon Mar 26 20:20:33 2007
@@ -14,9 +14,6 @@
 
 package org.apache.tapestry.junit;
 
-import java.util.Arrays;
-import java.util.List;
-
 import org.apache.hivemind.ClassResolver;
 import org.apache.hivemind.Location;
 import org.apache.hivemind.Registry;
@@ -37,6 +34,9 @@
 import org.apache.tapestry.spec.ILibrarySpecification;
 import org.apache.tapestry.util.IPropertyHolder;
 
+import java.util.Arrays;
+import java.util.List;
+
 /**
  * Base class for Tapestry test cases.
  * 
@@ -164,17 +164,19 @@
         // Only build the Registry the first time this is called. The same Registry
         // can then be used for any remaining calls.
 
-        if (_sharedValueConverter == null)
-        {
-
-            Registry r = RegistryBuilder.constructDefaultRegistry();
-
-            _sharedValueConverter = (ValueConverter) r.getService(
-                    "tapestry.coerce.ValueConverter",
-                    ValueConverter.class);
+        try {
+            
+            if (_sharedValueConverter == null)
+            {
+                Registry r =  RegistryBuilder.constructDefaultRegistry();
+
+                _sharedValueConverter = (ValueConverter) r.getService("tapestry.coerce.ValueConverter", ValueConverter.class);
+            }
+
+            return _sharedValueConverter;
+        } catch (Throwable t) {
+            throw new RuntimeException(t);
         }
-
-        return _sharedValueConverter;
     }
 
     protected IComponent newComponent()

Added: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/junit/parse/MalformedXmlTag.page
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/junit/parse/MalformedXmlTag.page?view=auto&rev=522725
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/junit/parse/MalformedXmlTag.page (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/junit/parse/MalformedXmlTag.page Mon Mar 26 20:20:33 2007
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+   Copyright 2004, 2005 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.
+-->
+
+<!DOCTYPE page-specification PUBLIC 
+  "-//Apache Software Foundation//Tapestry Specification 4.0//EN"
+  "http://tapestry.apache.org/dtd/Tapestry_4_0.dtd">
+
+<page-specification>
+
+	<component id="foo" type="Insert">
+		<binding name="fred" value="literal:hah" />
+        <binding name="disabled" value="literal:true" 
+    </component>
+
+</page-specification>
+

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/junit/parse/TestSpecificationParser.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/junit/parse/TestSpecificationParser.java?view=diff&rev=522725&r1=522724&r2=522725
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/junit/parse/TestSpecificationParser.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/junit/parse/TestSpecificationParser.java Mon Mar 26 20:20:33 2007
@@ -14,8 +14,6 @@
 
 package org.apache.tapestry.junit.parse;
 
-import java.util.List;
-
 import org.apache.commons.logging.Log;
 import org.apache.hivemind.Locatable;
 import org.apache.hivemind.Resource;
@@ -25,22 +23,12 @@
 import org.apache.tapestry.bean.LightweightBeanInitializer;
 import org.apache.tapestry.junit.TapestryTestCase;
 import org.apache.tapestry.parse.SpecificationParser;
-import org.apache.tapestry.spec.BindingType;
-import org.apache.tapestry.spec.IApplicationSpecification;
-import org.apache.tapestry.spec.IAssetSpecification;
-import org.apache.tapestry.spec.IBeanSpecification;
-import org.apache.tapestry.spec.IBindingSpecification;
-import org.apache.tapestry.spec.IComponentSpecification;
-import org.apache.tapestry.spec.IContainedComponent;
-import org.apache.tapestry.spec.IExtensionSpecification;
-import org.apache.tapestry.spec.ILibrarySpecification;
-import org.apache.tapestry.spec.IParameterSpecification;
-import org.apache.tapestry.spec.IPropertySpecification;
-import org.apache.tapestry.spec.InjectSpecification;
-import org.apache.tapestry.spec.SpecFactory;
+import org.apache.tapestry.spec.*;
 import org.apache.tapestry.util.xml.DocumentParseException;
 import org.testng.annotations.Test;
 
+import java.util.List;
+
 /**
  * Tests the specification parser (which reads page and component specifications). Came into being
  * somewhat late, so it just tests new features for the meantime.
@@ -61,7 +49,7 @@
      * Test 3.0 &lt;message-binding&gt; element.
      */
 
-    public void tesMessageBinding() throws Exception
+    public void tes_Message_Binding() throws Exception
     {
         IComponentSpecification spec = parseComponent("TestMessageBinding.jwc");
 
@@ -277,6 +265,20 @@
         {
             checkException(ex, "Invalid$Extension");
             checkException(ex, "extension name");
+        }
+    }
+
+    public void test_Malformed_Xml_Tag() throws Exception
+    {
+        try
+        {
+             parsePage("MalformedXmlTag.page");
+
+            unreachable();
+        }
+        catch (DocumentParseException ex)
+        {
+            checkException(ex, "Element type \"binding\" must be followed by either attribute");
         }
     }
 

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/resolver/PageSpecificationResolverTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/resolver/PageSpecificationResolverTest.java?view=diff&rev=522725&r1=522724&r2=522725
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/resolver/PageSpecificationResolverTest.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/resolver/PageSpecificationResolverTest.java Mon Mar 26 20:20:33 2007
@@ -14,11 +14,6 @@
 
 package org.apache.tapestry.resolver;
 
-import static org.easymock.EasyMock.checkOrder;
-import static org.easymock.EasyMock.expect;
-
-import java.util.List;
-
 import org.apache.commons.logging.Log;
 import org.apache.hivemind.ApplicationRuntimeException;
 import org.apache.hivemind.Location;
@@ -32,8 +27,12 @@
 import org.apache.tapestry.spec.ComponentSpecification;
 import org.apache.tapestry.spec.IComponentSpecification;
 import org.apache.tapestry.spec.ILibrarySpecification;
+import static org.easymock.EasyMock.checkOrder;
+import static org.easymock.EasyMock.expect;
 import org.testng.annotations.Test;
 
+import java.util.List;
+
 /**
  * Tests for {@link org.apache.tapestry.resolver.PageSpecificationResolverImpl}.
  * 
@@ -618,6 +617,59 @@
         resolver.resolve(cycle, "MyAppPage");
 
         assertEquals("MyAppPage", resolver.getSimplePageName());
+        assertSame(spec, resolver.getSpecification());
+        assertSame(application, resolver.getNamespace());
+
+        verify();
+    }
+
+    // TODO: Recreate TAPESTRY-1376
+    public void test_Malformed_Found_In_WebInf_App_Folder()
+    {
+        Log log = newLog();
+
+        Resource contextRoot = newResource("context/");
+        IComponentSpecification spec = newSpecification();
+
+        Resource resource = contextRoot.getRelativeResource("WEB-INF/myapp/MalformedXmlTag.page");
+
+        INamespace application = newNamespace();
+
+        INamespace framework = newNamespace();
+        ISpecificationSource source = newSource(application, framework, resource, spec);
+        IRequestCycle cycle = newCycle();
+
+        trainContainsPage(application, "MalformedXmlTag", false);
+
+        train(log, ResolverMessages.resolvingPage("MalformedXmlTag", application));
+
+        // Pretend the app spec is in the WEB-INF folder
+
+        trainGetSpecificationLocation(application, contextRoot, "WEB-INF/");
+
+        train(log, ResolverMessages.checkingResource(contextRoot.getRelativeResource("WEB-INF/MalformedXmlTag.page")));
+
+        trainIsApplicationNamespace(application, true);
+
+        train(log, ResolverMessages.checkingResource(resource));
+
+        train(log, ResolverMessages.installingPage("MalformedXmlTag", application, spec));
+
+        application.installPageSpecification("MalformedXmlTag", spec);
+
+        replay();
+
+        PageSpecificationResolverImpl resolver = new PageSpecificationResolverImpl();
+        resolver.setContextRoot(contextRoot);
+        resolver.setSpecificationSource(source);
+        resolver.setLog(log);
+        resolver.setApplicationId("myapp");
+
+        resolver.initializeService();
+
+        resolver.resolve(cycle, "MalformedXmlTag");
+
+        assertEquals("MalformedXmlTag", resolver.getSimplePageName());
         assertSame(spec, resolver.getSpecification());
         assertSame(application, resolver.getNamespace());
 

Added: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/resolver/context/WEB-INF/myapp/MalformedXmlTag.page
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/resolver/context/WEB-INF/myapp/MalformedXmlTag.page?view=auto&rev=522725
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/resolver/context/WEB-INF/myapp/MalformedXmlTag.page (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/resolver/context/WEB-INF/myapp/MalformedXmlTag.page Mon Mar 26 20:20:33 2007
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+   Copyright 2004, 2005 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.
+-->
+
+<!DOCTYPE page-specification PUBLIC 
+  "-//Apache Software Foundation//Tapestry Specification 4.0//EN"
+  "http://tapestry.apache.org/dtd/Tapestry_4_0.dtd">
+
+<page-specification>
+
+	<component id="foo" type="Insert">
+		<binding name="fred" value="literal:hah" />
+        <binding name="disabled" value="literal:true" 
+    </component>
+
+</page-specification>
+

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/ComponentEventConnectionWorkerTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/ComponentEventConnectionWorkerTest.java?view=diff&rev=522725&r1=522724&r2=522725
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/ComponentEventConnectionWorkerTest.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/ComponentEventConnectionWorkerTest.java Mon Mar 26 20:20:33 2007
@@ -13,28 +13,11 @@
 // limitations under the License.
 package org.apache.tapestry.services.impl;
 
-import static org.easymock.EasyMock.checkOrder;
-import static org.easymock.EasyMock.eq;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.isA;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
 import org.apache.hivemind.ClassResolver;
 import org.apache.hivemind.Resource;
 import org.apache.hivemind.impl.DefaultClassResolver;
 import org.apache.hivemind.util.ClasspathResource;
-import org.apache.tapestry.BaseComponentTestCase;
-import org.apache.tapestry.IComponent;
-import org.apache.tapestry.IDirectEvent;
-import org.apache.tapestry.IForm;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.IScript;
-import org.apache.tapestry.PageRenderSupport;
-import org.apache.tapestry.TapestryUtils;
+import org.apache.tapestry.*;
 import org.apache.tapestry.dojo.IWidget;
 import org.apache.tapestry.engine.IEngineService;
 import org.apache.tapestry.engine.ILink;
@@ -45,10 +28,16 @@
 import org.apache.tapestry.internal.event.impl.ComponentEventInvoker;
 import org.apache.tapestry.spec.ComponentSpecification;
 import org.apache.tapestry.spec.IComponentSpecification;
+import static org.easymock.EasyMock.*;
 import org.easymock.MockControl;
 import org.easymock.classextension.MockClassControl;
 import org.testng.annotations.Test;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
 
 /**
  * Test functionality of {@link ComponentEventConnectionWorker}.
@@ -108,7 +97,7 @@
         
         // now test render
         invoker.addEventListener("comp1", spec);
-        spec.addEventListener("comp1", new String[] {"onclick"}, "testMethod", null, false, true, false);
+        spec.addEventListener("comp1", new String[] {"onclick"}, "testMethod", null, false, true, false, false);
         spec.addElementEventListener("elementId", new String[] {"onclick"}, "testMethod", null, false, true, false);
         
         /////////////////////////////////
@@ -172,7 +161,7 @@
         // test widget render
         
         invoker.addEventListener("wid1", widgetSpec);
-        widgetSpec.addEventListener("wid1", new String[] {"onclick"}, "testMethod", null, false, true, false);
+        widgetSpec.addEventListener("wid1", new String[] {"onclick"}, "testMethod", null, false, true, false, false);
         
         checkOrder(cycle, false);
         expect(cycle.isRewinding()).andReturn(false);
@@ -257,11 +246,11 @@
         IComponentSpecification comp2Spec = new ComponentSpecification();
         
         // now test render
-        spec.addEventListener("comp1", new String[] {"onclick"}, "testMethod", "form1", true, true, false);
+        spec.addEventListener("comp1", new String[] {"onclick"}, "testMethod", "form1", true, true, false, false);
         invoker.addEventListener("comp1", spec);
         invoker.addFormEventListener("form1", spec);
         
-        spec.addEventListener("comp2", new String[] {"onclick"}, "testAnotherMethod", "form1", true, true, false);
+        spec.addEventListener("comp2", new String[] {"onclick"}, "testAnotherMethod", "form1", true, true, false, false);
         invoker.addEventListener("comp2", spec);
         invoker.addFormEventListener("form1", spec);
         
@@ -401,11 +390,11 @@
         IComponentSpecification formSpec = new ComponentSpecification();
         
         // now test render
-        spec.addEventListener("comp1", new String[] {"onclick"}, "testMethod", "form1", false, true, false);
+        spec.addEventListener("comp1", new String[] {"onclick"}, "testMethod", "form1", false, true, false, false);
         invoker.addEventListener("comp1", spec);
         invoker.addFormEventListener("form1", spec);
         
-        spec.addEventListener("comp2", new String[] {"ondoubleclick"}, "clickMethod", "form1", false, true, false);
+        spec.addEventListener("comp2", new String[] {"ondoubleclick"}, "clickMethod", "form1", false, true, false, false);
         invoker.addEventListener("comp2", spec);
         invoker.addFormEventListener("form1", spec);
         
@@ -572,7 +561,7 @@
         
         // now test render
         invoker.addEventListener("comp1", spec);
-        spec.addEventListener("comp1", new String[] {"onclick"}, "testMethod", "form1", false, false, false);
+        spec.addEventListener("comp1", new String[] {"onclick"}, "testMethod", "form1", false, false, false, false);
         
         expect(cycle.isRewinding()).andReturn(false);
         

Modified: tapestry/tapestry4/trunk/tapestry-framework/tapestry-framework.iml
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/tapestry-framework.iml?view=diff&rev=522725&r1=522724&r2=522725
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/tapestry-framework.iml (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/tapestry-framework.iml Mon Mar 26 20:20:33 2007
@@ -327,7 +327,7 @@
         </SOURCES>
       </library>
     </orderEntry>
-    <orderEntry type="module-library">
+    <orderEntry type="module-library" exported="">
       <library name="Maven Dependency: org.openqa.selenium.server:selenium-server:jar:standalone:0.9.1-SNAPSHOT:test">
         <CLASSES>
           <root url="jar://$MODULE_DIR$/../../../.m2/repository/org/openqa/selenium/server/selenium-server/0.9.1-SNAPSHOT/selenium-server-0.9.1-SNAPSHOT-standalone.jar!/" />
@@ -358,6 +358,7 @@
         </SOURCES>
       </library>
     </orderEntry>
+    <orderEntry type="library" exported="" name="descriptor" level="project" />
     <orderEntryProperties />
   </component>
 </module>

Modified: tapestry/tapestry4/trunk/tapestry-portlet/tapestry-portlet.iml
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-portlet/tapestry-portlet.iml?view=diff&rev=522725&r1=522724&r2=522725
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-portlet/tapestry-portlet.iml (original)
+++ tapestry/tapestry4/trunk/tapestry-portlet/tapestry-portlet.iml Mon Mar 26 20:20:33 2007
@@ -13,7 +13,6 @@
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
     <orderEntry type="module" module-name="tapestry" />
-    <orderEntry type="module" module-name="tapestry-framework" />
     <orderEntry type="module-library">
       <library name="Maven Dependency: backport-util-concurrent:backport-util-concurrent:jar:2.2:compile">
         <CLASSES>

Modified: tapestry/tapestry4/trunk/tapestry.iml
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry.iml?view=diff&rev=522725&r1=522724&r2=522725
==============================================================================
--- tapestry/tapestry4/trunk/tapestry.iml (original)
+++ tapestry/tapestry4/trunk/tapestry.iml Mon Mar 26 20:20:33 2007
@@ -45,7 +45,6 @@
     </content>
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="module" module-name="tapestry-annotations" exported="" />
     <orderEntry type="module-library" exported="">
       <library name="Maven Dependency: ant:ant:jar:1.6.5:test">
         <CLASSES>

Modified: tapestry/tapestry4/trunk/tapestry.ipr
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry.ipr?view=diff&rev=522725&r1=522724&r2=522725
==============================================================================
--- tapestry/tapestry4/trunk/tapestry.ipr (original)
+++ tapestry/tapestry4/trunk/tapestry.ipr Mon Mar 26 20:20:33 2007
@@ -28,6 +28,11 @@
       <entry name=".+\.(gif|png|jpeg|jpg)" />
     </resourceExtensions>
     <wildcardResourcePatterns>
+      <entry name="?*.library" />
+      <entry name="?*.page" />
+      <entry name="?*.jwc" />
+      <entry name="?*.application" />
+      <entry name="?*.script" />
       <entry name="?*.properties" />
       <entry name="?*.xml" />
       <entry name="?*.gif" />
@@ -176,7 +181,6 @@
                 <value>
                   <collection type="java.util.TreeSet">
                     <entry type="java.lang.String" value="tapestry" />
-                    <entry type="java.lang.String" value="tapestry-annotations" />
                   </collection>
                 </value>
                 <key type="java.lang.String" value="TimeTracker" />
@@ -185,7 +189,6 @@
                 <value>
                   <collection type="java.util.TreeSet">
                     <entry type="java.lang.String" value="tapestry" />
-                    <entry type="java.lang.String" value="tapestry-annotations" />
                   </collection>
                 </value>
                 <key type="java.lang.String" value="Workbench" />
@@ -193,14 +196,6 @@
               <entry>
                 <value>
                   <collection type="java.util.TreeSet">
-                    <entry type="java.lang.String" value="tapestry-annotations" />
-                  </collection>
-                </value>
-                <key type="java.lang.String" value="tapestry" />
-              </entry>
-              <entry>
-                <value>
-                  <collection type="java.util.TreeSet">
                     <entry type="java.lang.String" value="tapestry" />
                   </collection>
                 </value>
@@ -380,7 +375,15 @@
       </value>
     </option>
   </component>
-  <component name="libraryTable" />
+  <component name="libraryTable">
+    <library name="descriptor">
+      <CLASSES>
+        <root url="file://$PROJECT_DIR$/tapestry-framework/src/descriptor" />
+      </CLASSES>
+      <JAVADOC />
+      <SOURCES />
+    </library>
+  </component>
   <component name="uidesigner-configuration">
     <option name="INSTRUMENT_CLASSES" value="true" />
     <option name="COPY_FORMS_RUNTIME_TO_OUTPUT" value="true" />

Modified: tapestry/tapestry4/trunk/tapestry.iws
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry.iws?view=diff&rev=522725&r1=522724&r2=522725
==============================================================================
--- tapestry/tapestry4/trunk/tapestry.iws (original)
+++ tapestry/tapestry4/trunk/tapestry.iws Mon Mar 26 20:20:33 2007
@@ -17,9 +17,32 @@
   </component>
   <component name="ChangeListManager">
     <list default="true" name="Default" comment="">
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/spec/IEventListener.java" afterPath="$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/spec/IEventListener.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/resolver/PageSpecificationResolverTest.java" afterPath="$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/resolver/PageSpecificationResolverTest.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry-annotations/src/test/org/apache/tapestry/annotations/TestEventListenerAnnotationWorker.java" afterPath="$PROJECT_DIR$/tapestry-annotations/src/test/org/apache/tapestry/annotations/TestEventListenerAnnotationWorker.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/internal/event/ComponentEventProperty.java" afterPath="$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/internal/event/ComponentEventProperty.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry-examples/TimeTracker/src/context/css/timetracker.css" afterPath="$PROJECT_DIR$/tapestry-examples/TimeTracker/src/context/css/timetracker.css" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry-examples/Workbench/Workbench.iml" afterPath="$PROJECT_DIR$/tapestry-examples/Workbench/Workbench.iml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry-contrib/tapestry-contrib.iml" afterPath="$PROJECT_DIR$/tapestry-contrib/tapestry-contrib.iml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry-framework/tapestry-framework.iml" afterPath="$PROJECT_DIR$/tapestry-framework/tapestry-framework.iml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry-annotations/src/java/org/apache/tapestry/annotations/EventListenerAnnotationWorker.java" afterPath="$PROJECT_DIR$/tapestry-annotations/src/java/org/apache/tapestry/annotations/EventListenerAnnotationWorker.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/services/impl/HiveMindExpressionCompiler.java" afterPath="$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/services/impl/HiveMindExpressionCompiler.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry-examples/TimeTracker" afterPath="$PROJECT_DIR$/tapestry-examples/TimeTracker" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/resolver/context/WEB-INF/myapp/MalformedXmlTag.page" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry-portlet/tapestry-portlet.iml" afterPath="$PROJECT_DIR$/tapestry-portlet/tapestry-portlet.iml" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry.iws" afterPath="$PROJECT_DIR$/tapestry.iws" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/enhance/MethodSignatureTest.java" afterPath="$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/enhance/MethodSignatureTest.java" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/enhance/GenericsMethodSignatureImpl.java" afterPath="$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/enhance/GenericsMethodSignatureImpl.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry-annotations/tapestry-annotations.iml" afterPath="$PROJECT_DIR$/tapestry-annotations/tapestry-annotations.iml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry.ipr" afterPath="$PROJECT_DIR$/tapestry.ipr" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/internal/event/impl/ComponentEventInvokerTest.java" afterPath="$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/internal/event/impl/ComponentEventInvokerTest.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/junit/parse/TestSpecificationParser.java" afterPath="$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/junit/parse/TestSpecificationParser.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/spec/ComponentSpecification.java" afterPath="$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/spec/ComponentSpecification.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry-examples/TimeTracker/TimeTracker.iml" afterPath="$PROJECT_DIR$/tapestry-examples/TimeTracker/TimeTracker.iml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/services/impl/ComponentEventConnectionWorkerTest.java" afterPath="$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/services/impl/ComponentEventConnectionWorkerTest.java" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/junit/parse/MalformedXmlTag.page" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry-annotations/src/java/org/apache/tapestry/annotations/EventListener.java" afterPath="$PROJECT_DIR$/tapestry-annotations/src/java/org/apache/tapestry/annotations/EventListener.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/internal/event/EventBoundListener.java" afterPath="$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/internal/event/EventBoundListener.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/junit/TapestryTestCase.java" afterPath="$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/junit/TapestryTestCase.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry.iml" afterPath="$PROJECT_DIR$/tapestry.iml" />
     </list>
   </component>
   <component name="ChangesViewManager" flattened_view="true" />
@@ -215,7 +238,7 @@
       <showLibraryContents />
       <hideEmptyPackages />
       <abbreviatePackageNames />
-      <showStructure PackagesPane="false" ProjectPane="false" Scope="false" Favorites="false" />
+      <showStructure Favorites="false" PackagesPane="false" Scope="false" ProjectPane="false" />
       <autoscrollToSource />
       <autoscrollFromSource />
       <sortByType />
@@ -239,107 +262,15 @@
     <option name="SHOW_DIALOG" value="true" />
   </component>
   <component name="RecentsManager" />
-  <component name="RestoreUpdateTree">
-    <UpdateInfo date="3/24/07 9:51 PM" ActionInfo="_Update">
-      <UpdatedFiles>
-        <FILE-GROUP>
-          <option name="myUpdateName" value="Updated from server" />
-          <option name="myStatusName" value="Changed on server" />
-          <option name="mySupportsDeletion" value="false" />
-          <option name="myCanBeAbsent" value="false" />
-          <option name="myId" value="CHANGED_ON_SERVER" />
-          <FILE-GROUP>
-            <option name="myUpdateName" value="Updated" />
-            <option name="myStatusName" value="Changed" />
-            <option name="mySupportsDeletion" value="false" />
-            <option name="myCanBeAbsent" value="false" />
-            <option name="myId" value="UPDATED" />
-            <PATH>$PROJECT_DIR$/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/TaskEntryPage.java</PATH>
-            <PATH>$PROJECT_DIR$/tapestry-examples/TimeTracker/src/context/Home.html</PATH>
-            <PATH>$PROJECT_DIR$/tapestry-framework/src/js/tapestry/form/validation.js</PATH>
-          </FILE-GROUP>
-          <FILE-GROUP>
-            <option name="myUpdateName" value="Created" />
-            <option name="myStatusName" value="Created" />
-            <option name="mySupportsDeletion" value="false" />
-            <option name="myCanBeAbsent" value="false" />
-            <option name="myId" value="CREATED" />
-          </FILE-GROUP>
-          <FILE-GROUP>
-            <option name="myUpdateName" value="Deleted" />
-            <option name="myStatusName" value="Deleted" />
-            <option name="mySupportsDeletion" value="false" />
-            <option name="myCanBeAbsent" value="true" />
-            <option name="myId" value="REMOVED_FROM_REPOSITORY" />
-          </FILE-GROUP>
-          <FILE-GROUP>
-            <option name="myUpdateName" value="Restored" />
-            <option name="myStatusName" value="Will be restored" />
-            <option name="mySupportsDeletion" value="false" />
-            <option name="myCanBeAbsent" value="false" />
-            <option name="myId" value="RESTORED" />
-          </FILE-GROUP>
-        </FILE-GROUP>
-        <FILE-GROUP>
-          <option name="myUpdateName" value="Modified" />
-          <option name="myStatusName" value="Modified" />
-          <option name="mySupportsDeletion" value="false" />
-          <option name="myCanBeAbsent" value="false" />
-          <option name="myId" value="MODIFIED" />
-        </FILE-GROUP>
-        <FILE-GROUP>
-          <option name="myUpdateName" value="Skipped" />
-          <option name="myStatusName" value="Skipped" />
-          <option name="mySupportsDeletion" value="false" />
-          <option name="myCanBeAbsent" value="false" />
-          <option name="myId" value="SKIPPED" />
-        </FILE-GROUP>
-        <FILE-GROUP>
-          <option name="myUpdateName" value="Merged with conflicts" />
-          <option name="myStatusName" value="Will be merged with conflicts" />
-          <option name="mySupportsDeletion" value="false" />
-          <option name="myCanBeAbsent" value="false" />
-          <option name="myId" value="MERGED_WITH_CONFLICTS" />
-        </FILE-GROUP>
-        <FILE-GROUP>
-          <option name="myUpdateName" value="Merged" />
-          <option name="myStatusName" value="Will be merged" />
-          <option name="mySupportsDeletion" value="false" />
-          <option name="myCanBeAbsent" value="false" />
-          <option name="myId" value="MERGED" />
-        </FILE-GROUP>
-        <FILE-GROUP>
-          <option name="myUpdateName" value="Not in repository" />
-          <option name="myStatusName" value="Not in repository" />
-          <option name="mySupportsDeletion" value="true" />
-          <option name="myCanBeAbsent" value="false" />
-          <option name="myId" value="UNKNOWN" />
-        </FILE-GROUP>
-        <FILE-GROUP>
-          <option name="myUpdateName" value="Locally added" />
-          <option name="myStatusName" value="Locally added" />
-          <option name="mySupportsDeletion" value="false" />
-          <option name="myCanBeAbsent" value="false" />
-          <option name="myId" value="LOCALLY_ADDED" />
-        </FILE-GROUP>
-        <FILE-GROUP>
-          <option name="myUpdateName" value="Locally removed" />
-          <option name="myStatusName" value="Locally removed" />
-          <option name="mySupportsDeletion" value="false" />
-          <option name="myCanBeAbsent" value="false" />
-          <option name="myId" value="LOCALLY_REMOVED" />
-        </FILE-GROUP>
-      </UpdatedFiles>
-    </UpdateInfo>
-  </component>
-  <component name="RunManager" selected="TestNG.MethodSignatureTest">
-    <tempConfiguration default="false" name="MethodSignatureTest" type="TestNG" factoryName="TestNG" enabled="false" merge="false">
-      <module name="tapestry-framework" />
+  <component name="RestoreUpdateTree" />
+  <component name="RunManager" selected="TestNG.TestEventListenerAnnotationWorker">
+    <tempConfiguration default="false" name="TestEventListenerAnnotationWorker" type="TestNG" factoryName="TestNG" enabled="false" merge="false">
+      <module name="tapestry-annotations" />
       <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
       <option name="ALTERNATIVE_JRE_PATH" />
       <option name="SUITE_NAME" />
-      <option name="PACKAGE_NAME" value="org.apache.tapestry.enhance" />
-      <option name="MAIN_CLASS_NAME" value="org.apache.tapestry.enhance.MethodSignatureTest" />
+      <option name="PACKAGE_NAME" value="org.apache.tapestry.annotations" />
+      <option name="MAIN_CLASS_NAME" value="org.apache.tapestry.annotations.TestEventListenerAnnotationWorker" />
       <option name="METHOD_NAME" />
       <option name="GROUP_NAME" />
       <option name="TEST_OBJECT" value="CLASS" />
@@ -359,38 +290,21 @@
         <option name="Make" value="true" />
       </method>
     </tempConfiguration>
-    <configuration default="true" type="Applet" factoryName="Applet">
-      <module name="" />
-      <option name="MAIN_CLASS_NAME" />
-      <option name="HTML_FILE_NAME" />
-      <option name="HTML_USED" value="false" />
-      <option name="WIDTH" value="400" />
-      <option name="HEIGHT" value="300" />
-      <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
-      <option name="VM_PARAMETERS" />
-      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
-      <option name="ALTERNATIVE_JRE_PATH" />
-    </configuration>
-    <configuration default="true" type="TestNG" factoryName="TestNG" enabled="false" merge="false">
+    <configuration default="true" type="JUnit" factoryName="JUnit" enabled="false" merge="false">
       <module name="" />
       <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
       <option name="ALTERNATIVE_JRE_PATH" />
-      <option name="SUITE_NAME" />
       <option name="PACKAGE_NAME" />
       <option name="MAIN_CLASS_NAME" />
       <option name="METHOD_NAME" />
-      <option name="GROUP_NAME" />
-      <option name="TEST_OBJECT" value="CLASS" />
+      <option name="TEST_OBJECT" value="class" />
       <option name="VM_PARAMETERS" />
       <option name="PARAMETERS" />
-      <option name="WORKING_DIRECTORY" />
-      <option name="OUTPUT_DIRECTORY" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
       <option name="ADDITIONAL_CLASS_PATH" />
       <option name="TEST_SEARCH_SCOPE">
         <value defaultName="wholeProject" />
       </option>
-      <option name="PROPERTIES_FILE" />
-      <properties />
       <method>
         <option name="Make" value="true" />
       </method>
@@ -402,35 +316,52 @@
       <option name="HOST" value="localhost" />
       <option name="PORT" value="5005" />
     </configuration>
-    <configuration default="true" type="JUnit" factoryName="JUnit" enabled="false" merge="false">
+    <configuration default="true" type="Applet" factoryName="Applet">
+      <module name="" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="HTML_FILE_NAME" />
+      <option name="HTML_USED" value="false" />
+      <option name="WIDTH" value="400" />
+      <option name="HEIGHT" value="300" />
+      <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
+      <option name="VM_PARAMETERS" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+    </configuration>
+    <configuration default="true" type="Application" factoryName="Application" enabled="false" merge="false">
+      <option name="MAIN_CLASS_NAME" />
+      <option name="VM_PARAMETERS" />
+      <option name="PROGRAM_PARAMETERS" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="ENABLE_SWING_INSPECTOR" value="false" />
+      <module name="" />
+    </configuration>
+    <configuration default="true" type="TestNG" factoryName="TestNG" enabled="false" merge="false">
       <module name="" />
       <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
       <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="SUITE_NAME" />
       <option name="PACKAGE_NAME" />
       <option name="MAIN_CLASS_NAME" />
       <option name="METHOD_NAME" />
-      <option name="TEST_OBJECT" value="class" />
+      <option name="GROUP_NAME" />
+      <option name="TEST_OBJECT" value="CLASS" />
       <option name="VM_PARAMETERS" />
       <option name="PARAMETERS" />
-      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+      <option name="WORKING_DIRECTORY" />
+      <option name="OUTPUT_DIRECTORY" />
       <option name="ADDITIONAL_CLASS_PATH" />
       <option name="TEST_SEARCH_SCOPE">
         <value defaultName="wholeProject" />
       </option>
+      <option name="PROPERTIES_FILE" />
+      <properties />
       <method>
         <option name="Make" value="true" />
       </method>
     </configuration>
-    <configuration default="true" type="Application" factoryName="Application" enabled="false" merge="false">
-      <option name="MAIN_CLASS_NAME" />
-      <option name="VM_PARAMETERS" />
-      <option name="PROGRAM_PARAMETERS" />
-      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
-      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
-      <option name="ALTERNATIVE_JRE_PATH" />
-      <option name="ENABLE_SWING_INSPECTOR" value="false" />
-      <module name="" />
-    </configuration>
     <configuration name="&lt;template&gt;" type="WebApp" default="true" selected="false">
       <Host>localhost</Host>
       <Port>5050</Port>
@@ -502,7 +433,7 @@
     </todo-panel>
   </component>
   <component name="ToolWindowManager">
-    <frame x="84" y="159" width="2112" height="1362" extended-state="0" />
+    <frame x="91" y="145" width="2112" height="1362" extended-state="0" />
     <editor active="false" />
     <layout>
       <window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="3" />
@@ -521,7 +452,7 @@
       <window_info id="Module Dependencies" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="3" />
       <window_info id="Dependency Viewer" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="8" />
       <window_info id="File View" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="3" />
-      <window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.22005843" order="0" />
+      <window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.22882181" order="0" />
       <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" order="2" />
       <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" order="6" />
       <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25892118" order="2" />
@@ -546,7 +477,7 @@
     <option name="PERFORM_COMMIT_IN_BACKGROUND" value="false" />
     <option name="PUT_FOCUS_INTO_COMMENT" value="false" />
     <option name="FORCE_NON_EMPTY_COMMENT" value="false" />
-    <option name="LAST_COMMIT_MESSAGE" value="Js formatting looked a little funky towards the bottom." />
+    <option name="LAST_COMMIT_MESSAGE" value="-) Started partial implementation for doing form auto submissions on IFormComponent EventListener targets.&#10;&#10;-) Updated styling of TimeTracker&#10;&#10;-) Updated HiveMindExpressionCompiler to reflect new changes in ognl 2.7-SNAPSHOT." />
     <option name="SAVE_LAST_COMMIT_MESSAGE" value="true" />
     <option name="CHECKIN_DIALOG_SPLITTER_PROPORTION" value="0.8" />
     <option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="true" />
@@ -554,12 +485,11 @@
     <option name="REFORMAT_BEFORE_FILE_COMMIT" value="false" />
     <option name="FILE_HISTORY_DIALOG_COMMENTS_SPLITTER_PROPORTION" value="0.8" />
     <option name="FILE_HISTORY_DIALOG_SPLITTER_PROPORTION" value="0.5" />
-    <option name="ERROR_OCCURED" value="false" />
+    <option name="ERROR_OCCURED" value="true" />
     <option name="ACTIVE_VCS_NAME" value="svn" />
     <option name="UPDATE_GROUP_BY_PACKAGES" value="false" />
     <option name="SHOW_FILE_HISTORY_AS_TREE" value="false" />
     <option name="FILE_HISTORY_SPLITTER_PROPORTION" value="0.6" />
-    <MESSAGE value="Minor code cleanup, removal of old .cvsignore properties." />
     <MESSAGE value="Fixes for TAPESTRY-838. &#10;&#10;Exposed listener method name targeted for invocation in IActionListener / ListenerInvoker." />
     <MESSAGE value="Minor code cleanup. &#10;&#10;Fixed Palette documentation by removing funky character causing td definitions." />
     <MESSAGE value="Fixes TAPESTRY-872. &#10;&#10;The documented usage of PageAttachListener stated that page properties should be restored before the listener is called. Modified logic so that RequestCycle calls firePageAttached directly and removed the firePageAttached call within AbstractPage.attach" />
@@ -569,13 +499,14 @@
     <MESSAGE value="Minor coide cleanups. Removed unused / deprecated for 4.1 interface." />
     <MESSAGE value="Fixes TAPESTRY-1378. &#10;&#10;The dropdown Date/Time pickers had specific java.util.Date bindings that made it impossible to use any other date objects (like Joda ). Refactored these components and the associated DateTranslator to make it possible to substitute the less well liked Date object with something else.." />
     <MESSAGE value="Js formatting looked a little funky towards the bottom." />
+    <MESSAGE value="-) Started partial implementation for doing form auto submissions on IFormComponent EventListener targets.&#10;&#10;-) Updated styling of TimeTracker&#10;&#10;-) Updated HiveMindExpressionCompiler to reflect new changes in ognl 2.7-SNAPSHOT." />
   </component>
   <component name="antWorkspaceConfiguration">
     <option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
     <option name="FILTER_TARGETS" value="false" />
   </component>
   <component name="com.intellij.ide.util.scopeChooser.ScopeChooserConfigurable" proportions="0.16666667" version="1">
-    <option name="myLastEditedConfigurable" value="Shared Scopes" />
+    <option name="myLastEditedConfigurable" value="Local Scopes" />
   </component>
   <component name="com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectRootMasterDetailsConfigurable" proportions="0.22673559" version="1">
     <option name="myPlainMode" value="false" />
@@ -585,107 +516,111 @@
     <option name="myLastEditedConfigurable" value="Project Default" />
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/form/translator/TestDateTranslator.java">
+    <entry file="file://$PROJECT_DIR$/tapestry-annotations/src/test/org/apache/tapestry/annotations/Persistent.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="108" column="0" selection-start="3147" selection-end="3147" vertical-scroll-proportion="0.2810903">
+        <state line="24" column="0" selection-start="778" selection-end="778" vertical-scroll-proportion="0.19650654">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/form/translator/FormatTranslator.java">
+    <entry file="file://$PROJECT_DIR$/tapestry-annotations/src/test/org/apache/tapestry/annotations/Target.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="104" column="0" selection-start="3153" selection-end="3153" vertical-scroll-proportion="0.7572402">
+        <state line="40" column="57" selection-start="1242" selection-end="1242" vertical-scroll-proportion="0.3930131">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/dojo/form/DropdownDatePicker.script">
+    <entry file="file://$PROJECT_DIR$/tapestry-annotations/src/test/org/apache/tapestry/annotations/MetaPage.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="17" column="0" selection-start="625" selection-end="625" vertical-scroll-proportion="0.21720614">
+        <state line="30" column="0" selection-start="916" selection-end="916" vertical-scroll-proportion="0.29475984">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/dojo/form/DropdownTimePicker.java">
+    <entry file="file://$PROJECT_DIR$/tapestry-annotations/src/test/org/apache/tapestry/annotations/Entity.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="137" column="0" selection-start="4714" selection-end="4714" vertical-scroll-proportion="0.923339">
-          <folding />
+        <state line="20" column="0" selection-start="859" selection-end="894" vertical-scroll-proportion="0.13100436">
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/dojo/form/DropdownDatePicker.java">
+    <entry file="file://$PROJECT_DIR$/tapestry-annotations/src/java/org/apache/tapestry/annotations/EventListener.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="83" column="8" selection-start="3113" selection-end="3113" vertical-scroll-proportion="0.3100511">
-          <folding />
+        <state line="19" column="0" selection-start="760" selection-end="760" vertical-scroll-proportion="0.08943782">
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/AbstractComponent.java">
+    <entry file="file://$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/internal/event/impl/ComponentEventInvokerTest.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="520" column="0" selection-start="13715" selection-end="13715" vertical-scroll-proportion="0.051959112">
+        <state line="250" column="52" selection-start="9231" selection-end="9231" vertical-scroll-proportion="0.5911414">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/dojo/form/TestDropdownTimePicker.java">
+    <entry file="file://$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/services/impl/ComponentEventConnectionWorkerTest.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="93" column="0" selection-start="3221" selection-end="3221" vertical-scroll-proportion="0.5528109">
+        <state line="560" column="8" selection-start="21821" selection-end="21821" vertical-scroll-proportion="0.69335604">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/tapestry-annotations/src/java/org/apache/tapestry/annotations/EventListenerAnnotationWorker.java">
+    <entry file="file://$PROJECT_DIR$/tapestry-contrib/src/java/org/apache/tapestry/contrib/table/model/ITableColumn.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="59" column="8" selection-start="2091" selection-end="2091" vertical-scroll-proportion="0.5238501">
+        <state line="43" column="7" selection-start="1588" selection-end="1588" vertical-scroll-proportion="0.4585153">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/servlet/ConfigurationServlet.java">
+    <entry file="file://$PROJECT_DIR$/tapestry-annotations/src/test/org/apache/tapestry/annotations/AnnotatedPage.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="27" column="4" selection-start="1010" selection-end="1010" vertical-scroll-proportion="0.14054514">
+        <state line="145" column="4" selection-start="4283" selection-end="4283" vertical-scroll-proportion="0.8245614">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/tapestry-framework/src/js/tapestry/form/validation.js">
+    <entry file="file://$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/internal/event/EventBoundListener.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="185" column="9" selection-start="6260" selection-end="6260" vertical-scroll-proportion="1.0127769">
+        <state line="49" column="7" selection-start="1850" selection-end="1850" vertical-scroll-proportion="0.27768314">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/enhance/autowire-multiple.xml">
+    <entry file="file://$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/internal/event/ComponentEventProperty.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="30" column="0" selection-start="1120" selection-end="1120" vertical-scroll-proportion="0.38330495">
+        <state line="102" column="53" selection-start="3707" selection-end="3707" vertical-scroll-proportion="0.012776831">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/enhance/TestEnhancementOperation.java">
+    <entry file="file://$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/spec/ComponentSpecification.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="74" column="0" selection-start="2620" selection-end="2620" vertical-scroll-proportion="-0.88160133">
+        <state line="710" column="8" selection-start="18984" selection-end="18984" vertical-scroll-proportion="0.012776831">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/enhance/FooGenericComponent.java">
+    <entry file="file://$PROJECT_DIR$/tapestry-annotations/src/java/org/apache/tapestry/annotations/EventListenerAnnotationWorker.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="34" column="0" selection-start="915" selection-end="915" vertical-scroll-proportion="0.2810903">
+        <state line="57" column="8" selection-start="1984" selection-end="1984" vertical-scroll-proportion="0.4982964">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/enhance/MethodSignatureTest.java">
+    <entry file="file://$PROJECT_DIR$/tapestry-annotations/src/test/org/apache/tapestry/annotations/TestEventListenerAnnotationWorker.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="93" column="8" selection-start="3118" selection-end="3118" vertical-scroll-proportion="0.3100511">
+        <state line="102" column="8" selection-start="3845" selection-end="3845" vertical-scroll-proportion="0.28534922">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/enhance/GenericsMethodSignatureImpl.java">
+    <entry file="file://$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/services/impl/HiveMindExpressionCompiler.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="72" column="43" selection-start="2430" selection-end="2430" vertical-scroll-proportion="0.39608178">
+        <state line="87" column="16" selection-start="4235" selection-end="4235" vertical-scroll-proportion="0.34497446">
           <folding />
         </state>
       </provider>