Author: hlship
Date: Sat Apr 21 11:54:22 2007
New Revision: 531082
URL: http://svn.apache.org/viewvc?view=rev&rev=531082
Log:
TAPESTRY-1424: @OnEvent annotation should be simplified to specify at most one
event and at most one component id
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/annotations/OnEvent.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/GridColumns.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentEventImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/OnEventWorker.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/runtime/ComponentEvent.java
tapestry/tapestry5/tapestry-core/trunk/src/site/apt/guide/event.apt
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/base/BaseEventHandlerDemo.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app2/pages/TestPageForSubmit.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ComponentEventImplTest.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InternalClassTransformationImplTest.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/transform/pages/EventHandlerTarget.java
tapestry/tapestry5/tapestry-core/trunk/src/test/resources/log4j.properties
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/annotations/OnEvent.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/annotations/OnEvent.java?view=diff&rev=531082&r1=531081&r2=531082
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/annotations/OnEvent.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/annotations/OnEvent.java
Sat Apr 21 11:54:22 2007
@@ -1,4 +1,4 @@
-// Copyright 2006 The Apache Software Foundation
+// Copyright 2006, 2007 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.
@@ -12,62 +12,58 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package org.apache.tapestry.annotations;
-
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import org.apache.tapestry.TapestryConstants;
-
-/**
- * Marks a method as a handler for a client side event. The handler method
will be invoked when a
- * component triggers an event. Filters on the type of event and on the
originating component ensure
- * that only the appropriate methods are invoked.
- * <p>
- * Client events include a <em>context</em> of one or more values. These
context values are
- * included in the action URI. The values are optionally supplied to the
handler method as
- * parameters. Automatic type coercions from string to the type of the actual
parameter occur.
- * <p>
- * Handlers may return a value. Returning a non-null value will abort the
handling of the event, and
- * will usually control the response sent to the client web browser. The
details are somewhat
- * specific to the type of event and the component involved.
- * <p>
- * If a handler is not found within the originating component (or no handler
aborts the event
- * handling), then handlers within the containing component will be searched.
This continues up the
- * page hierarchy. In some cases, having no handlers (or no aborting handlers)
is considered
- * acceptible; in others, it is an error. Again, this is defined by the type
of originating
- * component, and the type of event.
- * <p>
- * <strong>If you fail to provide filters on either component or event type,
then your method will
- * be invoked for all component events, possibly including events that bubble
up from embedded
- * sub-components. </strong>
- *
- *
- */
[EMAIL PROTECTED](ElementType.METHOD)
[EMAIL PROTECTED](RUNTIME)
[EMAIL PROTECTED]
-public @interface OnEvent {
-
- /**
- * A list of event types to match. The handler will only be invoked if the
client event type
- * matches one of the values.
- *
- * @return
- * @see TapestryConstants
- */
- String[] value() default {};
-
- /**
- * A list of component ids. The handler will only be invoked if the id of
the event originating
- * component matches one of the values.
- *
- * @return
- */
- String[] component() default {};
-
-}
+package org.apache.tapestry.annotations;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * Marks a method as a handler for a client side event. The handler method
will be invoked when a
+ * component triggers an event. Filters on the type of event and on the
originating component ensure
+ * that only the appropriate methods are invoked.
+ * <p>
+ * Client events include a <em>context</em> of one or more values. These
context values are
+ * included in the action URI. The values are optionally supplied to the
handler method as
+ * parameters. Automatic type coercions from string to the type of the actual
parameter occur.
+ * <p>
+ * Handlers may return a value. Returning a non-null value will abort the
handling of the event, and
+ * will usually control the response sent to the client web browser. The
details are somewhat
+ * specific to the type of event and the component involved.
+ * <p>
+ * If a handler is not found within the originating component (or no handler
aborts the event
+ * handling), then handlers within the containing component will be searched.
This continues up the
+ * page hierarchy. In some cases, having no handlers (or no aborting handlers)
is considered
+ * acceptible; in others, it is an error. Again, this is defined by the type
of originating
+ * component, and the type of event.
+ * <p>
+ * <strong>If you fail to provide filters on either component or event type,
then your method will
+ * be invoked for all component events, possibly including events that bubble
up from embedded
+ * sub-components. </strong>
+ */
[EMAIL PROTECTED](ElementType.METHOD)
[EMAIL PROTECTED](RUNTIME)
[EMAIL PROTECTED]
+public @interface OnEvent
+{
+
+ /**
+ * The event types to match. The handler will only be invoked if the
client event type matches
+ * the value. If omitted, the default is to match any event. Most
components emit, at most, one
+ * event named "action".
+ */
+ String value() default "";
+
+ /**
+ * The local id of the component from which the event originates. If not
specified, then the
+ * default is to match any component. If an event from a component is not
handled in the
+ * component's container, it is re-triggered inside the component's
grand-container and will
+ * appear to originate from the container. Thus events that escape a
component will appear to
+ * originate in the component's container, and so forth.
+ */
+ String component() default "";
+
+}
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/GridColumns.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/GridColumns.java?view=diff&rev=531082&r1=531081&r2=531082
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/GridColumns.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/GridColumns.java
Sat Apr 21 11:54:22 2007
@@ -19,7 +19,6 @@
import org.apache.tapestry.Asset;
import org.apache.tapestry.annotations.Component;
import org.apache.tapestry.annotations.Inject;
-import org.apache.tapestry.annotations.OnEvent;
import org.apache.tapestry.annotations.Parameter;
import org.apache.tapestry.annotations.Path;
import org.apache.tapestry.beaneditor.PropertyModel;
@@ -85,9 +84,7 @@
return _columnModel.getId().equals(_sortColumnId);
}
- @OnEvent(component =
- { "sort", "sort2" })
- void sort(String columnId)
+ void onActionFromSort(String columnId)
{
if (columnId.equals(_sortColumnId))
{
@@ -99,6 +96,8 @@
_sortAscending = true;
}
}
+
+ void onActionFromSort2(String columnId) { onActionFromSort(columnId); }
public Asset getIcon()
{
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentEventImpl.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentEventImpl.java?view=diff&rev=531082&r1=531081&r2=531082
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentEventImpl.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentEventImpl.java
Sat Apr 21 11:54:22 2007
@@ -18,7 +18,6 @@
import static org.apache.tapestry.ioc.internal.util.Defense.notNull;
import org.apache.tapestry.ComponentEventHandler;
-import org.apache.tapestry.ComponentResources;
import org.apache.tapestry.ioc.services.TypeCoercer;
import org.apache.tapestry.runtime.ComponentEvent;
@@ -62,24 +61,14 @@
* doesn't do quite the right think when an event bubbles up past its
originating component's
* container (can lead to false matches).
*/
- public boolean matchesByComponentId(ComponentResources resources, String[]
componentId)
+ public boolean matchesByComponentId(String componentId)
{
- for (String id : componentId)
- {
- if (id.equalsIgnoreCase(_originatingComponentId)) return true;
- }
-
- return false;
+ return _originatingComponentId.equalsIgnoreCase(componentId);
}
- public boolean matchesByEventType(String[] eventTypes)
+ public boolean matchesByEventType(String eventType)
{
- for (String type : eventTypes)
- {
- if (type.equalsIgnoreCase(_eventType)) return true;
- }
-
- return false;
+ return _eventType.equalsIgnoreCase(eventType);
}
public boolean matchesByParameterCount(int parameterCount)
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/OnEventWorker.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/OnEventWorker.java?view=diff&rev=531082&r1=531081&r2=531082
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/OnEventWorker.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/OnEventWorker.java
Sat Apr 21 11:54:22 2007
@@ -17,6 +17,7 @@
import java.util.List;
import org.apache.tapestry.annotations.OnEvent;
+import org.apache.tapestry.ioc.internal.util.InternalUtils;
import org.apache.tapestry.ioc.util.BodyBuilder;
import org.apache.tapestry.model.MutableComponentModel;
import org.apache.tapestry.runtime.Component;
@@ -36,8 +37,6 @@
{
static final String OBJECT_ARRAY_TYPE = "java.lang.Object[]";
- private final String[] _empty = new String[0];
-
private final static int ANY_NUMBER_OF_PARAMETERS = -1;
public void transform(final ClassTransformation transformation,
MutableComponentModel model)
@@ -89,32 +88,21 @@
OnEvent annotation = transformation.getMethodAnnotation(method,
OnEvent.class);
- String[] eventTypes = extractEventTypes(method, annotation);
+ String eventType = extractEventType(method, annotation);
- if (eventTypes.length > 0)
+ if (InternalUtils.isNonBlank(eventType))
{
- String fieldName = transformation.addInjectedField(
- String[].class,
- "eventTypes",
- eventTypes);
-
- builder.addln("if ($1.matchesByEventType(%s))", fieldName);
+ builder.addln("if ($1.matchesByEventType(\"%s\"))", eventType);
builder.begin();
closeCount++;
}
- String[] componentIds = extractComponentIds(method, annotation);
+ String componentId = extractComponentId(method, annotation);
- if (componentIds.length > 0)
+ if (InternalUtils.isNonBlank(componentId))
{
- String fieldName = transformation.addInjectedField(
- String[].class,
- "componentIds",
- componentIds);
-
- builder.addln("if ($1.matchesByComponentId(%s, %s))",
transformation
- .getResourcesFieldName(), fieldName);
+ builder.addln("if ($1.matchesByComponentId(\"%s\"))", componentId);
builder.begin();
closeCount++;
@@ -148,7 +136,7 @@
builder.end();
}
- private String[] extractComponentIds(MethodSignature method, OnEvent
annotation)
+ private String extractComponentId(MethodSignature method, OnEvent
annotation)
{
if (annotation != null) return annotation.component();
@@ -158,15 +146,12 @@
int fromx = name.indexOf("From");
- if (fromx < 0) return _empty;
-
- String componentId = name.substring(fromx + 4);
+ if (fromx < 0) return "";
- return new String[]
- { componentId };
+ return name.substring(fromx + 4);
}
- private String[] extractEventTypes(MethodSignature method, OnEvent
annotation)
+ private String extractEventType(MethodSignature method, OnEvent annotation)
{
if (annotation != null) return annotation.value();
@@ -180,10 +165,9 @@
// This is intended for onAnyFromComponentId, but just onAny works too
(and is dangerous).
- if (eventName.equalsIgnoreCase("AnyEvent")) return _empty;
+ if (eventName.equalsIgnoreCase("AnyEvent")) return "";
- return new String[]
- { eventName };
+ return eventName;
}
private int getParameterCount(MethodSignature method)
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/runtime/ComponentEvent.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/runtime/ComponentEvent.java?view=diff&rev=531082&r1=531081&r2=531082
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/runtime/ComponentEvent.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/runtime/ComponentEvent.java
Sat Apr 21 11:54:22 2007
@@ -15,7 +15,6 @@
package org.apache.tapestry.runtime;
import org.apache.tapestry.ComponentEventHandler;
-import org.apache.tapestry.ComponentResources;
import org.apache.tapestry.ComponentResourcesCommon;
/**
@@ -32,17 +31,17 @@
* Returns true if the component event's type matches any of the provided
values. Comparison is
* caseless.
*
- * @param eventTypes
+ * @param eventType
* @return true if there is any match
*/
- boolean matchesByEventType(String[] eventTypes);
+ boolean matchesByEventType(String eventType);
/**
* Returns true if the originating component matches any of the components
identified by their
* ids. This filter is only relevent in the immediate container of the
originating component (it
* will never match at higher levels). Comparison is caseless.
*/
- boolean matchesByComponentId(ComponentResources resources, String[]
componentId);
+ boolean matchesByComponentId(String componentId);
/**
* Returns true if the event context contains the specified number of
parameters (or more).
Modified: tapestry/tapestry5/tapestry-core/trunk/src/site/apt/guide/event.apt
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/site/apt/guide/event.apt?view=diff&rev=531082&r1=531081&r2=531082
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/site/apt/guide/event.apt
(original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/site/apt/guide/event.apt Sat Apr
21 11:54:22 2007
@@ -125,9 +125,7 @@
+---+
If you event type is named "onAny", it will receive all types of events.
This is rarely what you want!
-
- If for some unfathomable reason you want to be notified of the same event
from multiple components in the same method, you'll need to use the OnEvent
annotation.
-
+
Note from Howard: I've found that I prefer the naming convention approach,
and reserve the annotation just for situations that don't otherwise fit.
Event Context
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/base/BaseEventHandlerDemo.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/base/BaseEventHandlerDemo.java?view=diff&rev=531082&r1=531081&r2=531082
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/base/BaseEventHandlerDemo.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/base/BaseEventHandlerDemo.java
Sat Apr 21 11:54:22 2007
@@ -59,7 +59,7 @@
}
- @OnEvent(value = "action")
+ @OnEvent("action")
void eventHandlerZero()
{
addMethodName("parent.eventHandlerZero()");
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app2/pages/TestPageForSubmit.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app2/pages/TestPageForSubmit.java?view=diff&rev=531082&r1=531081&r2=531082
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app2/pages/TestPageForSubmit.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app2/pages/TestPageForSubmit.java
Sat Apr 21 11:54:22 2007
@@ -15,7 +15,6 @@
package org.apache.tapestry.integration.app2.pages;
import org.apache.tapestry.annotations.Component;
-import org.apache.tapestry.annotations.OnEvent;
import org.apache.tapestry.annotations.Persist;
import org.apache.tapestry.corelib.components.Form;
import org.apache.tapestry.corelib.components.Submit;
@@ -60,11 +59,14 @@
this.value = value;
}
- @OnEvent(component =
- { "capitalize1", "capitalize2" }, value = "selected")
- public void onCapitalize()
+ void onSelectedFromCapitalize1()
{
value = value.toUpperCase();
+ }
+
+ void onSelectedFromCapitalize2()
+ {
+ onSelectedFromCapitalize1();
}
}
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ComponentEventImplTest.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ComponentEventImplTest.java?view=diff&rev=531082&r1=531081&r2=531082
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ComponentEventImplTest.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ComponentEventImplTest.java
Sat Apr 21 11:54:22 2007
@@ -49,10 +49,8 @@
ComponentEvent event = new ComponentEventImpl("eventType", "someId",
null, handler,
_coercer);
- assertTrue(event.matchesByEventType(new String[]
- { "foo", "eventType", "bar" }));
- assertFalse(event.matchesByEventType(new String[]
- { "foo", "bar" }));
+ assertTrue(event.matchesByEventType("eventType"));
+ assertFalse(event.matchesByEventType("foo"));
verify();
}
@@ -67,8 +65,7 @@
ComponentEvent event = new ComponentEventImpl("eventType", "someId",
null, handler,
_coercer);
- assertTrue(event.matchesByEventType(new String[]
- { "EVENTTYPE" }));
+ assertTrue(event.matchesByEventType("EVENTTYPE"));
verify();
}
@@ -79,13 +76,13 @@
ComponentEventHandler handler = mockComponentEventHandler();
replay();
+
ComponentEvent event = new ComponentEventImpl("eventType", "someId",
null, handler,
_coercer);
- assertTrue(event.matchesByComponentId(null, new String[]
- { "foo", "someId", "bar" }));
- assertFalse(event.matchesByComponentId(null, new String[]
- { "foo", "bar" }));
+ assertTrue(event.matchesByComponentId("someId"));
+
+ assertFalse(event.matchesByComponentId("bar"));
verify();
}
@@ -99,8 +96,7 @@
ComponentEvent event = new ComponentEventImpl("eventType", "someId",
null, handler,
_coercer);
- assertTrue(event.matchesByComponentId(null, new String[]
- { "SOMEID" }));
+ assertTrue(event.matchesByComponentId("SOMEID"));
verify();
}
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InternalClassTransformationImplTest.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InternalClassTransformationImplTest.java?view=diff&rev=531082&r1=531081&r2=531082
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InternalClassTransformationImplTest.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InternalClassTransformationImplTest.java
Sat Apr 21 11:54:22 2007
@@ -1049,10 +1049,8 @@
// Check that the attributes of the annotation match the expectation.
- assertEquals(annotation.value(), new String[]
- { "fred", "barney" });
- assertEquals(annotation.component(), new String[]
- { "alpha", "beta" });
+ assertEquals(annotation.value(), "fred");
+ assertEquals(annotation.component(), "alpha");
verify();
}
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/transform/pages/EventHandlerTarget.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/transform/pages/EventHandlerTarget.java?view=diff&rev=531082&r1=531081&r2=531082
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/transform/pages/EventHandlerTarget.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/transform/pages/EventHandlerTarget.java
Sat Apr 21 11:54:22 2007
@@ -1,4 +1,4 @@
-// Copyright 2006 The Apache Software Foundation
+// Copyright 2006, 2007 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.
@@ -12,19 +12,14 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package org.apache.tapestry.internal.transform.pages;
-
-import org.apache.tapestry.annotations.OnEvent;
-
-/**
- *
- */
-public class EventHandlerTarget
-{
- @OnEvent(value =
- { "fred", "barney" }, component =
- { "alpha", "beta" })
- public void handler()
- {
- }
-}
+package org.apache.tapestry.internal.transform.pages;
+
+import org.apache.tapestry.annotations.OnEvent;
+
+public class EventHandlerTarget
+{
+ @OnEvent(value = "fred", component = "alpha")
+ public void handler()
+ {
+ }
+}
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/test/resources/log4j.properties
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/resources/log4j.properties?view=diff&rev=531082&r1=531081&r2=531082
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/resources/log4j.properties
(original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/resources/log4j.properties
Sat Apr 21 11:54:22 2007
@@ -28,5 +28,3 @@
log4j.category.org.apache.tapestry.integration.app1=error
log4j.category.org.apache.tapestry.corelib=error
-log4j.category.org.apache.tapestry.integration.app1.pages.Localization=debug
-