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 [EMAIL PROTECTED] 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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]