You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by ml...@apache.org on 2013/08/03 14:08:48 UTC
[01/10] git commit: clean a leftover
Updated Branches:
refs/heads/master 4489a8a4b -> c13ed0602
clean a leftover
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/84d26fd5
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/84d26fd5
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/84d26fd5
Branch: refs/heads/master
Commit: 84d26fd52167a7d9b4ecda66a5864d4f807d1b78
Parents: 4489a8a
Author: Massimo Lusetti <ml...@apache.org>
Authored: Fri Aug 2 11:51:21 2013 +0200
Committer: Massimo Lusetti <ml...@apache.org>
Committed: Fri Aug 2 11:51:21 2013 +0200
----------------------------------------------------------------------
.../archetype-resources/src/main/resources/pages/Index.tml | 2 --
1 file changed, 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/84d26fd5/quickstart/filtered/archetype-resources/src/main/resources/pages/Index.tml
----------------------------------------------------------------------
diff --git a/quickstart/filtered/archetype-resources/src/main/resources/pages/Index.tml b/quickstart/filtered/archetype-resources/src/main/resources/pages/Index.tml
index 6bc607b..fa4a504 100644
--- a/quickstart/filtered/archetype-resources/src/main/resources/pages/Index.tml
+++ b/quickstart/filtered/archetype-resources/src/main/resources/pages/Index.tml
@@ -21,8 +21,6 @@
<p><t:actionlink t:id="learnmore" class="btn btn-primary btn-large">Learn more »</t:actionlink></p>
</div>
- <t:alerts />
-
<!-- Example row of columns -->
<div class="row">
<div class="span4">
[09/10] git commit: TAP5-2070 test case to be expanded to use
something different then Selenium since it doesn't check http status code
Posted by ml...@apache.org.
TAP5-2070 test case to be expanded to use something different then Selenium since it doesn't check http status code
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/6762367c
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/6762367c
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/6762367c
Branch: refs/heads/master
Commit: 6762367c1f0369814089f3c0babdc93f71238094
Parents: d1fabec
Author: Massimo Lusetti <ml...@apache.org>
Authored: Sat Aug 3 14:07:01 2013 +0200
Committer: Massimo Lusetti <ml...@apache.org>
Committed: Sat Aug 3 14:07:01 2013 +0200
----------------------------------------------------------------------
.../tapestry5/integration/app1/pages/Index.java | 4 +++-
.../services/ComponentEventImplTest.java | 24 ++++++++++----------
.../structure/ComponentPageElementImplTest.java | 10 ++++----
3 files changed, 21 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/6762367c/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java
index 2142991..866ced7 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java
@@ -518,7 +518,9 @@ public class Index
new Item("OverrideLabelClassDemo", "Override Label Class Demo", "Setting class attribute on Label component"),
- new Item("FormLinkParameters", "FormLinkParameters Demo", "Form link parameters should be unescaped for a hidden field")
+ new Item("FormLinkParameters", "FormLinkParameters Demo", "Form link parameters should be unescaped for a hidden field"),
+
+ new Item("UnknownAtcivationContext", "Unknown Activation Context Demo", "Page refuse to serve if called with an unknown activation context")
);
static
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/6762367c/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventImplTest.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventImplTest.java
index 0d9d508..9eb353b 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventImplTest.java
@@ -62,7 +62,7 @@ public class ComponentEventImplTest extends InternalBaseTestCase
replay();
- ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, logger);
+ ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, false, mockComponentModel(), logger);
assertTrue(event.matches("eventType", "someId", 0));
assertFalse(event.matches("foo", "someId", 0));
@@ -88,7 +88,7 @@ public class ComponentEventImplTest extends InternalBaseTestCase
replay();
- ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, resources, logger);
+ ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, resources, false, mockComponentModel(), logger);
event.storeResult(result);
@@ -111,7 +111,7 @@ public class ComponentEventImplTest extends InternalBaseTestCase
replay();
- ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, logger);
+ ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, false, mockComponentModel(), logger);
assertTrue(event.matches("EVENTTYPE", "someid", 0));
@@ -131,7 +131,7 @@ public class ComponentEventImplTest extends InternalBaseTestCase
replay();
- ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, logger);
+ ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, false, mockComponentModel(), logger);
assertTrue(event.matches("eventType", "someId", 0));
@@ -153,7 +153,7 @@ public class ComponentEventImplTest extends InternalBaseTestCase
replay();
- ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, logger);
+ ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, false, mockComponentModel(), logger);
assertTrue(event.matches("eventtype", "SOMEID", 0));
@@ -178,7 +178,7 @@ public class ComponentEventImplTest extends InternalBaseTestCase
replay();
- ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, resources, logger);
+ ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, resources, false, mockComponentModel(), logger);
assertSame(event.coerceContext(0, "java.lang.Integer"), value);
@@ -199,7 +199,7 @@ public class ComponentEventImplTest extends InternalBaseTestCase
replay();
- ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, logger);
+ ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, false, mockComponentModel(), logger);
event.setMethodDescription("foo.Bar.baz()");
@@ -234,7 +234,7 @@ public class ComponentEventImplTest extends InternalBaseTestCase
replay();
- ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, resources, logger);
+ ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, resources, false, mockComponentModel(), logger);
event.setMethodDescription("foo.Bar.baz()");
@@ -273,7 +273,7 @@ public class ComponentEventImplTest extends InternalBaseTestCase
replay();
- ComponentEvent event = new ComponentEventImpl("eventType", "someId", null, handler, resources, logger);
+ ComponentEvent event = new ComponentEventImpl("eventType", "someId", null, handler, resources, false, mockComponentModel(), logger);
event.setMethodDescription(methodDescription);
@@ -302,7 +302,7 @@ public class ComponentEventImplTest extends InternalBaseTestCase
replay();
- ComponentEvent event = new ComponentEventImpl("eventType", "someId", null, handler, resources, logger);
+ ComponentEvent event = new ComponentEventImpl("eventType", "someId", null, handler, resources, false, mockComponentModel(), logger);
event.setMethodDescription(methodDescription);
@@ -324,7 +324,7 @@ public class ComponentEventImplTest extends InternalBaseTestCase
replay();
- ComponentEvent event = new ComponentEventImpl("eventType", "someId", null, handler, null, logger);
+ ComponentEvent event = new ComponentEventImpl("eventType", "someId", null, handler, null, false, mockComponentModel(), logger);
event.setMethodDescription("foo.Bar.baz()");
@@ -355,7 +355,7 @@ public class ComponentEventImplTest extends InternalBaseTestCase
replay();
- ComponentEvent event = new ComponentEventImpl("eventType", "someId", null, handler, resources, logger);
+ ComponentEvent event = new ComponentEventImpl("eventType", "someId", null, handler, resources, false, mockComponentModel(), logger);
event.setMethodDescription("foo.Bar.baz()");
event.storeResult(result);
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/6762367c/tapestry-core/src/test/java/org/apache/tapestry5/internal/structure/ComponentPageElementImplTest.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/structure/ComponentPageElementImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/structure/ComponentPageElementImplTest.java
index 99feb3f..0a495e1 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/structure/ComponentPageElementImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/structure/ComponentPageElementImplTest.java
@@ -8,6 +8,7 @@ import org.apache.tapestry5.ioc.Location;
import org.apache.tapestry5.ioc.services.SymbolSource;
import org.apache.tapestry5.ioc.test.TestBase;
import org.apache.tapestry5.model.ComponentModel;
+import org.apache.tapestry5.services.MetaDataLocator;
import org.apache.tapestry5.services.Request;
import org.testng.annotations.Test;
@@ -22,6 +23,7 @@ public class ComponentPageElementImplTest extends TestBase {
Location location = newMock(Location.class);
ComponentPageElementResources elementResources = newMock(ComponentPageElementResources.class);
ComponentModel model = newMock(ComponentModel.class);
+ MetaDataLocator locator = newMock(MetaDataLocator.class);
getMocksControl().resetToNice();
@@ -50,16 +52,16 @@ public class ComponentPageElementImplTest extends TestBase {
replay();
ComponentPageElementImpl c; // need to create every time because of changing symbols
- c = new ComponentPageElementImpl(page, null, "id", "nestedId", "completeid", "elementname", instantiator, location, elementResources, request, symbolSource);
+ c = new ComponentPageElementImpl(page, null, "id", "nestedId", "completeid", "elementname", instantiator, location, elementResources, request, symbolSource, locator);
assertFalse(c.isRenderTracingEnabled());
- c = new ComponentPageElementImpl(page, null, "id", "nestedId", "completeid", "elementname", instantiator, location, elementResources, request, symbolSource);
+ c = new ComponentPageElementImpl(page, null, "id", "nestedId", "completeid", "elementname", instantiator, location, elementResources, request, symbolSource, locator);
assertTrue(c.isRenderTracingEnabled());
- c = new ComponentPageElementImpl(page, null, "id", "nestedId", "completeid", "elementname", instantiator, location, elementResources, request, symbolSource);
+ c = new ComponentPageElementImpl(page, null, "id", "nestedId", "completeid", "elementname", instantiator, location, elementResources, request, symbolSource, locator);
assertTrue(c.isRenderTracingEnabled());
- c = new ComponentPageElementImpl(page, null, "id", "nestedId", "completeid", "elementname", instantiator, location, elementResources, request, symbolSource);
+ c = new ComponentPageElementImpl(page, null, "id", "nestedId", "completeid", "elementname", instantiator, location, elementResources, request, symbolSource, locator);
assertFalse(c.isRenderTracingEnabled());
}
}
[04/10] git commit: TAP5-2070 declare if the component handle the
activation context
Posted by ml...@apache.org.
TAP5-2070 declare if the component handle the activation context
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/8640a40f
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/8640a40f
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/8640a40f
Branch: refs/heads/master
Commit: 8640a40fdd25f23bd071fcb627ab31cac8670ca7
Parents: 5cc984b
Author: Massimo Lusetti <ml...@apache.org>
Authored: Sat Aug 3 13:55:47 2013 +0200
Committer: Massimo Lusetti <ml...@apache.org>
Committed: Sat Aug 3 13:55:47 2013 +0200
----------------------------------------------------------------------
.../org/apache/tapestry5/internal/transform/OnEventWorker.java | 6 ++++++
1 file changed, 6 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/8640a40f/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/OnEventWorker.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/OnEventWorker.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/OnEventWorker.java
index 234f7db..06f3a1d 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/OnEventWorker.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/OnEventWorker.java
@@ -132,6 +132,8 @@ public class OnEventWorker implements ComponentClassTransformWorker2
int minContextValues = 0;
+ boolean handleActivationEventContext = false;
+
EventHandlerMethod(PlasticMethod method)
{
this.method = method;
@@ -220,6 +222,7 @@ public class OnEventWorker implements ComponentClassTransformWorker2
if (provider != null)
{
providers.add(provider);
+ this.handleActivationEventContext = true;
continue;
}
@@ -382,6 +385,9 @@ public class OnEventWorker implements ComponentClassTransformWorker2
method.buildMatchAndInvocation(builder, resultVariable);
model.addEventHandler(method.eventType);
+
+ if (method.handleActivationEventContext)
+ model.doHandleActivationEventContext();
}
builder.loadVariable(resultVariable).returnResult();
[10/10] git commit: TAP5-2070 actual test pages
Posted by ml...@apache.org.
TAP5-2070 actual test pages
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/c13ed060
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/c13ed060
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/c13ed060
Branch: refs/heads/master
Commit: c13ed06021cf280ba43b7cd6053ca88da8230b55
Parents: 6762367
Author: Massimo Lusetti <ml...@apache.org>
Authored: Sat Aug 3 14:07:48 2013 +0200
Committer: Massimo Lusetti <ml...@apache.org>
Committed: Sat Aug 3 14:07:48 2013 +0200
----------------------------------------------------------------------
.../app1/UnknownActivationContextTests.groovy | 13 +++++++++++
.../pages/UnknownActivationContextDemo.java | 24 ++++++++++++++++++++
.../app1/pages/UnknownActivationContextDemo.tml | 10 ++++++++
3 files changed, 47 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/c13ed060/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/UnknownActivationContextTests.groovy
----------------------------------------------------------------------
diff --git a/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/UnknownActivationContextTests.groovy b/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/UnknownActivationContextTests.groovy
new file mode 100644
index 0000000..5a2fd3d
--- /dev/null
+++ b/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/UnknownActivationContextTests.groovy
@@ -0,0 +1,13 @@
+package org.apache.tapestry5.integration.app1
+
+import org.apache.tapestry5.test.SeleniumTestCase
+import org.testng.annotations.Test
+
+class UnknownActivationContextTests extends SeleniumTestCase
+{
+ // @Test
+ void http_status_code_test_for_unknown_activation_context_case()
+ {
+ // TODO Use a workaround Selenium limitation to check http status code
+ }
+}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/c13ed060/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/UnknownActivationContextDemo.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/UnknownActivationContextDemo.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/UnknownActivationContextDemo.java
new file mode 100644
index 0000000..368f159
--- /dev/null
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/UnknownActivationContextDemo.java
@@ -0,0 +1,24 @@
+// 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.tapestry5.integration.app1.pages;
+
+import org.apache.tapestry5.annotations.UnknownActivationContextCheck;
+
+@UnknownActivationContextCheck
+public class UnknownActivationContextDemo
+{
+
+}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/c13ed060/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/UnknownActivationContextDemo.tml
----------------------------------------------------------------------
diff --git a/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/UnknownActivationContextDemo.tml b/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/UnknownActivationContextDemo.tml
new file mode 100644
index 0000000..a168227
--- /dev/null
+++ b/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/UnknownActivationContextDemo.tml
@@ -0,0 +1,10 @@
+<html t:type="Border"
+ xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
+
+ <h1>Page called with an unknown activation context</h1>
+
+ <p>
+ You should never see me if use an activation context
+ </p>
+
+</html>
\ No newline at end of file
[03/10] git commit: TAP5-2070 have the component model be able to
declare if it handle the activation context
Posted by ml...@apache.org.
TAP5-2070 have the component model be able to declare if it handle the activation context
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/5cc984b2
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/5cc984b2
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/5cc984b2
Branch: refs/heads/master
Commit: 5cc984b2c826e619d1dcdb52704bdffca263a97e
Parents: 8fecc8e
Author: Massimo Lusetti <ml...@apache.org>
Authored: Sat Aug 3 13:54:24 2013 +0200
Committer: Massimo Lusetti <ml...@apache.org>
Committed: Sat Aug 3 13:54:24 2013 +0200
----------------------------------------------------------------------
.../internal/model/MutableComponentModelImpl.java | 15 +++++++++++++++
1 file changed, 15 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/5cc984b2/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableComponentModelImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableComponentModelImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableComponentModelImpl.java
index 12691f4..a78366d 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableComponentModelImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableComponentModelImpl.java
@@ -69,6 +69,8 @@ public final class MutableComponentModelImpl implements MutableComponentModel
private final String libraryName;
+ private boolean handleActivationEventContext;
+
public MutableComponentModelImpl(String componentClassName, Logger logger, Resource baseResource,
ComponentModel parentModel, boolean pageClass, String libraryName)
{
@@ -79,6 +81,9 @@ public final class MutableComponentModelImpl implements MutableComponentModel
this.pageClass = pageClass;
this.libraryName = libraryName;
+ // Default to false, explicitly set during page transformation
+ this.handleActivationEventContext = false;
+
// Pre-allocate names from the parent, to avoid name collisions.
if (this.parentModel != null)
@@ -394,4 +399,14 @@ public final class MutableComponentModelImpl implements MutableComponentModel
{
return pageClass;
}
+
+ public void doHandleActivationEventContext()
+ {
+ this.handleActivationEventContext = true;
+ }
+
+ public boolean handleActivationEventContext()
+ {
+ return this.handleActivationEventContext;
+ }
}
[04/10] git commit: TAP5-2070 declare if the component handle the
activation context
Posted by ml...@apache.org.
TAP5-2070 declare if the component handle the activation context
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/8640a40f
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/8640a40f
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/8640a40f
Branch: refs/heads/master
Commit: 8640a40fdd25f23bd071fcb627ab31cac8670ca7
Parents: 5cc984b
Author: Massimo Lusetti <ml...@apache.org>
Authored: Sat Aug 3 13:55:47 2013 +0200
Committer: Massimo Lusetti <ml...@apache.org>
Committed: Sat Aug 3 13:55:47 2013 +0200
----------------------------------------------------------------------
.../org/apache/tapestry5/internal/transform/OnEventWorker.java | 6 ++++++
1 file changed, 6 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/8640a40f/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/OnEventWorker.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/OnEventWorker.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/OnEventWorker.java
index 234f7db..06f3a1d 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/OnEventWorker.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/OnEventWorker.java
@@ -132,6 +132,8 @@ public class OnEventWorker implements ComponentClassTransformWorker2
int minContextValues = 0;
+ boolean handleActivationEventContext = false;
+
EventHandlerMethod(PlasticMethod method)
{
this.method = method;
@@ -220,6 +222,7 @@ public class OnEventWorker implements ComponentClassTransformWorker2
if (provider != null)
{
providers.add(provider);
+ this.handleActivationEventContext = true;
continue;
}
@@ -382,6 +385,9 @@ public class OnEventWorker implements ComponentClassTransformWorker2
method.buildMatchAndInvocation(builder, resultVariable);
model.addEventHandler(method.eventType);
+
+ if (method.handleActivationEventContext)
+ model.doHandleActivationEventContext();
}
builder.loadVariable(resultVariable).returnResult();
[07/10] git commit: TAP5-2070 hook the services into our IoC
Posted by ml...@apache.org.
TAP5-2070 hook the services into our IoC
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/6d702284
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/6d702284
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/6d702284
Branch: refs/heads/master
Commit: 6d70228460b0229aa106da356e98ba31ca0ecb36
Parents: 2db059c
Author: Massimo Lusetti <ml...@apache.org>
Authored: Sat Aug 3 14:04:45 2013 +0200
Committer: Massimo Lusetti <ml...@apache.org>
Committed: Sat Aug 3 14:04:45 2013 +0200
----------------------------------------------------------------------
.../main/java/org/apache/tapestry5/modules/InternalModule.java | 1 +
.../main/java/org/apache/tapestry5/modules/TapestryModule.java | 6 ++++++
2 files changed, 7 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/6d702284/tapestry-core/src/main/java/org/apache/tapestry5/modules/InternalModule.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/modules/InternalModule.java b/tapestry-core/src/main/java/org/apache/tapestry5/modules/InternalModule.java
index b78a4ff..f5e190b 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/modules/InternalModule.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/modules/InternalModule.java
@@ -69,6 +69,7 @@ public class InternalModule
binder.bind(InternalComponentInvalidationEventHub.class);
binder.bind(PageSource.class, PageSourceImpl.class);
binder.bind(PageLoader.class, PageLoaderImpl.class).preventReloading();
+ binder.bind(UnknownActivationContextHandler.class, UnknownActivationContextHandlerImpl.class);
}
public static CookieSource buildCookieSource(final RequestGlobals requestGlobals)
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/6d702284/tapestry-core/src/main/java/org/apache/tapestry5/modules/TapestryModule.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/modules/TapestryModule.java b/tapestry-core/src/main/java/org/apache/tapestry5/modules/TapestryModule.java
index 1620d02..17ddbeb 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/modules/TapestryModule.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/modules/TapestryModule.java
@@ -45,6 +45,7 @@ import org.apache.tapestry5.internal.services.messages.PropertiesFileParserImpl;
import org.apache.tapestry5.internal.services.meta.ContentTypeExtractor;
import org.apache.tapestry5.internal.services.meta.MetaAnnotationExtractor;
import org.apache.tapestry5.internal.services.meta.MetaWorkerImpl;
+import org.apache.tapestry5.internal.services.meta.UnknownActivationContextExtractor;
import org.apache.tapestry5.internal.services.security.ClientWhitelistImpl;
import org.apache.tapestry5.internal.services.security.LocalhostOnly;
import org.apache.tapestry5.internal.services.templates.DefaultTemplateLocator;
@@ -2084,6 +2085,10 @@ public final class TapestryModule
configuration.add(SymbolConstants.BOOTSTRAP_ROOT, "${tapestry.asset.root}/bootstrap_2_3_2");
configuration.add(SymbolConstants.SESSION_LOCKING_ENABLED, true);
+
+ // TAP5-2070 keep the old behavior, defaults to false
+ configuration.add(MetaDataConstants.UNKNOWN_ACTIVATION_CONTEXT_CHECK, false);
+
}
/**
@@ -2464,6 +2469,7 @@ public final class TapestryModule
configuration.add(Secure.class, new FixedExtractor(MetaDataConstants.SECURE_PAGE));
configuration.addInstance(ContentType.class, ContentTypeExtractor.class);
configuration.add(WhitelistAccessOnly.class, new FixedExtractor(MetaDataConstants.WHITELIST_ONLY_PAGE));
+ configuration.addInstance(UnknownActivationContextCheck.class, UnknownActivationContextExtractor.class);
}
/**
[03/10] git commit: TAP5-2070 have the component model be able to
declare if it handle the activation context
Posted by ml...@apache.org.
TAP5-2070 have the component model be able to declare if it handle the activation context
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/5cc984b2
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/5cc984b2
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/5cc984b2
Branch: refs/heads/master
Commit: 5cc984b2c826e619d1dcdb52704bdffca263a97e
Parents: 8fecc8e
Author: Massimo Lusetti <ml...@apache.org>
Authored: Sat Aug 3 13:54:24 2013 +0200
Committer: Massimo Lusetti <ml...@apache.org>
Committed: Sat Aug 3 13:54:24 2013 +0200
----------------------------------------------------------------------
.../internal/model/MutableComponentModelImpl.java | 15 +++++++++++++++
1 file changed, 15 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/5cc984b2/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableComponentModelImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableComponentModelImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableComponentModelImpl.java
index 12691f4..a78366d 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableComponentModelImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableComponentModelImpl.java
@@ -69,6 +69,8 @@ public final class MutableComponentModelImpl implements MutableComponentModel
private final String libraryName;
+ private boolean handleActivationEventContext;
+
public MutableComponentModelImpl(String componentClassName, Logger logger, Resource baseResource,
ComponentModel parentModel, boolean pageClass, String libraryName)
{
@@ -79,6 +81,9 @@ public final class MutableComponentModelImpl implements MutableComponentModel
this.pageClass = pageClass;
this.libraryName = libraryName;
+ // Default to false, explicitly set during page transformation
+ this.handleActivationEventContext = false;
+
// Pre-allocate names from the parent, to avoid name collisions.
if (this.parentModel != null)
@@ -394,4 +399,14 @@ public final class MutableComponentModelImpl implements MutableComponentModel
{
return pageClass;
}
+
+ public void doHandleActivationEventContext()
+ {
+ this.handleActivationEventContext = true;
+ }
+
+ public boolean handleActivationEventContext()
+ {
+ return this.handleActivationEventContext;
+ }
}
[06/10] git commit: TAP5-2070 have the meta data constants used to
check each page's value
Posted by ml...@apache.org.
TAP5-2070 have the meta data constants used to check each page's value
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/2db059c0
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/2db059c0
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/2db059c0
Branch: refs/heads/master
Commit: 2db059c086ca5999889c3b06f4852cf491e5f78b
Parents: 3054fd6
Author: Massimo Lusetti <ml...@apache.org>
Authored: Sat Aug 3 14:04:01 2013 +0200
Committer: Massimo Lusetti <ml...@apache.org>
Committed: Sat Aug 3 14:04:01 2013 +0200
----------------------------------------------------------------------
.../src/main/java/org/apache/tapestry5/MetaDataConstants.java | 7 +++++++
1 file changed, 7 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/2db059c0/tapestry-core/src/main/java/org/apache/tapestry5/MetaDataConstants.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/MetaDataConstants.java b/tapestry-core/src/main/java/org/apache/tapestry5/MetaDataConstants.java
index c4baddb..be9a2f9 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/MetaDataConstants.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/MetaDataConstants.java
@@ -43,4 +43,11 @@ public class MetaDataConstants
* @since 5.3
*/
public static final String WHITELIST_ONLY_PAGE = "tapestry.white-list-only-page";
+
+ /**
+ * Meta data key applied to pages that may only be accessed with a exact activation context.
+ *
+ * @since 5.4
+ */
+ public static final String UNKNOWN_ACTIVATION_CONTEXT_CHECK = "tapestry.unknwon-activation-context-check";
}
[02/10] git commit: TAP5-2070 annotation and service response handler
to get access to page with exact activation context
Posted by ml...@apache.org.
TAP5-2070 annotation and service response handler to get access to page with exact activation context
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/8fecc8e1
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/8fecc8e1
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/8fecc8e1
Branch: refs/heads/master
Commit: 8fecc8e18e46919387dae2683ebc231f6beb1a74
Parents: 84d26fd
Author: Massimo Lusetti <ml...@apache.org>
Authored: Sat Aug 3 13:52:30 2013 +0200
Committer: Massimo Lusetti <ml...@apache.org>
Committed: Sat Aug 3 13:52:30 2013 +0200
----------------------------------------------------------------------
.../UnknownActivationContextCheck.java | 48 +++++++++++++++++
.../UnknownActivationContextHandler.java | 41 ++++++++++++++
.../UnknownActivationContextHandlerImpl.java | 57 ++++++++++++++++++++
.../meta/UnknownActivationContextExtractor.java | 29 ++++++++++
4 files changed, 175 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/8fecc8e1/tapestry-core/src/main/java/org/apache/tapestry5/annotations/UnknownActivationContextCheck.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/annotations/UnknownActivationContextCheck.java b/tapestry-core/src/main/java/org/apache/tapestry5/annotations/UnknownActivationContextCheck.java
new file mode 100644
index 0000000..7752693
--- /dev/null
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/annotations/UnknownActivationContextCheck.java
@@ -0,0 +1,48 @@
+// Copyright 2008, 2009 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.tapestry5.annotations;
+
+import org.apache.tapestry5.ioc.annotations.AnnotationUseContext;
+import org.apache.tapestry5.ioc.annotations.UseWith;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * A marker annotation that indicates that the page in question may only be accessed with a exact actvation context.
+ *
+ * @see org.apache.tapestry5.MetaDataConstants#UNKNOWN_ACTIVATION_CONTEXT_CHECK
+ * @since 5.4
+ */
+@Target(TYPE)
+@Retention(RUNTIME)
+@Documented
+@UseWith(AnnotationUseContext.PAGE)
+public @interface UnknownActivationContextCheck
+{
+ /**
+ * If <code>true</code>, the default, the framework will check for an exact (number and type of parameters)
+ * activation context method and if not found will respond with a 404 Not Found status code, if <code>false</code>
+ * the activation context is ignored as it was before 5.4 release.
+ *
+ * @see org.apache.tapestry5.MetaDataConstants#UNKNOWN_ACTIVATION_CONTEXT_CHECK
+ * @see org.apache.tapestry5.services.HttpError
+ */
+ boolean value() default true;
+}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/8fecc8e1/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/UnknownActivationContextHandler.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/UnknownActivationContextHandler.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/UnknownActivationContextHandler.java
new file mode 100644
index 0000000..1bc0d5b
--- /dev/null
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/UnknownActivationContextHandler.java
@@ -0,0 +1,41 @@
+// Copyright 2030 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.tapestry5.internal.services;
+
+import org.apache.tapestry5.ComponentResources;
+import org.apache.tapestry5.EventContext;
+
+import java.io.IOException;
+
+/**
+ * Responsible for handling the response for a page called with an unknown activation context when the check itself is
+ * enabled.
+ * The default implementation is to respond with a 404 NOT FOUND.
+ *
+ * @see http://issues.apache.org/jira/browse/TAP5-2070
+ * @see org.apache.tapestry5.annotations.UnknownActivationContextCheck
+ * @see org.apache.tapestry5.services.HttpError
+ *
+ * @since 5.4
+ */
+public interface UnknownActivationContextHandler
+{
+ /**
+ * Answer the client in the case of a request coming in with an unknown activation context.
+ */
+ @SuppressWarnings("unchecked")
+ void handleUnknownContext(ComponentResources pageResources, EventContext activationContext)
+ throws IOException;
+}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/8fecc8e1/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/UnknownActivationContextHandlerImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/UnknownActivationContextHandlerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/UnknownActivationContextHandlerImpl.java
new file mode 100644
index 0000000..6b33595
--- /dev/null
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/UnknownActivationContextHandlerImpl.java
@@ -0,0 +1,57 @@
+// Copyright 2030 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.tapestry5.internal.services;
+
+import org.apache.tapestry5.ComponentResources;
+import org.apache.tapestry5.EventContext;
+import org.apache.tapestry5.ioc.annotations.Primary;
+import org.apache.tapestry5.services.ComponentEventResultProcessor;
+import org.apache.tapestry5.services.HttpError;
+import org.apache.tapestry5.services.Traditional;
+import org.slf4j.Logger;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * Default implementation for {@link UnknownActivationContextHandler} which answer with a 404 NOT FOUND error.
+ */
+public class UnknownActivationContextHandlerImpl implements UnknownActivationContextHandler
+{
+ private final Logger logger;
+
+ private final ComponentEventResultProcessor resultProcessor;
+
+
+ public UnknownActivationContextHandlerImpl(Logger logger,
+ @Traditional @Primary
+ ComponentEventResultProcessor resultProcessor)
+ {
+ this.logger = logger;
+ this.resultProcessor = resultProcessor;
+ }
+
+ public void handleUnknownContext(ComponentResources pageResources, EventContext activationContext)
+ throws IOException
+ {
+ logger.warn("Activate event on page {} was fired with context {} but was not handled",
+ pageResources.getPage().getClass(), activationContext);
+
+ String message = String.format("Activation context %s unrecognized for page %s",
+ activationContext, pageResources.getPage().getClass());
+
+ resultProcessor.processResultValue(new HttpError(HttpServletResponse.SC_NOT_FOUND, message));
+ }
+}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/8fecc8e1/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/meta/UnknownActivationContextExtractor.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/meta/UnknownActivationContextExtractor.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/meta/UnknownActivationContextExtractor.java
new file mode 100644
index 0000000..ee03175
--- /dev/null
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/meta/UnknownActivationContextExtractor.java
@@ -0,0 +1,29 @@
+// Copyright 2010 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.tapestry5.internal.services.meta;
+
+import org.apache.tapestry5.MetaDataConstants;
+import org.apache.tapestry5.annotations.ContentType;
+import org.apache.tapestry5.annotations.UnknownActivationContextCheck;
+import org.apache.tapestry5.model.MutableComponentModel;
+import org.apache.tapestry5.services.meta.MetaDataExtractor;
+
+public class UnknownActivationContextExtractor implements MetaDataExtractor<UnknownActivationContextCheck>
+{
+ public void extractMetaData(MutableComponentModel model, UnknownActivationContextCheck annotation)
+ {
+ model.setMeta(MetaDataConstants.UNKNOWN_ACTIVATION_CONTEXT_CHECK, Boolean.toString(annotation.value()));
+ }
+}
[10/10] git commit: TAP5-2070 actual test pages
Posted by ml...@apache.org.
TAP5-2070 actual test pages
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/c13ed060
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/c13ed060
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/c13ed060
Branch: refs/heads/master
Commit: c13ed06021cf280ba43b7cd6053ca88da8230b55
Parents: 6762367
Author: Massimo Lusetti <ml...@apache.org>
Authored: Sat Aug 3 14:07:48 2013 +0200
Committer: Massimo Lusetti <ml...@apache.org>
Committed: Sat Aug 3 14:07:48 2013 +0200
----------------------------------------------------------------------
.../app1/UnknownActivationContextTests.groovy | 13 +++++++++++
.../pages/UnknownActivationContextDemo.java | 24 ++++++++++++++++++++
.../app1/pages/UnknownActivationContextDemo.tml | 10 ++++++++
3 files changed, 47 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/c13ed060/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/UnknownActivationContextTests.groovy
----------------------------------------------------------------------
diff --git a/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/UnknownActivationContextTests.groovy b/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/UnknownActivationContextTests.groovy
new file mode 100644
index 0000000..5a2fd3d
--- /dev/null
+++ b/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/UnknownActivationContextTests.groovy
@@ -0,0 +1,13 @@
+package org.apache.tapestry5.integration.app1
+
+import org.apache.tapestry5.test.SeleniumTestCase
+import org.testng.annotations.Test
+
+class UnknownActivationContextTests extends SeleniumTestCase
+{
+ // @Test
+ void http_status_code_test_for_unknown_activation_context_case()
+ {
+ // TODO Use a workaround Selenium limitation to check http status code
+ }
+}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/c13ed060/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/UnknownActivationContextDemo.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/UnknownActivationContextDemo.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/UnknownActivationContextDemo.java
new file mode 100644
index 0000000..368f159
--- /dev/null
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/UnknownActivationContextDemo.java
@@ -0,0 +1,24 @@
+// 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.tapestry5.integration.app1.pages;
+
+import org.apache.tapestry5.annotations.UnknownActivationContextCheck;
+
+@UnknownActivationContextCheck
+public class UnknownActivationContextDemo
+{
+
+}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/c13ed060/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/UnknownActivationContextDemo.tml
----------------------------------------------------------------------
diff --git a/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/UnknownActivationContextDemo.tml b/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/UnknownActivationContextDemo.tml
new file mode 100644
index 0000000..a168227
--- /dev/null
+++ b/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/UnknownActivationContextDemo.tml
@@ -0,0 +1,10 @@
+<html t:type="Border"
+ xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
+
+ <h1>Page called with an unknown activation context</h1>
+
+ <p>
+ You should never see me if use an activation context
+ </p>
+
+</html>
\ No newline at end of file
[05/10] git commit: TAP5-2070 publish new method to let other code
check for activation context handling
Posted by ml...@apache.org.
TAP5-2070 publish new method to let other code check for activation context handling
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/3054fd6e
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/3054fd6e
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/3054fd6e
Branch: refs/heads/master
Commit: 3054fd6ee8ec8c3e8936838c5512780c84ea8598
Parents: 8640a40
Author: Massimo Lusetti <ml...@apache.org>
Authored: Sat Aug 3 14:03:16 2013 +0200
Committer: Massimo Lusetti <ml...@apache.org>
Committed: Sat Aug 3 14:03:16 2013 +0200
----------------------------------------------------------------------
54_RELEASE_NOTES.txt | 5 +++++
.../org/apache/tapestry5/model/ComponentModel.java | 11 +++++++++++
.../apache/tapestry5/model/MutableComponentModel.java | 13 +++++++++++++
3 files changed, 29 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/3054fd6e/54_RELEASE_NOTES.txt
----------------------------------------------------------------------
diff --git a/54_RELEASE_NOTES.txt b/54_RELEASE_NOTES.txt
index 6255469..fe4298c 100644
--- a/54_RELEASE_NOTES.txt
+++ b/54_RELEASE_NOTES.txt
@@ -257,6 +257,11 @@ It has been moved to package org.apache.tapestry5; this represents a minor incom
StreamableResource has been modified, adding a new `getChecksum()` method; this interface is rarely, if ever,
used or implemented by application code.
+## MutableComponentModel Extended
+
+MutableComponentModel has been modified, adding a new ` doHandleActivationEventContext()' method to help check
+activation context exactness; this interface is rarely, if ever, used or implemented by application code
+
## Module classes moved to new modules
Traditionally, Tapestry IoC Module classes have lived in the same package as the service interfaces they define, and
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/3054fd6e/tapestry-core/src/main/java/org/apache/tapestry5/model/ComponentModel.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/model/ComponentModel.java b/tapestry-core/src/main/java/org/apache/tapestry5/model/ComponentModel.java
index 04d5d3d..f19c018 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/model/ComponentModel.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/model/ComponentModel.java
@@ -211,4 +211,15 @@ public interface ComponentModel
* @since 5.2.0
*/
String[] getOrderForMixin(String mixinClassName);
+
+ /**
+ * Relevant for pages only, indicates that the component handle the {@link org.apache.tapestry5.EventConstants.ACTIVATE}
+ * events with a catch all rules
+ *
+ * @since 5.4
+ * @see {@link MutableComponentModel.doHandleActivationEventContext()}
+ * @return <code>true</code> in case the page implement a catch all rules for the activate event context,
+ * <code>false</code> otherwise
+ */
+ boolean handleActivationEventContext();
}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/3054fd6e/tapestry-core/src/main/java/org/apache/tapestry5/model/MutableComponentModel.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/model/MutableComponentModel.java b/tapestry-core/src/main/java/org/apache/tapestry5/model/MutableComponentModel.java
index 227eec9..c7f0477 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/model/MutableComponentModel.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/model/MutableComponentModel.java
@@ -120,4 +120,17 @@ public interface MutableComponentModel extends ComponentModel
* @since 5.1.0.0
*/
void addEventHandler(String eventType);
+
+ /**
+ * Relevant for pages only, identifies that the component handle {@link org.apache.tapestry5.EventConstants.ACTIVATE}
+ * events supporting one of the three special case for catch all rules:
+ * <ul>
+ * <li><code>{@link java.lang.Object}[]</code></li>
+ * <li><code>{@link java.util.List}</code></li>
+ * <li><code>{@link org.apache.tapestry5.EventContext}</code></li>
+ * </ul>
+ *
+ * @since 5.4
+ */
+ void doHandleActivationEventContext();
}
[07/10] git commit: TAP5-2070 hook the services into our IoC
Posted by ml...@apache.org.
TAP5-2070 hook the services into our IoC
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/6d702284
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/6d702284
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/6d702284
Branch: refs/heads/master
Commit: 6d70228460b0229aa106da356e98ba31ca0ecb36
Parents: 2db059c
Author: Massimo Lusetti <ml...@apache.org>
Authored: Sat Aug 3 14:04:45 2013 +0200
Committer: Massimo Lusetti <ml...@apache.org>
Committed: Sat Aug 3 14:04:45 2013 +0200
----------------------------------------------------------------------
.../main/java/org/apache/tapestry5/modules/InternalModule.java | 1 +
.../main/java/org/apache/tapestry5/modules/TapestryModule.java | 6 ++++++
2 files changed, 7 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/6d702284/tapestry-core/src/main/java/org/apache/tapestry5/modules/InternalModule.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/modules/InternalModule.java b/tapestry-core/src/main/java/org/apache/tapestry5/modules/InternalModule.java
index b78a4ff..f5e190b 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/modules/InternalModule.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/modules/InternalModule.java
@@ -69,6 +69,7 @@ public class InternalModule
binder.bind(InternalComponentInvalidationEventHub.class);
binder.bind(PageSource.class, PageSourceImpl.class);
binder.bind(PageLoader.class, PageLoaderImpl.class).preventReloading();
+ binder.bind(UnknownActivationContextHandler.class, UnknownActivationContextHandlerImpl.class);
}
public static CookieSource buildCookieSource(final RequestGlobals requestGlobals)
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/6d702284/tapestry-core/src/main/java/org/apache/tapestry5/modules/TapestryModule.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/modules/TapestryModule.java b/tapestry-core/src/main/java/org/apache/tapestry5/modules/TapestryModule.java
index 1620d02..17ddbeb 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/modules/TapestryModule.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/modules/TapestryModule.java
@@ -45,6 +45,7 @@ import org.apache.tapestry5.internal.services.messages.PropertiesFileParserImpl;
import org.apache.tapestry5.internal.services.meta.ContentTypeExtractor;
import org.apache.tapestry5.internal.services.meta.MetaAnnotationExtractor;
import org.apache.tapestry5.internal.services.meta.MetaWorkerImpl;
+import org.apache.tapestry5.internal.services.meta.UnknownActivationContextExtractor;
import org.apache.tapestry5.internal.services.security.ClientWhitelistImpl;
import org.apache.tapestry5.internal.services.security.LocalhostOnly;
import org.apache.tapestry5.internal.services.templates.DefaultTemplateLocator;
@@ -2084,6 +2085,10 @@ public final class TapestryModule
configuration.add(SymbolConstants.BOOTSTRAP_ROOT, "${tapestry.asset.root}/bootstrap_2_3_2");
configuration.add(SymbolConstants.SESSION_LOCKING_ENABLED, true);
+
+ // TAP5-2070 keep the old behavior, defaults to false
+ configuration.add(MetaDataConstants.UNKNOWN_ACTIVATION_CONTEXT_CHECK, false);
+
}
/**
@@ -2464,6 +2469,7 @@ public final class TapestryModule
configuration.add(Secure.class, new FixedExtractor(MetaDataConstants.SECURE_PAGE));
configuration.addInstance(ContentType.class, ContentTypeExtractor.class);
configuration.add(WhitelistAccessOnly.class, new FixedExtractor(MetaDataConstants.WHITELIST_ONLY_PAGE));
+ configuration.addInstance(UnknownActivationContextCheck.class, UnknownActivationContextExtractor.class);
}
/**
[02/10] git commit: TAP5-2070 annotation and service response handler
to get access to page with exact activation context
Posted by ml...@apache.org.
TAP5-2070 annotation and service response handler to get access to page with exact activation context
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/8fecc8e1
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/8fecc8e1
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/8fecc8e1
Branch: refs/heads/master
Commit: 8fecc8e18e46919387dae2683ebc231f6beb1a74
Parents: 84d26fd
Author: Massimo Lusetti <ml...@apache.org>
Authored: Sat Aug 3 13:52:30 2013 +0200
Committer: Massimo Lusetti <ml...@apache.org>
Committed: Sat Aug 3 13:52:30 2013 +0200
----------------------------------------------------------------------
.../UnknownActivationContextCheck.java | 48 +++++++++++++++++
.../UnknownActivationContextHandler.java | 41 ++++++++++++++
.../UnknownActivationContextHandlerImpl.java | 57 ++++++++++++++++++++
.../meta/UnknownActivationContextExtractor.java | 29 ++++++++++
4 files changed, 175 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/8fecc8e1/tapestry-core/src/main/java/org/apache/tapestry5/annotations/UnknownActivationContextCheck.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/annotations/UnknownActivationContextCheck.java b/tapestry-core/src/main/java/org/apache/tapestry5/annotations/UnknownActivationContextCheck.java
new file mode 100644
index 0000000..7752693
--- /dev/null
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/annotations/UnknownActivationContextCheck.java
@@ -0,0 +1,48 @@
+// Copyright 2008, 2009 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.tapestry5.annotations;
+
+import org.apache.tapestry5.ioc.annotations.AnnotationUseContext;
+import org.apache.tapestry5.ioc.annotations.UseWith;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * A marker annotation that indicates that the page in question may only be accessed with a exact actvation context.
+ *
+ * @see org.apache.tapestry5.MetaDataConstants#UNKNOWN_ACTIVATION_CONTEXT_CHECK
+ * @since 5.4
+ */
+@Target(TYPE)
+@Retention(RUNTIME)
+@Documented
+@UseWith(AnnotationUseContext.PAGE)
+public @interface UnknownActivationContextCheck
+{
+ /**
+ * If <code>true</code>, the default, the framework will check for an exact (number and type of parameters)
+ * activation context method and if not found will respond with a 404 Not Found status code, if <code>false</code>
+ * the activation context is ignored as it was before 5.4 release.
+ *
+ * @see org.apache.tapestry5.MetaDataConstants#UNKNOWN_ACTIVATION_CONTEXT_CHECK
+ * @see org.apache.tapestry5.services.HttpError
+ */
+ boolean value() default true;
+}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/8fecc8e1/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/UnknownActivationContextHandler.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/UnknownActivationContextHandler.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/UnknownActivationContextHandler.java
new file mode 100644
index 0000000..1bc0d5b
--- /dev/null
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/UnknownActivationContextHandler.java
@@ -0,0 +1,41 @@
+// Copyright 2030 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.tapestry5.internal.services;
+
+import org.apache.tapestry5.ComponentResources;
+import org.apache.tapestry5.EventContext;
+
+import java.io.IOException;
+
+/**
+ * Responsible for handling the response for a page called with an unknown activation context when the check itself is
+ * enabled.
+ * The default implementation is to respond with a 404 NOT FOUND.
+ *
+ * @see http://issues.apache.org/jira/browse/TAP5-2070
+ * @see org.apache.tapestry5.annotations.UnknownActivationContextCheck
+ * @see org.apache.tapestry5.services.HttpError
+ *
+ * @since 5.4
+ */
+public interface UnknownActivationContextHandler
+{
+ /**
+ * Answer the client in the case of a request coming in with an unknown activation context.
+ */
+ @SuppressWarnings("unchecked")
+ void handleUnknownContext(ComponentResources pageResources, EventContext activationContext)
+ throws IOException;
+}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/8fecc8e1/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/UnknownActivationContextHandlerImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/UnknownActivationContextHandlerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/UnknownActivationContextHandlerImpl.java
new file mode 100644
index 0000000..6b33595
--- /dev/null
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/UnknownActivationContextHandlerImpl.java
@@ -0,0 +1,57 @@
+// Copyright 2030 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.tapestry5.internal.services;
+
+import org.apache.tapestry5.ComponentResources;
+import org.apache.tapestry5.EventContext;
+import org.apache.tapestry5.ioc.annotations.Primary;
+import org.apache.tapestry5.services.ComponentEventResultProcessor;
+import org.apache.tapestry5.services.HttpError;
+import org.apache.tapestry5.services.Traditional;
+import org.slf4j.Logger;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * Default implementation for {@link UnknownActivationContextHandler} which answer with a 404 NOT FOUND error.
+ */
+public class UnknownActivationContextHandlerImpl implements UnknownActivationContextHandler
+{
+ private final Logger logger;
+
+ private final ComponentEventResultProcessor resultProcessor;
+
+
+ public UnknownActivationContextHandlerImpl(Logger logger,
+ @Traditional @Primary
+ ComponentEventResultProcessor resultProcessor)
+ {
+ this.logger = logger;
+ this.resultProcessor = resultProcessor;
+ }
+
+ public void handleUnknownContext(ComponentResources pageResources, EventContext activationContext)
+ throws IOException
+ {
+ logger.warn("Activate event on page {} was fired with context {} but was not handled",
+ pageResources.getPage().getClass(), activationContext);
+
+ String message = String.format("Activation context %s unrecognized for page %s",
+ activationContext, pageResources.getPage().getClass());
+
+ resultProcessor.processResultValue(new HttpError(HttpServletResponse.SC_NOT_FOUND, message));
+ }
+}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/8fecc8e1/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/meta/UnknownActivationContextExtractor.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/meta/UnknownActivationContextExtractor.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/meta/UnknownActivationContextExtractor.java
new file mode 100644
index 0000000..ee03175
--- /dev/null
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/meta/UnknownActivationContextExtractor.java
@@ -0,0 +1,29 @@
+// Copyright 2010 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.tapestry5.internal.services.meta;
+
+import org.apache.tapestry5.MetaDataConstants;
+import org.apache.tapestry5.annotations.ContentType;
+import org.apache.tapestry5.annotations.UnknownActivationContextCheck;
+import org.apache.tapestry5.model.MutableComponentModel;
+import org.apache.tapestry5.services.meta.MetaDataExtractor;
+
+public class UnknownActivationContextExtractor implements MetaDataExtractor<UnknownActivationContextCheck>
+{
+ public void extractMetaData(MutableComponentModel model, UnknownActivationContextCheck annotation)
+ {
+ model.setMeta(MetaDataConstants.UNKNOWN_ACTIVATION_CONTEXT_CHECK, Boolean.toString(annotation.value()));
+ }
+}
[05/10] git commit: TAP5-2070 publish new method to let other code
check for activation context handling
Posted by ml...@apache.org.
TAP5-2070 publish new method to let other code check for activation context handling
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/3054fd6e
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/3054fd6e
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/3054fd6e
Branch: refs/heads/master
Commit: 3054fd6ee8ec8c3e8936838c5512780c84ea8598
Parents: 8640a40
Author: Massimo Lusetti <ml...@apache.org>
Authored: Sat Aug 3 14:03:16 2013 +0200
Committer: Massimo Lusetti <ml...@apache.org>
Committed: Sat Aug 3 14:03:16 2013 +0200
----------------------------------------------------------------------
54_RELEASE_NOTES.txt | 5 +++++
.../org/apache/tapestry5/model/ComponentModel.java | 11 +++++++++++
.../apache/tapestry5/model/MutableComponentModel.java | 13 +++++++++++++
3 files changed, 29 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/3054fd6e/54_RELEASE_NOTES.txt
----------------------------------------------------------------------
diff --git a/54_RELEASE_NOTES.txt b/54_RELEASE_NOTES.txt
index 6255469..fe4298c 100644
--- a/54_RELEASE_NOTES.txt
+++ b/54_RELEASE_NOTES.txt
@@ -257,6 +257,11 @@ It has been moved to package org.apache.tapestry5; this represents a minor incom
StreamableResource has been modified, adding a new `getChecksum()` method; this interface is rarely, if ever,
used or implemented by application code.
+## MutableComponentModel Extended
+
+MutableComponentModel has been modified, adding a new ` doHandleActivationEventContext()' method to help check
+activation context exactness; this interface is rarely, if ever, used or implemented by application code
+
## Module classes moved to new modules
Traditionally, Tapestry IoC Module classes have lived in the same package as the service interfaces they define, and
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/3054fd6e/tapestry-core/src/main/java/org/apache/tapestry5/model/ComponentModel.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/model/ComponentModel.java b/tapestry-core/src/main/java/org/apache/tapestry5/model/ComponentModel.java
index 04d5d3d..f19c018 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/model/ComponentModel.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/model/ComponentModel.java
@@ -211,4 +211,15 @@ public interface ComponentModel
* @since 5.2.0
*/
String[] getOrderForMixin(String mixinClassName);
+
+ /**
+ * Relevant for pages only, indicates that the component handle the {@link org.apache.tapestry5.EventConstants.ACTIVATE}
+ * events with a catch all rules
+ *
+ * @since 5.4
+ * @see {@link MutableComponentModel.doHandleActivationEventContext()}
+ * @return <code>true</code> in case the page implement a catch all rules for the activate event context,
+ * <code>false</code> otherwise
+ */
+ boolean handleActivationEventContext();
}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/3054fd6e/tapestry-core/src/main/java/org/apache/tapestry5/model/MutableComponentModel.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/model/MutableComponentModel.java b/tapestry-core/src/main/java/org/apache/tapestry5/model/MutableComponentModel.java
index 227eec9..c7f0477 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/model/MutableComponentModel.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/model/MutableComponentModel.java
@@ -120,4 +120,17 @@ public interface MutableComponentModel extends ComponentModel
* @since 5.1.0.0
*/
void addEventHandler(String eventType);
+
+ /**
+ * Relevant for pages only, identifies that the component handle {@link org.apache.tapestry5.EventConstants.ACTIVATE}
+ * events supporting one of the three special case for catch all rules:
+ * <ul>
+ * <li><code>{@link java.lang.Object}[]</code></li>
+ * <li><code>{@link java.util.List}</code></li>
+ * <li><code>{@link org.apache.tapestry5.EventContext}</code></li>
+ * </ul>
+ *
+ * @since 5.4
+ */
+ void doHandleActivationEventContext();
}
[08/10] git commit: TAP5-2070 check each page for
UnknownActivationContext annotation
Posted by ml...@apache.org.
TAP5-2070 check each page for UnknownActivationContext annotation
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/d1fabecc
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/d1fabecc
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/d1fabecc
Branch: refs/heads/master
Commit: d1fabecccf7bd81d0dae8eefda055cf02ee4f981
Parents: 6d70228
Author: Massimo Lusetti <ml...@apache.org>
Authored: Sat Aug 3 14:06:27 2013 +0200
Committer: Massimo Lusetti <ml...@apache.org>
Committed: Sat Aug 3 14:06:27 2013 +0200
----------------------------------------------------------------------
.../pageload/ComponentAssemblerImpl.java | 8 +++--
.../internal/pageload/PageLoaderImpl.java | 7 ++--
.../internal/services/ComponentEventImpl.java | 19 ++++++++--
.../DefaultRequestExceptionHandler.java | 3 +-
.../internal/services/PageActivatorImpl.java | 38 +++++++++++++++++---
.../structure/ComponentPageElementImpl.java | 25 +++++++++----
6 files changed, 80 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/d1fabecc/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssemblerImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssemblerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssemblerImpl.java
index b56b81c..3e3f27c 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssemblerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssemblerImpl.java
@@ -32,6 +32,7 @@ import org.apache.tapestry5.model.ComponentModel;
import org.apache.tapestry5.model.EmbeddedComponentModel;
import org.apache.tapestry5.runtime.RenderCommand;
import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.MetaDataLocator;
import org.apache.tapestry5.services.Request;
import org.apache.tapestry5.services.pageload.ComponentResourceSelector;
@@ -60,6 +61,8 @@ class ComponentAssemblerImpl implements ComponentAssembler
private final SymbolSource symbolSource;
+ private final MetaDataLocator metaDataLocator;
+
private Map<String, String> publishedParameterToEmbeddedId;
private Map<String, EmbeddedComponentAssembler> embeddedIdToAssembler;
@@ -67,7 +70,7 @@ class ComponentAssemblerImpl implements ComponentAssembler
public ComponentAssemblerImpl(ComponentAssemblerSource assemblerSource,
ComponentInstantiatorSource instantiatorSource, ComponentClassResolver componentClassResolver,
Instantiator instantiator, ComponentPageElementResources resources, OperationTracker tracker,
- Request request, SymbolSource symbolSource)
+ Request request, SymbolSource symbolSource, MetaDataLocator metaDataLocator)
{
this.assemblerSource = assemblerSource;
this.instantiatorSource = instantiatorSource;
@@ -77,6 +80,7 @@ class ComponentAssemblerImpl implements ComponentAssembler
this.tracker = tracker;
this.request = request;
this.symbolSource = symbolSource;
+ this.metaDataLocator = metaDataLocator;
}
public ComponentPageElement assembleRootComponent(final Page page)
@@ -103,7 +107,7 @@ class ComponentAssemblerImpl implements ComponentAssembler
pageAssembly.weight++;
ComponentPageElement newElement = new ComponentPageElementImpl(pageAssembly.page, instantiator, resources,
- request, symbolSource);
+ request, symbolSource, metaDataLocator);
pageAssembly.componentName.push(new ComponentName(pageAssembly.page.getName()));
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/d1fabecc/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java
index f54f42e..2f976e2 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java
@@ -148,11 +148,13 @@ public class PageLoaderImpl implements PageLoader, ComponentAssemblerSource
private final Logger logger;
+ private final MetaDataLocator metaDataLocator;
+
public PageLoaderImpl(ComponentInstantiatorSource instantiatorSource, ComponentTemplateSource templateSource,
PageElementFactory elementFactory, ComponentPageElementResourcesSource resourcesSource,
ComponentClassResolver componentClassResolver, PersistentFieldManager persistentFieldManager,
StringInterner interner, OperationTracker tracker, PerthreadManager perThreadManager, Request request,
- SymbolSource symbolSource, Logger logger)
+ SymbolSource symbolSource, Logger logger, MetaDataLocator metaDataLocator)
{
this.instantiatorSource = instantiatorSource;
this.templateSource = templateSource;
@@ -166,6 +168,7 @@ public class PageLoaderImpl implements PageLoader, ComponentAssemblerSource
this.request = request;
this.symbolSource = symbolSource;
this.logger = logger;
+ this.metaDataLocator = metaDataLocator;
}
@PostInjection
@@ -263,7 +266,7 @@ public class PageLoaderImpl implements PageLoader, ComponentAssemblerSource
ComponentPageElementResources resources = resourcesSource.get(selector);
ComponentAssembler assembler = new ComponentAssemblerImpl(PageLoaderImpl.this, instantiatorSource,
- componentClassResolver, instantiator, resources, tracker, request, symbolSource);
+ componentClassResolver, instantiator, resources, tracker, request, symbolSource, metaDataLocator);
// "Program" the assembler by adding actions to it. The actions interact with a
// PageAssembly object (a fresh one for each new page being created).
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/d1fabecc/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventImpl.java
index 9cb0526..7de3120 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventImpl.java
@@ -17,6 +17,7 @@ package org.apache.tapestry5.internal.services;
import org.apache.tapestry5.ComponentEventCallback;
import org.apache.tapestry5.EventContext;
import org.apache.tapestry5.internal.structure.ComponentPageElementResources;
+import org.apache.tapestry5.model.ComponentModel;
import org.apache.tapestry5.runtime.ComponentEvent;
import org.slf4j.Logger;
@@ -30,6 +31,8 @@ public class ComponentEventImpl extends EventImpl implements ComponentEvent
private final ComponentPageElementResources elementResources;
+ private final boolean exactParameterCountMatch;
+
/**
* @param eventType
* non blank string used to identify the type of event that was triggered
@@ -41,11 +44,17 @@ public class ComponentEventImpl extends EventImpl implements ComponentEvent
* invoked when a non-null return value is obtained from an event handler method
* @param elementResources
* provides access to common resources and services
+ * @param exactParameterCountMatch
+ * the {@link org.apache.tapestry5.ioc.annotations.Symbol} indicating an exact match
+ * on parameter count in the {@link EventContext}.
+ * @param model
+ * the {@link ComponentModel} of the component originating the event.
* @param logger
* used to log method invocations
*/
public ComponentEventImpl(String eventType, String originatingComponentId, EventContext context,
- ComponentEventCallback handler, ComponentPageElementResources elementResources, Logger logger)
+ ComponentEventCallback handler, ComponentPageElementResources elementResources,
+ boolean exactParameterCountMatch, ComponentModel model, Logger logger)
{
super(handler, logger, elementResources);
@@ -53,6 +62,7 @@ public class ComponentEventImpl extends EventImpl implements ComponentEvent
this.originatingComponentId = originatingComponentId;
this.elementResources = elementResources;
this.context = context;
+ this.exactParameterCountMatch = exactParameterCountMatch && !model.handleActivationEventContext();
}
@Override
@@ -67,8 +77,11 @@ public class ComponentEventImpl extends EventImpl implements ComponentEvent
if (isAborted())
return false;
- return this.eventType.equalsIgnoreCase(eventType) && context.getCount() >= parameterCount
- && (originatingComponentId.equalsIgnoreCase(componentId) || componentId.equals(""));
+ boolean parameterCountMatch = exactParameterCountMatch ?
+ context.getCount() == parameterCount : context.getCount() >= parameterCount;
+
+ return this.eventType.equalsIgnoreCase(eventType) && parameterCountMatch
+ && (originatingComponentId.equalsIgnoreCase(componentId) || componentId.equals(""));
}
@SuppressWarnings("unchecked")
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/d1fabecc/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java
index 7cad70b..897b3b2 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java
@@ -93,7 +93,8 @@ public class DefaultRequestExceptionHandler implements RequestExceptionHandler
@Symbol(SymbolConstants.EXCEPTION_REPORT_PAGE)
String pageName,
- Request request, Response response, ComponentClassResolver componentClassResolver, LinkSource linkSource, ServiceResources serviceResources, Map<Class, Object> configuration)
+ Request request, Response response, ComponentClassResolver componentClassResolver,
+ LinkSource linkSource, ServiceResources serviceResources, Map<Class, Object> configuration)
{
this.pageCache = pageCache;
this.renderer = renderer;
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/d1fabecc/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageActivatorImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageActivatorImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageActivatorImpl.java
index e39b1b9..1304052 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageActivatorImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageActivatorImpl.java
@@ -16,14 +16,31 @@ package org.apache.tapestry5.internal.services;
import java.io.IOException;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.EventConstants;
-import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.TrackableComponentEventCallback;
+import org.apache.tapestry5.*;
+import org.apache.tapestry5.internal.EmptyEventContext;
+import org.apache.tapestry5.ioc.annotations.Symbol;
import org.apache.tapestry5.services.ComponentEventResultProcessor;
+import org.apache.tapestry5.services.HttpError;
+import org.apache.tapestry5.services.MetaDataLocator;
+import org.slf4j.Logger;
+
+import javax.servlet.http.HttpServletResponse;
public class PageActivatorImpl implements PageActivator
{
+ private final Logger logger;
+
+ private final MetaDataLocator metaDataLocator;
+
+ private final UnknownActivationContextHandler unknownActivationContextHandler;
+
+ public PageActivatorImpl(Logger logger, MetaDataLocator metaDataLocator,
+ UnknownActivationContextHandler unknownActivationContextHandler)
+ {
+ this.logger = logger;
+ this.metaDataLocator = metaDataLocator;
+ this.unknownActivationContextHandler = unknownActivationContextHandler;
+ }
@SuppressWarnings("unchecked")
public boolean activatePage(ComponentResources pageResources, EventContext activationContext,
@@ -31,7 +48,18 @@ public class PageActivatorImpl implements PageActivator
{
TrackableComponentEventCallback callback = new ComponentResultProcessorWrapper(resultProcessor);
- pageResources.triggerContextEvent(EventConstants.ACTIVATE, activationContext, callback);
+ boolean handled = pageResources.triggerContextEvent(EventConstants.ACTIVATE, activationContext, callback);
+
+ boolean checkUnknown = metaDataLocator.findMeta(MetaDataConstants.UNKNOWN_ACTIVATION_CONTEXT_CHECK,
+ pageResources, Boolean.class);
+
+ if ( !handled && activationContext.getCount() > 0 && checkUnknown &&
+ !pageResources.getComponentModel().handleActivationEventContext())
+ {
+ logger.info("Page {} required an exact activation context, let's handle this", pageResources.getPageName());
+ unknownActivationContextHandler.handleUnknownContext(pageResources, activationContext);
+ return true;
+ }
if (callback.isAborted())
{
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/d1fabecc/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementImpl.java
index ab7b0b5..26d6d03 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementImpl.java
@@ -39,6 +39,7 @@ import org.apache.tapestry5.model.ComponentModel;
import org.apache.tapestry5.model.ParameterModel;
import org.apache.tapestry5.runtime.Component;
import org.apache.tapestry5.runtime.*;
+import org.apache.tapestry5.services.MetaDataLocator;
import org.apache.tapestry5.services.Request;
import org.apache.tapestry5.services.pageload.ComponentResourceSelector;
import org.slf4j.Logger;
@@ -508,8 +509,11 @@ public class ComponentPageElementImpl extends BaseLocatable implements Component
// should be okay since it's a shadow service object
private final Request request;
private final SymbolSource symbolSource;
+ private final MetaDataLocator metaDataLocator;
+
private final boolean productionMode;
private final boolean componentTracingEnabled;
+ private final boolean exactParameterCountMatch;
// We know that, at the very least, there will be an element to force the component to render
// its body, so there's no reason to wait to initialize the list.
@@ -543,7 +547,8 @@ public class ComponentPageElementImpl extends BaseLocatable implements Component
*/
ComponentPageElementImpl(Page page, ComponentPageElement container, String id, String nestedId, String completeId,
String elementName, Instantiator instantiator, Location location,
- ComponentPageElementResources elementResources, Request request, SymbolSource symbolSource)
+ ComponentPageElementResources elementResources, Request request,
+ SymbolSource symbolSource, MetaDataLocator metaDataLocator)
{
super(location);
@@ -556,13 +561,17 @@ public class ComponentPageElementImpl extends BaseLocatable implements Component
this.elementResources = elementResources;
this.request = request;
this.symbolSource = symbolSource;
+ this.metaDataLocator = metaDataLocator;
// evaluate this once because it gets referenced a lot during rendering
this.productionMode = "true".equals(symbolSource.valueForSymbol(SymbolConstants.PRODUCTION_MODE));
this.componentTracingEnabled = "true".equals(symbolSource
.valueForSymbol(SymbolConstants.COMPONENT_RENDER_TRACING_ENABLED));
- ComponentResources containerResources = container == null ? null : container.getComponentResources();
+ this.exactParameterCountMatch = metaDataLocator.findMeta(MetaDataConstants.UNKNOWN_ACTIVATION_CONTEXT_CHECK,
+ page.getName(), Boolean.class);
+
+ ComponentResources containerResources = container == null ? null : container.getComponentResources();
coreResources = new InternalComponentResourcesImpl(this.page, this, containerResources, this.elementResources,
completeId, nestedId, instantiator, false);
@@ -586,9 +595,11 @@ public class ComponentPageElementImpl extends BaseLocatable implements Component
* Constructor for the root component of a page.
*/
public ComponentPageElementImpl(Page page, Instantiator instantiator,
- ComponentPageElementResources elementResources, Request request, SymbolSource symbolSource)
+ ComponentPageElementResources elementResources, Request request,
+ SymbolSource symbolSource, MetaDataLocator metaDataLocator)
{
- this(page, null, null, null, page.getName(), null, instantiator, null, elementResources, request, symbolSource);
+ this(page, null, null, null, page.getName(), null, instantiator, null, elementResources,
+ request, symbolSource, metaDataLocator);
}
private void initializeRenderPhases()
@@ -646,9 +657,9 @@ public class ComponentPageElementImpl extends BaseLocatable implements Component
Instantiator instantiator, Location location)
{
ComponentPageElementImpl child = new ComponentPageElementImpl(page, this, id, nestedId, completeId,
- elementName, instantiator, location, elementResources, request, symbolSource);
+ elementName, instantiator, location, elementResources, request, symbolSource, metaDataLocator);
- addEmbeddedElement(child);
+ addEmbeddedElement(child);
return child;
}
@@ -1109,7 +1120,7 @@ public class ComponentPageElementImpl extends BaseLocatable implements Component
Logger logger = component.getEventLogger();
ComponentEvent event = new ComponentEventImpl(currentEventType, componentId, currentContext, wrapped,
- elementResources, logger);
+ elementResources, exactParameterCountMatch, coreResources.getComponentModel(), logger);
logger.debug(TapestryMarkers.EVENT_DISPATCH, "Dispatch event: {}", event);
[09/10] git commit: TAP5-2070 test case to be expanded to use
something different then Selenium since it doesn't check http status code
Posted by ml...@apache.org.
TAP5-2070 test case to be expanded to use something different then Selenium since it doesn't check http status code
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/6762367c
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/6762367c
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/6762367c
Branch: refs/heads/master
Commit: 6762367c1f0369814089f3c0babdc93f71238094
Parents: d1fabec
Author: Massimo Lusetti <ml...@apache.org>
Authored: Sat Aug 3 14:07:01 2013 +0200
Committer: Massimo Lusetti <ml...@apache.org>
Committed: Sat Aug 3 14:07:01 2013 +0200
----------------------------------------------------------------------
.../tapestry5/integration/app1/pages/Index.java | 4 +++-
.../services/ComponentEventImplTest.java | 24 ++++++++++----------
.../structure/ComponentPageElementImplTest.java | 10 ++++----
3 files changed, 21 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/6762367c/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java
index 2142991..866ced7 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java
@@ -518,7 +518,9 @@ public class Index
new Item("OverrideLabelClassDemo", "Override Label Class Demo", "Setting class attribute on Label component"),
- new Item("FormLinkParameters", "FormLinkParameters Demo", "Form link parameters should be unescaped for a hidden field")
+ new Item("FormLinkParameters", "FormLinkParameters Demo", "Form link parameters should be unescaped for a hidden field"),
+
+ new Item("UnknownAtcivationContext", "Unknown Activation Context Demo", "Page refuse to serve if called with an unknown activation context")
);
static
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/6762367c/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventImplTest.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventImplTest.java
index 0d9d508..9eb353b 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventImplTest.java
@@ -62,7 +62,7 @@ public class ComponentEventImplTest extends InternalBaseTestCase
replay();
- ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, logger);
+ ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, false, mockComponentModel(), logger);
assertTrue(event.matches("eventType", "someId", 0));
assertFalse(event.matches("foo", "someId", 0));
@@ -88,7 +88,7 @@ public class ComponentEventImplTest extends InternalBaseTestCase
replay();
- ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, resources, logger);
+ ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, resources, false, mockComponentModel(), logger);
event.storeResult(result);
@@ -111,7 +111,7 @@ public class ComponentEventImplTest extends InternalBaseTestCase
replay();
- ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, logger);
+ ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, false, mockComponentModel(), logger);
assertTrue(event.matches("EVENTTYPE", "someid", 0));
@@ -131,7 +131,7 @@ public class ComponentEventImplTest extends InternalBaseTestCase
replay();
- ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, logger);
+ ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, false, mockComponentModel(), logger);
assertTrue(event.matches("eventType", "someId", 0));
@@ -153,7 +153,7 @@ public class ComponentEventImplTest extends InternalBaseTestCase
replay();
- ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, logger);
+ ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, false, mockComponentModel(), logger);
assertTrue(event.matches("eventtype", "SOMEID", 0));
@@ -178,7 +178,7 @@ public class ComponentEventImplTest extends InternalBaseTestCase
replay();
- ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, resources, logger);
+ ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, resources, false, mockComponentModel(), logger);
assertSame(event.coerceContext(0, "java.lang.Integer"), value);
@@ -199,7 +199,7 @@ public class ComponentEventImplTest extends InternalBaseTestCase
replay();
- ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, logger);
+ ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, false, mockComponentModel(), logger);
event.setMethodDescription("foo.Bar.baz()");
@@ -234,7 +234,7 @@ public class ComponentEventImplTest extends InternalBaseTestCase
replay();
- ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, resources, logger);
+ ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, resources, false, mockComponentModel(), logger);
event.setMethodDescription("foo.Bar.baz()");
@@ -273,7 +273,7 @@ public class ComponentEventImplTest extends InternalBaseTestCase
replay();
- ComponentEvent event = new ComponentEventImpl("eventType", "someId", null, handler, resources, logger);
+ ComponentEvent event = new ComponentEventImpl("eventType", "someId", null, handler, resources, false, mockComponentModel(), logger);
event.setMethodDescription(methodDescription);
@@ -302,7 +302,7 @@ public class ComponentEventImplTest extends InternalBaseTestCase
replay();
- ComponentEvent event = new ComponentEventImpl("eventType", "someId", null, handler, resources, logger);
+ ComponentEvent event = new ComponentEventImpl("eventType", "someId", null, handler, resources, false, mockComponentModel(), logger);
event.setMethodDescription(methodDescription);
@@ -324,7 +324,7 @@ public class ComponentEventImplTest extends InternalBaseTestCase
replay();
- ComponentEvent event = new ComponentEventImpl("eventType", "someId", null, handler, null, logger);
+ ComponentEvent event = new ComponentEventImpl("eventType", "someId", null, handler, null, false, mockComponentModel(), logger);
event.setMethodDescription("foo.Bar.baz()");
@@ -355,7 +355,7 @@ public class ComponentEventImplTest extends InternalBaseTestCase
replay();
- ComponentEvent event = new ComponentEventImpl("eventType", "someId", null, handler, resources, logger);
+ ComponentEvent event = new ComponentEventImpl("eventType", "someId", null, handler, resources, false, mockComponentModel(), logger);
event.setMethodDescription("foo.Bar.baz()");
event.storeResult(result);
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/6762367c/tapestry-core/src/test/java/org/apache/tapestry5/internal/structure/ComponentPageElementImplTest.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/structure/ComponentPageElementImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/structure/ComponentPageElementImplTest.java
index 99feb3f..0a495e1 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/structure/ComponentPageElementImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/structure/ComponentPageElementImplTest.java
@@ -8,6 +8,7 @@ import org.apache.tapestry5.ioc.Location;
import org.apache.tapestry5.ioc.services.SymbolSource;
import org.apache.tapestry5.ioc.test.TestBase;
import org.apache.tapestry5.model.ComponentModel;
+import org.apache.tapestry5.services.MetaDataLocator;
import org.apache.tapestry5.services.Request;
import org.testng.annotations.Test;
@@ -22,6 +23,7 @@ public class ComponentPageElementImplTest extends TestBase {
Location location = newMock(Location.class);
ComponentPageElementResources elementResources = newMock(ComponentPageElementResources.class);
ComponentModel model = newMock(ComponentModel.class);
+ MetaDataLocator locator = newMock(MetaDataLocator.class);
getMocksControl().resetToNice();
@@ -50,16 +52,16 @@ public class ComponentPageElementImplTest extends TestBase {
replay();
ComponentPageElementImpl c; // need to create every time because of changing symbols
- c = new ComponentPageElementImpl(page, null, "id", "nestedId", "completeid", "elementname", instantiator, location, elementResources, request, symbolSource);
+ c = new ComponentPageElementImpl(page, null, "id", "nestedId", "completeid", "elementname", instantiator, location, elementResources, request, symbolSource, locator);
assertFalse(c.isRenderTracingEnabled());
- c = new ComponentPageElementImpl(page, null, "id", "nestedId", "completeid", "elementname", instantiator, location, elementResources, request, symbolSource);
+ c = new ComponentPageElementImpl(page, null, "id", "nestedId", "completeid", "elementname", instantiator, location, elementResources, request, symbolSource, locator);
assertTrue(c.isRenderTracingEnabled());
- c = new ComponentPageElementImpl(page, null, "id", "nestedId", "completeid", "elementname", instantiator, location, elementResources, request, symbolSource);
+ c = new ComponentPageElementImpl(page, null, "id", "nestedId", "completeid", "elementname", instantiator, location, elementResources, request, symbolSource, locator);
assertTrue(c.isRenderTracingEnabled());
- c = new ComponentPageElementImpl(page, null, "id", "nestedId", "completeid", "elementname", instantiator, location, elementResources, request, symbolSource);
+ c = new ComponentPageElementImpl(page, null, "id", "nestedId", "completeid", "elementname", instantiator, location, elementResources, request, symbolSource, locator);
assertFalse(c.isRenderTracingEnabled());
}
}
[08/10] git commit: TAP5-2070 check each page for
UnknownActivationContext annotation
Posted by ml...@apache.org.
TAP5-2070 check each page for UnknownActivationContext annotation
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/d1fabecc
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/d1fabecc
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/d1fabecc
Branch: refs/heads/master
Commit: d1fabecccf7bd81d0dae8eefda055cf02ee4f981
Parents: 6d70228
Author: Massimo Lusetti <ml...@apache.org>
Authored: Sat Aug 3 14:06:27 2013 +0200
Committer: Massimo Lusetti <ml...@apache.org>
Committed: Sat Aug 3 14:06:27 2013 +0200
----------------------------------------------------------------------
.../pageload/ComponentAssemblerImpl.java | 8 +++--
.../internal/pageload/PageLoaderImpl.java | 7 ++--
.../internal/services/ComponentEventImpl.java | 19 ++++++++--
.../DefaultRequestExceptionHandler.java | 3 +-
.../internal/services/PageActivatorImpl.java | 38 +++++++++++++++++---
.../structure/ComponentPageElementImpl.java | 25 +++++++++----
6 files changed, 80 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/d1fabecc/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssemblerImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssemblerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssemblerImpl.java
index b56b81c..3e3f27c 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssemblerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssemblerImpl.java
@@ -32,6 +32,7 @@ import org.apache.tapestry5.model.ComponentModel;
import org.apache.tapestry5.model.EmbeddedComponentModel;
import org.apache.tapestry5.runtime.RenderCommand;
import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.MetaDataLocator;
import org.apache.tapestry5.services.Request;
import org.apache.tapestry5.services.pageload.ComponentResourceSelector;
@@ -60,6 +61,8 @@ class ComponentAssemblerImpl implements ComponentAssembler
private final SymbolSource symbolSource;
+ private final MetaDataLocator metaDataLocator;
+
private Map<String, String> publishedParameterToEmbeddedId;
private Map<String, EmbeddedComponentAssembler> embeddedIdToAssembler;
@@ -67,7 +70,7 @@ class ComponentAssemblerImpl implements ComponentAssembler
public ComponentAssemblerImpl(ComponentAssemblerSource assemblerSource,
ComponentInstantiatorSource instantiatorSource, ComponentClassResolver componentClassResolver,
Instantiator instantiator, ComponentPageElementResources resources, OperationTracker tracker,
- Request request, SymbolSource symbolSource)
+ Request request, SymbolSource symbolSource, MetaDataLocator metaDataLocator)
{
this.assemblerSource = assemblerSource;
this.instantiatorSource = instantiatorSource;
@@ -77,6 +80,7 @@ class ComponentAssemblerImpl implements ComponentAssembler
this.tracker = tracker;
this.request = request;
this.symbolSource = symbolSource;
+ this.metaDataLocator = metaDataLocator;
}
public ComponentPageElement assembleRootComponent(final Page page)
@@ -103,7 +107,7 @@ class ComponentAssemblerImpl implements ComponentAssembler
pageAssembly.weight++;
ComponentPageElement newElement = new ComponentPageElementImpl(pageAssembly.page, instantiator, resources,
- request, symbolSource);
+ request, symbolSource, metaDataLocator);
pageAssembly.componentName.push(new ComponentName(pageAssembly.page.getName()));
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/d1fabecc/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java
index f54f42e..2f976e2 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java
@@ -148,11 +148,13 @@ public class PageLoaderImpl implements PageLoader, ComponentAssemblerSource
private final Logger logger;
+ private final MetaDataLocator metaDataLocator;
+
public PageLoaderImpl(ComponentInstantiatorSource instantiatorSource, ComponentTemplateSource templateSource,
PageElementFactory elementFactory, ComponentPageElementResourcesSource resourcesSource,
ComponentClassResolver componentClassResolver, PersistentFieldManager persistentFieldManager,
StringInterner interner, OperationTracker tracker, PerthreadManager perThreadManager, Request request,
- SymbolSource symbolSource, Logger logger)
+ SymbolSource symbolSource, Logger logger, MetaDataLocator metaDataLocator)
{
this.instantiatorSource = instantiatorSource;
this.templateSource = templateSource;
@@ -166,6 +168,7 @@ public class PageLoaderImpl implements PageLoader, ComponentAssemblerSource
this.request = request;
this.symbolSource = symbolSource;
this.logger = logger;
+ this.metaDataLocator = metaDataLocator;
}
@PostInjection
@@ -263,7 +266,7 @@ public class PageLoaderImpl implements PageLoader, ComponentAssemblerSource
ComponentPageElementResources resources = resourcesSource.get(selector);
ComponentAssembler assembler = new ComponentAssemblerImpl(PageLoaderImpl.this, instantiatorSource,
- componentClassResolver, instantiator, resources, tracker, request, symbolSource);
+ componentClassResolver, instantiator, resources, tracker, request, symbolSource, metaDataLocator);
// "Program" the assembler by adding actions to it. The actions interact with a
// PageAssembly object (a fresh one for each new page being created).
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/d1fabecc/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventImpl.java
index 9cb0526..7de3120 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventImpl.java
@@ -17,6 +17,7 @@ package org.apache.tapestry5.internal.services;
import org.apache.tapestry5.ComponentEventCallback;
import org.apache.tapestry5.EventContext;
import org.apache.tapestry5.internal.structure.ComponentPageElementResources;
+import org.apache.tapestry5.model.ComponentModel;
import org.apache.tapestry5.runtime.ComponentEvent;
import org.slf4j.Logger;
@@ -30,6 +31,8 @@ public class ComponentEventImpl extends EventImpl implements ComponentEvent
private final ComponentPageElementResources elementResources;
+ private final boolean exactParameterCountMatch;
+
/**
* @param eventType
* non blank string used to identify the type of event that was triggered
@@ -41,11 +44,17 @@ public class ComponentEventImpl extends EventImpl implements ComponentEvent
* invoked when a non-null return value is obtained from an event handler method
* @param elementResources
* provides access to common resources and services
+ * @param exactParameterCountMatch
+ * the {@link org.apache.tapestry5.ioc.annotations.Symbol} indicating an exact match
+ * on parameter count in the {@link EventContext}.
+ * @param model
+ * the {@link ComponentModel} of the component originating the event.
* @param logger
* used to log method invocations
*/
public ComponentEventImpl(String eventType, String originatingComponentId, EventContext context,
- ComponentEventCallback handler, ComponentPageElementResources elementResources, Logger logger)
+ ComponentEventCallback handler, ComponentPageElementResources elementResources,
+ boolean exactParameterCountMatch, ComponentModel model, Logger logger)
{
super(handler, logger, elementResources);
@@ -53,6 +62,7 @@ public class ComponentEventImpl extends EventImpl implements ComponentEvent
this.originatingComponentId = originatingComponentId;
this.elementResources = elementResources;
this.context = context;
+ this.exactParameterCountMatch = exactParameterCountMatch && !model.handleActivationEventContext();
}
@Override
@@ -67,8 +77,11 @@ public class ComponentEventImpl extends EventImpl implements ComponentEvent
if (isAborted())
return false;
- return this.eventType.equalsIgnoreCase(eventType) && context.getCount() >= parameterCount
- && (originatingComponentId.equalsIgnoreCase(componentId) || componentId.equals(""));
+ boolean parameterCountMatch = exactParameterCountMatch ?
+ context.getCount() == parameterCount : context.getCount() >= parameterCount;
+
+ return this.eventType.equalsIgnoreCase(eventType) && parameterCountMatch
+ && (originatingComponentId.equalsIgnoreCase(componentId) || componentId.equals(""));
}
@SuppressWarnings("unchecked")
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/d1fabecc/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java
index 7cad70b..897b3b2 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java
@@ -93,7 +93,8 @@ public class DefaultRequestExceptionHandler implements RequestExceptionHandler
@Symbol(SymbolConstants.EXCEPTION_REPORT_PAGE)
String pageName,
- Request request, Response response, ComponentClassResolver componentClassResolver, LinkSource linkSource, ServiceResources serviceResources, Map<Class, Object> configuration)
+ Request request, Response response, ComponentClassResolver componentClassResolver,
+ LinkSource linkSource, ServiceResources serviceResources, Map<Class, Object> configuration)
{
this.pageCache = pageCache;
this.renderer = renderer;
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/d1fabecc/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageActivatorImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageActivatorImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageActivatorImpl.java
index e39b1b9..1304052 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageActivatorImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageActivatorImpl.java
@@ -16,14 +16,31 @@ package org.apache.tapestry5.internal.services;
import java.io.IOException;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.EventConstants;
-import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.TrackableComponentEventCallback;
+import org.apache.tapestry5.*;
+import org.apache.tapestry5.internal.EmptyEventContext;
+import org.apache.tapestry5.ioc.annotations.Symbol;
import org.apache.tapestry5.services.ComponentEventResultProcessor;
+import org.apache.tapestry5.services.HttpError;
+import org.apache.tapestry5.services.MetaDataLocator;
+import org.slf4j.Logger;
+
+import javax.servlet.http.HttpServletResponse;
public class PageActivatorImpl implements PageActivator
{
+ private final Logger logger;
+
+ private final MetaDataLocator metaDataLocator;
+
+ private final UnknownActivationContextHandler unknownActivationContextHandler;
+
+ public PageActivatorImpl(Logger logger, MetaDataLocator metaDataLocator,
+ UnknownActivationContextHandler unknownActivationContextHandler)
+ {
+ this.logger = logger;
+ this.metaDataLocator = metaDataLocator;
+ this.unknownActivationContextHandler = unknownActivationContextHandler;
+ }
@SuppressWarnings("unchecked")
public boolean activatePage(ComponentResources pageResources, EventContext activationContext,
@@ -31,7 +48,18 @@ public class PageActivatorImpl implements PageActivator
{
TrackableComponentEventCallback callback = new ComponentResultProcessorWrapper(resultProcessor);
- pageResources.triggerContextEvent(EventConstants.ACTIVATE, activationContext, callback);
+ boolean handled = pageResources.triggerContextEvent(EventConstants.ACTIVATE, activationContext, callback);
+
+ boolean checkUnknown = metaDataLocator.findMeta(MetaDataConstants.UNKNOWN_ACTIVATION_CONTEXT_CHECK,
+ pageResources, Boolean.class);
+
+ if ( !handled && activationContext.getCount() > 0 && checkUnknown &&
+ !pageResources.getComponentModel().handleActivationEventContext())
+ {
+ logger.info("Page {} required an exact activation context, let's handle this", pageResources.getPageName());
+ unknownActivationContextHandler.handleUnknownContext(pageResources, activationContext);
+ return true;
+ }
if (callback.isAborted())
{
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/d1fabecc/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementImpl.java
index ab7b0b5..26d6d03 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementImpl.java
@@ -39,6 +39,7 @@ import org.apache.tapestry5.model.ComponentModel;
import org.apache.tapestry5.model.ParameterModel;
import org.apache.tapestry5.runtime.Component;
import org.apache.tapestry5.runtime.*;
+import org.apache.tapestry5.services.MetaDataLocator;
import org.apache.tapestry5.services.Request;
import org.apache.tapestry5.services.pageload.ComponentResourceSelector;
import org.slf4j.Logger;
@@ -508,8 +509,11 @@ public class ComponentPageElementImpl extends BaseLocatable implements Component
// should be okay since it's a shadow service object
private final Request request;
private final SymbolSource symbolSource;
+ private final MetaDataLocator metaDataLocator;
+
private final boolean productionMode;
private final boolean componentTracingEnabled;
+ private final boolean exactParameterCountMatch;
// We know that, at the very least, there will be an element to force the component to render
// its body, so there's no reason to wait to initialize the list.
@@ -543,7 +547,8 @@ public class ComponentPageElementImpl extends BaseLocatable implements Component
*/
ComponentPageElementImpl(Page page, ComponentPageElement container, String id, String nestedId, String completeId,
String elementName, Instantiator instantiator, Location location,
- ComponentPageElementResources elementResources, Request request, SymbolSource symbolSource)
+ ComponentPageElementResources elementResources, Request request,
+ SymbolSource symbolSource, MetaDataLocator metaDataLocator)
{
super(location);
@@ -556,13 +561,17 @@ public class ComponentPageElementImpl extends BaseLocatable implements Component
this.elementResources = elementResources;
this.request = request;
this.symbolSource = symbolSource;
+ this.metaDataLocator = metaDataLocator;
// evaluate this once because it gets referenced a lot during rendering
this.productionMode = "true".equals(symbolSource.valueForSymbol(SymbolConstants.PRODUCTION_MODE));
this.componentTracingEnabled = "true".equals(symbolSource
.valueForSymbol(SymbolConstants.COMPONENT_RENDER_TRACING_ENABLED));
- ComponentResources containerResources = container == null ? null : container.getComponentResources();
+ this.exactParameterCountMatch = metaDataLocator.findMeta(MetaDataConstants.UNKNOWN_ACTIVATION_CONTEXT_CHECK,
+ page.getName(), Boolean.class);
+
+ ComponentResources containerResources = container == null ? null : container.getComponentResources();
coreResources = new InternalComponentResourcesImpl(this.page, this, containerResources, this.elementResources,
completeId, nestedId, instantiator, false);
@@ -586,9 +595,11 @@ public class ComponentPageElementImpl extends BaseLocatable implements Component
* Constructor for the root component of a page.
*/
public ComponentPageElementImpl(Page page, Instantiator instantiator,
- ComponentPageElementResources elementResources, Request request, SymbolSource symbolSource)
+ ComponentPageElementResources elementResources, Request request,
+ SymbolSource symbolSource, MetaDataLocator metaDataLocator)
{
- this(page, null, null, null, page.getName(), null, instantiator, null, elementResources, request, symbolSource);
+ this(page, null, null, null, page.getName(), null, instantiator, null, elementResources,
+ request, symbolSource, metaDataLocator);
}
private void initializeRenderPhases()
@@ -646,9 +657,9 @@ public class ComponentPageElementImpl extends BaseLocatable implements Component
Instantiator instantiator, Location location)
{
ComponentPageElementImpl child = new ComponentPageElementImpl(page, this, id, nestedId, completeId,
- elementName, instantiator, location, elementResources, request, symbolSource);
+ elementName, instantiator, location, elementResources, request, symbolSource, metaDataLocator);
- addEmbeddedElement(child);
+ addEmbeddedElement(child);
return child;
}
@@ -1109,7 +1120,7 @@ public class ComponentPageElementImpl extends BaseLocatable implements Component
Logger logger = component.getEventLogger();
ComponentEvent event = new ComponentEventImpl(currentEventType, componentId, currentContext, wrapped,
- elementResources, logger);
+ elementResources, exactParameterCountMatch, coreResources.getComponentModel(), logger);
logger.debug(TapestryMarkers.EVENT_DISPATCH, "Dispatch event: {}", event);
[06/10] git commit: TAP5-2070 have the meta data constants used to
check each page's value
Posted by ml...@apache.org.
TAP5-2070 have the meta data constants used to check each page's value
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/2db059c0
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/2db059c0
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/2db059c0
Branch: refs/heads/master
Commit: 2db059c086ca5999889c3b06f4852cf491e5f78b
Parents: 3054fd6
Author: Massimo Lusetti <ml...@apache.org>
Authored: Sat Aug 3 14:04:01 2013 +0200
Committer: Massimo Lusetti <ml...@apache.org>
Committed: Sat Aug 3 14:04:01 2013 +0200
----------------------------------------------------------------------
.../src/main/java/org/apache/tapestry5/MetaDataConstants.java | 7 +++++++
1 file changed, 7 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/2db059c0/tapestry-core/src/main/java/org/apache/tapestry5/MetaDataConstants.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/MetaDataConstants.java b/tapestry-core/src/main/java/org/apache/tapestry5/MetaDataConstants.java
index c4baddb..be9a2f9 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/MetaDataConstants.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/MetaDataConstants.java
@@ -43,4 +43,11 @@ public class MetaDataConstants
* @since 5.3
*/
public static final String WHITELIST_ONLY_PAGE = "tapestry.white-list-only-page";
+
+ /**
+ * Meta data key applied to pages that may only be accessed with a exact activation context.
+ *
+ * @since 5.4
+ */
+ public static final String UNKNOWN_ACTIVATION_CONTEXT_CHECK = "tapestry.unknwon-activation-context-check";
}