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());