You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2005/09/09 22:43:48 UTC

svn commit: r279873 - in /jakarta/tapestry/trunk: ./ framework/src/descriptor/META-INF/ framework/src/java/org/apache/tapestry/html/ framework/src/java/org/apache/tapestry/services/impl/ framework/src/test/org/apache/tapestry/ framework/src/test/org/ap...

Author: hlship
Date: Fri Sep  9 13:43:41 2005
New Revision: 279873

URL: http://svn.apache.org/viewcvs?rev=279873&view=rev
Log:
TAPESTRY-535: Colons in an OGNL expression may force it to be intepreted as a literal string, not an expression

Modified:
    jakarta/tapestry/trunk/framework/src/descriptor/META-INF/tapestry.bindings.xml
    jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/Shell.jwc
    jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/services/impl/BindingSourceImpl.java
    jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/BaseComponentTestCase.java
    jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/services/impl/TestBindingSource.java
    jakarta/tapestry/trunk/status.xml

Modified: jakarta/tapestry/trunk/framework/src/descriptor/META-INF/tapestry.bindings.xml
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/descriptor/META-INF/tapestry.bindings.xml?rev=279873&r1=279872&r2=279873&view=diff
==============================================================================
--- jakarta/tapestry/trunk/framework/src/descriptor/META-INF/tapestry.bindings.xml (original)
+++ jakarta/tapestry/trunk/framework/src/descriptor/META-INF/tapestry.bindings.xml Fri Sep  9 13:43:41 2005
@@ -171,7 +171,6 @@
     
     <invoke-factory>
       <construct class="org.apache.tapestry.services.impl.BindingSourceImpl">
-        <set-service property="literalBindingFactory" service-id="LiteralBindingFactory"/>
         <set-configuration property="contributions" configuration-id="BindingFactories"/>
       </construct>
     </invoke-factory>

Modified: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/Shell.jwc
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/Shell.jwc?rev=279873&r1=279872&r2=279873&view=diff
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/Shell.jwc (original)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/Shell.jwc Fri Sep  9 13:43:41 2005
@@ -45,7 +45,7 @@
   </parameter>
 
   <parameter name="doctype"
-  	default-value='HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"'>
+  	default-value='literal:HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"'>
     <description>
     Used to specify the full definition of the DOCTYPE element in the response page,
     for example 'math SYSTEM "http://www.w3.org/Math/DTD/mathml1/mathml.dtd"' 

Modified: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/services/impl/BindingSourceImpl.java
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/services/impl/BindingSourceImpl.java?rev=279873&r1=279872&r2=279873&view=diff
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/services/impl/BindingSourceImpl.java (original)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/services/impl/BindingSourceImpl.java Fri Sep  9 13:43:41 2005
@@ -35,8 +35,6 @@
 {
     private List _contributions;
 
-    private BindingFactory _literalBindingFactory;
-
     /**
      * Keyed on prefix, value is {@link BindingFactory}.
      */
@@ -64,27 +62,23 @@
 
         if (colonx > 1)
         {
-            prefix = reference.substring(0, colonx);
+            String pathPrefix = reference.substring(0, colonx);
+
+            if (_factoryMap.containsKey(pathPrefix))
+            {
+                prefix = pathPrefix;
 
-            if (_factoryMap.containsKey(prefix))
                 path = reference.substring(colonx + 1);
+            }
         }
 
         BindingFactory factory = (BindingFactory) _factoryMap.get(prefix);
 
-        if (factory == null)
-            factory = _literalBindingFactory;
-
         return factory.createBinding(component, bindingDescription, path, location);
     }
 
     public void setContributions(List contributions)
     {
         _contributions = contributions;
-    }
-
-    public void setLiteralBindingFactory(BindingFactory literalBindingFactory)
-    {
-        _literalBindingFactory = literalBindingFactory;
     }
 }

Modified: jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/BaseComponentTestCase.java
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/BaseComponentTestCase.java?rev=279873&r1=279872&r2=279873&view=diff
==============================================================================
--- jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/BaseComponentTestCase.java (original)
+++ jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/BaseComponentTestCase.java Fri Sep  9 13:43:41 2005
@@ -329,4 +329,8 @@
         getControl(locatable).setReturnValue(location);
     }
 
+    protected IBinding newBinding()
+    {
+        return (IBinding) newMock(IBinding.class);
+    }
 }

Modified: jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/services/impl/TestBindingSource.java
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/services/impl/TestBindingSource.java?rev=279873&r1=279872&r2=279873&view=diff
==============================================================================
--- jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/services/impl/TestBindingSource.java (original)
+++ jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/services/impl/TestBindingSource.java Fri Sep  9 13:43:41 2005
@@ -17,7 +17,7 @@
 import java.util.Collections;
 
 import org.apache.hivemind.Location;
-import org.apache.hivemind.test.HiveMindTestCase;
+import org.apache.tapestry.BaseComponentTestCase;
 import org.apache.tapestry.IBinding;
 import org.apache.tapestry.IComponent;
 import org.apache.tapestry.binding.BindingConstants;
@@ -30,27 +30,30 @@
  * @author Howard Lewis Ship
  * @since 4.0
  */
