You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by so...@apache.org on 2017/10/02 08:17:06 UTC

[1/6] wicket git commit: Added wicket-http2-servlet4 module

Repository: wicket
Updated Branches:
  refs/heads/WICKET-6105-java.time 2f1b9251b -> adeae9cea


Added wicket-http2-servlet4 module

* provides support for the servlet 4 api

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

Branch: refs/heads/WICKET-6105-java.time
Commit: b8359c8a360544f82e2bd53523e583fcab4ec9ae
Parents: e15993c
Author: Tobias Soloschenko <ts...@apache.org>
Authored: Sun Sep 24 13:14:02 2017 +0200
Committer: Tobias Soloschenko <ts...@apache.org>
Committed: Sun Sep 24 13:15:31 2017 +0200

----------------------------------------------------------------------
 .../wicket-http2/wicket-http2-servlet4/pom.xml  | 47 ++++++++++++++
 .../org/apache/wicket/http2/Initializer.java    | 44 +++++++++++++
 .../http2/markup/head/Servlet4PushBuilder.java  | 65 ++++++++++++++++++++
 .../services/org.apache.wicket.IInitializer     |  1 +
 .../util/license/ApacheLicenceHeaderTest.java   | 34 ++++++++++
 5 files changed, 191 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/b8359c8a/wicket-experimental/wicket-http2/wicket-http2-servlet4/pom.xml
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-http2/wicket-http2-servlet4/pom.xml b/wicket-experimental/wicket-http2/wicket-http2-servlet4/pom.xml
new file mode 100644
index 0000000..442d24d
--- /dev/null
+++ b/wicket-experimental/wicket-http2/wicket-http2-servlet4/pom.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.apache.wicket.experimental.wicket8</groupId>
+		<artifactId>wicket-http2</artifactId>
+		<version>0.2-SNAPSHOT</version>
+		<relativePath>../pom.xml</relativePath>
+	</parent>
+	<artifactId>wicket-http2-servlet4</artifactId>
+	<packaging>bundle</packaging>
+	<name>Wicket Http/2 Servlet 4</name>
+	<description>
+		Wicket’s implementation to use the PushBuilder API
+		to serve resource via http/2 with less requests. This
+		is the Servlet 4 implementation to resolve the PushBuilder API and
+		provide the IInitializer.
+	</description>
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.wicket.experimental.wicket8</groupId>
+			<artifactId>wicket-http2-core</artifactId>
+		</dependency>
+		<dependency>
+		    <groupId>javax.servlet</groupId>
+		    <artifactId>javax.servlet-api</artifactId>
+		    <version>4.0.0</version><!--$NO-MVN-MAN-VER$-->
+		    <scope>provided</scope>
+		</dependency>
+	</dependencies>
+</project>

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8359c8a/wicket-experimental/wicket-http2/wicket-http2-servlet4/src/main/java/org/apache/wicket/http2/Initializer.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-http2/wicket-http2-servlet4/src/main/java/org/apache/wicket/http2/Initializer.java b/wicket-experimental/wicket-http2/wicket-http2-servlet4/src/main/java/org/apache/wicket/http2/Initializer.java
new file mode 100644
index 0000000..8d40bba
--- /dev/null
+++ b/wicket-experimental/wicket-http2/wicket-http2-servlet4/src/main/java/org/apache/wicket/http2/Initializer.java
@@ -0,0 +1,44 @@
+/*
+ * 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;
+
+import org.apache.wicket.Application;
+import org.apache.wicket.IInitializer;
+import org.apache.wicket.http2.markup.head.Servlet4PushBuilder;
+
+/**
+ * Initializes the servlet 4 specific push builder API and makes it available through the HTTP2
+ * settings
+ */
+public class Initializer implements IInitializer
+{
+	/**
+	 * Initializes the push builder API of Servlet 4
+	 */
+	@Override
+	public void init(Application application)
+	{
+		Http2Settings http2Settings = Http2Settings.Holder.get(application);
+		http2Settings.setPushBuilder(new Servlet4PushBuilder());
+	}
+
+	@Override
+	public void destroy(Application application)
+	{
+		// NOOP
+	}
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8359c8a/wicket-experimental/wicket-http2/wicket-http2-servlet4/src/main/java/org/apache/wicket/http2/markup/head/Servlet4PushBuilder.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-http2/wicket-http2-servlet4/src/main/java/org/apache/wicket/http2/markup/head/Servlet4PushBuilder.java b/wicket-experimental/wicket-http2/wicket-http2-servlet4/src/main/java/org/apache/wicket/http2/markup/head/Servlet4PushBuilder.java
new file mode 100644
index 0000000..fe2a804
--- /dev/null
+++ b/wicket-experimental/wicket-http2/wicket-http2-servlet4/src/main/java/org/apache/wicket/http2/markup/head/Servlet4PushBuilder.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.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;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Allows to push resources with the Servlet 4 specific push builder API
+ * 
+ * @author Tobias Soloschenko
+ */
+public class Servlet4PushBuilder implements PushBuilder
+{
+	private static final Logger LOG = LoggerFactory.getLogger(Servlet4PushBuilder.class);
+
+	@Override
+	public void push(HttpServletRequest httpServletRequest, PushItem... pushItems)
+	{
+		Request request = RequestCycle.get().getRequest();
+		HttpServletRequest httpRequest = (HttpServletRequest) request.getContainerRequest();
+		javax.servlet.http.PushBuilder pushBuilder = httpRequest.newPushBuilder();
+		if (pushBuilder != null)
+		{
+			for (PushItem pushItem : pushItems)
+			{
+				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
+		{
+			LOG.warn("Attempted to use HTTP2 Push but it is not supported for the current request: {}!",
+					httpRequest);
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8359c8a/wicket-experimental/wicket-http2/wicket-http2-servlet4/src/main/resources/META-INF/services/org.apache.wicket.IInitializer
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-http2/wicket-http2-servlet4/src/main/resources/META-INF/services/org.apache.wicket.IInitializer b/wicket-experimental/wicket-http2/wicket-http2-servlet4/src/main/resources/META-INF/services/org.apache.wicket.IInitializer
new file mode 100644
index 0000000..f721b3e
--- /dev/null
+++ b/wicket-experimental/wicket-http2/wicket-http2-servlet4/src/main/resources/META-INF/services/org.apache.wicket.IInitializer
@@ -0,0 +1 @@
+org.apache.wicket.http2.Initializer

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8359c8a/wicket-experimental/wicket-http2/wicket-http2-servlet4/src/test/java/org/apache/wicket/util/license/ApacheLicenceHeaderTest.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-http2/wicket-http2-servlet4/src/test/java/org/apache/wicket/util/license/ApacheLicenceHeaderTest.java b/wicket-experimental/wicket-http2/wicket-http2-servlet4/src/test/java/org/apache/wicket/util/license/ApacheLicenceHeaderTest.java
new file mode 100644
index 0000000..7efc3af
--- /dev/null
+++ b/wicket-experimental/wicket-http2/wicket-http2-servlet4/src/test/java/org/apache/wicket/util/license/ApacheLicenceHeaderTest.java
@@ -0,0 +1,34 @@
+/*
+ * 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.util.license;
+
+/**
+ * Test that the license headers are in place in this project. The tests are run from
+ * {@link ApacheLicenseHeaderTestCase}, but you can add project specific tests here if needed.
+ * 
+ * @author Frank Bille Jensen (frankbille)
+ */
+public class ApacheLicenceHeaderTest extends ApacheLicenseHeaderTestCase
+{
+	/**
+	 * Construct.
+	 */
+	public ApacheLicenceHeaderTest()
+	{
+		// addHeaders = true;
+	}
+}


[5/6] wicket git commit: Merge branch 'master' into WICKET-6105-java.time

Posted by so...@apache.org.
Merge branch 'master' into WICKET-6105-java.time


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

Branch: refs/heads/WICKET-6105-java.time
Commit: 9051b43fb21243597809413c6387af896508db54
Parents: 2f1b925 77d8bf3
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Mon Oct 2 15:12:30 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Mon Oct 2 15:12:30 2017 +0700

----------------------------------------------------------------------
 .../org/apache/wicket/Application_nl.properties |  8 ++-
 .../mapper/AbstractBookmarkableMapper.java      | 34 ++++++----
 .../core/request/mapper/MountedMapperTest.java  | 53 +++++++++++++++-
 .../wicket-http2/wicket-http2-servlet4/pom.xml  | 47 ++++++++++++++
 .../org/apache/wicket/http2/Initializer.java    | 44 +++++++++++++
 .../http2/markup/head/Servlet4PushBuilder.java  | 65 ++++++++++++++++++++
 .../services/org.apache.wicket.IInitializer     |  1 +
 .../util/license/ApacheLicenceHeaderTest.java   | 34 ++++++++++
 8 files changed, 270 insertions(+), 16 deletions(-)
----------------------------------------------------------------------



[4/6] wicket git commit: Dutch translations for paging navigator This closes #234

Posted by so...@apache.org.
Dutch translations for paging navigator
This closes #234


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

Branch: refs/heads/WICKET-6105-java.time
Commit: 77d8bf32d2063ac0174fc383da81ac2d6bcc482b
Parents: 2283dc5
Author: Sven Meier <sv...@apache.org>
Authored: Mon Sep 25 21:34:58 2017 +0200
Committer: Sven Meier <sv...@apache.org>
Committed: Mon Sep 25 21:35:19 2017 +0200

----------------------------------------------------------------------
 .../main/java/org/apache/wicket/Application_nl.properties    | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/77d8bf32/wicket-core/src/main/java/org/apache/wicket/Application_nl.properties
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/Application_nl.properties b/wicket-core/src/main/java/org/apache/wicket/Application_nl.properties
index ee9b04b..b23d7d5 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Application_nl.properties
+++ b/wicket-core/src/main/java/org/apache/wicket/Application_nl.properties
@@ -48,4 +48,10 @@ EqualInputValidator='${input0}' van ${label0} en '${input1}' van ${label1} zijn
 EqualPasswordInputValidator=${label0} en ${label1} zijn niet gelijk aan elkaar.
 
 null=Kies er een
-nullValid=
\ No newline at end of file
+nullValid=
+
+PagingNavigator.first=Ga naar eerste pagina
+PagingNavigator.previous=Ga naar vorige pagina
+PagingNavigator.next=Ga naar volgende pagina
+PagingNavigator.last=Ga naar laatste pagina
+PagingNavigation.page=Ga naar pagina ${page}
\ No newline at end of file


[6/6] wicket git commit: Comments are addressed

Posted by so...@apache.org.
Comments are addressed


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

Branch: refs/heads/WICKET-6105-java.time
Commit: adeae9ceaef182858867f71ffab5d715b523b984
Parents: 9051b43
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Mon Oct 2 15:16:57 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Mon Oct 2 15:16:57 2017 +0700

----------------------------------------------------------------------
 .../markup/html/form/datetime/DateTimeField.java          | 10 ----------
 .../markup/html/form/datetime/IDateConverter.java         |  5 +++--
 .../markup/html/form/datetime/StyleTimeConverter.java     |  4 ----
 .../markup/html/form/datetime/ZonedDateTimeConverter.java |  2 +-
 4 files changed, 4 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/adeae9ce/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/DateTimeField.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/DateTimeField.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/DateTimeField.java
index 200129f..0c6531d 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/DateTimeField.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/DateTimeField.java
@@ -256,11 +256,6 @@ public class DateTimeField extends FormComponentPanel<ZonedDateTime>
 			dateTime = dateTime.with(ChronoField.MONTH_OF_YEAR, date.getMonthValue());
 			dateTime = dateTime.with(ChronoField.DAY_OF_YEAR, date.getDayOfMonth());
 		}
-
-		@Override
-		public void detach()
-		{
-		}
 	}
 
 	protected class TimeModel implements IModel<LocalTime>
@@ -279,10 +274,5 @@ public class DateTimeField extends FormComponentPanel<ZonedDateTime>
 			dateTime = dateTime.with(ChronoField.HOUR_OF_DAY, time.getHour());
 			dateTime = dateTime.with(ChronoField.MINUTE_OF_HOUR, time.getMinute());
 		}
-
-		@Override
-		public void detach()
-		{
-		}
 	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/adeae9ce/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/IDateConverter.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/IDateConverter.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/IDateConverter.java
index 6312716..59351e7 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/IDateConverter.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/IDateConverter.java
@@ -17,13 +17,14 @@
 package org.apache.wicket.extensions.markup.html.form.datetime;
 
 import java.time.format.DateTimeFormatter;
+import java.time.temporal.Temporal;
 import java.util.Locale;
 
 import org.apache.wicket.util.convert.IConverter;
 
 
 /**
- * Base class for Joda Time based date converters. It contains the logic to parse and format,
+ * Base class for javax.time based date converters. It contains the logic to parse and format,
  * optionally taking the time zone difference between clients and the server into account.
  * <p>
  * Converters of this class are best suited for per-component use.
@@ -31,7 +32,7 @@ import org.apache.wicket.util.convert.IConverter;
  * 
  * @author eelcohillenius
  */
-public interface IDateConverter<T> extends IConverter<T>
+public interface IDateConverter<T extends Temporal> extends IConverter<T>
 {
 
 	T convertToObject(String value, DateTimeFormatter format, Locale locale);

http://git-wip-us.apache.org/repos/asf/wicket/blob/adeae9ce/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/StyleTimeConverter.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/StyleTimeConverter.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/StyleTimeConverter.java
index 8ac59b4..1197f2a 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/StyleTimeConverter.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/StyleTimeConverter.java
@@ -32,10 +32,6 @@ import java.util.Locale;
  * </p>
  * 
  * @see org.apache.wicket.extensions.markup.html.form.DateTextField
- * @see java.time.LocalTime
- * @see DateTimeFormatter
- * 
- * @author eelcohillenius
  */
 public class StyleTimeConverter extends LocalTimeConverter
 {

http://git-wip-us.apache.org/repos/asf/wicket/blob/adeae9ce/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/ZonedDateTimeConverter.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/ZonedDateTimeConverter.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/ZonedDateTimeConverter.java
index 9d0f430..2d45aa0 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/ZonedDateTimeConverter.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/ZonedDateTimeConverter.java
@@ -31,7 +31,7 @@ import org.apache.wicket.util.string.Strings;
 
 
 /**
- * Base class for Joda Time based date converters. It contains the logic to parse and format,
+ * Base class for javax.time based date converters. It contains the logic to parse and format,
  * optionally taking the time zone difference between clients and the server into account.
  * <p>
  * Converters of this class are best suited for per-component use.


[3/6] wicket git commit: WICKET-6461 don't consume segments for optional parameters if required parameters are following

Posted by so...@apache.org.
WICKET-6461 don't consume segments for optional parameters if required parameters are following


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

Branch: refs/heads/WICKET-6105-java.time
Commit: 2283dc502fca56f9e912823a4f94a629188aa63f
Parents: c28b72d
Author: Sven Meier <sv...@apache.org>
Authored: Mon Sep 25 21:14:02 2017 +0200
Committer: Sven Meier <sv...@apache.org>
Committed: Mon Sep 25 21:18:27 2017 +0200

----------------------------------------------------------------------
 .../mapper/AbstractBookmarkableMapper.java      | 34 ++++++++-----
 .../core/request/mapper/MountedMapperTest.java  | 53 ++++++++++++++++++--
 2 files changed, 72 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/2283dc50/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
index a6bab53..9a39c10 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
@@ -622,46 +622,56 @@ public abstract class AbstractBookmarkableMapper extends AbstractComponentMapper
 	protected PageParameters extractPageParameters(Request request, Url url)
 	{
 		int[] matchedParameters = getMatchedSegmentSizes(url);
+		
 		int total = 0;
 		for (int curMatchSize : matchedParameters)
+		{
 			total += curMatchSize;
+		}
 		PageParameters pageParameters = extractPageParameters(request, total, pageParametersEncoder);
 		if (pageParameters != null)
 		{
 			pageParameters.setLocale(resolveLocale());
 		}
 
-		int skippedParameters = 0;
+		int segmentIndex = 0;
 		for (int pathSegmentIndex = 0; pathSegmentIndex < pathSegments.size(); pathSegmentIndex++)
 		{
-			MountPathSegment curPathSegment = pathSegments.get(pathSegmentIndex);
-			int matchSize = matchedParameters[pathSegmentIndex] - curPathSegment.getFixedPartSize();
-			int optionalParameterMatch = matchSize - curPathSegment.getMinParameters();
-			for (int matchSegment = 0; matchSegment < matchSize; matchSegment++)
+			MountPathSegment pathSegment = pathSegments.get(pathSegmentIndex);
+			
+			int totalAdded = 0;
+			int requiredAdded = 0;
+			for (int segmentParameterIndex = 0; segmentParameterIndex < pathSegment.getMaxParameters() && totalAdded < matchedParameters[pathSegmentIndex]; segmentParameterIndex++)
 			{
 				if (pageParameters == null)
 				{
 					pageParameters = newPageParameters();
 				}
 
-				int curSegmentIndex = matchSegment + curPathSegment.getSegmentIndex();
-				String curSegment = mountSegments[curSegmentIndex];
+				String curSegment = mountSegments[pathSegment.getSegmentIndex() + segmentParameterIndex];
+
 				String placeholder = getPlaceholder(curSegment);
 				String optionalPlaceholder = getOptionalPlaceholder(curSegment);
 				// extract the parameter from URL
 				if (placeholder != null)
 				{
 					pageParameters.add(placeholder,
-							url.getSegments().get(curSegmentIndex - skippedParameters), INamedParameters.Type.PATH);
+							url.getSegments().get(segmentIndex), INamedParameters.Type.PATH);
+					segmentIndex++;
+					totalAdded++;
+					requiredAdded++;
 				}
-				else if (optionalPlaceholder != null && optionalParameterMatch > 0)
+				else if (optionalPlaceholder != null &&
+					matchedParameters[pathSegmentIndex] - segmentParameterIndex > pathSegment.getMinParameters() + pathSegment.getFixedPartSize() - requiredAdded)
 				{
 					pageParameters.add(optionalPlaceholder,
-							url.getSegments().get(curSegmentIndex - skippedParameters), INamedParameters.Type.PATH);
-					optionalParameterMatch--;
+							url.getSegments().get(segmentIndex), INamedParameters.Type.PATH);
+					segmentIndex++;
+					totalAdded++;
 				}
 			}
-			skippedParameters += curPathSegment.getMaxParameters() - matchSize;
+
+			segmentIndex += pathSegment.getFixedPartSize();
 		}
 		return pageParameters;
 	}

http://git-wip-us.apache.org/repos/asf/wicket/blob/2283dc50/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/MountedMapperTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/MountedMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/MountedMapperTest.java
index fcd8afc..5b809a7 100644
--- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/MountedMapperTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/MountedMapperTest.java
@@ -739,7 +739,7 @@ public class MountedMapperTest extends AbstractMapperTest
 		IRequestablePage page = ((RenderPageRequestHandler)handler).getPage();
 
 		assertEquals(0, page.getPageParameters().getIndexedCount());
-		assertTrue(page.getPageParameters().getNamedKeys().size() == 3);
+		assertEquals(3, page.getPageParameters().getNamedKeys().size());
 		assertEquals("p1", page.getPageParameters().get("param1").toString());
 		assertEquals("p2", page.getPageParameters().get("param2").toString());
 		assertEquals("p3", page.getPageParameters().get("param3").toString());
@@ -811,7 +811,7 @@ public class MountedMapperTest extends AbstractMapperTest
 		IRequestablePage page = ((RenderPageRequestHandler)handler).getPage();
 
 		assertEquals(1, page.getPageParameters().getIndexedCount());
-		assertTrue(page.getPageParameters().getNamedKeys().size() == 2);
+		assertEquals(2, page.getPageParameters().getNamedKeys().size());
 		assertFalse("param1 should not be set",
 			page.getPageParameters().getNamedKeys().contains("param1"));
 		assertEquals("p2", page.getPageParameters().get("param2").toString());
@@ -859,7 +859,54 @@ public class MountedMapperTest extends AbstractMapperTest
 		assertEquals("some/path/p2/p3/i1/i2?a=b&b=c", url.toString());
 	}
 
-	/* WICKET-5056 * */
+	/**
+	 * WICKET-6461
+	 */
+	@Test
+	public void optionalPlaceholdersBeforeRequiredPlaceholder() throws Exception
+	{
+		final MountedMapper mapper = new MountedMapper("/params/#{optional1}/#{optional2}/${required}", MockPage.class) {
+			@Override
+			protected IMapperContext getContext()
+			{
+				return context;
+			}
+
+			@Override
+			boolean getRecreateMountedPagesAfterExpiry()
+			{
+				return true;
+			}
+		};
+		
+		IRequestHandler handler = mapper.mapRequest(getRequest(Url.parse("params/required")));
+		assertThat(handler, instanceOf(RenderPageRequestHandler.class));
+		IRequestablePage page = ((RenderPageRequestHandler)handler).getPage();
+		PageParameters p = page.getPageParameters();
+		assertEquals(1, p.getNamedKeys().size());
+		assertEquals("required", p.get("required").toString());
+		
+		handler = mapper.mapRequest(getRequest(Url.parse("params/optional1/required")));
+		assertThat(handler, instanceOf(RenderPageRequestHandler.class));
+		page = ((RenderPageRequestHandler)handler).getPage();
+		p = page.getPageParameters();
+		assertEquals(2, p.getNamedKeys().size());
+		assertEquals("required", p.get("required").toString());
+		assertEquals("optional1", p.get("optional1").toString());
+		
+		handler = mapper.mapRequest(getRequest(Url.parse("params/optional1/optional2/required")));
+		assertThat(handler, instanceOf(RenderPageRequestHandler.class));
+		page = ((RenderPageRequestHandler)handler).getPage();
+		p = page.getPageParameters();
+		assertEquals(3, p.getNamedKeys().size());
+		assertEquals("required", p.get("required").toString());
+		assertEquals("optional1", p.get("optional1").toString());
+		assertEquals("optional2", p.get("optional2").toString());
+	}
+
+	/**
+	 * WICKET-5056
+	 */
 	@Test
 	public void optionalParameterGetsLowerScore_ThanExactOne() throws Exception
 	{


[2/6] wicket git commit: Added wicket-http2-servlet4 module

Posted by so...@apache.org.
Added wicket-http2-servlet4 module

* fixed parent pom

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

Branch: refs/heads/WICKET-6105-java.time
Commit: c28b72da6f6a4fef24b5b0210938b24c9c011627
Parents: b8359c8
Author: Tobias Soloschenko <ts...@apache.org>
Authored: Sun Sep 24 13:20:37 2017 +0200
Committer: Tobias Soloschenko <ts...@apache.org>
Committed: Sun Sep 24 13:20:37 2017 +0200

----------------------------------------------------------------------
 wicket-experimental/wicket-http2/wicket-http2-servlet4/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/c28b72da/wicket-experimental/wicket-http2/wicket-http2-servlet4/pom.xml
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-http2/wicket-http2-servlet4/pom.xml b/wicket-experimental/wicket-http2/wicket-http2-servlet4/pom.xml
index 442d24d..49127da 100644
--- a/wicket-experimental/wicket-http2/wicket-http2-servlet4/pom.xml
+++ b/wicket-experimental/wicket-http2/wicket-http2-servlet4/pom.xml
@@ -20,7 +20,7 @@
 	<parent>
 		<groupId>org.apache.wicket.experimental.wicket8</groupId>
 		<artifactId>wicket-http2</artifactId>
-		<version>0.2-SNAPSHOT</version>
+		<version>0.3-SNAPSHOT</version>
 		<relativePath>../pom.xml</relativePath>
 	</parent>
 	<artifactId>wicket-http2-servlet4</artifactId>