You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2008/02/02 01:08:30 UTC
svn commit: r617717 [1/2] - in /tapestry/tapestry5/trunk:
tapestry-core/src/main/java/org/apache/tapestry/
tapestry-core/src/main/java/org/apache/tapestry/corelib/base/
tapestry-core/src/main/java/org/apache/tapestry/corelib/mixins/
tapestry-core/src/m...
Author: hlship
Date: Fri Feb 1 16:07:33 2008
New Revision: 617717
URL: http://svn.apache.org/viewvc?rev=617717&view=rev
Log:
TAPESTRY-2085: When a user submit a form with a TextField and the value is missing or blank, the value null is passed through the component to the model property
Added:
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/pages/RenderPhaseMethodExceptionDemo.java
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/ComponentEventCallback.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/FieldValidationSupport.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/NullFieldStrategy.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/Translator.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/base/AbstractTextField.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/mixins/Autocomplete.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/TapestryInternalUtils.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/ZeroNullFieldStrategy.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/AjaxComponentEventRequestHandler.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/AjaxComponentInstanceEventResultProcessor.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ClassResultProcessor.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentInstanceResultProcessor.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentLifecycleMethodWorker.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentResultProcessorWrapper.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/EventImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/FieldValidationSupportImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/JSONObjectEventResultProcessor.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkFactoryImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ObjectComponentEventResultProcessor.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/OnEventWorker.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/RenderCommandComponentEventResultProcessor.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ServicesMessages.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/StreamResponseResultProcessor.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/StringResultProcessor.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/ComponentPageElementImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/StructureMessages.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/util/NotificationEventCallback.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/util/UtilMessages.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/runtime/Event.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/ComponentEventResultProcessor.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/TapestryModule.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/test/TapestryTestCase.java
tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/services/ServicesStrings.properties
tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/structure/StructureStrings.properties
tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/util/UtilStrings.properties
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/IntegrationTests.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/pages/Start.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/AjaxComponentInstanceEventResultProcessorTest.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentEventImplTest.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentInstanceResultProcessorTest.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentLifecycleMethodWorkerTest.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/FieldValidationSupportImplTest.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/LinkFactoryImplTest.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/NullFieldStrategySourceImplTest.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ObjectComponentEventResultProcessorTest.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/util/NotificationEventCallbackTest.java
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/test/TestBase.java
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/ComponentEventCallback.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/ComponentEventCallback.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/ComponentEventCallback.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/ComponentEventCallback.java Fri Feb 1 16:07:33 2008
@@ -14,8 +14,6 @@
package org.apache.tapestry;
-import org.apache.tapestry.runtime.Component;
-
/**
* Callback interface for a {@linkplain org.apache.tapestry.runtime.Event render phase event) or {@link
* org.apache.tapestry.runtime.ComponentEvent}, notified when a non-null value is returned from some event handler
@@ -25,16 +23,15 @@
{
/**
* Invoked to handle a non-null event handler method result. The handler should determine whether the value is
- * acceptible, and throw an exception if not.
+ * acceptible, and throw an exception if not. Any thrown exception will be wrapped to identify the component
+ * and method from which the value was returned.
* <p/>
* Boolean values are <em>not</em> passed to the handler. Booleans are used to indicate that the event has been
* handled (true) or that a further search for handlers should continue (true). If a component event method returns
* true, then {@link org.apache.tapestry.runtime.Event#isAborted()} will return true.
*
- * @param result the result value provided by a method
- * @param component the component from which the result was obtained
- * @param methodDescription a string description of the class and method name (used when errors occur).
+ * @param result the result value return from the event handler method
* @return true if the event is aborted, false if the event may continue
*/
- boolean handleResult(T result, Component component, String methodDescription);
+ boolean handleResult(T result);
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/FieldValidationSupport.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/FieldValidationSupport.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/FieldValidationSupport.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/FieldValidationSupport.java Fri Feb 1 16:07:33 2008
@@ -26,30 +26,32 @@
* the component to see if it can perform the conversion. If the value is null, then no event is fired and the
* translator is <em>not</em> invoked, the return value is simply null.
*
- * @param value to be converted to a client-side string
+ * @param value to be converted to a client-side string, which may be null
* @param componentResources used to fire events on the component
* @param translator used if the component does not provide a non-null value
+ * @param nullFieldStrategy used to convert a null server side value to an appropriate client side value
* @return the translated value or null if the value is null
* @see org.apache.tapestry.Translator#toClient(Object)
*/
- String toClient(Object value, ComponentResources componentResources, Translator translator);
+ String toClient(Object value, ComponentResources componentResources, Translator translator,
+ NullFieldStrategy nullFieldStrategy);
/**
* A wrapper around {@link org.apache.tapestry.Translator#parseClient(String, org.apache.tapestry.ioc.Messages)}.
- * First a "parseclient" event is fired; the translator is only invoked if that returns null.
- * <p/>
- * If the client value is null or blank, then no event is fired and the translator is not invoked. Instead, the
- * return value is null.
+ * First a "parseclient" event is fired; the translator is only invoked if that returns null (typically
+ * because there is not handler for the event).
*
- * @param clientValue the value provided by the client (not null or blank)
+ * @param clientValue the value provided by the client (not null)
* @param componentResources used to trigger events
* @param translator translator that will do the work if the component event returns null
+ * @param nullFieldStrategy used to convert null/blank values from client into non-null server side values
* @return the input parsed to an object
* @throws org.apache.tapestry.ValidationException
* if the value can't be parsed
* @see org.apache.tapestry.Translator#parseClient(String, org.apache.tapestry.ioc.Messages)
*/
- Object parseClient(String clientValue, ComponentResources componentResources, Translator translator)
+ Object parseClient(String clientValue, ComponentResources componentResources, Translator translator,
+ NullFieldStrategy nullFieldStrategy)
throws ValidationException;
/**
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/NullFieldStrategy.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/NullFieldStrategy.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/NullFieldStrategy.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/NullFieldStrategy.java Fri Feb 1 16:07:33 2008
@@ -1,4 +1,4 @@
-// Copyright 2008 The Apache Software Foundation
+// Copyright 2008 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.
@@ -14,7 +14,6 @@
package org.apache.tapestry;
-
/**
* Defines a strategy, used by {@link Field} components such as {@link org.apache.tapestry.corelib.components.TextField},
* to handle the case where either the server-side value to be sent (as a string) to the client, or the client-side
@@ -26,15 +25,16 @@
{
/**
* Provides a replacement value for null, when converting the server-side object to a client-side string. The
- * replacement value will be passed to {@link FieldValidationSupport#toClient(Object, ComponentResources,
- * Translator)}.
+ * replacement value, if non-null, will be passed to {@link org.apache.tapestry.Translator#toClient(Object)}.
*/
Object replaceToClient();
/**
* Provides a replacement value for a null or blank string passed from the client to the server as part of a form
- * submission. This replacement value will be passed to {@link FieldValidationSupport#parseClient(String,
- * ComponentResources, Translator)} as if it were the value supplied by the user.
+ * submission. This replacement value will be passed to
+ * {@link org.apache.tapestry.Translator#parseClient(String, org.apache.tapestry.ioc.Messages)} as if it were the value supplied by the user.
+ *
+ * @return replacement value (this must not be null)
*/
String replaceFromClient();
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/Translator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/Translator.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/Translator.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/Translator.java Fri Feb 1 16:07:33 2008
@@ -39,7 +39,7 @@
/**
* Converts a submitted request value into an appropriate server side value.
*
- * @param clientValue to convert to a server value; this will not be the empty string or null
+ * @param clientValue to convert to a server value; this will not be null, but may be blank
* @param messages validator messages assembled by {@link ValidationMessagesSource}
* @return equivalent server-side value (possibly null)
* @throws ValidationException if the value can not be parsed
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/base/AbstractTextField.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/base/AbstractTextField.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/base/AbstractTextField.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/base/AbstractTextField.java Fri Feb 1 16:07:33 2008
@@ -18,7 +18,6 @@
import org.apache.tapestry.annotations.*;
import org.apache.tapestry.corelib.mixins.RenderDisabled;
import org.apache.tapestry.ioc.annotations.Inject;
-import org.apache.tapestry.ioc.internal.util.InternalUtils;
import org.apache.tapestry.services.FieldValidatorDefaultSource;
import org.apache.tapestry.services.Request;
import org.apache.tapestry.services.TranslatorDefaultSource;
@@ -65,7 +64,7 @@
*/
@Parameter(defaultPrefix = "validate")
@SuppressWarnings("unchecked")
- private FieldValidator<Object> _validate = NOOP_VALIDATOR;
+ private FieldValidator<Object> _validate;
/**
* Defines how nulls on the server side, or sent from the client side, are treated. The selected strategy may
@@ -122,7 +121,7 @@
{
Class type = _resources.getBoundType("value");
- if (type == null) return null;
+ if (type == null) return NOOP_VALIDATOR;
return _fieldValidatorDefaultSource.createDefaultValidator(this, _resources.getId(),
_resources.getContainerMessages(), _locale, type,
@@ -150,18 +149,10 @@
if (value == null)
{
// Otherwise, get the value from the parameter ...
-
- Object untranslated = _value;
-
- // Substitute an alternative for null values.
- // TODO: May want to coerce untranslated to the bound parameter type, to ensure it is compatible with the translator.
-
- if (untranslated == null) untranslated = _nulls.replaceToClient();
-
// Then let the translator and or various triggered events get it into
// a format ready to be sent to the client.
- value = _fieldValidationSupport.toClient(untranslated, _resources, _translate);
+ value = _fieldValidationSupport.toClient(_value, _resources, _translate, _nulls);
}
writeFieldTag(writer, value);
@@ -196,9 +187,7 @@
try
{
- if (InternalUtils.isBlank(rawValue)) rawValue = _nulls.replaceFromClient();
-
- Object translated = _fieldValidationSupport.parseClient(rawValue, _resources, _translate);
+ Object translated = _fieldValidationSupport.parseClient(rawValue, _resources, _translate, _nulls);
_fieldValidationSupport.validate(translated, _resources, _validate);
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/mixins/Autocomplete.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/mixins/Autocomplete.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/mixins/Autocomplete.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/mixins/Autocomplete.java Fri Feb 1 16:07:33 2008
@@ -24,7 +24,6 @@
import org.apache.tapestry.ioc.annotations.Inject;
import org.apache.tapestry.ioc.services.TypeCoercer;
import org.apache.tapestry.json.JSONObject;
-import org.apache.tapestry.runtime.Component;
import org.apache.tapestry.services.MarkupWriterFactory;
import org.apache.tapestry.services.Request;
import org.apache.tapestry.util.TextStreamResponse;
@@ -186,7 +185,7 @@
ComponentEventCallback callback = new ComponentEventCallback()
{
- public boolean handleResult(Object result, Component component, String methodDescription)
+ public boolean handleResult(Object result)
{
List matches = _coercer.coerce(result, List.class);
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/TapestryInternalUtils.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/TapestryInternalUtils.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/TapestryInternalUtils.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/TapestryInternalUtils.java Fri Feb 1 16:07:33 2008
@@ -40,12 +40,15 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.regex.Pattern;
/**
* Shared utility methods used by various implementation classes.
*/
public class TapestryInternalUtils
{
+ private static final Pattern NON_WORD_PATTERN = Pattern.compile("[^\\w]");
+
private static final URLCodec CODEC = new URLCodec()
{
@@ -301,17 +304,18 @@
return new KeyValue(key.trim(), value.trim());
}
+
/**
* Used to convert a property expression into a key that can be used to locate various resources (Blocks, messages,
* etc.). Strips out any punctuation characters, leaving just words characters (letters, number and the
* underscore).
*
- * @param expression
- * @return
+ * @param expression a property expression
+ * @return the expression with punctuation removed
*/
public static String extractIdFromPropertyExpression(String expression)
{
- return expression.replaceAll("[^\\w]", "");
+ return replace(expression, NON_WORD_PATTERN, "");
}
/**
@@ -503,8 +507,17 @@
return getLabelForEnum(messages, prefix, value);
}
+ /**
+ * Encodes a string for inclusion in a URL. Slashes and percents are converted
+ * to "%25" and "%2F" respectively, then the entire string is URL encoded.
+ *
+ * @param input string to include, may not be blank
+ * @return encoded input
+ */
public static String encodeContext(String input)
{
+ Defense.notBlank(input, "input");
+
try
{
return CODEC.encode(escapePercentAndSlash(input));
@@ -515,14 +528,36 @@
}
}
- public static String escapePercentAndSlash(String input)
+ private static final String PERCENT = "%";
+ private static final Pattern PERCENT_PATTERN = Pattern.compile(PERCENT);
+ private static final String ENCODED_PERCENT = "%25";
+ private static final Pattern ENCODED_PERCENT_PATTERN = Pattern.compile(ENCODED_PERCENT);
+
+ private static final String SLASH = "/";
+ private static final Pattern SLASH_PATTERN = Pattern.compile(SLASH);
+ private static final String ENCODED_SLASH = "%2F";
+ private static final Pattern ENCODED_SLASH_PATTERN = Pattern.compile(ENCODED_SLASH, Pattern.CASE_INSENSITIVE);
+
+ static String escapePercentAndSlash(String input)
{
- return input.replaceAll("%", "%25").replaceAll("/", "%2F");
+ return replace(replace(input, PERCENT_PATTERN, ENCODED_PERCENT), SLASH_PATTERN, ENCODED_SLASH);
}
+ /**
+ * Used to decode certain escaped characters that are replaced
+ * when using {@link #encodeContext(String)}}.
+ *
+ * @param input a previously encoded string
+ * @return the string with slash and percent characters restored
+ */
public static String unescapePercentAndSlash(String input)
{
- return input.replaceAll("%2[Ff]", "/").replaceAll("%25", "%");
+ return replace(replace(input, ENCODED_SLASH_PATTERN, SLASH), ENCODED_PERCENT_PATTERN, PERCENT);
+ }
+
+ private static String replace(String input, Pattern pattern, String replacement)
+ {
+ return pattern.matcher(input).replaceAll(replacement);
}
/**
@@ -530,9 +565,9 @@
* both null). Otherwise standard equals() comparison is used.
*
* @param <T>
- * @param left
- * @param right
- * @return
+ * @param left value to compare, possibly null
+ * @param right value to compare, possibly null
+ * @return true if same value, both null, or equal
*/
public static <T> boolean isEqual(T left, T right)
{
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/ZeroNullFieldStrategy.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/ZeroNullFieldStrategy.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/ZeroNullFieldStrategy.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/ZeroNullFieldStrategy.java Fri Feb 1 16:07:33 2008
@@ -1,4 +1,4 @@
-// Copyright 2008 The Apache Software Foundation
+// Copyright 2008 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.
@@ -26,7 +26,7 @@
*/
public Object replaceToClient()
{
- return 0l;
+ return 0L;
}
/**
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/AjaxComponentEventRequestHandler.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/AjaxComponentEventRequestHandler.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/AjaxComponentEventRequestHandler.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/AjaxComponentEventRequestHandler.java Fri Feb 1 16:07:33 2008
@@ -81,7 +81,7 @@
JSONObject reply = new JSONObject();
- _resultProcessor.processResultValue(reply, null, null);
+ _resultProcessor.processResultValue(reply);
}
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/AjaxComponentInstanceEventResultProcessor.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/AjaxComponentInstanceEventResultProcessor.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/AjaxComponentInstanceEventResultProcessor.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/AjaxComponentInstanceEventResultProcessor.java Fri Feb 1 16:07:33 2008
@@ -36,7 +36,7 @@
_cache = cache;
}
- public void processResultValue(Component value, Component component, String methodDescripion) throws IOException
+ public void processResultValue(Component value) throws IOException
{
ComponentResources resources = value.getComponentResources();
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ClassResultProcessor.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ClassResultProcessor.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ClassResultProcessor.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ClassResultProcessor.java Fri Feb 1 16:07:33 2008
@@ -15,7 +15,6 @@
package org.apache.tapestry.internal.services;
import org.apache.tapestry.internal.structure.Page;
-import org.apache.tapestry.runtime.Component;
import org.apache.tapestry.services.ComponentClassResolver;
import org.apache.tapestry.services.ComponentEventResultProcessor;
@@ -41,7 +40,7 @@
_generator = generator;
}
- public void processResultValue(Class value, Component component, String methodDescripion) throws IOException
+ public void processResultValue(Class value) throws IOException
{
String className = value.getName();
String pageName = _resolver.resolvePageClassNameToPageName(className);
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentInstanceResultProcessor.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentInstanceResultProcessor.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentInstanceResultProcessor.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentInstanceResultProcessor.java Fri Feb 1 16:07:33 2008
@@ -38,12 +38,12 @@
_generator = generator;
}
- public void processResultValue(Component value, Component component, String methodDescription) throws IOException
+ public void processResultValue(Component value) throws IOException
{
ComponentResources resources = value.getComponentResources();
if (resources.getContainer() != null)
- _logger.warn(ServicesMessages.componentInstanceIsNotAPage(methodDescription, component, value));
+ _logger.warn(ServicesMessages.componentInstanceIsNotAPage(value));
// We have all these layers and layers between us and the page instance, but its easy to
// extract the page class name and quickly re-resolve that to the page instance.
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentLifecycleMethodWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentLifecycleMethodWorker.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentLifecycleMethodWorker.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentLifecycleMethodWorker.java Fri Feb 1 16:07:33 2008
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007 The Apache Software Foundation
+// Copyright 2006, 2007, 2008 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.
@@ -118,6 +118,9 @@
Iterator<TransformMethodSignature> i = _reverse ? InternalUtils.reverseIterator(methods) : methods
.iterator();
+ builder.addln("try");
+ builder.begin();
+
while (i.hasNext())
addMethodCallToBody(builder, i.next(), transformation);
@@ -125,6 +128,15 @@
if (_reverse && !model.isRootClass()) builder.addln("super.%s($$);", _lifecycleMethodName);
+
+ builder.end(); // try
+
+ // Let runtime exceptions work up (they'll be caught at a higher level.
+ // Wrap checked exceptions for later reporting.
+
+ builder.addln("catch (RuntimeException ex) { throw ex; }");
+ builder.addln("catch (Exception ex) { throw new RuntimeException(ex); }");
+
builder.end();
// Let's see if this works; for base classes, we are adding an empty method the adding a
@@ -139,12 +151,13 @@
{
boolean isVoid = sig.getReturnType().equals("void");
+ builder.addln("$2.setMethodDescription(\"%s\");", transformation.getMethodIdentifier(sig));
+
if (!isVoid)
{
// If we're not going to invoke storeResult(), then there's no reason to invoke
- // setSource().
+ // setMethodDescription().
- builder.addln("$2.setSource(this, \"%s\");", transformation.getMethodIdentifier(sig));
builder.add("if ($2.storeResult(($w) ");
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentResultProcessorWrapper.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentResultProcessorWrapper.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentResultProcessorWrapper.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentResultProcessorWrapper.java Fri Feb 1 16:07:33 2008
@@ -15,7 +15,6 @@
package org.apache.tapestry.internal.services;
import org.apache.tapestry.ComponentEventCallback;
-import org.apache.tapestry.runtime.Component;
import org.apache.tapestry.services.ComponentEventResultProcessor;
import java.io.IOException;
@@ -36,11 +35,11 @@
_processor = processor;
}
- public boolean handleResult(Object result, Component component, String methodDescription)
+ public boolean handleResult(Object result)
{
try
{
- _processor.processResultValue(result, component, methodDescription);
+ _processor.processResultValue(result);
}
catch (IOException ex)
{
@@ -53,12 +52,11 @@
}
/**
- * Returns true if {@link #handleResult(Object, org.apache.tapestry.runtime.Component, String)} was invoked, false
+ * Returns true if {@link org.apache.tapestry.ComponentEventCallback#handleResult(Object)} was invoked, false
* otherwise.
*
* @return true if the event was aborted
- * @throws IOException if {@link ComponentEventResultProcessor#processResultValue(Object,
- * org.apache.tapestry.runtime.Component, String)} threw an IOException
+ * @throws IOException if {@link ComponentEventResultProcessor#processResultValue(Object)} threw an IOException
*/
public boolean isAborted() throws IOException
{
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/EventImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/EventImpl.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/EventImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/EventImpl.java Fri Feb 1 16:07:33 2008
@@ -16,15 +16,12 @@
import org.apache.tapestry.ComponentEventCallback;
import static org.apache.tapestry.ioc.internal.util.Defense.notNull;
-import org.apache.tapestry.runtime.Component;
import org.apache.tapestry.runtime.Event;
public class EventImpl implements Event
{
private boolean _aborted;
- private Component _component;
-
private String _methodDescription;
private final ComponentEventCallback _handler;
@@ -39,9 +36,8 @@
return _aborted;
}
- public void setSource(Component component, String methodDescription)
+ public void setMethodDescription(String methodDescription)
{
- _component = component;
_methodDescription = methodDescription;
}
@@ -57,7 +53,7 @@
.componentEventIsAborted(_methodDescription));
- if (result != null) _aborted |= _handler.handleResult(result, _component, _methodDescription);
+ if (result != null) _aborted |= _handler.handleResult(result);
return _aborted;
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/FieldValidationSupportImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/FieldValidationSupportImpl.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/FieldValidationSupportImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/FieldValidationSupportImpl.java Fri Feb 1 16:07:33 2008
@@ -18,9 +18,9 @@
import org.apache.tapestry.corelib.internal.InternalMessages;
import org.apache.tapestry.internal.util.Holder;
import org.apache.tapestry.ioc.Messages;
+import org.apache.tapestry.ioc.internal.util.Defense;
import org.apache.tapestry.ioc.internal.util.InternalUtils;
import org.apache.tapestry.ioc.util.ExceptionUtils;
-import org.apache.tapestry.runtime.Component;
import org.apache.tapestry.services.ValidationMessagesSource;
public class FieldValidationSupportImpl implements FieldValidationSupport
@@ -37,15 +37,18 @@
}
@SuppressWarnings({"unchecked"})
- public String toClient(Object value, ComponentResources componentResources, Translator translator)
+ public String toClient(Object value, ComponentResources componentResources, Translator translator,
+ NullFieldStrategy nullFieldStrategy)
{
- if (value == null) return null;
+ Defense.notNull(componentResources, "componentResources");
+ Defense.notNull(translator, "translator");
+ Defense.notNull(nullFieldStrategy, "nullFieldStrategy");
final Holder<String> resultHolder = Holder.create();
ComponentEventCallback callback = new ComponentEventCallback()
{
- public boolean handleResult(Object result, Component component, String methodDescription)
+ public boolean handleResult(Object result)
{
// What's nice is that the ComponentEventException will automatically identify
// the method description.
@@ -63,21 +66,45 @@
if (resultHolder.hasValue()) return resultHolder.get();
+ Object effectiveValue = value;
- return translator.toClient(value);
+ if (effectiveValue == null)
+ effectiveValue = nullFieldStrategy.replaceToClient();
+
+ // We don't translate null.
+
+ if (effectiveValue == null)
+ return null;
+
+ return translator.toClient(effectiveValue);
}
- public Object parseClient(String clientValue, ComponentResources componentResources, Translator translator)
+ public Object parseClient(String clientValue, ComponentResources componentResources, Translator translator,
+ NullFieldStrategy nullFieldStrategy)
throws ValidationException
{
- if (InternalUtils.isBlank(clientValue)) return null;
+ Defense.notNull(componentResources, "componentResources");
+ Defense.notNull(translator, "translator");
+ Defense.notNull(nullFieldStrategy, "nullFieldStrategy");
+
+ String effectiveValue = clientValue;
+
+ if (InternalUtils.isBlank(effectiveValue))
+ {
+
+ effectiveValue = nullFieldStrategy.replaceFromClient();
+
+ if (effectiveValue == null)
+ throw new NullPointerException(
+ String.format("Client value provided by %s is null.", nullFieldStrategy));
+ }
final Holder<Object> resultHolder = Holder.create();
ComponentEventCallback callback = new ComponentEventCallback()
{
- public boolean handleResult(Object result, Component component, String methodDescription)
+ public boolean handleResult(Object result)
{
resultHolder.put(result);
return true;
@@ -86,15 +113,11 @@
try
{
- componentResources.triggerEvent(PARSE_CLIENT_EVENT, new Object[]{clientValue}, callback);
+ componentResources.triggerEvent(PARSE_CLIENT_EVENT, new Object[]{effectiveValue}, callback);
}
catch (RuntimeException ex)
{
- ValidationException ve = ExceptionUtils.findCause(ex, ValidationException.class);
-
- if (ve != null) throw ve;
-
- throw ex;
+ rethrowValidationException(ex);
}
if (resultHolder.hasValue()) return resultHolder.get();
@@ -103,12 +126,31 @@
Messages messages = _messagesSource.getValidationMessages(componentResources.getLocale());
- return translator.parseClient(clientValue, messages);
+ return translator.parseClient(effectiveValue, messages);
+ }
+
+ /**
+ * Checks for a {@link org.apache.tapestry.ValidationException} inside the outer exception and
+ * throws that, otherwise rethrows the runtime exception.
+ *
+ * @param outerException initially caught exception
+ * @throws ValidationException if found
+ */
+ private void rethrowValidationException(RuntimeException outerException) throws ValidationException
+ {
+ ValidationException ve = ExceptionUtils.findCause(outerException, ValidationException.class);
+
+ if (ve != null) throw ve;
+
+ throw outerException;
}
public void validate(Object value, ComponentResources componentResources, FieldValidator validator)
throws ValidationException
{
+ Defense.notNull(componentResources, "componentResources");
+ Defense.notNull(validator, "validator");
+
validator.validate(value);
try
@@ -117,11 +159,7 @@
}
catch (RuntimeException ex)
{
- ValidationException ve = ExceptionUtils.findCause(ex, ValidationException.class);
-
- if (ve != null) throw ve;
-
- throw ex;
+ rethrowValidationException(ex);
}
}
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/JSONObjectEventResultProcessor.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/JSONObjectEventResultProcessor.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/JSONObjectEventResultProcessor.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/JSONObjectEventResultProcessor.java Fri Feb 1 16:07:33 2008
@@ -15,7 +15,6 @@
package org.apache.tapestry.internal.services;
import org.apache.tapestry.json.JSONObject;
-import org.apache.tapestry.runtime.Component;
import org.apache.tapestry.services.ComponentEventResultProcessor;
import org.apache.tapestry.services.Response;
@@ -37,7 +36,7 @@
_response = response;
}
- public void processResultValue(JSONObject value, Component component, String methodDescripion) throws IOException
+ public void processResultValue(JSONObject value) throws IOException
{
PrintWriter pw = _response.getPrintWriter("text/javascript");
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkFactoryImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkFactoryImpl.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkFactoryImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkFactoryImpl.java Fri Feb 1 16:07:33 2008
@@ -26,7 +26,6 @@
import static org.apache.tapestry.ioc.internal.util.Defense.notNull;
import org.apache.tapestry.ioc.services.TypeCoercer;
import org.apache.tapestry.ioc.util.StrategyRegistry;
-import org.apache.tapestry.runtime.Component;
import org.apache.tapestry.services.Request;
import org.apache.tapestry.services.Response;
@@ -210,7 +209,7 @@
ComponentEventCallback callback = new ComponentEventCallback()
{
@SuppressWarnings("unchecked")
- public boolean handleResult(Object result, Component component, String methodDescription)
+ public boolean handleResult(Object result)
{
PassivateContextHandler contextHandler = _registry.getByInstance(result);
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ObjectComponentEventResultProcessor.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ObjectComponentEventResultProcessor.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ObjectComponentEventResultProcessor.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ObjectComponentEventResultProcessor.java Fri Feb 1 16:07:33 2008
@@ -14,8 +14,6 @@
package org.apache.tapestry.internal.services;
-import org.apache.tapestry.ioc.internal.util.TapestryException;
-import org.apache.tapestry.runtime.Component;
import org.apache.tapestry.services.ComponentEventResultProcessor;
import java.io.IOException;
@@ -33,12 +31,12 @@
_configuredClasses = configuredClasses;
}
- public void processResultValue(Object value, Component component, String methodDescripion) throws IOException
+ public void processResultValue(Object value) throws IOException
{
- String message = ServicesMessages.invalidComponentEventResult(component, value, methodDescripion,
+ String message = ServicesMessages.invalidComponentEventResult(value,
_configuredClasses);
- throw new TapestryException(message, component, null);
+ throw new RuntimeException(message);
}
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/OnEventWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/OnEventWorker.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/OnEventWorker.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/OnEventWorker.java Fri Feb 1 16:07:33 2008
@@ -97,7 +97,7 @@
builder.addln("$_ = true;");
- builder.addln("$1.setSource(this, \"%s\");", transformation.getMethodIdentifier(method));
+ builder.addln("$1.setMethodDescription(\"%s\");", transformation.getMethodIdentifier(method));
boolean isNonVoid = !method.getReturnType().equals("void");
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/RenderCommandComponentEventResultProcessor.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/RenderCommandComponentEventResultProcessor.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/RenderCommandComponentEventResultProcessor.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/RenderCommandComponentEventResultProcessor.java Fri Feb 1 16:07:33 2008
@@ -14,7 +14,6 @@
package org.apache.tapestry.internal.services;
-import org.apache.tapestry.runtime.Component;
import org.apache.tapestry.runtime.RenderCommand;
import org.apache.tapestry.services.ComponentEventResultProcessor;
@@ -34,7 +33,7 @@
_renderer = renderer;
}
- public void processResultValue(RenderCommand value, Component component, String methodDescripion) throws IOException
+ public void processResultValue(RenderCommand value) throws IOException
{
_renderer.renderPartialPageMarkup(value);
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ServicesMessages.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ServicesMessages.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ServicesMessages.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ServicesMessages.java Fri Feb 1 16:07:33 2008
@@ -202,10 +202,9 @@
return MESSAGES.format("page-is-dirty", page);
}
- static String componentInstanceIsNotAPage(String methodDescription, Component component, Component result)
+ static String componentInstanceIsNotAPage(Component result)
{
- return MESSAGES.format("component-instance-is-not-a-page", methodDescription, component
- .getComponentResources().getCompleteId(), result.getComponentResources()
+ return MESSAGES.format("component-instance-is-not-a-page", result.getComponentResources()
.getCompleteId());
}
@@ -270,7 +269,7 @@
}
- static String invalidComponentEventResult(Component component, Object result, String methodDescription,
+ static String invalidComponentEventResult(Object result,
Collection<Class> configuredResultTypes)
{
List<String> classNames = CollectionFactory.newList();
@@ -278,8 +277,7 @@
for (Class c : configuredResultTypes)
classNames.add(c.getName());
- return MESSAGES.format("invalid-component-event-result", component.getComponentResources()
- .getCompleteId(), result, methodDescription, ClassFabUtils.toJavaClassName(result
+ return MESSAGES.format("invalid-component-event-result", result, ClassFabUtils.toJavaClassName(result
.getClass()), InternalUtils.joinSorted(classNames));
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/StreamResponseResultProcessor.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/StreamResponseResultProcessor.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/StreamResponseResultProcessor.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/StreamResponseResultProcessor.java Fri Feb 1 16:07:33 2008
@@ -16,7 +16,6 @@
import org.apache.tapestry.StreamResponse;
import org.apache.tapestry.internal.TapestryInternalUtils;
-import org.apache.tapestry.runtime.Component;
import org.apache.tapestry.services.ComponentEventResultProcessor;
import org.apache.tapestry.services.Response;
@@ -36,7 +35,7 @@
_response = response;
}
- public void processResultValue(StreamResponse streamResponse, Component component, String methodDescripion)
+ public void processResultValue(StreamResponse streamResponse)
throws IOException
{
OutputStream os = null;
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/StringResultProcessor.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/StringResultProcessor.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/StringResultProcessor.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/StringResultProcessor.java Fri Feb 1 16:07:33 2008
@@ -15,7 +15,6 @@
package org.apache.tapestry.internal.services;
import org.apache.tapestry.internal.structure.Page;
-import org.apache.tapestry.runtime.Component;
import org.apache.tapestry.services.ComponentEventResultProcessor;
import java.io.IOException;
@@ -36,7 +35,7 @@
_generator = generator;
}
- public void processResultValue(String value, Component component, String methodDescripion) throws IOException
+ public void processResultValue(String value) throws IOException
{
Page page = _requestPageCache.get(value);
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/ComponentPageElementImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/ComponentPageElementImpl.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/ComponentPageElementImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/ComponentPageElementImpl.java Fri Feb 1 16:07:33 2008
@@ -121,7 +121,7 @@
return _result;
}
- public boolean handleResult(Object result, Component component, String methodDescription)
+ public boolean handleResult(Object result)
{
if (result instanceof Boolean)
{
@@ -155,8 +155,7 @@
return false;
}
- throw new TapestryException(StructureMessages.wrongEventResultType(methodDescription, Boolean.class),
- component, null);
+ throw new RuntimeException(StructureMessages.wrongPhaseResultType(Boolean.class));
}
private void add(RenderCommand command)
@@ -942,14 +941,14 @@
ComponentEventCallback wrapped = new ComponentEventCallback()
{
- public boolean handleResult(Object result, Component component, String methodDescription)
+ public boolean handleResult(Object result)
{
// Boolean value is not passed to the handler; it will be true (abort event)
// or false (continue looking for event handlers).
if (result instanceof Boolean) return (Boolean) result;
- return providedHandler.handleResult(result, component, methodDescription);
+ return providedHandler.handleResult(result);
}
};
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/StructureMessages.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/StructureMessages.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/StructureMessages.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/StructureMessages.java Fri Feb 1 16:07:33 2008
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007 The Apache Software Foundation
+// Copyright 2006, 2007, 2008 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.
@@ -66,9 +66,9 @@
return MESSAGES.format("detach-failure", listener, cause);
}
- static String wrongEventResultType(String method, Class expectedType)
+ static String wrongPhaseResultType(Class expectedType)
{
- return MESSAGES.format("wrong-event-result-type", method, expectedType.getName());
+ return MESSAGES.format("wrong-phase-result-type", expectedType.getName());
}
static String blockNotFound(String componentId, String blockId)
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/util/NotificationEventCallback.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/util/NotificationEventCallback.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/util/NotificationEventCallback.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/util/NotificationEventCallback.java Fri Feb 1 16:07:33 2008
@@ -15,7 +15,6 @@
package org.apache.tapestry.internal.util;
import org.apache.tapestry.ComponentEventCallback;
-import org.apache.tapestry.runtime.Component;
/**
* A {@link org.apache.tapestry.ComponentEventCallback} used for notification events. Event handler methods may return
@@ -33,12 +32,12 @@
_completeId = completeId;
}
- public boolean handleResult(Object result, Component component, String methodDescription)
+ public boolean handleResult(Object result)
{
if (result instanceof Boolean) return ((Boolean) result);
throw new IllegalArgumentException(
- UtilMessages.noReturnValueAccepted(_eventType, _completeId, result, methodDescription));
+ UtilMessages.noReturnValueAccepted(_eventType, _completeId, result));
}
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/util/UtilMessages.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/util/UtilMessages.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/util/UtilMessages.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/util/UtilMessages.java Fri Feb 1 16:07:33 2008
@@ -1,4 +1,4 @@
-// Copyright 2006 The Apache Software Foundation
+// Copyright 2006, 2008 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.
@@ -25,10 +25,9 @@
{
}
- static String noReturnValueAccepted(String eventType, String componentId, Object returnValue,
- String methodDescription)
+ static String noReturnValueAccepted(String eventType, String componentId, Object returnValue)
{
return MESSAGES.format("no-return-value-accepted", eventType, componentId, String
- .valueOf(returnValue), methodDescription);
+ .valueOf(returnValue));
}
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/runtime/Event.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/runtime/Event.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/runtime/Event.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/runtime/Event.java Fri Feb 1 16:07:33 2008
@@ -35,10 +35,9 @@
* Invoke to identify, to the event, what component and method is being acted upon (used for some kinds of exception
* reporting).
*
- * @param component the component instance from which the result was obtained
* @param methodDescription describes the location (i.e. file name, method name and line number) of the method
*/
- void setSource(Component component, String methodDescription);
+ void setMethodDescription(String methodDescription);
/**
* Stores a result for the event. Storing a non-null result value may abort the event (at the discretion of the
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/ComponentEventResultProcessor.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/ComponentEventResultProcessor.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/ComponentEventResultProcessor.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/ComponentEventResultProcessor.java Fri Feb 1 16:07:33 2008
@@ -14,8 +14,6 @@
package org.apache.tapestry.services;
-import org.apache.tapestry.runtime.Component;
-
import java.io.IOException;
/**
@@ -28,10 +26,8 @@
/**
* For a given, non-null return value from a component event method, construct and send a response.
*
- * @param value the value returned from a method
- * @param component the component on which a method was invoked
- * @param methodDescripion a description of method which provided the value
+ * @param value the value returned from a method
* @throws RuntimeException if the value can not handled
*/
- void processResultValue(T value, Component component, String methodDescripion) throws IOException;
+ void processResultValue(T value) throws IOException;
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/TapestryModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/TapestryModule.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/TapestryModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/TapestryModule.java Fri Feb 1 16:07:33 2008
@@ -1138,7 +1138,7 @@
{
configuration.add(Link.class, new ComponentEventResultProcessor<Link>()
{
- public void processResultValue(Link value, Component component, String methodDescripion) throws IOException
+ public void processResultValue(Link value) throws IOException
{
_response.sendRedirect(value);
}
@@ -1146,7 +1146,7 @@
configuration.add(URL.class, new ComponentEventResultProcessor<URL>()
{
- public void processResultValue(URL value, Component component, String methodDescripion) throws IOException
+ public void processResultValue(URL value) throws IOException
{
_response.sendRedirect(value.toExternalForm());
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/test/TapestryTestCase.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/test/TapestryTestCase.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/test/TapestryTestCase.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/test/TapestryTestCase.java Fri Feb 1 16:07:33 2008
@@ -60,8 +60,6 @@
* Creates a new markup writer instance (not a markup writer mock). Output can be directed at the writer, which uses
* the default (HTML) markup model. The writer's toString() value represents all the collected markup in the
* writer.
- *
- * @return
*/
protected final MarkupWriter createMarkupWriter()
{
@@ -712,7 +710,7 @@
protected final void train_handleResult(ComponentEventCallback handler, Object result, Component component,
String methodDescription, boolean abort)
{
- expect(handler.handleResult(result, component, methodDescription)).andReturn(abort);
+ expect(handler.handleResult(result)).andReturn(abort);
}
protected final void train_inError(ValidationTracker tracker, Field field, boolean inError)
@@ -1004,5 +1002,10 @@
protected final HttpServletRequestHandler mockHttpServletRequestHandler()
{
return newMock(HttpServletRequestHandler.class);
+ }
+
+ protected final NullFieldStrategy mockNullFieldStrategy()
+ {
+ return newMock(NullFieldStrategy.class);
}
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/services/ServicesStrings.properties
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/services/ServicesStrings.properties?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/services/ServicesStrings.properties (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/services/ServicesStrings.properties Fri Feb 1 16:07:33 2008
@@ -50,7 +50,7 @@
could-not-resolve-mixin-type=Unable to resolve '%s' to a mixin class name. Available mixin types: %s.
parameter-name-must-be-unique=Parameter names are required to be unique. Parameter '%s' already has the value '%s'.
page-is-dirty=Page %s is dirty, and will be discarded (rather than returned to the page pool).
-component-instance-is-not-a-page=Method %s (for component %s) returned component %s, which is not a page component. The page containing the component will render the client response.
+component-instance-is-not-a-page=Component %s was returned from an event handler method, but is not a page component. The page containing the component will render the client response.
failure-reading-messages=Unable to read message catalog from %s: %s
unknown-asset-prefix=Unknown prefix for asset path '%s'.
asset-does-not-exist=Unable to locate asset '%s' (the file does not exist).
@@ -60,7 +60,7 @@
validator-specification-parse-error=Unexpected character '%s' at position %d of input string: %s
unknown-translator-type=Unknown translator type '%s'. Configured translators are %s.
missing-from-environment=No object of type %s is available from the Environment. Available types are %s.
-invalid-component-event-result=An event handler for component %s returned the value %s (from method %s). Return type %s can not be handled. Configured return types are %s.
+invalid-component-event-result=A component event handler method returned the value %s. Return type %s can not be handled. Configured return types are %s.
undefined-tapestry-attribute=Element <%s> does not support an attribute named '%s'. The only allowed attribute name is '%s'.
attribute-not-allowed=Element <%s> does not support any attributes.
parameter-element-name-required=The name attribute of the <parameter> element must be specified.
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/structure/StructureStrings.properties
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/structure/StructureStrings.properties?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/structure/StructureStrings.properties (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/structure/StructureStrings.properties Fri Feb 1 16:07:33 2008
@@ -19,9 +19,7 @@
missing-mixin-for-parameter=Component %s does not contain a mixin named '%s' (setting parameter '%s').
unknown-mixin=Component %s does not contain a mixin of type %s.
detach-failure=Listener %s failed during page detach: %s
-wrong-event-result-type=Return value of method %s is not compatible with the expected return type of %s. \
- The value has been ignored. \
- Further lifecycle methods may be invoked, which is likely to cause incorrect application behavior. \
+wrong-phase-result-type=The return value from a render phase event method was not compatible the expected return type of %s. \
You should change the method to return the correct type.
block-not-found=Template for component %s does not contain a block with identifier '%s'.
unbalanced-elements=Component %s has rendered unbalanced elements; \
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/util/UtilStrings.properties
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/util/UtilStrings.properties?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/util/UtilStrings.properties (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/util/UtilStrings.properties Fri Feb 1 16:07:33 2008
@@ -1,16 +1,16 @@
-# Copyright 2006 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.
-
-no-return-value-accepted=Event '%s' from %s received an event handler method return value of %s from %s. \
+# Copyright 2006, 2008 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.
+
+no-return-value-accepted=Event '%s' from %s received an event handler method return value of %s. \
This type of event does not support return values from event handler methods.
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/IntegrationTests.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/IntegrationTests.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/IntegrationTests.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/IntegrationTests.java Fri Feb 1 16:07:33 2008
@@ -1550,4 +1550,16 @@
assertTextPresent("HTTP ERROR: 404");
}
+
+ /**
+ * TAPESTRY-2085
+ */
+ @Test
+ public void render_phase_methods_may_throw_checked_exceptions()
+ {
+ start("Render Phase Method Exception Demo");
+
+ assertTextPresent(
+ "Render queue error in BeginRender[RenderPhaseMethodExceptionDemo]: java.sql.SQLException: Simulated JDBC exception while rendering.");
+ }
}
Added: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/pages/RenderPhaseMethodExceptionDemo.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/pages/RenderPhaseMethodExceptionDemo.java?rev=617717&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/pages/RenderPhaseMethodExceptionDemo.java (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/pages/RenderPhaseMethodExceptionDemo.java Fri Feb 1 16:07:33 2008
@@ -0,0 +1,25 @@
+// Copyright 2008 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.
+
+package org.apache.tapestry.integration.app1.pages;
+
+import java.sql.SQLException;
+
+public class RenderPhaseMethodExceptionDemo
+{
+ void beginRender() throws SQLException
+ {
+ throw new SQLException("Simulated JDBC exception while rendering.");
+ }
+}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/pages/Start.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/pages/Start.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/pages/Start.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/pages/Start.java Fri Feb 1 16:07:33 2008
@@ -216,6 +216,10 @@
new Item("PrimitiveArrayParameterDemo", "Primitive Array Parameter Demo",
"use primitive array as parameter type"),
+ new Item("RenderPhaseMethodExceptionDemo", "Render Phase Method Exception Demo",
+ "render phase methods may throw checked exceptions"),
+
+
new Item("TrackEditor", "Generic Page Class Demo",
"demo use of generics with component classes and, particularily, with property types"));
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/AjaxComponentInstanceEventResultProcessorTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/AjaxComponentInstanceEventResultProcessorTest.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/AjaxComponentInstanceEventResultProcessorTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/AjaxComponentInstanceEventResultProcessorTest.java Fri Feb 1 16:07:33 2008
@@ -53,7 +53,7 @@
ComponentEventResultProcessor<Component> processor = new AjaxComponentInstanceEventResultProcessor(renderer,
cache);
- processor.processResultValue(component, null, null);
+ processor.processResultValue(component);
verify();
}
@@ -84,7 +84,7 @@
ComponentEventResultProcessor<Component> processor = new AjaxComponentInstanceEventResultProcessor(renderer,
cache);
- processor.processResultValue(component, null, null);
+ processor.processResultValue(component);
verify();
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentEventImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentEventImplTest.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentEventImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentEventImplTest.java Fri Feb 1 16:07:33 2008
@@ -126,7 +126,7 @@
ComponentEvent event = new ComponentEventImpl("eventType", "someId", new String[]{"27"}, handler, null);
- event.setSource(component, "foo.Bar.baz()");
+ event.setMethodDescription("foo.Bar.baz()");
try
{
@@ -151,7 +151,7 @@
ComponentEvent event = new ComponentEventImpl("eventType", "someId", new String[]{"abc"}, handler, null);
- event.setSource(component, "foo.Bar.baz()");
+ event.setMethodDescription("foo.Bar.baz()");
try
{
@@ -184,7 +184,7 @@
ComponentEvent event = new ComponentEventImpl("eventType", "someId", null, handler, null);
- event.setSource(component, methodDescription);
+ event.setMethodDescription(methodDescription);
assertFalse(event.isAborted());
@@ -209,7 +209,7 @@
ComponentEvent event = new ComponentEventImpl("eventType", "someId", null, handler, null);
- event.setSource(component, methodDescription);
+ event.setMethodDescription(methodDescription);
assertFalse(event.storeResult(result));
@@ -228,7 +228,7 @@
ComponentEvent event = new ComponentEventImpl("eventType", "someId", null, handler, null);
- event.setSource(component, "foo.Bar.baz()");
+ event.setMethodDescription("foo.Bar.baz()");
assertFalse(event.storeResult(null));
@@ -245,18 +245,18 @@
ComponentEventCallback handler = mockComponentEventHandler();
Component component = mockComponent();
- expect(handler.handleResult(result, component, "foo.Bar.baz()")).andReturn(true);
+ expect(handler.handleResult(result)).andReturn(true);
replay();
ComponentEvent event = new ComponentEventImpl("eventType", "someId", null, handler, null);
- event.setSource(component, "foo.Bar.baz()");
+ event.setMethodDescription("foo.Bar.baz()");
event.storeResult(result);
try
{
- event.setSource(component, "foo.Bar.biff()");
+ event.setMethodDescription("foo.Bar.biff()");
event.storeResult(null);
unreachable();
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentInstanceResultProcessorTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentInstanceResultProcessorTest.java?rev=617717&r1=617716&r2=617717&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentInstanceResultProcessorTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentInstanceResultProcessorTest.java Fri Feb 1 16:07:33 2008
@@ -52,7 +52,7 @@
ComponentEventResultProcessor<Component> processor = new ComponentInstanceResultProcessor(logger, cache,
generator);
- processor.processResultValue(result, source, METHOD_DESCRIPTION);
+ processor.processResultValue(result);
verify();
}
@@ -61,10 +61,8 @@
public void warning_for_component_is_not_root_component() throws Exception
{
Component value = mockComponent();
- Component source = mockComponent();
Component containerResources = mockComponent();
ComponentResources valueResources = mockComponentResources();
- ComponentResources sourceResources = mockComponentResources();
Logger logger = mockLogger();
RequestPageCache cache = mockRequestPageCache();
Page page = mockPage();
@@ -74,13 +72,11 @@
train_getComponentResources(value, valueResources);
train_getContainer(valueResources, containerResources);
- train_getComponentResources(source, sourceResources);
- train_getCompleteId(sourceResources, PAGE_NAME + ":source");
train_getCompleteId(valueResources, PAGE_NAME + ":child");
logger
- .warn("Method foo.bar.Baz.biff() (for component Zoop:source) returned component Zoop:child, which is not a page component. The page containing the component will render the client response.");
+ .warn("Component Zoop:child was returned from an event handler method, but is not a page component. The page containing the component will render the client response.");
train_getPageName(valueResources, PAGE_NAME);
train_get(cache, PAGE_NAME, page);
@@ -92,7 +88,7 @@
ComponentEventResultProcessor<Component> processor = new ComponentInstanceResultProcessor(logger, cache,
generator);
- processor.processResultValue(value, source, METHOD_DESCRIPTION);
+ processor.processResultValue(value);
verify();
}