You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2010/01/06 18:36:44 UTC
svn commit: r896559 [2/2] - in /tapestry/tapestry5/trunk/tapestry-core/src:
main/java/org/apache/tapestry5/annotations/
main/java/org/apache/tapestry5/internal/
main/java/org/apache/tapestry5/internal/services/
main/java/org/apache/tapestry5/internal/s...
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TransformMethodSignature.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TransformMethodSignature.java?rev=896559&r1=896558&r2=896559&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TransformMethodSignature.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TransformMethodSignature.java Wed Jan 6 17:35:59 2010
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007 The Apache Software Foundation
+// Copyright 2006, 2007, 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.
@@ -159,7 +159,7 @@
/**
* Returns the long form description of the signature. This includes modifiers, return type, method name, parameters
- * and thrown exceptions, formatter approximately as it would appear in Java source (except that parameter names,
+ * and thrown exceptions, formatted approximately as it would appear in Java source (except that parameter names,
* which are not known, do no appear).
*/
@Override
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/app1/Index.tml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/app1/Index.tml?rev=896559&r1=896558&r2=896559&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/app1/Index.tml (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/app1/Index.tml Wed Jan 6 17:35:59 2010
@@ -127,6 +127,11 @@
<a href="InvalidTemplateExtend">Invalid Template Extend Demo</a>
-- template uses extend, but component doesn't have a super-class
</li>
+
+ <li>
+ <a href="PageResetFailure">PageReset Annotation Failure</a>
+ -- error when @PageReset is on a method with parameters
+ </li>
</ul>
</html>
Added: tapestry/tapestry5/trunk/tapestry-core/src/test/app1/PageResetDemo.tml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/app1/PageResetDemo.tml?rev=896559&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/app1/PageResetDemo.tml (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/app1/PageResetDemo.tml Wed Jan 6 17:35:59 2010
@@ -0,0 +1,19 @@
+<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
+
+ <h1>PageReset Annotation Demo</h1>
+
+ <p>
+ The current click count is:
+ <span id="current">${count}</span>
+ </p>
+
+ <ul>
+ <li>
+ <t:actionlink t:id="increment">increment</t:actionlink>
+ </li>
+ <li>
+ <t:pagelink page="pageResetDemo">refresh</t:pagelink>
+ </li>
+ </ul>
+
+</html>
\ No newline at end of file
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/CoreBehaviorsTests.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/CoreBehaviorsTests.java?rev=896559&r1=896558&r2=896559&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/CoreBehaviorsTests.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/CoreBehaviorsTests.java Wed Jan 6 17:35:59 2010
@@ -1447,4 +1447,39 @@
assertText("message", "TestOnly service message");
}
+
+ /** TAP5-948 */
+ @Test
+ public void page_reset_annotation()
+ {
+ clickThru("PageReset Annotation Demo");
+
+ assertText("current", "0");
+
+ clickAndWait("link=increment");
+
+ assertText("current", "1");
+
+ clickAndWait("link=increment");
+
+ assertText("current", "2");
+
+ clickAndWait("link=refresh");
+
+ assertText("current", "2");
+
+ clickAndWait("link=Back to index");
+ clickAndWait("link=PageReset Annotation Demo");
+
+ assertText("current", "0");
+ }
+
+ /** TAP5-948 */
+ @Test
+ public void page_reset_annotation_on_bad_method()
+ {
+ clickThru("PageReset Annotation Failure");
+
+ assertTextPresent("Method void reset(java.lang.String) of class org.apache.tapestry5.integration.app1.pages.PageResetFailure is invalid: methods with the @PageReset annotation must return void, and have no parameters or thrown exceptions.");
+ }
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java?rev=896559&r1=896558&r2=896559&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java Wed Jan 6 17:35:59 2010
@@ -65,6 +65,10 @@
private static final List<Item> ITEMS = CollectionFactory
.newList(
+
+ new Item("PageResetDemo", "PageReset Annotation Demo",
+ "Use of PageReset annotation to re-initialize page state"),
+
new Item("TestOnlyServiceDemo", "Test Only Service Demo",
"IoC module available via web.xml configuration"),
Added: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageResetDemo.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageResetDemo.java?rev=896559&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageResetDemo.java (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageResetDemo.java Wed Jan 6 17:35:59 2010
@@ -0,0 +1,37 @@
+// 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.integration.app1.pages;
+
+import org.apache.tapestry5.annotations.PageReset;
+import org.apache.tapestry5.annotations.Persist;
+import org.apache.tapestry5.annotations.Property;
+
+public class PageResetDemo
+{
+ @Property
+ @Persist
+ private int count;
+
+ void onActionFromIncrement()
+ {
+ count++;
+ }
+
+ @PageReset
+ void reset()
+ {
+ count = 0;
+ }
+}
Propchange: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageResetDemo.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageResetFailure.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageResetFailure.java?rev=896559&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageResetFailure.java (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageResetFailure.java Wed Jan 6 17:35:59 2010
@@ -0,0 +1,26 @@
+// 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.integration.app1.pages;
+
+import org.apache.tapestry5.annotations.PageReset;
+
+public class PageResetFailure
+{
+ @PageReset
+ void reset(String whatGoesHere)
+ {
+
+ }
+}
Propchange: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageResetFailure.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventDispatcherTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventDispatcherTest.java?rev=896559&r1=896558&r2=896559&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventDispatcherTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventDispatcherTest.java Wed Jan 6 17:35:59 2010
@@ -49,12 +49,8 @@
replay();
Dispatcher dispatcher = new ComponentEventDispatcher(null,
- new ComponentEventLinkEncoderImpl(null, contextPathEncoder,
- null, request, response,
- null,
- null,
- null,
- true));
+ new ComponentEventLinkEncoderImpl(null, contextPathEncoder, null, request,
+ response, null, null, null, true, null));
assertFalse(dispatcher.dispatch(request, response));
@@ -73,7 +69,8 @@
@Test
public void event_on_page_with_name_and_dotted_parameters() throws Exception
{
- test("/foo/MyPage:myevent/1.2.3/4.5.6", "foo", "foo/MyPage", "", "myevent", "1.2.3", "4.5.6");
+ test("/foo/MyPage:myevent/1.2.3/4.5.6", "foo", "foo/MyPage", "", "myevent", "1.2.3",
+ "4.5.6");
}
/**
@@ -82,7 +79,8 @@
@Test
public void event_on_page_dotted_parameters() throws Exception
{
- test("/foo/MyPage:action/1.2.3/4.5.6", "foo", "foo/MyPage", "", EventConstants.ACTION, "1.2.3", "4.5.6");
+ test("/foo/MyPage:action/1.2.3/4.5.6", "foo", "foo/MyPage", "", EventConstants.ACTION,
+ "1.2.3", "4.5.6");
}
@Test
@@ -100,14 +98,15 @@
@Test
public void default_event_with_nested_id_and_context() throws Exception
{
- test("/foo/MyPage.fred/fee/fie/foe/fum", "foo", "foo/MyPage", "fred", EventConstants.ACTION, "fee", "fie",
- "foe", "fum");
+ test("/foo/MyPage.fred/fee/fie/foe/fum", "foo", "foo/MyPage", "fred",
+ EventConstants.ACTION, "fee", "fie", "foe", "fum");
}
@Test
public void default_event_with_context_that_includes_a_colon() throws Exception
{
- test("/foo/MyPage.underdog/a:b:c/d", "foo", "foo/MyPage", "underdog", EventConstants.ACTION, "a:b:c", "d");
+ test("/foo/MyPage.underdog/a:b:c/d", "foo", "foo/MyPage", "underdog",
+ EventConstants.ACTION, "a:b:c", "d");
}
@Test
@@ -125,7 +124,8 @@
@Test
public void nested_component_event_with_context() throws Exception
{
- test("/foo/MyPage.nested:trigger/foo/bar/baz", "foo", "foo/MyPage", "nested", "trigger", "foo", "bar", "baz");
+ test("/foo/MyPage.nested:trigger/foo/bar/baz", "foo", "foo/MyPage", "nested", "trigger",
+ "foo", "bar", "baz");
}
@Test
@@ -137,14 +137,10 @@
ComponentClassResolver resolver = mockComponentClassResolver();
LocalizationSetter ls = mockLocalizationSetter();
- ComponentEventRequestParameters expectedParameters = new ComponentEventRequestParameters("mypage", "mypage", "",
- "eventname",
- new URLEventContext(
- contextValueEncoder,
- new String[] {
- "alpha",
- "beta" }),
- new EmptyEventContext());
+ ComponentEventRequestParameters expectedParameters = new ComponentEventRequestParameters(
+ "mypage", "mypage", "", "eventname", new URLEventContext(contextValueEncoder,
+ new String[]
+ { "alpha", "beta" }), new EmptyEventContext());
train_getPath(request, "/mypage:eventname");
@@ -152,6 +148,8 @@
train_isPageName(resolver, "mypage", true);
+ train_canonicalizePageName(resolver, "mypage", "mypage");
+
train_getParameter(request, InternalConstants.PAGE_CONTEXT_NAME, "alpha/beta");
train_getParameter(request, InternalConstants.CONTAINER_PAGE_NAME, null);
@@ -160,14 +158,9 @@
replay();
- Dispatcher dispatcher = new ComponentEventDispatcher(handler, new ComponentEventLinkEncoderImpl(resolver,
- contextPathEncoder,
- ls, request,
- response,
- null,
- null,
- null,
- true));
+ Dispatcher dispatcher = new ComponentEventDispatcher(handler,
+ new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls, request,
+ response, null, null, null, true, null));
assertTrue(dispatcher.dispatch(request, response));
@@ -183,10 +176,9 @@
ComponentClassResolver resolver = mockComponentClassResolver();
LocalizationSetter ls = mockLocalizationSetter();
- ComponentEventRequestParameters expectedParameters = new ComponentEventRequestParameters("activepage", "mypage",
- "", "eventname",
- new EmptyEventContext(),
- new EmptyEventContext());
+ ComponentEventRequestParameters expectedParameters = new ComponentEventRequestParameters(
+ "activepage", "mypage", "", "eventname", new EmptyEventContext(),
+ new EmptyEventContext());
train_getPath(request, "/activepage:eventname");
@@ -194,22 +186,21 @@
train_isPageName(resolver, "activepage", true);
+ train_canonicalizePageName(resolver, "activepage", "activepage");
+
train_getParameter(request, InternalConstants.PAGE_CONTEXT_NAME, null);
train_getParameter(request, InternalConstants.CONTAINER_PAGE_NAME, "mypage");
+ train_canonicalizePageName(resolver, "mypage", "mypage");
+
handler.handleComponentEvent(expectedParameters);
replay();
- Dispatcher dispatcher = new ComponentEventDispatcher(handler, new ComponentEventLinkEncoderImpl(resolver,
- contextPathEncoder,
- ls, request,
- response,
- null,
- null,
- null,
- true));
+ Dispatcher dispatcher = new ComponentEventDispatcher(handler,
+ new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls, request,
+ response, null, null, null, true, null));
assertTrue(dispatcher.dispatch(request, response));
@@ -231,23 +222,17 @@
replay();
- Dispatcher dispatcher = new ComponentEventDispatcher(null, new ComponentEventLinkEncoderImpl(resolver,
- contextPathEncoder,
- ls, request,
- response,
- null,
- null,
- null,
- true));
+ Dispatcher dispatcher = new ComponentEventDispatcher(null,
+ new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls, request,
+ response, null, null, null, true, null));
assertFalse(dispatcher.dispatch(request, response));
verify();
}
- private void test(String requestPath, String localeName, String containerPageName, String nestedComponentId,
- String eventType,
- String... eventContext) throws IOException
+ private void test(String requestPath, String localeName, String containerPageName,
+ String nestedComponentId, String eventType, String... eventContext) throws IOException
{
ComponentRequestHandler handler = mockComponentRequestHandler();
Request request = mockRequest();
@@ -255,14 +240,9 @@
ComponentClassResolver resolver = mockComponentClassResolver();
LocalizationSetter localizationSetter = mockLocalizationSetter();
- ComponentEventRequestParameters expectedParameters = new ComponentEventRequestParameters(containerPageName,
- containerPageName,
- nestedComponentId,
- eventType,
- new EmptyEventContext(),
- new URLEventContext(
- contextValueEncoder,
- eventContext));
+ ComponentEventRequestParameters expectedParameters = new ComponentEventRequestParameters(
+ containerPageName, containerPageName, nestedComponentId, eventType,
+ new EmptyEventContext(), new URLEventContext(contextValueEncoder, eventContext));
train_getPath(request, requestPath);
@@ -270,6 +250,8 @@
train_isPageName(resolver, containerPageName, true);
+ train_canonicalizePageName(resolver, containerPageName, containerPageName);
+
train_getParameter(request, InternalConstants.PAGE_CONTEXT_NAME, null);
train_getParameter(request, InternalConstants.CONTAINER_PAGE_NAME, null);
@@ -278,11 +260,9 @@
replay();
- Dispatcher dispatcher = new ComponentEventDispatcher(
- handler, new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, localizationSetter, request,
- response, null, null,
- null,
- true));
+ Dispatcher dispatcher = new ComponentEventDispatcher(handler,
+ new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, localizationSetter,
+ request, response, null, null, null, true, null));
assertTrue(dispatcher.dispatch(request, response));
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImplTest.java?rev=896559&r1=896558&r2=896559&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImplTest.java Wed Jan 6 17:35:59 2010
@@ -24,7 +24,7 @@
/**
* Most of the testing is implemented through legacy tests against code that uses CELE.
- *
+ *
* @since 5.1.0.1
*/
public class ComponentEventLinkEncoderImplTest extends InternalBaseTestCase
@@ -45,6 +45,7 @@
Response response = mockResponse();
RequestPathOptimizer optimizer = mockRequestPathOptimizer();
ContextPathEncoder contextPathEncoder = getService(ContextPathEncoder.class);
+ RequestGlobals globals = mockRequestGlobals(null);
expect(manager.getBaseURL("MyPage")).andReturn(null);
train_getContextPath(request, "/myapp");
@@ -53,12 +54,12 @@
replay();
- ComponentEventLinkEncoder encoder = new ComponentEventLinkEncoderImpl(null, contextPathEncoder, null, request,
- response,
- manager, optimizer, null,
- false);
+ ComponentEventLinkEncoder encoder = new ComponentEventLinkEncoderImpl(null,
+ contextPathEncoder, null, request, response, manager, optimizer, null, false,
+ globals);
- PageRenderRequestParameters parameters = new PageRenderRequestParameters("MyPage", new EmptyEventContext());
+ PageRenderRequestParameters parameters = new PageRenderRequestParameters("MyPage",
+ new EmptyEventContext());
Link link = encoder.createPageRenderLink(parameters);
@@ -67,6 +68,15 @@
verify();
}
+ private RequestGlobals mockRequestGlobals(String activePageName)
+ {
+ RequestGlobals rg = mockRequestGlobals();
+
+ expect(rg.getActivePageName()).andReturn(activePageName).atLeastOnce();
+
+ return rg;
+ }
+
@Test
public void index_stripped_off()
{
@@ -75,6 +85,7 @@
Response response = mockResponse();
RequestPathOptimizer optimizer = mockRequestPathOptimizer();
ContextPathEncoder contextPathEncoder = getService(ContextPathEncoder.class);
+ RequestGlobals globals = mockRequestGlobals(null);
expect(manager.getBaseURL("admin/Index")).andReturn(null);
train_getContextPath(request, "");
@@ -83,14 +94,12 @@
replay();
- ComponentEventLinkEncoder encoder = new ComponentEventLinkEncoderImpl(null, contextPathEncoder, null, request,
- response,
- manager, optimizer, null,
- false);
+ ComponentEventLinkEncoder encoder = new ComponentEventLinkEncoderImpl(null,
+ contextPathEncoder, null, request, response, manager, optimizer, null, false,
+ globals);
PageRenderRequestParameters parameters = new PageRenderRequestParameters("admin/Index",
- new ArrayEventContext(typeCoercer,
- "abc"));
+ new ArrayEventContext(typeCoercer, "abc"));
Link link = encoder.createPageRenderLink(parameters);
@@ -107,6 +116,7 @@
Response response = mockResponse();
RequestPathOptimizer optimizer = mockRequestPathOptimizer();
ContextPathEncoder contextPathEncoder = getService(ContextPathEncoder.class);
+ RequestGlobals globals = mockRequestGlobals(null);
expect(manager.getBaseURL("Index")).andReturn(null);
train_getContextPath(request, "");
@@ -115,12 +125,12 @@
replay();
- ComponentEventLinkEncoder encoder = new ComponentEventLinkEncoderImpl(null, contextPathEncoder, null, request,
- response,
- manager, optimizer, null,
- false);
+ ComponentEventLinkEncoder encoder = new ComponentEventLinkEncoderImpl(null,
+ contextPathEncoder, null, request, response, manager, optimizer, null, false,
+ globals);
- PageRenderRequestParameters parameters = new PageRenderRequestParameters("Index", new EmptyEventContext());
+ PageRenderRequestParameters parameters = new PageRenderRequestParameters("Index",
+ new EmptyEventContext());
Link link = encoder.createPageRenderLink(parameters);
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageRenderDispatcherTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageRenderDispatcherTest.java?rev=896559&r1=896558&r2=896559&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageRenderDispatcherTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageRenderDispatcherTest.java Wed Jan 6 17:35:59 2010
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
+// Copyright 2006, 2007, 2008, 2009, 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.
@@ -17,6 +17,7 @@
import org.apache.tapestry5.ComponentEventCallback;
import org.apache.tapestry5.EventConstants;
import org.apache.tapestry5.EventContext;
+import org.apache.tapestry5.internal.InternalConstants;
import org.apache.tapestry5.internal.structure.ComponentPageElement;
import org.apache.tapestry5.internal.structure.Page;
import org.apache.tapestry5.internal.test.InternalBaseTestCase;
@@ -53,12 +54,8 @@
replay();
- Dispatcher d = new PageRenderDispatcher(null,
- new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls,
- request, response,
- null, null,
- null,
- true));
+ Dispatcher d = new PageRenderDispatcher(null, new ComponentEventLinkEncoderImpl(resolver,
+ contextPathEncoder, ls, request, response, null, null, null, true, null));
assertFalse(d.dispatch(request, response));
@@ -82,12 +79,8 @@
replay();
- Dispatcher d = new PageRenderDispatcher(null,
- new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls,
- request, response,
- null, null,
- null,
- true));
+ Dispatcher d = new PageRenderDispatcher(null, new ComponentEventLinkEncoderImpl(resolver,
+ contextPathEncoder, ls, request, response, null, null, null, true, null));
assertFalse(d.dispatch(request, response));
@@ -110,18 +103,23 @@
replay();
- Dispatcher d = new PageRenderDispatcher(null,
- new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls,
- request, response,
- null, null,
- null,
- true));
+ Dispatcher d = new PageRenderDispatcher(null, new ComponentEventLinkEncoderImpl(resolver,
+ contextPathEncoder, ls, request, response, null, null, null, true, null));
assertFalse(d.dispatch(request, response));
verify();
}
+ private Request mockRequest(boolean isLoopback)
+ {
+ Request request = mockRequest();
+
+ train_getParameter(request, InternalConstants.LOOPBACK, isLoopback ? "t" : null);
+
+ return request;
+ }
+
/**
* TAPESTRY-2226
*/
@@ -129,7 +127,7 @@
public void page_activation_context_for_root_index_page() throws Exception
{
ComponentClassResolver resolver = mockComponentClassResolver();
- Request request = mockRequest();
+ Request request = mockRequest(false);
Response response = mockResponse();
Page page = mockPage();
ComponentPageElement rootElement = mockComponentPageElement();
@@ -146,29 +144,30 @@
train_isPageName(resolver, "foo", false);
train_isPageName(resolver, "", true);
- train_get(cache, "", page);
+ train_canonicalizePageName(resolver, "", "index");
+
+ train_get(cache, "index", page);
train_getRootElement(page, rootElement);
- train_triggerContextEvent(rootElement, EventConstants.ACTIVATE, new Object[] { "foo", "bar" }, false);
+ train_triggerContextEvent(rootElement, EventConstants.ACTIVATE, new Object[]
+ { "foo", "bar" }, false);
+
+ page.pageReset();
renderer.renderPageResponse(page);
replay();
- Dispatcher d = new PageRenderDispatcher(wrap(cache, processor, renderer),
- new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls,
- request, response,
- null, null,
- null,
- true));
+ Dispatcher d = new PageRenderDispatcher(wrap(cache, processor, renderer, request),
+ new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls, request,
+ response, null, null, null, true, null));
assertTrue(d.dispatch(request, response));
verify();
}
-
@Test
public void no_extra_context_without_final_slash() throws Exception
{
@@ -187,7 +186,7 @@
PageResponseRenderer renderer = mockPageResponseRenderer();
RequestPageCache cache = mockRequestPageCache();
ComponentEventResultProcessor processor = newComponentEventResultProcessor();
- Request request = mockRequest();
+ Request request = mockRequest(false);
Response response = mockResponse();
Page page = mockPage();
ComponentPageElement rootElement = mockComponentPageElement();
@@ -200,21 +199,22 @@
train_isPageName(resolver, "foo/Bar", true);
- train_get(cache, "foo/Bar", page);
+ train_canonicalizePageName(resolver, "foo/Bar", "foo/bar");
+
+ train_get(cache, "foo/bar", page);
train_getRootElement(page, rootElement);
train_triggerContextEvent(rootElement, EventConstants.ACTIVATE, new Object[0], false);
+ page.pageReset();
+
renderer.renderPageResponse(page);
replay();
- Dispatcher d = new PageRenderDispatcher(wrap(cache, processor, renderer),
- new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls,
- request, response,
- null, null,
- null,
- true));
+ Dispatcher d = new PageRenderDispatcher(wrap(cache, processor, renderer, request),
+ new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls, request,
+ response, null, null, null, true, null));
assertTrue(d.dispatch(request, response));
@@ -239,7 +239,7 @@
ComponentClassResolver resolver = mockComponentClassResolver();
PageResponseRenderer renderer = mockPageResponseRenderer();
RequestPageCache cache = mockRequestPageCache();
- Request request = mockRequest();
+ Request request = mockRequest(false);
Response response = mockResponse();
Page page = mockPage();
ComponentPageElement rootElement = mockComponentPageElement();
@@ -256,31 +256,34 @@
train_isPageName(resolver, "foo/Bar", true);
- train_get(cache, "foo/Bar", page);
+ train_canonicalizePageName(resolver, "foo/Bar", "foo/bar");
+
+ train_get(cache, "foo/bar", page);
train_getRootElement(page, rootElement);
- train_triggerContextEvent(rootElement, EventConstants.ACTIVATE, new Object[] { "zip", "zoom" }, false);
+ train_triggerContextEvent(rootElement, EventConstants.ACTIVATE, new Object[]
+ { "zip", "zoom" }, false);
+
+ page.pageReset();
renderer.renderPageResponse(page);
replay();
- Dispatcher d = new PageRenderDispatcher(wrap(cache, processor, renderer),
- new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls,
- request, response,
- null, null,
- null,
- true));
+ Dispatcher d = new PageRenderDispatcher(wrap(cache, processor, renderer, request),
+ new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls, request,
+ response, null, null, null, true, null));
assertTrue(d.dispatch(request, response));
verify();
}
- private ComponentRequestHandler wrap(RequestPageCache cache, ComponentEventResultProcessor processor,
- PageResponseRenderer renderer)
+ private ComponentRequestHandler wrap(RequestPageCache cache,
+ ComponentEventResultProcessor processor, PageResponseRenderer renderer, Request request)
{
- PageRenderRequestHandler prh = new PageRenderRequestHandlerImpl(cache, processor, renderer);
+ PageRenderRequestHandler prh = new PageRenderRequestHandlerImpl(cache, processor, renderer,
+ request);
return new ComponentRequestHandlerTerminator(null, prh);
}
@@ -290,8 +293,8 @@
return newMock(ComponentEventResultProcessor.class);
}
- private void train_triggerContextEvent(ComponentPageElement element, String eventType, final Object[] context,
- final boolean handled)
+ private void train_triggerContextEvent(ComponentPageElement element, String eventType,
+ final Object[] context, final boolean handled)
{
IAnswer<Boolean> answer = new IAnswer<Boolean>()
{
@@ -308,12 +311,12 @@
assertEquals(ec.get(Object.class, i), context[i]);
}
-
return handled;
}
};
- expect(element.triggerContextEvent(eq(eventType), isA(EventContext.class),
- isA(ComponentEventCallback.class))).andAnswer(answer);
+ expect(
+ element.triggerContextEvent(eq(eventType), isA(EventContext.class),
+ isA(ComponentEventCallback.class))).andAnswer(answer);
}
}
Added: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImplTest.java?rev=896559&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImplTest.java (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImplTest.java Wed Jan 6 17:35:59 2010
@@ -0,0 +1,70 @@
+// 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;
+
+import org.apache.tapestry5.ComponentEventCallback;
+import org.apache.tapestry5.EventConstants;
+import org.apache.tapestry5.EventContext;
+import org.apache.tapestry5.internal.InternalConstants;
+import org.apache.tapestry5.internal.structure.ComponentPageElement;
+import org.apache.tapestry5.internal.structure.Page;
+import org.apache.tapestry5.internal.test.InternalBaseTestCase;
+import org.apache.tapestry5.services.ComponentEventResultProcessor;
+import org.apache.tapestry5.services.PageRenderRequestHandler;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.Request;
+import org.easymock.EasyMock;
+import org.testng.annotations.Test;
+
+public class PageRenderRequestHandlerImplTest extends InternalBaseTestCase
+{
+ @Test
+ public void loopback_request() throws Exception
+ {
+ RequestPageCache cache = mockRequestPageCache();
+ Request request = mockRequest();
+ ComponentEventResultProcessor processor = mockComponentEventResultProcessor();
+ PageResponseRenderer renderer = mockPageResponseRenderer();
+ Page page = mockPage();
+ EventContext context = mockEventContext();
+ ComponentPageElement root = mockComponentPageElement();
+
+ train_get(cache, "foo/Bar", page);
+
+ train_getRootElement(page, root);
+
+ expect(
+ root.triggerContextEvent(EasyMock.eq(EventConstants.ACTIVATE), EasyMock
+ .same(context), EasyMock.isA(ComponentEventCallback.class))).andReturn(
+ false);
+
+ train_getParameter(request, InternalConstants.LOOPBACK, "T");
+
+ // Skips the pageReset()
+
+ renderer.renderPageResponse(page);
+
+ replay();
+
+ PageRenderRequestHandler handler = new PageRenderRequestHandlerImpl(cache, processor,
+ renderer, request);
+
+ PageRenderRequestParameters parameters = new PageRenderRequestParameters("foo/Bar", context);
+
+ handler.handle(parameters);
+
+ verify();
+ }
+}
Propchange: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImplTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/urlrewriter/IntegrationTests.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/urlrewriter/IntegrationTests.java?rev=896559&r1=896558&r2=896559&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/urlrewriter/IntegrationTests.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/urlrewriter/IntegrationTests.java Wed Jan 6 17:35:59 2010
@@ -1,4 +1,4 @@
-// Copyright 2009 The Apache Software Foundation
+// Copyright 2009, 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.
@@ -42,7 +42,7 @@
{
open(BASE_URL);
- assertAttribute("//a[@class='self']/@href", "/");
+ assertAttribute("//a[@class='self']/@href", "?t:lb=t");
assertAttribute("//a[@class='dummy']/@href", "/notdummy");
// final String url = String.format("http://%s:%d/", SUBDOMAIN, JETTY_PORT);