Author: dashorst
Date: Mon Jun 8 15:53:01 2009
New Revision: 782688
URL: http://svn.apache.org/viewvc?rev=782688&view=rev
Log:
WICKET-2315
Added:
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/PageReferenceRequestTarget.java
Modified:
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/Page.java
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java
Modified:
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/Page.java
URL:
http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/Page.java?rev=782688&r1=782687&r2=782688&view=diff
==============================================================================
---
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/Page.java
(original)
+++
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/Page.java
Mon Jun 8 15:53:01 2009
@@ -1617,4 +1617,15 @@
"Page does not support markup. This error can happen if
you have extended Page directly, instead extend WebPage");
}
+ /**
+ * Gets page instance's unique identifier
+ *
+ * @return instance unique identifier
+ */
+ public PageReference getPageReference()
+ {
+ setStatelessHint(false);
+ return new PageReference(pageMapName, numericId,
getCurrentVersionNumber());
+
+ }
}
Modified:
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java
URL:
http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java?rev=782688&r1=782687&r2=782688&view=diff
==============================================================================
---
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java
(original)
+++
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java
Mon Jun 8 15:53:01 2009
@@ -37,6 +37,7 @@
import org.apache.wicket.request.target.component.ComponentRequestTarget;
import
org.apache.wicket.request.target.component.IBookmarkablePageRequestTarget;
import org.apache.wicket.request.target.component.IPageRequestTarget;
+import org.apache.wicket.request.target.component.PageReferenceRequestTarget;
import org.apache.wicket.request.target.component.PageRequestTarget;
import
org.apache.wicket.request.target.component.listener.BehaviorRequestTarget;
import
org.apache.wicket.request.target.component.listener.ListenerInterfaceRequestTarget;
@@ -1025,6 +1026,20 @@
}
/**
+ * Returns a URL that references the page pointed to by <code>id</code>
+ *
+ * @see PageIdRequestTarget for more details
+ *
+ * @param id
+ * page id
+ * @return url pointing to the page
+ */
+ public final CharSequence urlFor(final PageReference id)
+ {
+ return urlFor(new PageReferenceRequestTarget(id));
+ }
+
+ /**
* Returns a URL that references a shared resource through the provided
resource reference.
*
* @param resourceReference
Added:
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/PageReferenceRequestTarget.java
URL:
http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/PageReferenceRequestTarget.java?rev=782688&view=auto
==============================================================================
---
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/PageReferenceRequestTarget.java
(added)
+++
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/PageReferenceRequestTarget.java
Mon Jun 8 15:53:01 2009
@@ -0,0 +1,101 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.wicket.request.target.component;
+
+import org.apache.wicket.IRequestTarget;
+import org.apache.wicket.Page;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.RequestCycle;
+
+/**
+ * Target that navigates to a page pointed to by its id. The great benefit of
this target over the
+ * PageRequestTarget is that no reference to the actual page is needed, which
greatly facilitates
+ * navigational usecases where a list or a stack of page references is needed
(ie breadcrumbs).
+ *
+ * @see PageReference
+ *
+ * @author igor.vaynberg
+ */
+public class PageReferenceRequestTarget implements IRequestTarget
+{
+ private final PageReference reference;
+
+ /**
+ * Constructor
+ *
+ * Even though a page is passed in, only a reference to its {...@link
PageReference} is kept
+ *
+ * @param page
+ */
+ public PageReferenceRequestTarget(Page page)
+ {
+ if (page == null)
+ {
+ throw new IllegalArgumentException("Argument `page`
cannot be null");
+ }
+ reference = page.getPageReference();
+ }
+
+ /**
+ * Constructor
+ *
+ * @param pageReference
+ */
+ public PageReferenceRequestTarget(PageReference pageReference)
+ {
+ if (pageReference == null)
+ {
+ throw new IllegalArgumentException("Argument `pageId`
cannot be null");
+ }
+
+ reference = pageReference;
+ }
+
+
+ /**
+ * @return id page id
+ */
+ public final PageReference getPageReference()
+ {
+ return reference;
+ }
+
+ /** {...@inheritdoc} */
+ public void respond(RequestCycle requestCycle)
+ {
+ Page page = reference.getPage();
+
+ // Should page be redirected to?
+ if (requestCycle.isRedirect())
+ {
+ // Redirect to the page
+ requestCycle.redirectTo(page);
+ }
+ else
+ {
+ // Let page render itself
+ page.renderPage();
+ }
+ }
+
+ /** {...@inheritdoc} */
+ public void detach(RequestCycle requestCycle)
+ {
+ reference.getPage().detach();
+ }
+
+}