Repository: wicket
Updated Branches:
  refs/heads/wicket-8.x a44613885 -> 826f1c9a4


WICKET-6578 ResourceLink is stateless

when used with resourceReference


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/826f1c9a
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/826f1c9a
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/826f1c9a

Branch: refs/heads/wicket-8.x
Commit: 826f1c9a4e03b8458121511ef8a08d97eeb28e5f
Parents: a446138
Author: Sven Meier <svenme...@apache.org>
Authored: Fri Dec 7 16:55:41 2018 +0100
Committer: Sven Meier <svenme...@apache.org>
Committed: Fri Dec 7 16:55:41 2018 +0100

----------------------------------------------------------------------
 .../wicket/markup/html/link/ResourceLink.java   | 29 ++++++---
 .../markup/html/link/PageWithResourceLink.html  |  8 +++
 .../markup/html/link/PageWithResourceLink.java  | 47 ++++++++++++++
 .../markup/html/link/ResourceLinkTest.java      | 65 ++++++++++++++++++++
 4 files changed, 142 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/826f1c9a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ResourceLink.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ResourceLink.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ResourceLink.java
index dcfe7a5..303c067 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ResourceLink.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ResourceLink.java
@@ -106,15 +106,20 @@ public class ResourceLink<T> extends Link<T> implements 
IRequestListener
                return false;
        }
        
+       /**
+        * For {@link ResourceReference}s this link is stateless.
+        * 
+        * @return <code>true</code> if a resourceReference was provided to the
+        *         constructor
+        * 
+        * @see ResourceLink#ResourceLink(String, ResourceReference)
+        * @see ResourceLink#ResourceLink(String, ResourceReference, 
PageParameters)
+        */
        @Override
-       public final void onRequest()
+       protected boolean getStatelessHint()
        {
-               Attributes a = new Attributes(RequestCycle.get().getRequest(), 
RequestCycle.get()
-                       .getResponse(), null);
-               resource.respond(a);
-               
-               super.onRequest();
-       }
+               return resourceReference != null;
+       }   
 
        @Override
        protected final CharSequence getURL()
@@ -140,4 +145,14 @@ public class ResourceLink<T> extends Link<T> implements 
IRequestListener
                }
                return urlForListener(resourceParameters);
        }
+       
+       @Override
+       public final void onRequest()
+       {
+               Attributes a = new Attributes(RequestCycle.get().getRequest(), 
RequestCycle.get()
+                       .getResponse(), null);
+               resource.respond(a);
+               
+               super.onRequest();
+       }       
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/826f1c9a/wicket-core/src/test/java/org/apache/wicket/markup/html/link/PageWithResourceLink.html
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/link/PageWithResourceLink.html
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/link/PageWithResourceLink.html
new file mode 100644
index 0000000..cb27a2c
--- /dev/null
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/link/PageWithResourceLink.html
@@ -0,0 +1,8 @@
+<html xmlns:wicket>
+<head>
+<title>Mock Page</title>
+</head>
+<body>
+<a href="#" wicket:id="link">Link</a>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/wicket/blob/826f1c9a/wicket-core/src/test/java/org/apache/wicket/markup/html/link/PageWithResourceLink.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/link/PageWithResourceLink.java
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/link/PageWithResourceLink.java
new file mode 100644
index 0000000..ccec067
--- /dev/null
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/link/PageWithResourceLink.java
@@ -0,0 +1,47 @@
+/*
+ * 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.markup.html.link;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.panel.EmptyPanel;
+import org.apache.wicket.request.resource.IResource;
+import org.apache.wicket.request.resource.ResourceReference;
+
+public class PageWithResourceLink extends WebPage
+{
+       public PageWithResourceLink()
+       {
+               this(new EmptyPanel("link"));
+       }
+
+       public PageWithResourceLink(ResourceReference reference)
+       {
+               this(new ResourceLink<Void>("link", reference));
+       }
+
+       public PageWithResourceLink(IResource resource)
+       {
+               this(new ResourceLink<Void>("link", resource));
+       }
+       
+       private PageWithResourceLink(Component component) {
+               add(component);
+                       
+               setStatelessHint(true);
+       }
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/826f1c9a/wicket-core/src/test/java/org/apache/wicket/markup/html/link/ResourceLinkTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/link/ResourceLinkTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/link/ResourceLinkTest.java
new file mode 100644
index 0000000..78a2a10
--- /dev/null
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/link/ResourceLinkTest.java
@@ -0,0 +1,65 @@
+/*
+ * 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.markup.html.link;
+
+import org.apache.wicket.request.resource.CharSequenceResource;
+import org.apache.wicket.request.resource.IResource;
+import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.util.tester.WicketTestCase;
+import org.junit.Test;
+
+
+/**
+ * Tests {@link ResourceLink}
+ */
+public class ResourceLinkTest extends WicketTestCase
+{
+
+       IResource resource = new CharSequenceResource("text", "DATA");
+       
+       /**
+        * Test resource
+        */
+       @Test
+       public void reference()
+       {
+               ResourceReference reference = new 
ResourceReference(ResourceLinkTest.class, "resource") {
+                       @Override
+                       public IResource getResource() {
+                               return resource;
+                       }
+               };
+               PageWithResourceLink page = new PageWithResourceLink(reference);
+               
+               tester.startPage(page);
+
+               assertTrue(page.isPageStateless());
+       }
+
+       /**
+        * Test resource
+        */
+       @Test
+       public void resource()
+       {
+               PageWithResourceLink page = new PageWithResourceLink(resource);
+               
+               tester.startPage(page);
+
+               assertFalse(page.isPageStateless());
+       }
+}

Reply via email to