-public class TestBindingSource extends HiveMindTestCase
+public class TestBindingSource extends BaseComponentTestCase
 {
     public void testNoPrefix()
     {
-        IComponent component = (IComponent) newMock(IComponent.class);
-        IBinding binding = (IBinding) newMock(IBinding.class);
+        IComponent component = newComponent();
+        IBinding binding = newBinding();
+        BindingFactory factory = newFactory();
+        Location l = newLocation();
 
-        MockControl factoryControl = newControl(BindingFactory.class);
-        BindingFactory factory = (BindingFactory) factoryControl.getMock();
-
-        Location l = fabricateLocation(99);
+        BindingPrefixContribution c = new BindingPrefixContribution();
+        c.setPrefix(BindingConstants.LITERAL_PREFIX);
+        c.setFactory(factory);
 
         // Training
 
         factory.createBinding(component, "foo", "a literal value without a prefix", l);
-        factoryControl.setReturnValue(binding);
+        getControl(factory).setReturnValue(binding);
 
         replayControls();
 
         BindingSourceImpl bs = new BindingSourceImpl();
-        bs.setLiteralBindingFactory(factory);
+        bs.setContributions(Collections.singletonList(c));
+
+        bs.initializeService();
 
         IBinding actual = bs.createBinding(
                 component,
@@ -66,18 +69,15 @@
 
     public void testNoPrefixWithDefault()
     {
-        IComponent component = (IComponent) newMock(IComponent.class);
-        IBinding binding = (IBinding) newMock(IBinding.class);
-
-        MockControl factoryControl = newControl(BindingFactory.class);
-        BindingFactory factory = (BindingFactory) factoryControl.getMock();
-
-        Location l = fabricateLocation(99);
+        IComponent component = newComponent();
+        IBinding binding = newBinding();
+        BindingFactory factory = newFactory();
+        Location l = newLocation();
 
         // Training
 
         factory.createBinding(component, "foo", "an-expression", l);
-        factoryControl.setReturnValue(binding);
+        getControl(factory).setReturnValue(binding);
 
         BindingPrefixContribution c = new BindingPrefixContribution();
         c.setPrefix(BindingConstants.OGNL_PREFIX);
@@ -103,18 +103,15 @@
 
     public void testKnownPrefix()
     {
-        IComponent component = (IComponent) newMock(IComponent.class);
-        IBinding binding = (IBinding) newMock(IBinding.class);
-
-        MockControl factoryControl = newControl(BindingFactory.class);
-        BindingFactory factory = (BindingFactory) factoryControl.getMock();
-
-        Location l = fabricateLocation(99);
+        IComponent component = newComponent();
+        IBinding binding = newBinding();
+        BindingFactory factory = newFactory();
+        Location l = newLocation();
 
         // Training
 
         factory.createBinding(component, "bar", "path part of locator", l);
-        factoryControl.setReturnValue(binding);
+        getControl(factory).setReturnValue(binding);
 
         BindingPrefixContribution c = new BindingPrefixContribution();
         c.setPrefix("prefix");
@@ -141,30 +138,24 @@
 
     public void testPrefixNoMatch()
     {
-        IComponent component = (IComponent) newMock(IComponent.class);
-        IBinding binding = (IBinding) newMock(IBinding.class);
-
-        MockControl factoryControl = newControl(BindingFactory.class);
-        BindingFactory literalFactory = (BindingFactory) factoryControl.getMock();
-
-        BindingFactory factory = (BindingFactory) newMock(BindingFactory.class);
-
-        Location l = fabricateLocation(99);
+        IComponent component = newComponent();
+        IBinding binding = newBinding();
+        BindingFactory factory = newFactory();
+        Location l = newLocation();
 
         // Training
 
-        literalFactory.createBinding(component, "zip", "unknown:path part of locator", l);
-        factoryControl.setReturnValue(binding);
+        factory.createBinding(component, "zip", "unknown:path part of locator", l);
+        getControl(factory).setReturnValue(binding);
 
         BindingPrefixContribution c = new BindingPrefixContribution();
-        c.setPrefix("prefix");
+        c.setPrefix(BindingConstants.LITERAL_PREFIX);
         c.setFactory(factory);
 
         replayControls();
 
         BindingSourceImpl bs = new BindingSourceImpl();
         bs.setContributions(Collections.singletonList(c));
-        bs.setLiteralBindingFactory(literalFactory);
 
         bs.initializeService();
 
@@ -178,5 +169,10 @@
         assertSame(binding, actual);
 
         verifyControls();
+    }
+
+    protected BindingFactory newFactory()
+    {
+        return (BindingFactory) newMock(BindingFactory.class);
     }
 }

Modified: jakarta/tapestry/trunk/status.xml
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/status.xml?rev=279873&r1=279872&r2=279873&view=diff
==============================================================================
--- jakarta/tapestry/trunk/status.xml (original)
+++ jakarta/tapestry/trunk/status.xml Fri Sep  9 13:43:41 2005
@@ -53,7 +53,8 @@
     <release version="4.0-beta-7" date="unreleased">
       <action type="fix" dev="HLS" fixes-bug="TAPESTRY-341">Report location of errors initializing managed beans</action>
       <action type="fix" dev="HLS" fixes-bug="TAPESTRY-270" due-to="Andy Hedges">FAQ Code example contains bug</action>
-      <action type="fix" dev="HLS" fixes-bug="TAPESTRY-583">Spurious ERROR message (probably should be WARN or INFO) when template does not refer to components in page spec</action>   
+      <action type="fix" dev="HLS" fixes-bug="TAPESTRY-583">Spurious ERROR message (probably should be WARN or INFO) when template does not refer to components in page spec</action>
+      <action type="fix" dev="HLS" fixes-bug="TAPESTRY-535">Colons in an OGNL expression may force it to be intepreted as a literal string, not an expression</action>   
     </release>
     <release version="4.0-beta-6" date="Sep 7 2005">
       <action type="update" dev="HLS" due-to="Henri Yandell">Convert Tapestry repository from CVS to SVN</action>



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