You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by dr...@apache.org on 2010/03/06 20:40:51 UTC
svn commit: r919830 - in /tapestry/tapestry5/trunk/tapestry-core/src:
main/java/org/apache/tapestry5/internal/services/
main/resources/org/apache/tapestry5/internal/services/
test/java/org/apache/tapestry5/internal/services/
Author: drobiazko
Date: Sat Mar 6 19:40:50 2010
New Revision: 919830
URL: http://svn.apache.org/viewvc?rev=919830&view=rev
Log:
TAP5-919: Calling MarkupWriter.element() with an even number of arguments throws ArrayIndexOutOfBounds exception, not a useful exception about omitting a attribute name or value
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MarkupWriterImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ServicesMessages.java
tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/ServicesStrings.properties
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/MarkupWriterImplTest.java
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MarkupWriterImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MarkupWriterImpl.java?rev=919830&r1=919829&r2=919830&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MarkupWriterImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MarkupWriterImpl.java Sat Mar 6 19:40:50 2010
@@ -117,8 +117,13 @@
ensureCurrentElement();
int i = 0;
+
+ int length = namesAndValues.length;
+
+ if(length % 2 != 0)
+ throw new IllegalArgumentException(ServicesMessages.markupWriterAttributeNameOrValueOmitted(current.getName(), namesAndValues));
- while (i < namesAndValues.length)
+ while (i < length)
{
// name should never be null.
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ServicesMessages.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ServicesMessages.java?rev=919830&r1=919829&r2=919830&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ServicesMessages.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ServicesMessages.java Sat Mar 6 19:40:50 2010
@@ -29,6 +29,7 @@
import org.apache.tapestry5.runtime.RenderCommand;
import org.apache.tapestry5.services.TransformMethodSignature;
+import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Locale;
@@ -359,4 +360,9 @@
{
return MESSAGES.get("link-rewrite-returned-null");
}
+
+ public static String markupWriterAttributeNameOrValueOmitted(String element, Object[] namesAndValues)
+ {
+ return MESSAGES.format("markup-writer-attribute-name-or-value-omitted", element, InternalUtils.join(Arrays.asList(namesAndValues)));
+ }
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/ServicesStrings.properties
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/ServicesStrings.properties?rev=919830&r1=919829&r2=919830&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/ServicesStrings.properties (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/ServicesStrings.properties Sat Mar 6 19:40:50 2010
@@ -85,3 +85,4 @@
literal-conduit-not-updateable=Literal values are not updateable.
request-rewrite-returned-null=URLRewriterRule.process returned null while processing incoming request
link-rewrite-returned-null=URLRewriterRule.process returned null while processing outbound link.
+markup-writer-attribute-name-or-value-omitted=Writing attributes of the element '%s' failed. A attribute name or value is omitted [%s]. Please provide an even number of values, alternating names and values
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/MarkupWriterImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/MarkupWriterImplTest.java?rev=919830&r1=919829&r2=919830&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/MarkupWriterImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/MarkupWriterImplTest.java Sat Mar 6 19:40:50 2010
@@ -183,6 +183,27 @@
assertEquals(w.toString(), "<root gnip=\"gnop\" foo=\"bar\"></root>");
}
+
+ @Test
+ public void attributes_odd_number()
+ {
+ MarkupWriter w = new MarkupWriterImpl();
+
+ w.element("img");
+
+ try
+ {
+ w.attributes("src", "foo.png", "width", 20, 30);
+ unreachable();
+ }
+ catch (RuntimeException ex)
+ {
+ assertMessageContains(ex,
+ "Writing attributes of the element 'img' failed.",
+ "A attribute name or value is omitted [src, foo.png, width, 20, 30].",
+ "Please provide an even number of values, alternating names and values");
+ }
+ }
@Test
public void comment()