You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tiles.apache.org by mc...@apache.org on 2014/05/14 08:55:28 UTC
svn commit: r1594483 - in /tiles/framework/trunk: ./
tiles-core/src/main/java/org/apache/tiles/definition/pattern/PatternUtil.java
tiles-core/src/test/java/org/apache/tiles/definition/pattern/PatternUtilTest.java
Author: mck
Date: Wed May 14 06:55:27 2014
New Revision: 1594483
URL: http://svn.apache.org/r1594483
Log:
`svn merge -c1594481 ^/tiles/framework/branches/TILES_3_0_X .`
| further fixes on
| TILES-574 – Tiles expressions do not work after wildcard
|
| PatternUtil.INVALID_FORMAT_ELEMENT, the pattern to match "{.*}" occurrances that are not meant to be replaced, was in some cases was matching two much.
| see test PatternUtilTest.testReplacePlaceholdersEL_options
| This resulted in "PatternSyntaxException: named capturing group is missing trailing }"
|
| 3 tests have been added to cover such various side-cases.
Modified:
tiles/framework/trunk/ (props changed)
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/PatternUtil.java
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/PatternUtilTest.java
Propchange: tiles/framework/trunk/
------------------------------------------------------------------------------
Merged /tiles/framework/branches/TILES_3_0_X:r1594481
Modified: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/PatternUtil.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/PatternUtil.java?rev=1594483&r1=1594482&r2=1594483&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/PatternUtil.java (original)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/PatternUtil.java Wed May 14 06:55:27 2014
@@ -52,7 +52,7 @@ public final class PatternUtil {
/** Pattern to find {.*} occurrences that do not match {[0-9]+} so to prevent MessageFormat from crashing.
*/
- private static final Pattern INVALID_FORMAT_ELEMENT = Pattern.compile("\\Q{\\E[\\D^}]+\\Q}\\E");
+ private static final Pattern INVALID_FORMAT_ELEMENT = Pattern.compile("\\{[^}0-9]+\\}");
/**
* Private constructor to avoid instantiation.
Modified: tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/PatternUtilTest.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/PatternUtilTest.java?rev=1594483&r1=1594482&r2=1594483&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/PatternUtilTest.java (original)
+++ tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/PatternUtilTest.java Wed May 14 06:55:27 2014
@@ -250,4 +250,73 @@ public class PatternUtilTest {
"some-${requestScope.someVariable}-other-value1-${requestScope.someOtherVariable}.jsp",
nudef.getAttribute("something").getExpressionObject().getExpression());
}
+
+ /**
+ * Test method for
+ * {@link PatternUtil#replacePlaceholders(Definition, String, Object[])}.
+ */
+ @Test
+ public void testReplacePlaceholdersEL_conditional() {
+ Map<String, Attribute> attributes = new HashMap<String, Attribute>();
+ Attribute attribute = new Attribute("{1}/some-other-{2}-${requestScope.someBoolean ? 'a' : 'b'}.jsp");
+ attribute.setExpressionObject(new Expression((String)attribute.getValue()));
+ attributes.put("something", attribute);
+ Definition definition = new Definition("definitionName", new Attribute("template"), attributes);
+ Definition nudef = PatternUtil.replacePlaceholders(definition, "nudef", "value0", "value1", "value2", "value3");
+ assertEquals("nudef", nudef.getName());
+
+ assertEquals(
+ "value1/some-other-value2-${requestScope.someBoolean ? 'a' : 'b'}.jsp",
+ nudef.getAttribute("something").getValue());
+
+ assertEquals(
+ "value1/some-other-value2-${requestScope.someBoolean ? 'a' : 'b'}.jsp",
+ nudef.getAttribute("something").getExpressionObject().getExpression());
+ }
+
+ /**
+ * Test method for
+ * {@link PatternUtil#replacePlaceholders(Definition, String, Object[])}.
+ */
+ @Test
+ public void testReplacePlaceholdersEL_twice() {
+ Map<String, Attribute> attributes = new HashMap<String, Attribute>();
+ Attribute attribute = new Attribute("some-${requestScope.firstVariable}-${requestScope.secondVariable}.jsp");
+ attribute.setExpressionObject(new Expression((String)attribute.getValue()));
+ attributes.put("something", attribute);
+ Definition definition = new Definition("definitionName", new Attribute("template"), attributes);
+ Definition nudef = PatternUtil.replacePlaceholders(definition, "nudef", "value0", "value1", "value2", "value3");
+ assertEquals("nudef", nudef.getName());
+
+ assertEquals(
+ "some-${requestScope.firstVariable}-${requestScope.secondVariable}.jsp",
+ nudef.getAttribute("something").getValue());
+
+ assertEquals(
+ "some-${requestScope.firstVariable}-${requestScope.secondVariable}.jsp",
+ nudef.getAttribute("something").getExpressionObject().getExpression());
+ }
+
+ /**
+ * Test method for
+ * {@link PatternUtil#replacePlaceholders(Definition, String, Object[])}.
+ */
+ @Test
+ public void testReplacePlaceholdersEL_options() {
+ Map<String, Attribute> attributes = new HashMap<String, Attribute>();
+ Attribute attribute = new Attribute("{1}/{options[my_fallback}}/some-other-{2}-${requestScope.someVariable}.jsp");
+ attribute.setExpressionObject(new Expression((String)attribute.getValue()));
+ attributes.put("something", attribute);
+ Definition definition = new Definition("definitionName", new Attribute("template"), attributes);
+ Definition nudef = PatternUtil.replacePlaceholders(definition, "nudef", "value0", "value1", "value2", "value3");
+ assertEquals("nudef", nudef.getName());
+
+ assertEquals(
+ "value1/{options[my_fallback}}/some-other-value2-${requestScope.someVariable}.jsp",
+ nudef.getAttribute("something").getValue());
+
+ assertEquals(
+ "value1/{options[my_fallback}}/some-other-value2-${requestScope.someVariable}.jsp",
+ nudef.getAttribute("something").getExpressionObject().getExpression());
+ }
}