You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2017/08/06 11:58:46 UTC
[1/7] wicket git commit: Fixes issue of pushing resources
Repository: wicket
Updated Branches:
refs/heads/master 549ff6300 -> 5ec319ff4
Fixes issue of pushing resources
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/87c8f50f
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/87c8f50f
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/87c8f50f
Branch: refs/heads/master
Commit: 87c8f50f3eee39e89053c0ab6690b8389d2d5714
Parents: 2354d9d
Author: Tobias Soloschenko <ts...@sapient.com>
Authored: Tue Aug 1 07:32:47 2017 +0200
Committer: Tobias Soloschenko <ts...@sapient.com>
Committed: Tue Aug 1 07:44:52 2017 +0200
----------------------------------------------------------------------
.../http2/markup/head/NoopPushBuilder.java | 2 +-
.../wicket/http2/markup/head/PushBuilder.java | 6 +-
.../http2/markup/head/PushHeaderItem.java | 59 +++++++---
.../wicket/http2/markup/head/PushItem.java | 117 +++++++++++++++++--
.../http2/markup/head/PushItemHeaderValue.java | 101 ++++++++++++++++
.../http2/markup/head/Jetty9PushBuilder.java | 19 ++-
.../wicket-http2/wicket-http2-tomcat/pom.xml | 2 +-
.../http2/markup/head/Tomcat85PushBuilder.java | 17 ++-
.../http2/markup/head/UndertowPushBuilder.java | 17 ++-
.../main/asciidoc/http2push/http2push_1.adoc | 4 +-
10 files changed, 301 insertions(+), 43 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/87c8f50f/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/NoopPushBuilder.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/NoopPushBuilder.java b/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/NoopPushBuilder.java
index b9042a2..eb6dd4d 100644
--- a/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/NoopPushBuilder.java
+++ b/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/NoopPushBuilder.java
@@ -52,7 +52,7 @@ public class NoopPushBuilder implements PushBuilder
* </p>
*/
@Override
- public void push(HttpServletRequest httpServletRequest, String... paths)
+ public void push(HttpServletRequest httpServletRequest, PushItem... pushItems)
{
LOG.warn(
"This PushBuilder does nothing. Please use one of the other implementations - Jetty9 or Tomcat8.5+");
http://git-wip-us.apache.org/repos/asf/wicket/blob/87c8f50f/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushBuilder.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushBuilder.java b/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushBuilder.java
index 7f1eccd..c651899 100644
--- a/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushBuilder.java
+++ b/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushBuilder.java
@@ -28,8 +28,8 @@ public interface PushBuilder
*
* @param httpServletRequest
* the http servlet request to get the push builder from
- * @param paths
- * the paths of the resources to be pushed
+ * @param pushItems
+ * the pushItems of the resources to be pushed
*/
- void push(HttpServletRequest httpServletRequest, String... paths);
+ void push(HttpServletRequest httpServletRequest, PushItem... pushItems);
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/87c8f50f/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushHeaderItem.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushHeaderItem.java b/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushHeaderItem.java
index 1660ef7..94d55ad 100644
--- a/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushHeaderItem.java
+++ b/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushHeaderItem.java
@@ -36,6 +36,7 @@ import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.http2.Http2Settings;
import org.apache.wicket.markup.head.HeaderItem;
import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.request.IRequestHandler;
import org.apache.wicket.request.Request;
import org.apache.wicket.request.Response;
@@ -97,7 +98,7 @@ public class PushHeaderItem extends HeaderItem
/**
* The URLs of resources to be pushed to the client
*/
- private Set<String> urls = new ConcurrentHashSet<String>(new TreeSet<String>());
+ private Set<PushItem> pushItems = new ConcurrentHashSet<PushItem>(new TreeSet<PushItem>());
/**
* The web response of the page to apply the caching information to
*/
@@ -147,9 +148,9 @@ public class PushHeaderItem extends HeaderItem
public Iterable<?> getRenderTokens()
{
Set<String> tokens = new TreeSet<String>();
- for (String url : urls)
+ for (PushItem pushItem : pushItems)
{
- tokens.add(url + TOKEN_SUFFIX);
+ tokens.add(pushItem.getUrl() + TOKEN_SUFFIX);
}
return tokens;
}
@@ -305,7 +306,7 @@ public class PushHeaderItem extends HeaderItem
// Receives the vendor specific push builder
Http2Settings http2Settings = Http2Settings.Holder.get(Application.get());
PushBuilder pushBuilder = http2Settings.getPushBuilder();
- pushBuilder.push(request, urls.toArray(new String[urls.size()]));
+ pushBuilder.push(request, pushItems.toArray(new PushItem[pushItems.size()]));
}
/**
@@ -337,7 +338,7 @@ public class PushHeaderItem extends HeaderItem
{
url = requestCycle.urlFor((ResourceReference)object, parameters);
}
- else if (object instanceof Class)
+ else if (Page.class.isAssignableFrom(object.getClass()))
{
url = requestCycle.urlFor((Class<? extends Page>)object, parameters);
}
@@ -345,6 +346,10 @@ public class PushHeaderItem extends HeaderItem
{
url = requestCycle.urlFor((IRequestHandler)object);
}
+ else if (pushItem.getUrl() != null)
+ {
+ url = pushItem.getUrl();
+ }
else
{
Url encoded = new PageParametersEncoder().encodePageParameters(parameters);
@@ -361,7 +366,32 @@ public class PushHeaderItem extends HeaderItem
url = url.toString().substring(1);
}
- urls.add(url.toString());
+ // The context path and the filter have to be applied to the URL, because otherwise
+ // the resource is not pushed correctly
+ StringBuffer partialUrl = new StringBuffer();
+ String contextPath = WebApplication.get().getServletContext().getContextPath();
+ partialUrl.append(contextPath);
+ if (!contextPath.equals("/"))
+ {
+ partialUrl.append("/");
+ }
+ String filterPath = WebApplication.get().getWicketFilter().getFilterPath();
+ if (filterPath.equals("/"))
+ {
+ filterPath = "";
+ }
+ else if (filterPath.endsWith("/"))
+ {
+ filterPath = filterPath.replaceAll(".$", "");
+ }
+ partialUrl.append(filterPath);
+ partialUrl.append(url.toString());
+
+ // Set the url the resource is going to be pushed with
+ pushItem.setUrl(partialUrl.toString());
+
+ // Apply the push item to be used during the push process
+ this.pushItems.add(pushItem);
}
return this;
}
@@ -419,18 +449,19 @@ public class PushHeaderItem extends HeaderItem
@Override
public boolean equals(Object o)
{
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- PushHeaderItem that = (PushHeaderItem) o;
- return Objects.equals(urls, that.urls) &&
- Objects.equals(pageWebResponse, that.pageWebResponse) &&
- Objects.equals(pageWebRequest, that.pageWebRequest) &&
- Objects.equals(page, that.page);
+ if (this == o)
+ return true;
+ if (o == null || getClass() != o.getClass())
+ return false;
+ PushHeaderItem that = (PushHeaderItem)o;
+ return Objects.equals(pushItems, that.pushItems) &&
+ Objects.equals(pageWebResponse, that.pageWebResponse) &&
+ Objects.equals(pageWebRequest, that.pageWebRequest) && Objects.equals(page, that.page);
}
@Override
public int hashCode()
{
- return Objects.hash(urls, pageWebResponse, pageWebRequest, page);
+ return Objects.hash(pushItems, pageWebResponse, pageWebRequest, page);
}
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/87c8f50f/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushItem.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushItem.java b/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushItem.java
index e6f1f8d..6a5c5db 100644
--- a/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushItem.java
+++ b/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushItem.java
@@ -16,6 +16,11 @@
*/
package org.apache.wicket.http2.markup.head;
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
import org.apache.wicket.Component;
import org.apache.wicket.request.mapper.parameter.PageParameters;
@@ -25,35 +30,74 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
*
* @author Tobias Soloschenko
*/
-public class PushItem
+public class PushItem implements Serializable
{
- private Object object;
+ private static final long serialVersionUID = 1L;
+
+ private Serializable object;
private PageParameters pageParameters;
+ private String url;
+
+ private Map<String, PushItemHeaderValue> headers = new HashMap<>();
+
/**
* Creates a push item
*
* @param object
- * the object
+ * the object to extract the push URL information from
* @param pageParameters
* the page parameters
+ * @param headers
+ * the headers to be applied to the push
*/
- public PushItem(Object object, PageParameters pageParameters)
+ public PushItem(Serializable object, PageParameters pageParameters,
+ Map<String, PushItemHeaderValue> headers)
{
this.object = object;
this.pageParameters = pageParameters;
+ if (headers != null)
+ {
+ this.headers = headers;
+ }
}
/**
* Creates a push item
*
* @param object
- * the object
+ * the object to extract the push URL information from
+ * @param headers
+ * the headers to be applied to the push
*/
- public PushItem(Object object)
+ public PushItem(Serializable object, Map<String, PushItemHeaderValue> headers)
{
- this.object = object;
+ this(object, null, headers);
+ }
+
+ /**
+ * Creates a push item
+ *
+ * @param object
+ * the object to extract the push URL information from
+ * @param pageParameters
+ * the page parameters
+ */
+ public PushItem(Serializable object, PageParameters pageParameters)
+ {
+ this(object, pageParameters, null);
+ }
+
+ /**
+ * Creates a push item
+ *
+ * @param object
+ * the object to extract the push URL information from
+ */
+ public PushItem(Serializable object)
+ {
+ this(object, null, null);
}
/**
@@ -64,9 +108,9 @@ public class PushItem
}
/**
- * Gets the object
+ * Gets the object which contains the push URL information
*
- * @return the object
+ * @return the object to extract the push URL information from
*/
public Object getObject()
{
@@ -74,13 +118,14 @@ public class PushItem
}
/**
- * Sets the object
+ * Sets the object which contains the push URL information
*
* @param object
- * the object
+ * the object to extract the push URL information from
+ * @see {@link org.apache.wicket.request.cycle.RequestCycle} (urlFor methods)
* @return the push item
*/
- public PushItem setObject(Object object)
+ public PushItem setObject(Serializable object)
{
this.object = object;
return this;
@@ -108,4 +153,52 @@ public class PushItem
this.pageParameters = pageParameters;
return this;
}
+
+ /**
+ * Gets the URL composed within the push header item
+ *
+ * @see {@link org.apache.wicket.http2.markup.head.PushHeaderItem#push(List)}
+ * @return the URL to be pushed
+ */
+ public String getUrl()
+ {
+ return url;
+ }
+
+ /**
+ * Sets the URL composed within the push header item
+ *
+ * @see {@link org.apache.wicket.http2.markup.head.PushHeaderItem#push(List)}
+ * @param url
+ * the URL used to push the resource
+ * @return the push item
+ */
+ public PushItem setUrl(String url)
+ {
+ this.url = url;
+ return this;
+ }
+
+ /**
+ * Gets the headers to be added to the push response
+ *
+ * @return the headers to be added to the push response
+ */
+ public Map<String, PushItemHeaderValue> getHeaders()
+ {
+ return headers;
+ }
+
+ /**
+ * Sets the headers to be added to the push response
+ *
+ * @param headers
+ * the headers to be added to the push response
+ * @return the push item
+ */
+ public PushItem setHeaders(Map<String, PushItemHeaderValue> headers)
+ {
+ this.headers = headers;
+ return this;
+ }
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/87c8f50f/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushItemHeaderValue.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushItemHeaderValue.java b/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushItemHeaderValue.java
new file mode 100644
index 0000000..c7af05b
--- /dev/null
+++ b/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushItemHeaderValue.java
@@ -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.http2.markup.head;
+
+/**
+ * A push header to be applied when the resource is pushed
+ *
+ * @author Tobias Soloschenko
+ *
+ */
+public class PushItemHeaderValue
+{
+ /**
+ * The header operation to be used
+ *
+ * @author Tobias Soloschenko
+ *
+ */
+ public enum HeaderOperation {
+ /**
+ * Header value is going to be set
+ */
+ SET,
+ /**
+ * Header value is going to be add
+ */
+ ADD
+ }
+
+ private String value;
+
+ private HeaderOperation operation;
+
+ /**
+ * @param value
+ * the value of the header
+ * @param operation
+ * the header operation
+ */
+ public PushItemHeaderValue(String value, HeaderOperation operation)
+ {
+ this.value = value;
+ this.operation = operation;
+ }
+
+ /**
+ * The value of the header
+ *
+ * @return the value of the header
+ */
+ public String getValue()
+ {
+ return value;
+ }
+
+ /**
+ * Sets the value of the header
+ *
+ * @param value
+ * the value of the header
+ */
+ public void setValue(String value)
+ {
+ this.value = value;
+ }
+
+ /**
+ * Gets the header operation
+ *
+ * @return the header operation
+ */
+ public HeaderOperation getOperation()
+ {
+ return operation;
+ }
+
+ /**
+ * Sets the header operation
+ *
+ * @param operation
+ * the header operation
+ */
+ public void setOperation(HeaderOperation operation)
+ {
+ this.operation = operation;
+ }
+}
http://git-wip-us.apache.org/repos/asf/wicket/blob/87c8f50f/wicket-experimental/wicket-http2/wicket-http2-jetty/src/main/java/org/apache/wicket/http2/markup/head/Jetty9PushBuilder.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-http2/wicket-http2-jetty/src/main/java/org/apache/wicket/http2/markup/head/Jetty9PushBuilder.java b/wicket-experimental/wicket-http2/wicket-http2-jetty/src/main/java/org/apache/wicket/http2/markup/head/Jetty9PushBuilder.java
index be7f44f..099b70c 100644
--- a/wicket-experimental/wicket-http2/wicket-http2-jetty/src/main/java/org/apache/wicket/http2/markup/head/Jetty9PushBuilder.java
+++ b/wicket-experimental/wicket-http2/wicket-http2-jetty/src/main/java/org/apache/wicket/http2/markup/head/Jetty9PushBuilder.java
@@ -18,6 +18,7 @@ package org.apache.wicket.http2.markup.head;
import javax.servlet.http.HttpServletRequest;
+import org.apache.wicket.http2.markup.head.PushItemHeaderValue.HeaderOperation;
import org.apache.wicket.request.Request;
import org.apache.wicket.request.cycle.RequestCycle;
import org.slf4j.Logger;
@@ -33,16 +34,26 @@ public class Jetty9PushBuilder implements PushBuilder
private static final Logger LOG = LoggerFactory.getLogger(Jetty9PushBuilder.class);
@Override
- public void push(HttpServletRequest httpServletRequest, String... paths)
+ public void push(HttpServletRequest httpServletRequest, PushItem... pushItems)
{
Request request = RequestCycle.get().getRequest();
HttpServletRequest httpRequest = (HttpServletRequest) request.getContainerRequest();
- org.eclipse.jetty.server.PushBuilder pushBuilder = org.eclipse.jetty.server.Request.getBaseRequest(httpRequest).getPushBuilder();
+ final org.eclipse.jetty.server.PushBuilder pushBuilder = org.eclipse.jetty.server.Request.getBaseRequest(httpRequest).getPushBuilder();
if (pushBuilder != null)
{
- for (String path : paths)
+ for (PushItem pushItem : pushItems)
{
- pushBuilder.path(path).push();
+ pushBuilder.path(pushItem.getUrl());
+ pushItem.getHeaders().entrySet().stream().forEach(pushHeader -> {
+ String key = pushHeader.getKey();
+ PushItemHeaderValue value = pushHeader.getValue();
+ if(value.getOperation() == HeaderOperation.ADD){
+ pushBuilder.addHeader(key, value.getValue());
+ }else{
+ pushBuilder.setHeader(key, value.getValue());
+ }
+ });
+ pushBuilder.push();
}
}
else
http://git-wip-us.apache.org/repos/asf/wicket/blob/87c8f50f/wicket-experimental/wicket-http2/wicket-http2-tomcat/pom.xml
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-http2/wicket-http2-tomcat/pom.xml b/wicket-experimental/wicket-http2/wicket-http2-tomcat/pom.xml
index ad6dafd..0796f9e 100644
--- a/wicket-experimental/wicket-http2/wicket-http2-tomcat/pom.xml
+++ b/wicket-experimental/wicket-http2/wicket-http2-tomcat/pom.xml
@@ -40,7 +40,7 @@
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
- <version>8.5.15</version>
+ <version>8.5.19</version>
<scope>provided</scope>
</dependency>
</dependencies>
http://git-wip-us.apache.org/repos/asf/wicket/blob/87c8f50f/wicket-experimental/wicket-http2/wicket-http2-tomcat/src/main/java/org/apache/wicket/http2/markup/head/Tomcat85PushBuilder.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-http2/wicket-http2-tomcat/src/main/java/org/apache/wicket/http2/markup/head/Tomcat85PushBuilder.java b/wicket-experimental/wicket-http2/wicket-http2-tomcat/src/main/java/org/apache/wicket/http2/markup/head/Tomcat85PushBuilder.java
index b436e68..1aac741 100644
--- a/wicket-experimental/wicket-http2/wicket-http2-tomcat/src/main/java/org/apache/wicket/http2/markup/head/Tomcat85PushBuilder.java
+++ b/wicket-experimental/wicket-http2/wicket-http2-tomcat/src/main/java/org/apache/wicket/http2/markup/head/Tomcat85PushBuilder.java
@@ -18,6 +18,7 @@ package org.apache.wicket.http2.markup.head;
import javax.servlet.http.HttpServletRequest;
+import org.apache.wicket.http2.markup.head.PushItemHeaderValue.HeaderOperation;
import org.apache.wicket.request.Request;
import org.apache.wicket.request.cycle.RequestCycle;
import org.slf4j.Logger;
@@ -31,7 +32,7 @@ public class Tomcat85PushBuilder implements PushBuilder
private static final Logger LOG = LoggerFactory.getLogger(Tomcat85PushBuilder.class);
@Override
- public void push(HttpServletRequest httpServletRequest, String... paths)
+ public void push(HttpServletRequest httpServletRequest, PushItem... pushItems)
{
Request request = RequestCycle.get().getRequest();
HttpServletRequest httpRequest = (HttpServletRequest) request.getContainerRequest();
@@ -39,9 +40,19 @@ public class Tomcat85PushBuilder implements PushBuilder
org.apache.catalina.servlet4preview.http.PushBuilder pushBuilder = tomcatRequest.newPushBuilder();
if (pushBuilder != null)
{
- for (String path : paths)
+ for (PushItem pushItem : pushItems)
{
- pushBuilder.path(path).push();
+ pushBuilder.path(pushItem.getUrl());
+ pushItem.getHeaders().entrySet().stream().forEach(pushHeader -> {
+ String key = pushHeader.getKey();
+ PushItemHeaderValue value = pushHeader.getValue();
+ if(value.getOperation() == HeaderOperation.ADD){
+ pushBuilder.addHeader(key, value.getValue());
+ }else{
+ pushBuilder.setHeader(key, value.getValue());
+ }
+ });
+ pushBuilder.push();
}
}
else
http://git-wip-us.apache.org/repos/asf/wicket/blob/87c8f50f/wicket-experimental/wicket-http2/wicket-http2-undertow/src/main/java/org/apache/wicket/http2/markup/head/UndertowPushBuilder.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-http2/wicket-http2-undertow/src/main/java/org/apache/wicket/http2/markup/head/UndertowPushBuilder.java b/wicket-experimental/wicket-http2/wicket-http2-undertow/src/main/java/org/apache/wicket/http2/markup/head/UndertowPushBuilder.java
index c14aecd..7833870 100644
--- a/wicket-experimental/wicket-http2/wicket-http2-undertow/src/main/java/org/apache/wicket/http2/markup/head/UndertowPushBuilder.java
+++ b/wicket-experimental/wicket-http2/wicket-http2-undertow/src/main/java/org/apache/wicket/http2/markup/head/UndertowPushBuilder.java
@@ -18,6 +18,7 @@ package org.apache.wicket.http2.markup.head;
import javax.servlet.http.HttpServletRequest;
+import org.apache.wicket.http2.markup.head.PushItemHeaderValue.HeaderOperation;
import org.apache.wicket.request.Request;
import org.apache.wicket.request.cycle.RequestCycle;
import org.slf4j.Logger;
@@ -33,7 +34,7 @@ public class UndertowPushBuilder implements PushBuilder
private static final Logger LOG = LoggerFactory.getLogger(UndertowPushBuilder.class);
@Override
- public void push(HttpServletRequest httpServletRequest, String... paths)
+ public void push(HttpServletRequest httpServletRequest, PushItem... pushItems)
{
Request request = RequestCycle.get().getRequest();
HttpServletRequest httpRequest = (HttpServletRequest) request.getContainerRequest();
@@ -42,9 +43,19 @@ public class UndertowPushBuilder implements PushBuilder
io.undertow.servlet.spec.PushBuilderImpl pushBuilder = (io.undertow.servlet.spec.PushBuilderImpl)undertowRequest.getPushBuilder();
if (pushBuilder != null)
{
- for (String path : paths)
+ for (PushItem pushItem : pushItems)
{
- pushBuilder.path(path).push();
+ pushBuilder.path(pushItem.getUrl());
+ pushItem.getHeaders().entrySet().stream().forEach(pushHeader -> {
+ String key = pushHeader.getKey();
+ PushItemHeaderValue value = pushHeader.getValue();
+ if(value.getOperation() == HeaderOperation.ADD){
+ pushBuilder.addHeader(key, value.getValue());
+ }else{
+ pushBuilder.setHeader(key, value.getValue());
+ }
+ });
+ pushBuilder.push();
}
}
else
http://git-wip-us.apache.org/repos/asf/wicket/blob/87c8f50f/wicket-user-guide/src/main/asciidoc/http2push/http2push_1.adoc
----------------------------------------------------------------------
diff --git a/wicket-user-guide/src/main/asciidoc/http2push/http2push_1.adoc b/wicket-user-guide/src/main/asciidoc/http2push/http2push_1.adoc
index ebce17b..138ec5b 100644
--- a/wicket-user-guide/src/main/asciidoc/http2push/http2push_1.adoc
+++ b/wicket-user-guide/src/main/asciidoc/http2push/http2push_1.adoc
@@ -34,9 +34,9 @@ public class HTTP2Page extends WebPage
{
private static final long serialVersionUID = 1L;
- private Response webPageResponse;
+ private transient Response webPageResponse;
- private Request webPageRequest;
+ private transient Request webPageRequest;
public HTTP2Page()
{
[5/7] wicket git commit: Small code cleaning to
BasicResourceReferenceMapper
Posted by mg...@apache.org.
Small code cleaning to BasicResourceReferenceMapper
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/d062ac55
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/d062ac55
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/d062ac55
Branch: refs/heads/master
Commit: d062ac55dd83b0cf4c262295ff504687daaa4c29
Parents: b16b075
Author: Andrea Del Bene <ad...@apache.org>
Authored: Sat Aug 5 12:43:43 2017 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Sun Aug 6 14:53:00 2017 +0300
----------------------------------------------------------------------
.../mapper/BasicResourceReferenceMapper.java | 16 +++-------------
1 file changed, 3 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/d062ac55/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapper.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapper.java
index d0f1375..2c533bc 100755
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapper.java
@@ -204,19 +204,9 @@ public class BasicResourceReferenceMapper extends AbstractResourceReferenceMappe
segments.add(getClassName(reference.getScope()));
// setup resource parameters
- PageParameters parameters = referenceRequestHandler.getPageParameters();
-
- if (parameters == null)
- {
- parameters = new PageParameters();
- }
- else
- {
- parameters = new PageParameters(parameters);
-
- // need to remove indexed parameters otherwise the URL won't be able to decode
- parameters.clearIndexed();
- }
+ PageParameters parameters = new PageParameters(referenceRequestHandler.getPageParameters());
+ // need to remove indexed parameters otherwise the URL won't be able to decode
+ parameters.clearIndexed();
ResourceUtil.encodeResourceReferenceAttributes(url, reference);
[7/7] wicket git commit: Merge branch 'pr-227-push_issue_fix'
Posted by mg...@apache.org.
Merge branch 'pr-227-push_issue_fix'
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/5ec319ff
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/5ec319ff
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/5ec319ff
Branch: refs/heads/master
Commit: 5ec319ff46b862204f4c7fe56dc9b298fd495a8d
Parents: 549ff63 8353b35
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Sun Aug 6 14:58:36 2017 +0300
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Sun Aug 6 14:58:36 2017 +0300
----------------------------------------------------------------------
pom.xml | 4 +-
.../http2/markup/head/NoopPushBuilder.java | 2 +-
.../wicket/http2/markup/head/PushBuilder.java | 6 +-
.../http2/markup/head/PushHeaderItem.java | 59 +++++++---
.../wicket/http2/markup/head/PushItem.java | 117 +++++++++++++++++--
.../http2/markup/head/PushItemHeaderValue.java | 101 ++++++++++++++++
.../http2/markup/head/Jetty9PushBuilder.java | 19 ++-
.../wicket-http2/wicket-http2-tomcat/pom.xml | 2 +-
.../http2/markup/head/Tomcat85PushBuilder.java | 17 ++-
.../http2/markup/head/UndertowPushBuilder.java | 17 ++-
.../main/asciidoc/http2push/http2push_1.adoc | 4 +-
11 files changed, 303 insertions(+), 45 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/5ec319ff/pom.xml
----------------------------------------------------------------------
diff --cc pom.xml
index fdbc63e,fdbc63e..ac0df56
--- a/pom.xml
+++ b/pom.xml
@@@ -153,7 -153,7 +153,7 @@@
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
-- <version>22.0</version>
++ <version>23.0</version>
</dependency>
<dependency>
<groupId>javax.el</groupId>
@@@ -754,7 -754,7 +754,7 @@@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
-- <version>3.6.1</version>
++ <version>3.6.2</version>
<inherited>true</inherited>
</plugin>
<plugin>
[4/7] wicket git commit: Clean up Clirr configurations.
Posted by mg...@apache.org.
Clean up Clirr configurations.
For some reason wicket-cdi 7.x was compared against Wicket 6.1.0
(cherry picked from commit a89f2a7b7d4e915c86c2622cbf16f879fa7085da)
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/8353b35c
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/8353b35c
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/8353b35c
Branch: refs/heads/master
Commit: 8353b35c37ec0d4a4ab25a5a5c7b6c273d026b43
Parents: 2472fa0
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Sun Aug 6 14:00:48 2017 +0300
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Sun Aug 6 14:53:00 2017 +0300
----------------------------------------------------------------------
wicket-cdi/pom.xml | 29 -----------------------------
wicket-devutils/pom.xml | 13 -------------
wicket-experimental/pom.xml | 17 ++++-------------
3 files changed, 4 insertions(+), 55 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/8353b35c/wicket-cdi/pom.xml
----------------------------------------------------------------------
diff --git a/wicket-cdi/pom.xml b/wicket-cdi/pom.xml
index 21d4112..ffb927d 100644
--- a/wicket-cdi/pom.xml
+++ b/wicket-cdi/pom.xml
@@ -61,33 +61,4 @@
<artifactId>junit</artifactId>
</dependency>
</dependencies>
- <build>
- <pluginManagement>
- <plugins>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>clirr-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>clirr-check</id>
- <phase>compile</phase>
- <goals>
- <goal>check</goal>
- </goals>
- <configuration>
- <comparisonVersion>6.1.0</comparisonVersion>
- <failOnError>true</failOnError>
- <logResults>true</logResults>
- </configuration>
- </execution>
- </executions>
- <configuration>
- <comparisonVersion>6.1.0</comparisonVersion>
- <failOnError>true</failOnError>
- <logResults>true</logResults>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
- </build>
</project>
http://git-wip-us.apache.org/repos/asf/wicket/blob/8353b35c/wicket-devutils/pom.xml
----------------------------------------------------------------------
diff --git a/wicket-devutils/pom.xml b/wicket-devutils/pom.xml
index b5bee39..b21d499 100644
--- a/wicket-devutils/pom.xml
+++ b/wicket-devutils/pom.xml
@@ -41,17 +41,4 @@
<artifactId>wicket-extensions</artifactId>
</dependency>
</dependencies>
- <build>
- <pluginManagement>
- <plugins>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>clirr-maven-plugin</artifactId>
- <configuration>
- <skip>true</skip>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
- </build>
</project>
http://git-wip-us.apache.org/repos/asf/wicket/blob/8353b35c/wicket-experimental/pom.xml
----------------------------------------------------------------------
diff --git a/wicket-experimental/pom.xml b/wicket-experimental/pom.xml
index 1c9c529..ff4012a 100644
--- a/wicket-experimental/pom.xml
+++ b/wicket-experimental/pom.xml
@@ -32,17 +32,8 @@
<module>wicket-http2</module>
<module>wicket-metrics</module>
</modules>
- <build>
- <pluginManagement>
- <plugins>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>clirr-maven-plugin</artifactId>
- <configuration>
- <skip>true</skip>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
- </build>
+
+ <properties>
+ <clirr.skip>true</clirr.skip>
+ </properties>
</project>
[6/7] wicket git commit: Library versions are updated
Posted by mg...@apache.org.
Library versions are updated
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/1f7b447d
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/1f7b447d
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/1f7b447d
Branch: refs/heads/master
Commit: 1f7b447db3effc2d20352939d10d9fe4b830189f
Parents: d062ac5
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Sat Aug 5 22:08:45 2017 +0700
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Sun Aug 6 14:53:00 2017 +0300
----------------------------------------------------------------------
pom.xml | 24 ++++++++++++------------
testing/wicket-arquillian/pom.xml | 4 ++--
2 files changed, 14 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/1f7b447d/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index ec0b726..fdbc63e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -126,10 +126,10 @@
<!-- Project Versions -->
<cglib.version>3.2.5</cglib.version>
<jacoco.version>0.7.9</jacoco.version>
- <jetty.version>9.4.5.v20170502</jetty.version>
+ <jetty.version>9.4.6.v20170531</jetty.version>
<joda-time.version>2.9.9</joda-time.version>
<junit.version>4.12</junit.version>
- <spring.version>4.3.8.RELEASE</spring.version>
+ <spring.version>4.3.10.RELEASE</spring.version>
<servlet-api.version>3.1.0</servlet-api.version>
<maven.javadoc.version>2.10.4</maven.javadoc.version>
<maven.surefire.version>2.20</maven.surefire.version>
@@ -137,9 +137,9 @@
<slf4j.version>1.7.25</slf4j.version>
<log4j.version>2.8.2</log4j.version>
<hamcrest.version>2.0.0.0</hamcrest.version>
- <objenesis.version>2.5.1</objenesis.version>
+ <objenesis.version>2.6</objenesis.version>
<aspectj.version>1.8.10</aspectj.version>
- <metrics.version>3.2.2</metrics.version>
+ <metrics.version>3.2.3</metrics.version>
</properties>
<dependencyManagement>
@@ -147,7 +147,7 @@
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
- <version>3.0.1</version>
+ <version>3.0.2</version>
<scope>provided</scope>
</dependency>
<dependency>
@@ -176,7 +176,7 @@
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
- <version>1.1.0.Final</version>
+ <version>2.0.0.Final</version>
<scope>provided</scope>
</dependency>
<dependency>
@@ -224,7 +224,7 @@
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
- <version>2.8.8</version>
+ <version>2.9.0</version>
<optional>true</optional>
</dependency>
<dependency>
@@ -235,7 +235,7 @@
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
- <version>1.3.2</version>
+ <version>1.3.3</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
@@ -266,7 +266,7 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
- <version>3.5</version>
+ <version>3.6</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
@@ -428,13 +428,13 @@
<dependency>
<groupId>org.danekja</groupId>
<artifactId>jdk-serializable-functional</artifactId>
- <version>1.8.2</version>
+ <version>1.8.3</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>com.github.openjson</groupId>
<artifactId>openjson</artifactId>
- <version>1.0.7</version>
+ <version>1.0.8</version>
<type>jar</type>
</dependency>
<dependency>
@@ -538,7 +538,7 @@
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
- <version>5.3.4.Final</version>
+ <version>6.0.1.Final</version>
<scope>test</scope>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/wicket/blob/1f7b447d/testing/wicket-arquillian/pom.xml
----------------------------------------------------------------------
diff --git a/testing/wicket-arquillian/pom.xml b/testing/wicket-arquillian/pom.xml
index 73d148d..94613da 100644
--- a/testing/wicket-arquillian/pom.xml
+++ b/testing/wicket-arquillian/pom.xml
@@ -42,12 +42,12 @@
<wicket.arquillian.management.port>11091</wicket.arquillian.management.port>
<!-- end port configuration -->
- <arquillian.version>1.1.12.Final</arquillian.version>
+ <arquillian.version>1.1.13.Final</arquillian.version>
<maven.dependency.plugin.version>2.10</maven.dependency.plugin.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<wildfly.version>8.2.1.Final</wildfly.version>
<version.wildfly.maven.plugin>1.0.2.Final</version.wildfly.maven.plugin>
- <jee.spec.version>1.0.3.Final</jee.spec.version>
+ <jee.spec.version>1.1.0.Final</jee.spec.version>
</properties>
<dependencyManagement>
[3/7] wicket git commit: WICKET-6432 added factory method for
non-model targetChainingModel logs warning now if target is not serializable
Posted by mg...@apache.org.
WICKET-6432 added factory method for non-model targetChainingModel logs warning now if target is not serializable
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/2472fa08
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/2472fa08
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/2472fa08
Branch: refs/heads/master
Commit: 2472fa08f39ec4607e6d69ca3677a3dded368e12
Parents: 1f7b447
Author: Sven Meier <sv...@apache.org>
Authored: Sun Aug 6 09:24:04 2017 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Sun Aug 6 14:53:00 2017 +0300
----------------------------------------------------------------------
.../java/org/apache/wicket/model/ChainingModel.java | 6 ++++++
.../apache/wicket/model/CompoundPropertyModel.java | 16 ++++++++++++++++
2 files changed, 22 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/2472fa08/wicket-core/src/main/java/org/apache/wicket/model/ChainingModel.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/model/ChainingModel.java b/wicket-core/src/main/java/org/apache/wicket/model/ChainingModel.java
index 8d8df3f..fa0ca7a 100644
--- a/wicket-core/src/main/java/org/apache/wicket/model/ChainingModel.java
+++ b/wicket-core/src/main/java/org/apache/wicket/model/ChainingModel.java
@@ -16,6 +16,8 @@
*/
package org.apache.wicket.model;
+import java.io.Serializable;
+
import org.apache.wicket.Session;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -46,6 +48,10 @@ public class ChainingModel<T> implements IChainingModel<T>
+ "in models directly as it may lead to serialization problems. "
+ "If you need to access a property of the session via the model use the "
+ "page instance as the model object and 'session.attribute' as the path.");
+ } else if (modelObject instanceof Serializable == false)
+ {
+ LOG.warn("It is not a good idea to reference a non-serializable instance "
+ + "in models directly as it may lead to serialization problems.");
}
target = modelObject;
http://git-wip-us.apache.org/repos/asf/wicket/blob/2472fa08/wicket-core/src/main/java/org/apache/wicket/model/CompoundPropertyModel.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/model/CompoundPropertyModel.java b/wicket-core/src/main/java/org/apache/wicket/model/CompoundPropertyModel.java
index 50bd4a0..6146529 100644
--- a/wicket-core/src/main/java/org/apache/wicket/model/CompoundPropertyModel.java
+++ b/wicket-core/src/main/java/org/apache/wicket/model/CompoundPropertyModel.java
@@ -16,6 +16,8 @@
*/
package org.apache.wicket.model;
+import java.io.Serializable;
+
import org.apache.wicket.Component;
/**
@@ -155,4 +157,18 @@ public class CompoundPropertyModel<T> extends ChainingModel<T> implements ICompo
{
return new CompoundPropertyModel<>(model);
}
+
+ /**
+ * Type-infering factory method
+ *
+ * @param <Z>
+ * the type of the model's object
+ * @param object
+ * model object
+ * @return {@link CompoundPropertyModel} instance
+ */
+ public static <Z extends Serializable> CompoundPropertyModel<Z> of(Z object)
+ {
+ return new CompoundPropertyModel<>(object);
+ }
}
[2/7] wicket git commit: Fixes issue of pushing resources - review
changes
Posted by mg...@apache.org.
Fixes issue of pushing resources - review changes
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/b16b075e
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/b16b075e
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/b16b075e
Branch: refs/heads/master
Commit: b16b075e49d3e72c02628ee6a15d8d993da6a1d1
Parents: 87c8f50
Author: Tobias Soloschenko <ts...@sapient.com>
Authored: Thu Aug 3 12:57:59 2017 +0200
Committer: Tobias Soloschenko <ts...@sapient.com>
Committed: Thu Aug 3 12:57:59 2017 +0200
----------------------------------------------------------------------
.../apache/wicket/http2/markup/head/PushHeaderItem.java | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/b16b075e/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushHeaderItem.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushHeaderItem.java b/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushHeaderItem.java
index 94d55ad..cb7aa44 100644
--- a/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushHeaderItem.java
+++ b/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushHeaderItem.java
@@ -368,21 +368,21 @@ public class PushHeaderItem extends HeaderItem
// The context path and the filter have to be applied to the URL, because otherwise
// the resource is not pushed correctly
- StringBuffer partialUrl = new StringBuffer();
+ StringBuilder partialUrl = new StringBuilder();
String contextPath = WebApplication.get().getServletContext().getContextPath();
partialUrl.append(contextPath);
- if (!contextPath.equals("/"))
+ if (!"/".equals(contextPath))
{
- partialUrl.append("/");
+ partialUrl.append('/');
}
String filterPath = WebApplication.get().getWicketFilter().getFilterPath();
- if (filterPath.equals("/"))
+ if ("/".equals(filterPath))
{
filterPath = "";
}
else if (filterPath.endsWith("/"))
{
- filterPath = filterPath.replaceAll(".$", "");
+ filterPath = filterPath.substring(0, filterPath.length() - 1);
}
partialUrl.append(filterPath);
partialUrl.append(url.toString());