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 2018/01/28 05:10:38 UTC

[01/14] wicket git commit: [WICKET-6518] Log4j is replaced with logback

Repository: wicket
Updated Branches:
  refs/heads/WICKET-6498_deferred_javascript_2 8b14b4144 -> 3e65110d3


[WICKET-6518] Log4j is replaced with logback


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

Branch: refs/heads/WICKET-6498_deferred_javascript_2
Commit: cfd6a55fc9d613d4412a004efcc8e06d6ac1d73d
Parents: c787470
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Sat Jan 13 10:18:56 2018 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Sat Jan 13 10:18:56 2018 +0700

----------------------------------------------------------------------
 .../META-INF/maven/archetype-metadata.xml          |  7 +------
 .../src/main/resources/archetype-resources/pom.xml | 17 ++++++-----------
 .../src/main/resources/__log4j.properties__        | 16 ----------------
 pom.xml                                            |  2 +-
 4 files changed, 8 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/cfd6a55f/archetypes/quickstart/src/main/resources/META-INF/maven/archetype-metadata.xml
----------------------------------------------------------------------
diff --git a/archetypes/quickstart/src/main/resources/META-INF/maven/archetype-metadata.xml b/archetypes/quickstart/src/main/resources/META-INF/maven/archetype-metadata.xml
index 14dcce0..d31de29 100644
--- a/archetypes/quickstart/src/main/resources/META-INF/maven/archetype-metadata.xml
+++ b/archetypes/quickstart/src/main/resources/META-INF/maven/archetype-metadata.xml
@@ -1,10 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <archetype-descriptor name="quickstart">
-	<requiredProperties>
-		<requiredProperty key="log4j.properties">
-			<defaultValue>log4j2.xml</defaultValue>
-		</requiredProperty>
-	</requiredProperties>
 	<fileSets>
 		<fileSet filtered="true" packaged="true" encoding="UTF-8">
 			<directory>src/main/java</directory>
@@ -28,7 +23,7 @@
 		<fileSet filtered="false" packaged="false" encoding="UTF-8">
 			<directory>src/main/resources</directory>
 			<includes>
-				<include>__log4j.properties__</include>
+				<include>**/*.xml</include>
 			</includes>
 		</fileSet>
 		<fileSet filtered="true" packaged="false" encoding="UTF-8">

http://git-wip-us.apache.org/repos/asf/wicket/blob/cfd6a55f/archetypes/quickstart/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/archetypes/quickstart/src/main/resources/archetype-resources/pom.xml b/archetypes/quickstart/src/main/resources/archetype-resources/pom.xml
index 395ab9c..a32fb9f 100644
--- a/archetypes/quickstart/src/main/resources/archetype-resources/pom.xml
+++ b/archetypes/quickstart/src/main/resources/archetype-resources/pom.xml
@@ -44,7 +44,7 @@
 	<properties>
 		<wicket.version>@project.version@</wicket.version>
 		<jetty9.version>@jetty.version@</jetty9.version>
-		<log4j.version>@log4j.version@</log4j.version>
+		<logback.version>@logback.version@</logback.version>
 		<junit.version>@junit.version@</junit.version>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<!-- allowed values: R7, 1.0, 1.5, 2.0 or none -->
@@ -65,16 +65,11 @@
 		</dependency>
 		-->
 
-		<!-- LOGGING DEPENDENCIES - LOG4J -->
+		<!-- LOGGING DEPENDENCIES - LOGBACK -->
 		<dependency>
-			<groupId>org.apache.logging.log4j</groupId>
-			<artifactId>log4j-slf4j-impl</artifactId>
-			<version>${log4j.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.logging.log4j</groupId>
-			<artifactId>log4j-core</artifactId>
-			<version>${log4j.version}</version>
+			<groupId>ch.qos.logback</groupId>
+			<artifactId>logback-classic</artifactId>
+			<version>${logback.version}</version>
 		</dependency>
 
 		<!--  JUNIT DEPENDENCY FOR TESTING -->
@@ -103,7 +98,7 @@
 		<dependency>
 			<groupId>org.eclipse.jetty.websocket</groupId>
 			<artifactId>javax-websocket-server-impl</artifactId>
-			<version>${jetty.version}</version>
+			<version>${jetty9.version}</version>
 			<scope>test</scope>
 		</dependency>
 		-->

http://git-wip-us.apache.org/repos/asf/wicket/blob/cfd6a55f/archetypes/quickstart/src/main/resources/archetype-resources/src/main/resources/__log4j.properties__
----------------------------------------------------------------------
diff --git a/archetypes/quickstart/src/main/resources/archetype-resources/src/main/resources/__log4j.properties__ b/archetypes/quickstart/src/main/resources/archetype-resources/src/main/resources/__log4j.properties__
deleted file mode 100644
index 63e6030..0000000
--- a/archetypes/quickstart/src/main/resources/archetype-resources/src/main/resources/__log4j.properties__
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" configDebug="true">
-	<Appenders>
-		<Console name="CONSOLE" target="SYSTEM_OUT">
-			<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
-		</Console>
-	</Appenders>
-	<Loggers>
-		<logger name="org.apache.wicket" level="INFO" additivity="false">
-			<AppenderRef ref="CONSOLE"/>
-		</logger>
-		<Root level="WARN">
-			<AppenderRef ref="CONSOLE"/>
-		</Root>
-	</Loggers>
-</log4j:configuration>

http://git-wip-us.apache.org/repos/asf/wicket/blob/cfd6a55f/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 94d04ca..218e036 100644
--- a/pom.xml
+++ b/pom.xml
@@ -134,7 +134,7 @@
 		<maven.surefire.version>2.20</maven.surefire.version>
 		<mockito.version>2.9.0</mockito.version>
 		<slf4j.version>1.7.25</slf4j.version>
-		<log4j.version>2.9.0</log4j.version>
+		<logback.version>1.2.3</logback.version>
 		<hamcrest.version>2.0.0.0</hamcrest.version>
 		<objenesis.version>2.6</objenesis.version>
 		<aspectj.version>1.8.10</aspectj.version>


[03/14] wicket git commit: Logback is replaced with slf4j-simple

Posted by so...@apache.org.
Logback is replaced with slf4j-simple


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

Branch: refs/heads/WICKET-6498_deferred_javascript_2
Commit: da3b69f55077e8945108990df14dc751e4504741
Parents: 2e545f6
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Tue Jan 16 10:30:33 2018 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Tue Jan 16 10:30:33 2018 +0700

----------------------------------------------------------------------
 .../main/resources/archetype-resources/pom.xml  | 10 +++----
 .../src/main/resources/logback.xml              | 30 --------------------
 2 files changed, 5 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/da3b69f5/archetypes/quickstart/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/archetypes/quickstart/src/main/resources/archetype-resources/pom.xml b/archetypes/quickstart/src/main/resources/archetype-resources/pom.xml
index a32fb9f..0a14313 100644
--- a/archetypes/quickstart/src/main/resources/archetype-resources/pom.xml
+++ b/archetypes/quickstart/src/main/resources/archetype-resources/pom.xml
@@ -44,7 +44,7 @@
 	<properties>
 		<wicket.version>@project.version@</wicket.version>
 		<jetty9.version>@jetty.version@</jetty9.version>
-		<logback.version>@logback.version@</logback.version>
+		<slf4j.version>@slf4j.version@</slf4j.version>
 		<junit.version>@junit.version@</junit.version>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<!-- allowed values: R7, 1.0, 1.5, 2.0 or none -->
@@ -65,11 +65,11 @@
 		</dependency>
 		-->
 
-		<!-- LOGGING DEPENDENCIES - LOGBACK -->
+		<!-- LOGGING DEPENDENCIES - SLF4J-SIMPLE -->
 		<dependency>
-			<groupId>ch.qos.logback</groupId>
-			<artifactId>logback-classic</artifactId>
-			<version>${logback.version}</version>
+			<groupId>org.slf4j</groupId>
+			<artifactId>slf4j-simple</artifactId>
+			<version>${slf4j.version}</version>
 		</dependency>
 
 		<!--  JUNIT DEPENDENCY FOR TESTING -->

http://git-wip-us.apache.org/repos/asf/wicket/blob/da3b69f5/archetypes/quickstart/src/main/resources/archetype-resources/src/main/resources/logback.xml
----------------------------------------------------------------------
diff --git a/archetypes/quickstart/src/main/resources/archetype-resources/src/main/resources/logback.xml b/archetypes/quickstart/src/main/resources/archetype-resources/src/main/resources/logback.xml
deleted file mode 100644
index f749c74..0000000
--- a/archetypes/quickstart/src/main/resources/archetype-resources/src/main/resources/logback.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?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.
-
--->
-<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-	<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
-		<layout class="ch.qos.logback.classic.PatternLayout">
-			<pattern>%5p %d{MM-dd HH:mm:ss.SSS } %r %L %c{15} [%.15thread] - %m%n</pattern>
-		</layout>
-	</appender>
-	<root level="WARN">
-		<appender-ref ref="CONSOLE" />
-	</root>
-</configuration>


[08/14] wicket git commit: WICKET-6517 new AjaxFileDropBehavior

Posted by so...@apache.org.
WICKET-6517 new AjaxFileDropBehavior


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

Branch: refs/heads/WICKET-6498_deferred_javascript_2
Commit: 237147fee94e7fb2c0e91216aee0e4a51b448c30
Parents: 44fb374
Author: Sven Meier <sv...@apache.org>
Authored: Wed Jan 17 09:23:27 2018 +0100
Committer: Sven Meier <sv...@apache.org>
Committed: Fri Jan 26 23:09:37 2018 +0100

----------------------------------------------------------------------
 .../examples/ajax/builtin/FileUploadPage.java   |   4 +-
 .../ajax/markup/html/AjaxFileDropBehavior.java  | 160 +++++++++++++++++++
 .../markup/html/AjaxFileUploadBehavior.java     | 156 ------------------
 3 files changed, 162 insertions(+), 158 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/237147fe/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
index ca6dc70..7399301 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
@@ -21,7 +21,7 @@ import java.util.List;
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.form.AjaxButton;
-import org.apache.wicket.extensions.ajax.markup.html.AjaxFileUploadBehavior;
+import org.apache.wicket.extensions.ajax.markup.html.AjaxFileDropBehavior;
 import org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadProgressBar;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
@@ -116,7 +116,7 @@ public class FileUploadPage extends BasePage
 		});
 		
 		WebMarkupContainer drop = new WebMarkupContainer("drop");
-		drop.add(new AjaxFileUploadBehavior() {
+		drop.add(new AjaxFileDropBehavior() {
 			protected void onFileUpload(AjaxRequestTarget target, List<FileUpload> files) {
 			    
 				// display uploaded info

http://git-wip-us.apache.org/repos/asf/wicket/blob/237147fe/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileDropBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileDropBehavior.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileDropBehavior.java
new file mode 100644
index 0000000..9073cd3
--- /dev/null
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileDropBehavior.java
@@ -0,0 +1,160 @@
+/*
+ * 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.extensions.ajax.markup.html;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.FileUploadException;
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes.Method;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
+import org.apache.wicket.markup.html.form.upload.FileUpload;
+import org.apache.wicket.protocol.http.servlet.MultipartServletWebRequest;
+import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
+import org.apache.wicket.request.resource.PackageResourceReference;
+import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.util.lang.Args;
+import org.apache.wicket.util.lang.Bytes;
+
+/**
+ * Uploads files from a drop event.
+ *
+ * @author Andrew Kondratev
+ * @author svenmeier
+ */
+public class AjaxFileDropBehavior extends AjaxEventBehavior
+{
+
+	private static final ResourceReference JS = new PackageResourceReference(AjaxFileDropBehavior.class, "datatransfer.js");
+
+	/**
+	 *  Maximum size of all uploaded files in bytes in a request.
+	 */
+	private Bytes maxSize;
+
+	/**
+	 *  Maximum size of file of upload in bytes (if there are more than one) in a request.
+	 */
+	private Bytes fileMaxSize;
+
+	private String parameterName = "f";
+	
+	public AjaxFileDropBehavior()
+	{
+		super("drop");
+	}
+	
+	@Override
+	public void renderHead(Component component, IHeaderResponse response)
+	{
+		super.renderHead(component, response);
+		
+		response.render(JavaScriptHeaderItem.forReference(JS));
+		
+		// default must be prevented for dragover event, otherwise browser will consume the dataTransfer
+		response.render(OnDomReadyHeaderItem.forScript(String.format("jQuery('#%s').on('dragover', function(e) { e.preventDefault(); });", component.getMarkupId())));
+	}
+
+	@Override
+	protected void updateAjaxAttributes(AjaxRequestAttributes attributes)
+	{
+		super.updateAjaxAttributes(attributes);
+
+		attributes.setMultipart(true);
+		attributes.setMethod(Method.POST);
+		// default must be prevented, otherwise browser will consume the dataTransfer
+		attributes.setPreventDefault(true);
+
+		attributes.getDynamicExtraParameters().add(
+			String.format("return Wicket.DataTransfer.getFilesAsParamArray(attrs.event.originalEvent, '%s');", parameterName)
+		);
+	}
+
+	@Override
+	protected void onEvent(AjaxRequestTarget target)
+	{
+		try
+		{
+			ServletWebRequest request = (ServletWebRequest)getComponent().getRequest();
+			final MultipartServletWebRequest multipartWebRequest = request.newMultipartWebRequest(
+				getMaxSize(), getComponent().getPage().getId());
+			multipartWebRequest.setFileMaxSize(getFileMaxSize());
+			multipartWebRequest.parseFileParts();
+
+			// TODO: Can't this be detected from header?
+			getComponent().getRequestCycle().setRequest(multipartWebRequest);
+			
+			ArrayList<FileUpload> fileUploads = new ArrayList<>();
+
+			// Get the item for the path
+			final List<FileItem> fileItems = multipartWebRequest.getFile(parameterName);
+
+			if (fileItems != null)
+			{
+				for (FileItem item : fileItems)
+				{
+					fileUploads.add(new FileUpload(item));
+				}
+			}
+			
+			onFileUpload(target, fileUploads);
+		}
+		catch (final FileUploadException fux)
+		{
+			onError(fux);
+		}
+	}
+
+	public Bytes getMaxSize()
+	{
+		if (maxSize == null) {
+			maxSize = getComponent().getApplication().getApplicationSettings().getDefaultMaximumUploadSize();
+		}
+		return maxSize;
+	}
+
+	public void setMaxSize(Bytes maxSize)
+	{
+		Args.notNull(maxSize, "maxSize");
+		this.maxSize = maxSize;
+	}
+
+	public Bytes getFileMaxSize()
+	{
+		return fileMaxSize;
+	}
+
+	public void setFileMaxSize(Bytes fileMaxSize)
+	{
+		this.fileMaxSize = fileMaxSize;
+	}
+	
+	protected void onFileUpload(AjaxRequestTarget target, List<FileUpload> files)
+	{
+	}
+
+	protected void onError(FileUploadException fux)
+	{
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/wicket/blob/237147fe/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileUploadBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileUploadBehavior.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileUploadBehavior.java
deleted file mode 100644
index 3801c62..0000000
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileUploadBehavior.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * 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.extensions.ajax.markup.html;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.fileupload.FileItem;
-import org.apache.commons.fileupload.FileUploadException;
-import org.apache.wicket.Component;
-import org.apache.wicket.ajax.AjaxEventBehavior;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
-import org.apache.wicket.ajax.attributes.AjaxRequestAttributes.Method;
-import org.apache.wicket.markup.head.IHeaderResponse;
-import org.apache.wicket.markup.head.JavaScriptHeaderItem;
-import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
-import org.apache.wicket.markup.html.form.upload.FileUpload;
-import org.apache.wicket.protocol.http.servlet.MultipartServletWebRequest;
-import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
-import org.apache.wicket.request.resource.PackageResourceReference;
-import org.apache.wicket.request.resource.ResourceReference;
-import org.apache.wicket.util.lang.Args;
-import org.apache.wicket.util.lang.Bytes;
-
-/**
- * Uploads files from a drop event.
- * 
- * @author svenmeier
- */
-public class AjaxFileUploadBehavior extends AjaxEventBehavior
-{
-
-	private static final ResourceReference JS = new PackageResourceReference(AjaxFileUploadBehavior.class, "datatransfer.js");
-
-	/**
-	 *  Maximum size of all uploaded files in bytes in a request.
-	 */
-	private Bytes maxSize;
-
-	/**
-	 *  Maximum size of file of upload in bytes (if there are more than one) in a request.
-	 */
-	private Bytes fileMaxSize;
-
-	private String parameterName = "f";
-	
-	public AjaxFileUploadBehavior()
-	{
-		super("drop");
-	}
-	
-	@Override
-	public void renderHead(Component component, IHeaderResponse response)
-	{
-		super.renderHead(component, response);
-		
-		response.render(JavaScriptHeaderItem.forReference(JS));
-		
-		// default must be prevented for dragover event, otherwise browser will consume the dataTransfer
-		response.render(OnDomReadyHeaderItem.forScript(String.format("jQuery('#%s').on('dragover', function(e) { e.preventDefault(); });", component.getMarkupId())));
-	}
-
-	@Override
-	protected void updateAjaxAttributes(AjaxRequestAttributes attributes)
-	{
-		super.updateAjaxAttributes(attributes);
-
-		attributes.setMultipart(true);
-		attributes.setMethod(Method.POST);
-		// default must be prevented, otherwise browser will consume the dataTransfer
-		attributes.setPreventDefault(true);
-
-		attributes.getDynamicExtraParameters().add(
-			String.format("return Wicket.DataTransfer.getFilesAsParamArray(attrs.event.originalEvent, '%s');", parameterName)
-		);
-	}
-
-	@Override
-	protected void onEvent(AjaxRequestTarget target)
-	{
-		try
-		{
-			ServletWebRequest request = (ServletWebRequest)getComponent().getRequest();
-			final MultipartServletWebRequest multipartWebRequest = request.newMultipartWebRequest(
-				getMaxSize(), getComponent().getPage().getId());
-			multipartWebRequest.setFileMaxSize(getFileMaxSize());
-			multipartWebRequest.parseFileParts();
-
-			// TODO: Can't this be detected from header?
-			getComponent().getRequestCycle().setRequest(multipartWebRequest);
-			
-			ArrayList<FileUpload> fileUploads = new ArrayList<>();
-
-			// Get the item for the path
-			final List<FileItem> fileItems = multipartWebRequest.getFile(parameterName);
-
-			if (fileItems != null)
-			{
-				for (FileItem item : fileItems)
-				{
-					fileUploads.add(new FileUpload(item));
-				}
-			}
-			
-			onFileUpload(target, fileUploads);
-		}
-		catch (final FileUploadException fux)
-		{
-			onError(fux);
-		}
-	}
-
-	public Bytes getMaxSize()
-	{
-		return maxSize;
-	}
-
-	public void setMaxSize(Bytes maxSize)
-	{
-		Args.notNull(maxSize, "maxSize");
-		this.maxSize = maxSize;
-	}
-
-	public Bytes getFileMaxSize()
-	{
-		return fileMaxSize;
-	}
-
-	public void setFileMaxSize(Bytes fileMaxSize)
-	{
-		this.fileMaxSize = fileMaxSize;
-	}
-	
-	protected void onFileUpload(AjaxRequestTarget target, List<FileUpload> files)
-	{
-	}
-
-	protected void onError(FileUploadException fux)
-	{
-	}
-}
\ No newline at end of file


[12/14] wicket git commit: WICKET-6503 reintroduced markRendering

Posted by so...@apache.org.
WICKET-6503 reintroduced markRendering

- so rendered page or part checks hierarchy changes while rendering
- stateless pages can be unmarked after beforeRender() in PageAndComponentProvider
- prevent multiple onBeforeRender() calls for auto components that are already added


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

Branch: refs/heads/WICKET-6498_deferred_javascript_2
Commit: d21bfe32525151a235afb3a6288ea11bcfa15329
Parents: 2e4496e
Author: Sven Meier <sv...@apache.org>
Authored: Sat Jan 27 22:02:46 2018 +0100
Committer: Sven Meier <sv...@apache.org>
Committed: Sat Jan 27 22:47:43 2018 +0100

----------------------------------------------------------------------
 .../main/java/org/apache/wicket/Component.java  | 32 +++++++++
 .../java/org/apache/wicket/MarkupContainer.java | 15 +++++
 .../src/main/java/org/apache/wicket/Page.java   |  2 +
 .../handler/PageAndComponentProvider.java       |  1 +
 .../org/apache/wicket/MarkupContainerTest.java  | 71 +++++++++++++-------
 5 files changed, 97 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/d21bfe32/wicket-core/src/main/java/org/apache/wicket/Component.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/Component.java b/wicket-core/src/main/java/org/apache/wicket/Component.java
index fc32b09..c1ae823 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Component.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Component.java
@@ -2117,6 +2117,23 @@ public abstract class Component
 	}
 
 	/**
+	 * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT USE IT!
+	 * 
+	 * Sets the RENDERING flag and removes the PREPARED_FOR_RENDER flag on component and it's
+	 * children.
+	 * 
+	 * @param setRenderingFlag
+	 *            if this is false only the PREPARED_FOR_RENDER flag is removed from component, the
+	 *            RENDERING flag is not set.
+	 * 
+	 * @see #internalPrepareForRender(boolean)
+	 */
+	public final void markRendering(boolean setRenderingFlag)
+	{
+		internalMarkRendering(setRenderingFlag);
+	}
+
+	/**
 	 * Called to indicate that the model content for this component has been changed
 	 */
 	public final void modelChanged()
@@ -2190,6 +2207,8 @@ public abstract class Component
 
 		page.startComponentRender(this);
 
+		markRendering(true);
+
 		render();
 		
 		page.endComponentRender(this);
@@ -3790,6 +3809,7 @@ public abstract class Component
 	 */
 	protected void onBeforeRender()
 	{
+		setRequestFlag(RFLAG_PREPARED_FOR_RENDER, true);
 		onBeforeRenderChildren();
 		setRequestFlag(RFLAG_BEFORE_RENDER_SUPER_CALL_VERIFIED, true);
 	}
@@ -4132,6 +4152,18 @@ public abstract class Component
 	}
 
 	/**
+	 * @param setRenderingFlag
+	 *            rendering flag
+	 */
+	void internalMarkRendering(boolean setRenderingFlag)
+	{
+		// WICKET-5460 no longer prepared for render
+		setRequestFlag(RFLAG_PREPARED_FOR_RENDER, false);
+
+		setRequestFlag(RFLAG_RENDERING, setRenderingFlag);
+	}
+
+	/**
 	 * @return True if this component or any of its parents is in auto-add mode
 	 */
 	public final boolean isAuto()

http://git-wip-us.apache.org/repos/asf/wicket/blob/d21bfe32/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java b/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
index aad0aac..038585d 100644
--- a/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
@@ -1695,6 +1695,21 @@ public abstract class MarkupContainer extends Component implements Iterable<Comp
 	}
 
 	/**
+	 * 
+	 * @see org.apache.wicket.Component#internalMarkRendering(boolean)
+	 */
+	@Override
+	void internalMarkRendering(boolean setRenderingFlag)
+	{
+		super.internalMarkRendering(setRenderingFlag);
+
+		for (Component child : this)
+		{
+			child.internalMarkRendering(setRenderingFlag);
+		}
+	}
+
+	/**
 	 * @return a copy of the children array.
 	 */
 	@SuppressWarnings("unchecked")

http://git-wip-us.apache.org/repos/asf/wicket/blob/d21bfe32/wicket-core/src/main/java/org/apache/wicket/Page.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/Page.java b/wicket-core/src/main/java/org/apache/wicket/Page.java
index 9b8dc7f..ca8a874 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Page.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Page.java
@@ -995,6 +995,8 @@ public abstract class Page extends MarkupContainer
 				delay.release();
 			}
 
+			markRendering(true);
+			
 			render();
 		}
 		finally

http://git-wip-us.apache.org/repos/asf/wicket/blob/d21bfe32/wicket-core/src/main/java/org/apache/wicket/core/request/handler/PageAndComponentProvider.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/PageAndComponentProvider.java b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/PageAndComponentProvider.java
index de59ecc..79b8d0d 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/PageAndComponentProvider.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/PageAndComponentProvider.java
@@ -170,6 +170,7 @@ public class PageAndComponentProvider extends PageProvider implements IPageAndCo
 					Page p = (Page)page;
 					p.internalInitialize();
 					p.beforeRender();
+					p.markRendering(false);
 					component = page.get(componentPath);
 				}
 			}

http://git-wip-us.apache.org/repos/asf/wicket/blob/d21bfe32/wicket-core/src/test/java/org/apache/wicket/MarkupContainerTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/MarkupContainerTest.java b/wicket-core/src/test/java/org/apache/wicket/MarkupContainerTest.java
index 4ab69da..8be4fe8 100644
--- a/wicket-core/src/test/java/org/apache/wicket/MarkupContainerTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/MarkupContainerTest.java
@@ -25,7 +25,6 @@ import static org.hamcrest.CoreMatchers.sameInstance;
 import static org.hamcrest.Matchers.greaterThanOrEqualTo;
 
 import java.lang.reflect.Field;
-import java.util.ConcurrentModificationException;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Optional;
@@ -153,6 +152,43 @@ public class MarkupContainerTest extends WicketTestCase
 		assertEquals(2, page.beforeRenderCalls);
 	}
 
+	@Test
+	public void hierarchyChangeDuringRender()
+	{
+		HierarchyChangePage page = new HierarchyChangePage();
+		try
+		{
+			tester.startPage(page);
+			fail();
+		}
+		catch (WicketRuntimeException expected)
+		{
+			assertEquals(
+				"Cannot modify component hierarchy after render phase has started (page version cant change then anymore)",
+				expected.getMessage());
+		}
+	}
+
+	private static class HierarchyChangePage extends WebPage
+		implements
+			IMarkupResourceStreamProvider
+	{
+
+		@Override
+		protected void onRender()
+		{
+			// change hierarchy during render
+			add(new Label("child"));
+		}
+
+		@Override
+		public IResourceStream getMarkupResourceStream(MarkupContainer container,
+			Class<?> containerClass)
+		{
+			return new StringResourceStream("<html><body></body></html>");
+		}
+	}
+
 	/**
 	 * https://issues.apache.org/jira/browse/WICKET-4012
 	 */
@@ -1274,28 +1310,23 @@ public class MarkupContainerTest extends WicketTestCase
 	public void stream()
 	{
 		LoginPage loginPage = new LoginPage();
-		Optional<Component> first = loginPage.stream()
-			.filter(c -> c.getId().equals("form"))
+		Optional<Component> first = loginPage.stream().filter(c -> c.getId().equals("form"))
 			.findFirst();
 		assertThat(first.isPresent(), is(false));
 
 		loginPage.add(new Form<>("form"));
-		Optional<Component> second = loginPage.stream()
-			.filter(c -> c.getId().equals("form"))
+		Optional<Component> second = loginPage.stream().filter(c -> c.getId().equals("form"))
 			.findFirst();
 		assertThat(second.isPresent(), is(true));
 
 		loginPage.add(new WebMarkupContainer("wmc"));
 
-		Optional<Form> form = loginPage.stream()
-			.filter(Form.class::isInstance)
-			.map(Form.class::cast)
-			.findFirst();
+		Optional<Form> form = loginPage.stream().filter(Form.class::isInstance)
+			.map(Form.class::cast).findFirst();
 		assertThat(form.isPresent(), is(true));
 
 		Optional<WebMarkupContainer> wmc = loginPage.stream()
-			.filter(WebMarkupContainer.class::isInstance)
-			.map(WebMarkupContainer.class::cast)
+			.filter(WebMarkupContainer.class::isInstance).map(WebMarkupContainer.class::cast)
 			.findFirst();
 		assertThat(wmc.isPresent(), is(true));
 	}
@@ -1304,8 +1335,7 @@ public class MarkupContainerTest extends WicketTestCase
 	public void streamChildren()
 	{
 		LoginPage loginPage = new LoginPage();
-		Optional<Component> first = loginPage.stream()
-			.filter(c -> c.getId().equals("form"))
+		Optional<Component> first = loginPage.stream().filter(c -> c.getId().equals("form"))
 			.findFirst();
 		assertThat(first.isPresent(), is(false));
 
@@ -1314,20 +1344,13 @@ public class MarkupContainerTest extends WicketTestCase
 
 		form.add(new TextField<>("field"));
 
-		assertThat(loginPage.streamChildren()
-			.filter(c -> c.getId().equals("form"))
-			.findFirst()
+		assertThat(loginPage.streamChildren().filter(c -> c.getId().equals("form")).findFirst()
 			.isPresent(), is(true));
 
-		assertThat(loginPage.streamChildren()
-			.filter(c -> c.getId().equals("field"))
-			.findFirst()
+		assertThat(loginPage.streamChildren().filter(c -> c.getId().equals("field")).findFirst()
 			.isPresent(), is(true));
 
-		assertThat(loginPage.streamChildren()
-			.filter(TextField.class::isInstance)
-			.filter(c -> c.getId().equals("field"))
-			.findFirst()
-			.isPresent(), is(true));
+		assertThat(loginPage.streamChildren().filter(TextField.class::isInstance)
+			.filter(c -> c.getId().equals("field")).findFirst().isPresent(), is(true));
 	}
 }


[05/14] wicket git commit: WICKET-6517 pass ajax target to onError

Posted by so...@apache.org.
WICKET-6517 pass ajax target to onError


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

Branch: refs/heads/WICKET-6498_deferred_javascript_2
Commit: 3f5c2932c47a6798b3dd361c98bb5756b623eaaf
Parents: 237147f
Author: Sven Meier <sv...@apache.org>
Authored: Thu Jan 18 07:46:51 2018 +0100
Committer: Sven Meier <sv...@apache.org>
Committed: Fri Jan 26 23:09:37 2018 +0100

----------------------------------------------------------------------
 .../examples/ajax/builtin/FileUploadPage.java   |  9 +++
 .../ajax/markup/html/AjaxFileDropBehavior.java  | 82 +++++++++++++++-----
 2 files changed, 70 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/3f5c2932/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
index 7399301..f7a473c 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
@@ -18,6 +18,7 @@ package org.apache.wicket.examples.ajax.builtin;
 
 import java.util.List;
 
+import org.apache.commons.fileupload.FileUploadException;
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.form.AjaxButton;
@@ -134,6 +135,14 @@ public class FileUploadPage extends BasePage
 				
 				target.add(feedback);
 			}
+			
+			@Override
+			protected void onError(AjaxRequestTarget target, FileUploadException fux)
+			{
+				info(fux.getMessage());
+				
+				target.add(feedback);				
+			}
 		});
 		add(drop);
 	}

http://git-wip-us.apache.org/repos/asf/wicket/blob/3f5c2932/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileDropBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileDropBehavior.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileDropBehavior.java
index 9073cd3..b8806d9 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileDropBehavior.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileDropBehavior.java
@@ -22,6 +22,7 @@ import java.util.List;
 import org.apache.commons.fileupload.FileItem;
 import org.apache.commons.fileupload.FileUploadException;
 import org.apache.wicket.Component;
+import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
@@ -46,34 +47,38 @@ import org.apache.wicket.util.lang.Bytes;
 public class AjaxFileDropBehavior extends AjaxEventBehavior
 {
 
-	private static final ResourceReference JS = new PackageResourceReference(AjaxFileDropBehavior.class, "datatransfer.js");
+	private static final ResourceReference JS = new PackageResourceReference(
+		AjaxFileDropBehavior.class, "datatransfer.js");
 
 	/**
-	 *  Maximum size of all uploaded files in bytes in a request.
+	 * Maximum size of all uploaded files in bytes in a request.
 	 */
 	private Bytes maxSize;
 
 	/**
-	 *  Maximum size of file of upload in bytes (if there are more than one) in a request.
+	 * Maximum size of file of upload in bytes (if there are more than one) in a request.
 	 */
 	private Bytes fileMaxSize;
 
 	private String parameterName = "f";
-	
+
 	public AjaxFileDropBehavior()
 	{
 		super("drop");
 	}
-	
+
 	@Override
 	public void renderHead(Component component, IHeaderResponse response)
 	{
 		super.renderHead(component, response);
-		
+
 		response.render(JavaScriptHeaderItem.forReference(JS));
-		
-		// default must be prevented for dragover event, otherwise browser will consume the dataTransfer
-		response.render(OnDomReadyHeaderItem.forScript(String.format("jQuery('#%s').on('dragover', function(e) { e.preventDefault(); });", component.getMarkupId())));
+
+		// default must be prevented for dragover event, otherwise browser will consume the
+		// dataTransfer
+		response.render(OnDomReadyHeaderItem.forScript(
+			String.format("jQuery('#%s').on('dragover', function(e) { e.preventDefault(); });",
+				component.getMarkupId())));
 	}
 
 	@Override
@@ -86,9 +91,10 @@ public class AjaxFileDropBehavior extends AjaxEventBehavior
 		// default must be prevented, otherwise browser will consume the dataTransfer
 		attributes.setPreventDefault(true);
 
-		attributes.getDynamicExtraParameters().add(
-			String.format("return Wicket.DataTransfer.getFilesAsParamArray(attrs.event.originalEvent, '%s');", parameterName)
-		);
+		attributes.getDynamicExtraParameters()
+			.add(String.format(
+				"return Wicket.DataTransfer.getFilesAsParamArray(attrs.event.originalEvent, '%s');",
+				parameterName));
 	}
 
 	@Override
@@ -97,14 +103,14 @@ public class AjaxFileDropBehavior extends AjaxEventBehavior
 		try
 		{
 			ServletWebRequest request = (ServletWebRequest)getComponent().getRequest();
-			final MultipartServletWebRequest multipartWebRequest = request.newMultipartWebRequest(
-				getMaxSize(), getComponent().getPage().getId());
+			final MultipartServletWebRequest multipartWebRequest = request
+				.newMultipartWebRequest(getMaxSize(), getComponent().getPage().getId());
 			multipartWebRequest.setFileMaxSize(getFileMaxSize());
 			multipartWebRequest.parseFileParts();
 
 			// TODO: Can't this be detected from header?
 			getComponent().getRequestCycle().setRequest(multipartWebRequest);
-			
+
 			ArrayList<FileUpload> fileUploads = new ArrayList<>();
 
 			// Get the item for the path
@@ -117,23 +123,30 @@ public class AjaxFileDropBehavior extends AjaxEventBehavior
 					fileUploads.add(new FileUpload(item));
 				}
 			}
-			
+
 			onFileUpload(target, fileUploads);
 		}
 		catch (final FileUploadException fux)
 		{
-			onError(fux);
+			onError(target, fux);
 		}
 	}
 
 	public Bytes getMaxSize()
 	{
-		if (maxSize == null) {
-			maxSize = getComponent().getApplication().getApplicationSettings().getDefaultMaximumUploadSize();
+		if (maxSize == null)
+		{
+			maxSize = getComponent().getApplication().getApplicationSettings()
+				.getDefaultMaximumUploadSize();
 		}
 		return maxSize;
 	}
 
+	/**
+	 * Set the maximum upload size.
+	 * 
+	 * @param maxSize maximum size, must not be null
+	 */
 	public void setMaxSize(Bytes maxSize)
 	{
 		Args.notNull(maxSize, "maxSize");
@@ -145,16 +158,43 @@ public class AjaxFileDropBehavior extends AjaxEventBehavior
 		return fileMaxSize;
 	}
 
+	/**
+	 * Set an optional maximum size per file.
+	 * 
+	 * @param fileMaxSize maximum size for each uploaded file
+	 */
 	public void setFileMaxSize(Bytes fileMaxSize)
 	{
 		this.fileMaxSize = fileMaxSize;
 	}
-	
+
+	/**
+	 * Hook method called after a file was uploaded.
+	 * <p>
+	 * Note: {@link #onError(AjaxRequestTarget, FileUploadException)} is called instead when
+	 * uploading failed
+	 * 
+	 * @param target
+	 *            the current request handler
+	 * @param files
+	 *            uploaded files
+	 */
 	protected void onFileUpload(AjaxRequestTarget target, List<FileUpload> files)
 	{
 	}
 
-	protected void onError(FileUploadException fux)
+	/**
+	 * Hook method called to handle any error during uploading of the file.
+	 * <p>
+	 * Default implementation re-throws the exception. 
+	 *
+	 * @param target
+	 *            the current request handler
+	 * @param e
+	 *            the error that occurred
+	 */
+	protected void onError(AjaxRequestTarget target, FileUploadException fux)
 	{
+		throw new WicketRuntimeException(fux);
 	}
 }
\ No newline at end of file


[02/14] wicket git commit: [WICKET-6518] missing logback.xml is added

Posted by so...@apache.org.
[WICKET-6518] missing logback.xml is added


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

Branch: refs/heads/WICKET-6498_deferred_javascript_2
Commit: 2e545f66c1db7448f1962ca519d0b685c8b8ded9
Parents: cfd6a55
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Sat Jan 13 15:36:08 2018 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Sat Jan 13 15:36:08 2018 +0700

----------------------------------------------------------------------
 .../src/main/resources/logback.xml              | 30 ++++++++++++++++++++
 1 file changed, 30 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/2e545f66/archetypes/quickstart/src/main/resources/archetype-resources/src/main/resources/logback.xml
----------------------------------------------------------------------
diff --git a/archetypes/quickstart/src/main/resources/archetype-resources/src/main/resources/logback.xml b/archetypes/quickstart/src/main/resources/archetype-resources/src/main/resources/logback.xml
new file mode 100644
index 0000000..f749c74
--- /dev/null
+++ b/archetypes/quickstart/src/main/resources/archetype-resources/src/main/resources/logback.xml
@@ -0,0 +1,30 @@
+<?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.
+
+-->
+<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+		<layout class="ch.qos.logback.classic.PatternLayout">
+			<pattern>%5p %d{MM-dd HH:mm:ss.SSS } %r %L %c{15} [%.15thread] - %m%n</pattern>
+		</layout>
+	</appender>
+	<root level="WARN">
+		<appender-ref ref="CONSOLE" />
+	</root>
+</configuration>


[11/14] wicket git commit: WICKET-6517 fixed grunt error

Posted by so...@apache.org.
WICKET-6517 fixed grunt error


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

Branch: refs/heads/WICKET-6498_deferred_javascript_2
Commit: 2e4496e20b5b4f8edf28bed873ddcf61f07dd29a
Parents: 29d2775
Author: Sven Meier <sv...@apache.org>
Authored: Sat Jan 27 00:14:09 2018 +0100
Committer: Sven Meier <sv...@apache.org>
Committed: Sat Jan 27 00:14:09 2018 +0100

----------------------------------------------------------------------
 .../main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/2e4496e2/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
index b2ad3a0..075a9ca 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
@@ -658,7 +658,7 @@
 				}
 			}
 
-			var wwwFormUrlEncoded = undefined; // default
+			var wwwFormUrlEncoded; // undefined is jQuery's default
 			if (attrs.mp) {
 				try {
 					var formData = new FormData();


[13/14] wicket git commit: Merge branch 'master' into WICKET-6498_deferred_javascript_2

Posted by so...@apache.org.
Merge branch 'master' into WICKET-6498_deferred_javascript_2


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

Branch: refs/heads/WICKET-6498_deferred_javascript_2
Commit: 17b1b733d106b92874e736ce14d1e2f8f1d0665a
Parents: 8b14b41 d21bfe3
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Sun Jan 28 10:03:46 2018 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Sun Jan 28 10:03:46 2018 +0700

----------------------------------------------------------------------
 .../META-INF/maven/archetype-metadata.xml       |   7 +-
 .../main/resources/archetype-resources/pom.xml  |  17 +-
 .../src/main/resources/__log4j.properties__     |  16 --
 pom.xml                                         |   2 +-
 .../main/java/org/apache/wicket/Component.java  |  32 +++
 .../java/org/apache/wicket/MarkupContainer.java |  15 +
 .../src/main/java/org/apache/wicket/Page.java   |   2 +
 .../wicket/ajax/res/js/wicket-ajax-jquery.js    | 283 +++----------------
 .../handler/PageAndComponentProvider.java       |   1 +
 .../org/apache/wicket/MarkupContainerTest.java  |  71 +++--
 wicket-core/src/test/js/ajax.js                 |  28 +-
 .../examples/ajax/builtin/FileUploadPage.html   |  25 +-
 .../examples/ajax/builtin/FileUploadPage.java   |  35 +++
 .../wicket/extensions/Initializer.properties    |   2 +
 .../extensions/ajax/AjaxFileDropBehavior.java   | 211 ++++++++++++++
 .../wicket/extensions/ajax/wicket-ajaxupload.js |  54 ++++
 16 files changed, 475 insertions(+), 326 deletions(-)
----------------------------------------------------------------------



[09/14] wicket git commit: WICKET-6517 dep could be multipart too

Posted by so...@apache.org.
WICKET-6517 dep could be multipart too


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

Branch: refs/heads/WICKET-6498_deferred_javascript_2
Commit: 44fb374876210fc0545a5c02a83232ebc1500a38
Parents: f642f4a
Author: Sven Meier <sv...@apache.org>
Authored: Wed Jan 17 00:32:29 2018 +0100
Committer: Sven Meier <sv...@apache.org>
Committed: Fri Jan 26 23:09:37 2018 +0100

----------------------------------------------------------------------
 .../wicket/ajax/res/js/wicket-ajax-jquery.js    |  49 ++----
 .../examples/ajax/builtin/FileUploadPage.html   |  10 +-
 .../examples/ajax/builtin/FileUploadPage.java   |  26 ++++
 .../markup/html/AjaxFileUploadBehavior.java     | 156 +++++++++++++++++++
 .../extensions/ajax/markup/html/datatransfer.js |  54 +++++++
 5 files changed, 261 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/44fb3748/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
index 801a47d..b2ad3a0 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
@@ -49,8 +49,7 @@
 		};
 	}
 
-	var createIFrame,
-		getAjaxBaseUrl,
+	var getAjaxBaseUrl,
 		isUndef,
 		replaceAll,
 		htmlToDomDocument,
@@ -66,19 +65,6 @@
 	};
 
 	/**
-	 * Creates an iframe that can be used to load data asynchronously or as a
-	 * target for Ajax form submit.
-	 *
-	 * @param iframeName {String} the value of the iframe's name attribute
-	 */
-	createIFrame = function (iframeName) {
-		// WICKET-6340 properly close tag for XHTML markup
-		var $iframe = jQuery('<iframe name="'+iframeName+'" id="'+iframeName+
-			'" src="about:blank" style="position: absolute; top: -9999px; left: -9999px;"></iframe>');
-		return $iframe[0];
-	};
-
-	/**
 	 * A safe getter for Wicket's Ajax base URL.
 	 * If the value is not defined or is empty string then
 	 * return '.' (current folder) as base URL.
@@ -553,7 +539,7 @@
 				extraParam = this._asParamArray(extraParam);
 				params = params.concat(extraParam);
 			}
-			return jQuery.param(params);
+			return params;
 		},
 
 		/**
@@ -583,6 +569,8 @@
 					'Wicket-Ajax': 'true',
 					'Wicket-Ajax-BaseURL': getAjaxBaseUrl()
 				},
+				
+				url = attrs.u,
 
 				// the request (extra) parameters
 				data = this._asParamArray(attrs.ep),
@@ -658,6 +646,17 @@
 				var el = Wicket.$(attrs.c);
 				data = data.concat(Wicket.Form.serializeElement(el, attrs.sr));
 			}
+			
+			// collect the dynamic extra parameters
+			if (jQuery.isArray(attrs.dep)) {
+				var dynamicData = this._calculateDynamicParameters(attrs);
+				if (attrs.m.toLowerCase() === 'post') {
+					data = data.concat(dynamicData);
+				} else {
+					var separator = url.indexOf('?') > -1 ? '&' : '?';
+					url = url + separator + jQuery.param(dynamicData);
+				}
+			}
 
 			var wwwFormUrlEncoded = undefined; // default
 			if (attrs.mp) {
@@ -676,29 +675,13 @@
 
 			// execute the request
 			var jqXHR = jQuery.ajax({
-				url: attrs.u,
+				url: url,
 				type: attrs.m,
 				context: self,
 				processData: wwwFormUrlEncoded,
 				contentType: wwwFormUrlEncoded,
 				
 				beforeSend: function (jqXHR, settings) {
-					// collect the dynamic extra parameters
-					if (jQuery.isArray(attrs.dep)) {
-						var queryString,
-							separator;
-
-						queryString = this._calculateDynamicParameters(attrs);
-						if (settings.type.toLowerCase() === 'post') {
-							separator = settings.data.length > 0 ? '&' : '';
-							settings.data = settings.data + separator + queryString;
-							jqXHR.setRequestHeader("Content-Type", settings.contentType);
-						} else {
-							separator = settings.url.indexOf('?') > -1 ? '&' : '?';
-							settings.url = settings.url + separator + queryString;
-						}
-					}
-
 					self._executeHandlers(attrs.bsh, attrs, jqXHR, settings);
 					we.publish(topic.AJAX_CALL_BEFORE_SEND, attrs, jqXHR, settings);
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/44fb3748/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.html
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.html b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.html
index 9351d4c..4642ae3 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.html
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.html
@@ -1,4 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
+<html>
+<body>
 <wicket:extend xmlns:wicket="http://wicket.apache.org">
 
 Demonstrates Wicket's ability to transparently handle multipart forms via AJAX.<br/><br/>The only difference between this example and other non-AJAX upload examples is the option to trigger the form submit via an AjaxButton, everything else is handled transparently by Wicket.<br/><br/>
@@ -13,4 +15,10 @@ Demonstrates Wicket's ability to transparently handle multipart forms via AJAX.<
 	<input type="submit" value="Regular Submit"/> <input wicket:id="ajaxSubmit" type="button" value="Ajax Submit"/>
 </form>
 
-</wicket:extend>
\ No newline at end of file
+<div wicket:id="drop" style="border: 1px dotted black; width:200px; height:200px;">
+	Drop file here.
+</div>
+
+</wicket:extend>
+</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/wicket/blob/44fb3748/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
index e2eda2e..ca6dc70 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
@@ -16,10 +16,14 @@
  */
 package org.apache.wicket.examples.ajax.builtin;
 
+import java.util.List;
+
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.extensions.ajax.markup.html.AjaxFileUploadBehavior;
 import org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadProgressBar;
+import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.TextField;
@@ -110,5 +114,27 @@ public class FileUploadPage extends BasePage
 			}
 
 		});
+		
+		WebMarkupContainer drop = new WebMarkupContainer("drop");
+		drop.add(new AjaxFileUploadBehavior() {
+			protected void onFileUpload(AjaxRequestTarget target, List<FileUpload> files) {
+			    
+				// display uploaded info
+				if (files == null || files.isEmpty())
+				{
+					info("No file uploaded");
+				}
+				else
+				{
+				    for (FileUpload file : files) {
+				    	info("File-Name: " + file.getClientFileName() + " File-Size: " +
+				    		Bytes.bytes(file.getSize()).toString());
+				    }
+				}
+				
+				target.add(feedback);
+			}
+		});
+		add(drop);
 	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/44fb3748/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileUploadBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileUploadBehavior.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileUploadBehavior.java
new file mode 100644
index 0000000..3801c62
--- /dev/null
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileUploadBehavior.java
@@ -0,0 +1,156 @@
+/*
+ * 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.extensions.ajax.markup.html;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.FileUploadException;
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes.Method;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
+import org.apache.wicket.markup.html.form.upload.FileUpload;
+import org.apache.wicket.protocol.http.servlet.MultipartServletWebRequest;
+import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
+import org.apache.wicket.request.resource.PackageResourceReference;
+import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.util.lang.Args;
+import org.apache.wicket.util.lang.Bytes;
+
+/**
+ * Uploads files from a drop event.
+ * 
+ * @author svenmeier
+ */
+public class AjaxFileUploadBehavior extends AjaxEventBehavior
+{
+
+	private static final ResourceReference JS = new PackageResourceReference(AjaxFileUploadBehavior.class, "datatransfer.js");
+
+	/**
+	 *  Maximum size of all uploaded files in bytes in a request.
+	 */
+	private Bytes maxSize;
+
+	/**
+	 *  Maximum size of file of upload in bytes (if there are more than one) in a request.
+	 */
+	private Bytes fileMaxSize;
+
+	private String parameterName = "f";
+	
+	public AjaxFileUploadBehavior()
+	{
+		super("drop");
+	}
+	
+	@Override
+	public void renderHead(Component component, IHeaderResponse response)
+	{
+		super.renderHead(component, response);
+		
+		response.render(JavaScriptHeaderItem.forReference(JS));
+		
+		// default must be prevented for dragover event, otherwise browser will consume the dataTransfer
+		response.render(OnDomReadyHeaderItem.forScript(String.format("jQuery('#%s').on('dragover', function(e) { e.preventDefault(); });", component.getMarkupId())));
+	}
+
+	@Override
+	protected void updateAjaxAttributes(AjaxRequestAttributes attributes)
+	{
+		super.updateAjaxAttributes(attributes);
+
+		attributes.setMultipart(true);
+		attributes.setMethod(Method.POST);
+		// default must be prevented, otherwise browser will consume the dataTransfer
+		attributes.setPreventDefault(true);
+
+		attributes.getDynamicExtraParameters().add(
+			String.format("return Wicket.DataTransfer.getFilesAsParamArray(attrs.event.originalEvent, '%s');", parameterName)
+		);
+	}
+
+	@Override
+	protected void onEvent(AjaxRequestTarget target)
+	{
+		try
+		{
+			ServletWebRequest request = (ServletWebRequest)getComponent().getRequest();
+			final MultipartServletWebRequest multipartWebRequest = request.newMultipartWebRequest(
+				getMaxSize(), getComponent().getPage().getId());
+			multipartWebRequest.setFileMaxSize(getFileMaxSize());
+			multipartWebRequest.parseFileParts();
+
+			// TODO: Can't this be detected from header?
+			getComponent().getRequestCycle().setRequest(multipartWebRequest);
+			
+			ArrayList<FileUpload> fileUploads = new ArrayList<>();
+
+			// Get the item for the path
+			final List<FileItem> fileItems = multipartWebRequest.getFile(parameterName);
+
+			if (fileItems != null)
+			{
+				for (FileItem item : fileItems)
+				{
+					fileUploads.add(new FileUpload(item));
+				}
+			}
+			
+			onFileUpload(target, fileUploads);
+		}
+		catch (final FileUploadException fux)
+		{
+			onError(fux);
+		}
+	}
+
+	public Bytes getMaxSize()
+	{
+		return maxSize;
+	}
+
+	public void setMaxSize(Bytes maxSize)
+	{
+		Args.notNull(maxSize, "maxSize");
+		this.maxSize = maxSize;
+	}
+
+	public Bytes getFileMaxSize()
+	{
+		return fileMaxSize;
+	}
+
+	public void setFileMaxSize(Bytes fileMaxSize)
+	{
+		this.fileMaxSize = fileMaxSize;
+	}
+	
+	protected void onFileUpload(AjaxRequestTarget target, List<FileUpload> files)
+	{
+	}
+
+	protected void onError(FileUploadException fux)
+	{
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/wicket/blob/44fb3748/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/datatransfer.js
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/datatransfer.js b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/datatransfer.js
new file mode 100644
index 0000000..05ff68a
--- /dev/null
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/datatransfer.js
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+
+;(function (undefined) {
+	'use strict';
+
+	if (typeof(Wicket) === "undefined") {
+		window.Wicket = {};
+	}
+
+	if (Wicket.DataTransfer) {
+		return;
+	}
+
+	Wicket.DataTransfer = {
+		getFilesAsParamArray : function(ev, name) {
+			var files = [];
+				
+			function pushFile(file) {
+				files.push({'name' : name, 'value' : file}); 
+			};
+
+			var dataTransfer = ev.dataTransfer; 
+			var i;
+			if (dataTransfer.items) { 
+			  for (i = 0; i < dataTransfer.items.length; i++) { 
+			    if (dataTransfer.items[i].kind == 'file') { 
+			      pushFile(dataTransfer.items[i].getAsFile()); 
+			    } 
+			  } 
+			} else { 
+			  for (i = 0; i < dataTransfer.files.length; i++) { 
+			    pushFile(dataTransfer.files[i]); 
+			  } 
+			}
+			
+			return files;
+		}
+	};
+})();


[04/14] wicket git commit: Merge branch 'master' into WICKET-6518-quickstart-logback

Posted by so...@apache.org.
Merge branch 'master' into WICKET-6518-quickstart-logback


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

Branch: refs/heads/WICKET-6498_deferred_javascript_2
Commit: 1d20044b5e9a5d282217514bffd040c13794b808
Parents: da3b69f eb9f6c9
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Mon Jan 22 10:21:59 2018 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Mon Jan 22 10:21:59 2018 +0700

----------------------------------------------------------------------
 pom.xml                                         |   4 +-
 .../main/java/org/apache/wicket/Component.java  | 332 ++++++-------------
 .../java/org/apache/wicket/MarkupContainer.java |  22 --
 .../src/main/java/org/apache/wicket/Page.java   |  36 +-
 .../ComponentRenderingRequestHandler.java       |   9 +-
 .../handler/PageAndComponentProvider.java       |   2 +-
 .../core/util/string/ComponentRenderer.java     |   3 +-
 .../apache/wicket/feedback/FeedbackDelay.java   | 119 +++++++
 .../org/apache/wicket/feedback/IFeedback.java   |   5 +-
 .../apache/wicket/page/PartialPageUpdate.java   |  74 ++++-
 .../wicket/page/XmlPartialPageUpdate.java       |  50 +--
 .../wicket/feedback/FeedbackRenderTest.java     |  22 +-
 .../apache/wicket/feedback/FeedbacksPage.html   |  16 +-
 .../apache/wicket/feedback/FeedbacksPage.java   |  31 +-
 .../markup/html/internal/EnclosurePage_1.java   |  50 ++-
 .../markup/html/internal/EnclosureTest.java     |   4 +
 wicket-eclipse-settings/pom.xml                 |   2 +-
 .../componentLifecycle_1.adoc                   |  11 +-
 .../componentLifecycle_2.adoc                   |   9 +-
 .../componentLifecycle_3.adoc                   |   6 +-
 .../componentLifecycle_4.adoc                   |  23 +-
 .../componentLifecycle_5.adoc                   |   6 +-
 .../componentLifecycle_6.adoc                   |   3 +-
 .../componentLifecycle_7.adoc                   |   5 +
 .../main/asciidoc/img/component-lifecycle.png   | Bin 10587 -> 34960 bytes
 wicket-user-guide/src/main/asciidoc/single.adoc |   8 +-
 26 files changed, 474 insertions(+), 378 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/1d20044b/pom.xml
----------------------------------------------------------------------


[10/14] wicket git commit: WICKET-6517 moved behavior out of markup package

Posted by so...@apache.org.
WICKET-6517 moved behavior out of markup package

This closes #256


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

Branch: refs/heads/WICKET-6498_deferred_javascript_2
Commit: 29d2775c05e8084ff3a01c2f2da27efcaa6d4b03
Parents: f1dd096
Author: Sven Meier <sv...@apache.org>
Authored: Fri Jan 19 09:22:35 2018 +0100
Committer: Sven Meier <sv...@apache.org>
Committed: Fri Jan 26 23:51:35 2018 +0100

----------------------------------------------------------------------
 .../examples/ajax/builtin/FileUploadPage.html   |   2 +-
 .../examples/ajax/builtin/FileUploadPage.java   |   2 +-
 .../extensions/ajax/AjaxFileDropBehavior.java   | 211 +++++++++++++++++++
 .../ajax/markup/html/AjaxFileDropBehavior.java  | 211 -------------------
 .../extensions/ajax/markup/html/datatransfer.js |  54 -----
 .../wicket/extensions/ajax/wicket-ajaxupload.js |  54 +++++
 6 files changed, 267 insertions(+), 267 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/29d2775c/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.html
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.html b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.html
index 2ed083d..18d2bfb 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.html
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.html
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<html>
+<html xmlns:wicket="http://wicket.apache.org">
 <head>
 	<wicket:head>
 		<style>

http://git-wip-us.apache.org/repos/asf/wicket/blob/29d2775c/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
index f7a473c..598efee 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
@@ -22,7 +22,7 @@ import org.apache.commons.fileupload.FileUploadException;
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.form.AjaxButton;
-import org.apache.wicket.extensions.ajax.markup.html.AjaxFileDropBehavior;
+import org.apache.wicket.extensions.ajax.AjaxFileDropBehavior;
 import org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadProgressBar;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;

http://git-wip-us.apache.org/repos/asf/wicket/blob/29d2775c/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/AjaxFileDropBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/AjaxFileDropBehavior.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/AjaxFileDropBehavior.java
new file mode 100644
index 0000000..0501610
--- /dev/null
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/AjaxFileDropBehavior.java
@@ -0,0 +1,211 @@
+/*
+ * 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.extensions.ajax;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.FileUploadException;
+import org.apache.wicket.Component;
+import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.attributes.AjaxCallListener;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes.Method;
+import org.apache.wicket.core.util.string.CssUtils;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.markup.html.form.upload.FileUpload;
+import org.apache.wicket.protocol.http.servlet.MultipartServletWebRequest;
+import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
+import org.apache.wicket.request.resource.PackageResourceReference;
+import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.util.lang.Args;
+import org.apache.wicket.util.lang.Bytes;
+
+/**
+ * Uploads files from a drop event.
+ *
+ * @author Andrew Kondratev
+ * @author svenmeier
+ */
+public class AjaxFileDropBehavior extends AjaxEventBehavior
+{
+
+	public static final String DRAG_OVER_CLASS_KEY = CssUtils.key(AjaxFileDropBehavior.class, "dragover");
+
+	private static final ResourceReference JS = new PackageResourceReference(
+		AjaxFileDropBehavior.class, "wicket-ajaxupload.js");
+
+	/**
+	 * Maximum size of all uploaded files in bytes in a request.
+	 */
+	private Bytes maxSize;
+
+	/**
+	 * Maximum size of file of upload in bytes (if there are more than one) in a request.
+	 */
+	private Bytes fileMaxSize;
+
+	private String parameterName = "f";
+
+	/**
+	 * Listen for 'dragover' and 'drop' events and prevent them, only 'drop' will initiate
+	 * an Ajax request.
+	 */
+	public AjaxFileDropBehavior()
+	{
+		super("dragenter dragover dragleave drop");
+	}
+
+	@Override
+	public void renderHead(Component component, IHeaderResponse response)
+	{
+		super.renderHead(component, response);
+
+		response.render(JavaScriptHeaderItem.forReference(JS));
+	}
+
+	@Override
+	protected void updateAjaxAttributes(AjaxRequestAttributes attributes)
+	{
+		super.updateAjaxAttributes(attributes);
+
+		attributes.setMultipart(true);
+		attributes.setMethod(Method.POST);
+		// default must be prevented, otherwise browser will consume the dataTransfer
+		attributes.setPreventDefault(true);
+
+		attributes.getAjaxCallListeners().add(new AjaxCallListener() {
+			@Override
+			public CharSequence getPrecondition(Component component)
+			{
+				String css = getComponent().getString(DRAG_OVER_CLASS_KEY);
+				
+				return String.format("jQuery('#' + attrs.c).toggleClass('%s', attrs.event.type === 'dragover'); return (attrs.event.type === 'drop');", css);
+			}
+		});
+		
+		attributes.getDynamicExtraParameters()
+			.add(String.format(
+				"return Wicket.DataTransfer.getFilesAsParamArray(attrs.event.originalEvent, '%s');",
+				parameterName));
+	}
+
+	@Override
+	protected void onEvent(AjaxRequestTarget target)
+	{
+		try
+		{
+			ServletWebRequest request = (ServletWebRequest)getComponent().getRequest();
+			final MultipartServletWebRequest multipartWebRequest = request
+				.newMultipartWebRequest(getMaxSize(), getComponent().getPage().getId());
+			multipartWebRequest.setFileMaxSize(getFileMaxSize());
+			multipartWebRequest.parseFileParts();
+
+			// TODO: Can't this be detected from header?
+			getComponent().getRequestCycle().setRequest(multipartWebRequest);
+
+			ArrayList<FileUpload> fileUploads = new ArrayList<>();
+
+			// Get the item for the path
+			final List<FileItem> fileItems = multipartWebRequest.getFile(parameterName);
+
+			if (fileItems != null)
+			{
+				for (FileItem item : fileItems)
+				{
+					fileUploads.add(new FileUpload(item));
+				}
+			}
+
+			onFileUpload(target, fileUploads);
+		}
+		catch (final FileUploadException fux)
+		{
+			onError(target, fux);
+		}
+	}
+
+	public Bytes getMaxSize()
+	{
+		if (maxSize == null)
+		{
+			maxSize = getComponent().getApplication().getApplicationSettings()
+				.getDefaultMaximumUploadSize();
+		}
+		return maxSize;
+	}
+
+	/**
+	 * Set the maximum upload size.
+	 * 
+	 * @param maxSize maximum size, must not be null
+	 */
+	public void setMaxSize(Bytes maxSize)
+	{
+		Args.notNull(maxSize, "maxSize");
+		this.maxSize = maxSize;
+	}
+
+	public Bytes getFileMaxSize()
+	{
+		return fileMaxSize;
+	}
+
+	/**
+	 * Set an optional maximum size per file.
+	 * 
+	 * @param fileMaxSize maximum size for each uploaded file
+	 */
+	public void setFileMaxSize(Bytes fileMaxSize)
+	{
+		this.fileMaxSize = fileMaxSize;
+	}
+
+	/**
+	 * Hook method called after a file was uploaded.
+	 * <p>
+	 * Note: {@link #onError(AjaxRequestTarget, FileUploadException)} is called instead when
+	 * uploading failed
+	 * 
+	 * @param target
+	 *            the current request handler
+	 * @param files
+	 *            uploaded files
+	 */
+	protected void onFileUpload(AjaxRequestTarget target, List<FileUpload> files)
+	{
+	}
+
+	/**
+	 * Hook method called to handle any error during uploading of the file.
+	 * <p>
+	 * Default implementation re-throws the exception. 
+	 *
+	 * @param target
+	 *            the current request handler
+	 * @param e
+	 *            the error that occurred
+	 */
+	protected void onError(AjaxRequestTarget target, FileUploadException fux)
+	{
+		throw new WicketRuntimeException(fux);
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/wicket/blob/29d2775c/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileDropBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileDropBehavior.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileDropBehavior.java
deleted file mode 100644
index 817c2f4..0000000
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileDropBehavior.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * 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.extensions.ajax.markup.html;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.fileupload.FileItem;
-import org.apache.commons.fileupload.FileUploadException;
-import org.apache.wicket.Component;
-import org.apache.wicket.WicketRuntimeException;
-import org.apache.wicket.ajax.AjaxEventBehavior;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.attributes.AjaxCallListener;
-import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
-import org.apache.wicket.ajax.attributes.AjaxRequestAttributes.Method;
-import org.apache.wicket.core.util.string.CssUtils;
-import org.apache.wicket.markup.head.IHeaderResponse;
-import org.apache.wicket.markup.head.JavaScriptHeaderItem;
-import org.apache.wicket.markup.html.form.upload.FileUpload;
-import org.apache.wicket.protocol.http.servlet.MultipartServletWebRequest;
-import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
-import org.apache.wicket.request.resource.PackageResourceReference;
-import org.apache.wicket.request.resource.ResourceReference;
-import org.apache.wicket.util.lang.Args;
-import org.apache.wicket.util.lang.Bytes;
-
-/**
- * Uploads files from a drop event.
- *
- * @author Andrew Kondratev
- * @author svenmeier
- */
-public class AjaxFileDropBehavior extends AjaxEventBehavior
-{
-
-	public static final String DRAG_OVER_CLASS_KEY = CssUtils.key(AjaxFileDropBehavior.class, "dragover");
-
-	private static final ResourceReference JS = new PackageResourceReference(
-		AjaxFileDropBehavior.class, "datatransfer.js");
-
-	/**
-	 * Maximum size of all uploaded files in bytes in a request.
-	 */
-	private Bytes maxSize;
-
-	/**
-	 * Maximum size of file of upload in bytes (if there are more than one) in a request.
-	 */
-	private Bytes fileMaxSize;
-
-	private String parameterName = "f";
-
-	/**
-	 * Listen for 'dragover' and 'drop' events and prevent them, only 'drop' will initiate
-	 * an Ajax request.
-	 */
-	public AjaxFileDropBehavior()
-	{
-		super("dragenter dragover dragleave drop");
-	}
-
-	@Override
-	public void renderHead(Component component, IHeaderResponse response)
-	{
-		super.renderHead(component, response);
-
-		response.render(JavaScriptHeaderItem.forReference(JS));
-	}
-
-	@Override
-	protected void updateAjaxAttributes(AjaxRequestAttributes attributes)
-	{
-		super.updateAjaxAttributes(attributes);
-
-		attributes.setMultipart(true);
-		attributes.setMethod(Method.POST);
-		// default must be prevented, otherwise browser will consume the dataTransfer
-		attributes.setPreventDefault(true);
-
-		attributes.getAjaxCallListeners().add(new AjaxCallListener() {
-			@Override
-			public CharSequence getPrecondition(Component component)
-			{
-				String css = getComponent().getString(DRAG_OVER_CLASS_KEY);
-				
-				return String.format("jQuery('#' + attrs.c).toggleClass('%s', attrs.event.type === 'dragover'); return (attrs.event.type === 'drop');", css);
-			}
-		});
-		
-		attributes.getDynamicExtraParameters()
-			.add(String.format(
-				"return Wicket.DataTransfer.getFilesAsParamArray(attrs.event.originalEvent, '%s');",
-				parameterName));
-	}
-
-	@Override
-	protected void onEvent(AjaxRequestTarget target)
-	{
-		try
-		{
-			ServletWebRequest request = (ServletWebRequest)getComponent().getRequest();
-			final MultipartServletWebRequest multipartWebRequest = request
-				.newMultipartWebRequest(getMaxSize(), getComponent().getPage().getId());
-			multipartWebRequest.setFileMaxSize(getFileMaxSize());
-			multipartWebRequest.parseFileParts();
-
-			// TODO: Can't this be detected from header?
-			getComponent().getRequestCycle().setRequest(multipartWebRequest);
-
-			ArrayList<FileUpload> fileUploads = new ArrayList<>();
-
-			// Get the item for the path
-			final List<FileItem> fileItems = multipartWebRequest.getFile(parameterName);
-
-			if (fileItems != null)
-			{
-				for (FileItem item : fileItems)
-				{
-					fileUploads.add(new FileUpload(item));
-				}
-			}
-
-			onFileUpload(target, fileUploads);
-		}
-		catch (final FileUploadException fux)
-		{
-			onError(target, fux);
-		}
-	}
-
-	public Bytes getMaxSize()
-	{
-		if (maxSize == null)
-		{
-			maxSize = getComponent().getApplication().getApplicationSettings()
-				.getDefaultMaximumUploadSize();
-		}
-		return maxSize;
-	}
-
-	/**
-	 * Set the maximum upload size.
-	 * 
-	 * @param maxSize maximum size, must not be null
-	 */
-	public void setMaxSize(Bytes maxSize)
-	{
-		Args.notNull(maxSize, "maxSize");
-		this.maxSize = maxSize;
-	}
-
-	public Bytes getFileMaxSize()
-	{
-		return fileMaxSize;
-	}
-
-	/**
-	 * Set an optional maximum size per file.
-	 * 
-	 * @param fileMaxSize maximum size for each uploaded file
-	 */
-	public void setFileMaxSize(Bytes fileMaxSize)
-	{
-		this.fileMaxSize = fileMaxSize;
-	}
-
-	/**
-	 * Hook method called after a file was uploaded.
-	 * <p>
-	 * Note: {@link #onError(AjaxRequestTarget, FileUploadException)} is called instead when
-	 * uploading failed
-	 * 
-	 * @param target
-	 *            the current request handler
-	 * @param files
-	 *            uploaded files
-	 */
-	protected void onFileUpload(AjaxRequestTarget target, List<FileUpload> files)
-	{
-	}
-
-	/**
-	 * Hook method called to handle any error during uploading of the file.
-	 * <p>
-	 * Default implementation re-throws the exception. 
-	 *
-	 * @param target
-	 *            the current request handler
-	 * @param e
-	 *            the error that occurred
-	 */
-	protected void onError(AjaxRequestTarget target, FileUploadException fux)
-	{
-		throw new WicketRuntimeException(fux);
-	}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/wicket/blob/29d2775c/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/datatransfer.js
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/datatransfer.js b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/datatransfer.js
deleted file mode 100644
index 05ff68a..0000000
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/datatransfer.js
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.
- */
-
-;(function (undefined) {
-	'use strict';
-
-	if (typeof(Wicket) === "undefined") {
-		window.Wicket = {};
-	}
-
-	if (Wicket.DataTransfer) {
-		return;
-	}
-
-	Wicket.DataTransfer = {
-		getFilesAsParamArray : function(ev, name) {
-			var files = [];
-				
-			function pushFile(file) {
-				files.push({'name' : name, 'value' : file}); 
-			};
-
-			var dataTransfer = ev.dataTransfer; 
-			var i;
-			if (dataTransfer.items) { 
-			  for (i = 0; i < dataTransfer.items.length; i++) { 
-			    if (dataTransfer.items[i].kind == 'file') { 
-			      pushFile(dataTransfer.items[i].getAsFile()); 
-			    } 
-			  } 
-			} else { 
-			  for (i = 0; i < dataTransfer.files.length; i++) { 
-			    pushFile(dataTransfer.files[i]); 
-			  } 
-			}
-			
-			return files;
-		}
-	};
-})();

http://git-wip-us.apache.org/repos/asf/wicket/blob/29d2775c/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/wicket-ajaxupload.js
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/wicket-ajaxupload.js b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/wicket-ajaxupload.js
new file mode 100644
index 0000000..05ff68a
--- /dev/null
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/wicket-ajaxupload.js
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+
+;(function (undefined) {
+	'use strict';
+
+	if (typeof(Wicket) === "undefined") {
+		window.Wicket = {};
+	}
+
+	if (Wicket.DataTransfer) {
+		return;
+	}
+
+	Wicket.DataTransfer = {
+		getFilesAsParamArray : function(ev, name) {
+			var files = [];
+				
+			function pushFile(file) {
+				files.push({'name' : name, 'value' : file}); 
+			};
+
+			var dataTransfer = ev.dataTransfer; 
+			var i;
+			if (dataTransfer.items) { 
+			  for (i = 0; i < dataTransfer.items.length; i++) { 
+			    if (dataTransfer.items[i].kind == 'file') { 
+			      pushFile(dataTransfer.items[i].getAsFile()); 
+			    } 
+			  } 
+			} else { 
+			  for (i = 0; i < dataTransfer.files.length; i++) { 
+			    pushFile(dataTransfer.files[i]); 
+			  } 
+			}
+			
+			return files;
+		}
+	};
+})();


[07/14] wicket git commit: WICKET-6517 added some CSS styling

Posted by so...@apache.org.
WICKET-6517 added some CSS styling


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

Branch: refs/heads/WICKET-6498_deferred_javascript_2
Commit: f1dd096c772feb9f878f783c5764a37403e82e5b
Parents: 3f5c293
Author: Sven Meier <sv...@apache.org>
Authored: Thu Jan 18 22:43:21 2018 +0100
Committer: Sven Meier <sv...@apache.org>
Committed: Fri Jan 26 23:09:37 2018 +0100

----------------------------------------------------------------------
 .../examples/ajax/builtin/FileUploadPage.html   | 17 +++++++++++-
 .../wicket/extensions/Initializer.properties    |  2 ++
 .../ajax/markup/html/AjaxFileDropBehavior.java  | 27 ++++++++++++++------
 3 files changed, 37 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/f1dd096c/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.html
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.html b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.html
index 4642ae3..2ed083d 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.html
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.html
@@ -1,5 +1,20 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <html>
+<head>
+	<wicket:head>
+		<style>
+			.drop-zone {
+				border: 1px dotted #FF9925;
+				width:200px;
+				height:200px;
+			}
+			.drop-zone.drag-over {
+				background: #FF9925;
+				color: #ffffff;
+			}
+		</style>
+	</wicket:head>
+</head>
 <body>
 <wicket:extend xmlns:wicket="http://wicket.apache.org">
 
@@ -15,7 +30,7 @@ Demonstrates Wicket's ability to transparently handle multipart forms via AJAX.<
 	<input type="submit" value="Regular Submit"/> <input wicket:id="ajaxSubmit" type="button" value="Ajax Submit"/>
 </form>
 
-<div wicket:id="drop" style="border: 1px dotted black; width:200px; height:200px;">
+<div wicket:id="drop" class="drop-zone">
 	Drop file here.
 </div>
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/f1dd096c/wicket-extensions/src/main/java/org/apache/wicket/extensions/Initializer.properties
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/Initializer.properties b/wicket-extensions/src/main/java/org/apache/wicket/extensions/Initializer.properties
index 98f7925..6b43d43 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/Initializer.properties
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/Initializer.properties
@@ -45,3 +45,5 @@ AbstractDateTimeField.CSS.time=datetime-time
 TimeField.hoursSeparator=\u00a0:\u00a0
 TimeField.CSS.hours=time-hours
 TimeField.CSS.minutes=time-minutes
+
+AjaxFileDropBehavior.CSS.dragover=drag-over
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/wicket/blob/f1dd096c/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileDropBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileDropBehavior.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileDropBehavior.java
index b8806d9..817c2f4 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileDropBehavior.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileDropBehavior.java
@@ -25,11 +25,12 @@ import org.apache.wicket.Component;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.attributes.AjaxCallListener;
 import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
 import org.apache.wicket.ajax.attributes.AjaxRequestAttributes.Method;
+import org.apache.wicket.core.util.string.CssUtils;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptHeaderItem;
-import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
 import org.apache.wicket.markup.html.form.upload.FileUpload;
 import org.apache.wicket.protocol.http.servlet.MultipartServletWebRequest;
 import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
@@ -47,6 +48,8 @@ import org.apache.wicket.util.lang.Bytes;
 public class AjaxFileDropBehavior extends AjaxEventBehavior
 {
 
+	public static final String DRAG_OVER_CLASS_KEY = CssUtils.key(AjaxFileDropBehavior.class, "dragover");
+
 	private static final ResourceReference JS = new PackageResourceReference(
 		AjaxFileDropBehavior.class, "datatransfer.js");
 
@@ -62,9 +65,13 @@ public class AjaxFileDropBehavior extends AjaxEventBehavior
 
 	private String parameterName = "f";
 
+	/**
+	 * Listen for 'dragover' and 'drop' events and prevent them, only 'drop' will initiate
+	 * an Ajax request.
+	 */
 	public AjaxFileDropBehavior()
 	{
-		super("drop");
+		super("dragenter dragover dragleave drop");
 	}
 
 	@Override
@@ -73,12 +80,6 @@ public class AjaxFileDropBehavior extends AjaxEventBehavior
 		super.renderHead(component, response);
 
 		response.render(JavaScriptHeaderItem.forReference(JS));
-
-		// default must be prevented for dragover event, otherwise browser will consume the
-		// dataTransfer
-		response.render(OnDomReadyHeaderItem.forScript(
-			String.format("jQuery('#%s').on('dragover', function(e) { e.preventDefault(); });",
-				component.getMarkupId())));
 	}
 
 	@Override
@@ -91,6 +92,16 @@ public class AjaxFileDropBehavior extends AjaxEventBehavior
 		// default must be prevented, otherwise browser will consume the dataTransfer
 		attributes.setPreventDefault(true);
 
+		attributes.getAjaxCallListeners().add(new AjaxCallListener() {
+			@Override
+			public CharSequence getPrecondition(Component component)
+			{
+				String css = getComponent().getString(DRAG_OVER_CLASS_KEY);
+				
+				return String.format("jQuery('#' + attrs.c).toggleClass('%s', attrs.event.type === 'dragover'); return (attrs.event.type === 'drop');", css);
+			}
+		});
+		
 		attributes.getDynamicExtraParameters()
 			.add(String.format(
 				"return Wicket.DataTransfer.getFilesAsParamArray(attrs.event.originalEvent, '%s');",


[06/14] wicket git commit: WICKET-6517 use FormData, removed submitMultipartForm

Posted by so...@apache.org.
WICKET-6517 use FormData, removed submitMultipartForm


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

Branch: refs/heads/WICKET-6498_deferred_javascript_2
Commit: f642f4ad4266319731b200e517eadf53fef5a56b
Parents: 1d20044
Author: Sven Meier <sv...@apache.org>
Authored: Fri Jan 12 12:45:55 2018 +0100
Committer: Sven Meier <sv...@apache.org>
Committed: Fri Jan 26 23:09:37 2018 +0100

----------------------------------------------------------------------
 .../wicket/ajax/res/js/wicket-ajax-jquery.js    | 234 +++----------------
 wicket-core/src/test/js/ajax.js                 |  28 +--
 2 files changed, 28 insertions(+), 234 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/f642f4ad/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
index d4f3100..801a47d 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
@@ -643,11 +643,6 @@
 
 			we.publish(topic.AJAX_CALL_PRECONDITION, attrs);
 
-			if (attrs.mp) { // multipart form. jQuery.ajax() doesn't help here ...
-				var ret = self.submitMultipartForm(context);
-				return ret;
-			}
-
 			if (attrs.f) {
 				// serialize the form with id == attrs.f
 				var form = Wicket.$(attrs.f);
@@ -658,23 +653,36 @@
 					var scName = attrs.sc;
 					data = data.concat({name: scName, value: 1});
 				}
-
 			} else if (attrs.c && !jQuery.isWindow(attrs.c)) {
 				// serialize just the form component with id == attrs.c
 				var el = Wicket.$(attrs.c);
 				data = data.concat(Wicket.Form.serializeElement(el, attrs.sr));
 			}
 
-			// convert to URL encoded string
-			data = jQuery.param(data);
+			var wwwFormUrlEncoded = undefined; // default
+			if (attrs.mp) {
+				try {
+					var formData = new FormData();
+					for (var i = 0; i < data.length; i++) {
+						formData.append(data[i].name, data[i].value);
+					}
+					
+					data = formData;
+					wwwFormUrlEncoded = false;
+				} catch (exception) {
+					Wicket.Log.error("Ajax multipat not supported:" + exception);
+				}
+			}
 
 			// execute the request
 			var jqXHR = jQuery.ajax({
 				url: attrs.u,
 				type: attrs.m,
 				context: self,
+				processData: wwwFormUrlEncoded,
+				contentType: wwwFormUrlEncoded,
+				
 				beforeSend: function (jqXHR, settings) {
-
 					// collect the dynamic extra parameters
 					if (jQuery.isArray(attrs.dep)) {
 						var queryString,
@@ -831,203 +839,6 @@
 			}
 		},
 
-		/**
-		 * This method serializes a form and sends it as POST body. If the form contains multipart content
-		 * this function will post the form using an iframe instead of the regular ajax call
-		 * and bridge the output - transparently making this work  as if it was an ajax call.
-		 *
-		 * @param {Object} context - the context for the ajax call (request attributes + steps)
-		 */
-		submitMultipartForm: function (context) {
-
-			var attrs = context.attrs;
-
-			var form = Wicket.$(attrs.f);
-			if (!form) {
-				Wicket.Log.error("Wicket.Ajax.Call.submitForm: Trying to submit form with id '" + attrs.f + "' that is not in document.");
-				return;
-			}
-
-			// find root form
-			if (form.tagName.toLowerCase() !== "form") {
-				do {
-					form = form.parentNode;
-				} while(form.tagName.toLowerCase() !== "form" && form !== document.body);
-			}
-
-			if (form.tagName.toLowerCase() !== "form") {
-				Wicket.Log.error("Cannot submit form with id " + attrs.f + " because there is no form element in the hierarchy.");
-				return false;
-			}
-
-			var submittingAttribute = 'data-wicket-submitting';
-
-			if (form.onsubmit && !form.getAttribute(submittingAttribute)) {
-				form.setAttribute(submittingAttribute, submittingAttribute);
-				var retValue = true;
-				try {
-					retValue = form.onsubmit();
-				} finally {
-					form.removeAttribute(submittingAttribute);
-				}
-				if (!retValue) {
-					return;
-				}
-			}
-
-			var originalFormAction = form.action;
-			var originalFormTarget = form.target;
-			var originalFormMethod = form.method;
-			var originalFormEnctype = form.enctype;
-			var originalFormEncoding = form.encoding;
-
-			var iframeName = "wicket-submit-" + ("" + Math.random()).substr(2);
-
-			var iframe = createIFrame(iframeName);
-
-			document.body.appendChild(iframe);
-
-			// reconfigure the form
-			form.target = iframe.name;
-			var separator = (attrs.u.indexOf("?")>-1 ? "&" : "?");
-			form.action = attrs.u + separator + "wicket-ajax=true&wicket-ajax-baseurl=" + Wicket.Form.encode(getAjaxBaseUrl());
-
-			// add the static extra parameters
-			if (attrs.ep) {
-				var extraParametersArray = this._asParamArray(attrs.ep);
-				if (extraParametersArray.length > 0) {
-					var extraParametersQueryString = jQuery.param(extraParametersArray);
-					form.action = form.action + '&' + extraParametersQueryString;
-				}
-			}
-
-			// add the dynamic extra parameters
-			if (jQuery.isArray(attrs.dep)) {
-				var dynamicExtraParameters = this._calculateDynamicParameters(attrs);
-				if (dynamicExtraParameters) {
-					form.action = form.action + '&' + dynamicExtraParameters;
-				}
-			}
-			form.method = 'post';
-			form.enctype = "multipart/form-data";
-			form.encoding = "multipart/form-data";
-
-			// create submitting button element
-			if (attrs.sc) {
-				var $btn = jQuery("<input type='hidden' name='" + attrs.sc + "' id='" + iframe.id + "-btn' value='1'/>");
-				form.appendChild($btn[0]);
-			}
-
-			var we = Wicket.Event;
-			var topic = we.Topic;
-
-			this._executeHandlers(attrs.bsh, attrs, null, null);
-			we.publish(topic.AJAX_CALL_BEFORE_SEND, attrs, null, null);
-
-			if (attrs.i) {
-				// show the indicator
-				Wicket.DOM.showIncrementally(attrs.i);
-			}
-
-			//submit the form into the iframe, response will be handled by the onload callback
-			form.submit();
-
-			this._executeHandlers(attrs.ah, attrs);
-			we.publish(topic.AJAX_CALL_AFTER, attrs);
-
-			// a step to execute in both successful and erroneous completion
-			context.endStep = jQuery.proxy(function(notify) {
-				// remove the iframe and button elements
-				setTimeout(function() {
-					jQuery('#'+iframe.id + '-btn').remove();
-					jQuery(iframe).remove();
-				}, 0);
-
-				var attrs = context.attrs;
-				if (attrs.i && context.isRedirecting !== true) {
-					// hide the indicator
-					Wicket.DOM.hideIncrementally(attrs.i);
-				}
-
-				this._executeHandlers(attrs.coh, attrs, null, null);
-				Wicket.Event.publish(Wicket.Event.Topic.AJAX_CALL_COMPLETE, attrs, null, null);
-
-				this.done(attrs);
-				return FunctionsExecuter.DONE;
-			}, this);
-
-			// an error handler that is used when the connection to the server fails for any reason
-			if (attrs.rt) {
-				context.errorHandle = setTimeout(jQuery.proxy(function () {
-					this.failure(context, null, "No XML response in the IFrame document", "Failure");
-
-					context.steps.push(context.endStep);
-					var executer = new FunctionsExecuter(context.steps);
-					executer.start();
-				}, this), attrs.rt);
-			} else {
-				Wicket.Log.info("Submitting a multipart form without a timeout. " +
-					"Use AjaxRequestAttributes.setRequestTimeout(duration) if need to handle connection timeouts.");
-			}
-
-			// install handler to deal with the ajax response
-			// ... we add the onload event after form submit because chrome fires it prematurely
-			we.add(iframe, "load.handleMultipartComplete", jQuery.proxy(this.handleMultipartComplete, this), context);
-
-
-			// handled, restore state and return true
-			form.action = originalFormAction;
-			form.target = originalFormTarget;
-			form.method = originalFormMethod;
-			form.enctype = originalFormEnctype;
-			form.encoding = originalFormEncoding;
-
-			return true;
-		},
-
-		/**
-		 * Completes the multipart ajax handling started via handleMultipart()
-		 * @param {jQuery.Event} event
-		 */
-		handleMultipartComplete: function (event) {
-
-			var context = event.data,
-				iframe = event.target,
-				envelope;
-
-			if (!isUndef(context.errorHandle)) {
-				clearTimeout(context.errorHandle);
-			}
-
-			// stop the event
-			event.stopPropagation();
-
-			// remove the event
-			jQuery(iframe).off("load.handleMultipartComplete");
-
-			try {
-				envelope = iframe.contentWindow.document;
-			} catch (e) {
-				Wicket.Log.error("Cannot read Ajax response for multipart form submit: " + e);
-			}
-
-			if (isUndef(envelope)) {
-				this.failure(context, null, "No XML response in the IFrame document", "Failure");
-			}
-			else {
-				if (envelope.XMLDocument) {
-					envelope = envelope.XMLDocument;
-				}
-
-				// process the response
-				this.loadedCallback(envelope, context);
-			}
-
-			context.steps.push(context.endStep);
-			var executer = new FunctionsExecuter(context.steps);
-			executer.start();
-		},
-
 		// Processes the response
 		loadedCallback: function (envelope, context) {
 			// To process the response, we go through the xml document and add a function for every action (step).
@@ -1488,9 +1299,16 @@
 			 */
 			serializeInput: function (input) {
 				var result = [];
-				if (input && input.type && !(input.type === 'image' || input.type === 'submit')) {
+				if (input && input.type) {
 					var $input = jQuery(input);
-					result = $input.serializeArray();
+					
+					if (input.type === 'file') {
+						for (var f = 0; f < input.files.length; f++) {
+							result.push({"name" : input.name, "value" : input.files[f]});
+						}
+					} else if (!(input.type === 'image' || input.type === 'submit')) {
+						result = $input.serializeArray();
+					}
 				}
 				return result;
 			},

http://git-wip-us.apache.org/repos/asf/wicket/blob/f642f4ad/wicket-core/src/test/js/ajax.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/js/ajax.js b/wicket-core/src/test/js/ajax.js
index 71f9fce..982aa47 100644
--- a/wicket-core/src/test/js/ajax.js
+++ b/wicket-core/src/test/js/ajax.js
@@ -1042,7 +1042,7 @@ jQuery(document).ready(function() {
 		 */
 		asyncTest('Submit nested form - success scenario.', function () {
 
-			expect(13);
+			expect(9);
 
 			var attrs = {
 				f:  "innerForm", // the id of the form to submit
@@ -1056,18 +1056,6 @@ jQuery(document).ready(function() {
 				pre: [ function(attrs) {ok(true, "Precondition executed"); return true; } ],
 				bsh: [ function(attrs) {
 					ok(true, "BeforeSend handler executed");
-
-					var form = Wicket.$(attrs.f);
-					if (form.tagName.toLowerCase() !== "form") {
-						do {
-							form = form.parentNode;
-						} while(form.tagName.toLowerCase() !== "form" && form !== document.body);
-					}
-					var formUrl = form.action;
-					ok(formUrl.indexOf('dynamicEPName') > -1, "Dynamic extra parameter name is in the request query string");
-					ok(formUrl.indexOf('dynamicEPValue') > -1, "Dynamic extra parameter value is in the request query string");
-					ok(formUrl.indexOf('extraParamName') > -1, "Static extra parameter name is in the request query string");
-					ok(formUrl.indexOf('extraParamValue') > -1, "Static extra parameter value is in the request query string");
 				} ],
 				ah: [ function(attrs) { ok(true, "After handler executed"); } ],
 				sh: [ function(attrs) { ok(true, "Success handler executed"); } ],
@@ -1101,7 +1089,7 @@ jQuery(document).ready(function() {
 		 */
 		asyncTest('Submit nested form - failure scenario.', function () {
 
-			expect(12);
+			expect(8);
 
 			var attrs = {
 				f:  "innerForm", // the id of the form to submit
@@ -1115,18 +1103,6 @@ jQuery(document).ready(function() {
 				pre: [ function(attrs) {ok(true, "Precondition executed"); return true; } ],
 				bsh: [ function(attrs) {
 					ok(true, "BeforeSend handler executed");
-
-					var form = Wicket.$(attrs.f);
-					if (form.tagName.toLowerCase() !== "form") {
-						do {
-							form = form.parentNode;
-						} while(form.tagName.toLowerCase() !== "form" && form !== document.body);
-					}
-					var formUrl = form.action;
-					ok(formUrl.indexOf('dynamicEPName') > -1, "Dynamic extra parameter name is in the request query string");
-					ok(formUrl.indexOf('dynamicEPValue') > -1, "Dynamic extra parameter value is in the request query string");
-					ok(formUrl.indexOf('extraParamName') > -1, "Static extra parameter name is in the request query string");
-					ok(formUrl.indexOf('extraParamValue') > -1, "Static extra parameter value is in the request query string");
 				} ],
 				ah: [ function(attrs) { ok(true, "After handler executed"); } ],
 				sh: [ function(attrs) { ok(false, "Success handler should not be executed"); } ],


[14/14] wicket git commit: Merged with master, missing serialVersionUID are added, minor compiler warnings are fixed

Posted by so...@apache.org.
Merged with master, missing serialVersionUID are added, minor compiler warnings are fixed


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

Branch: refs/heads/WICKET-6498_deferred_javascript_2
Commit: 3e65110d3f01ea22e359bd75164a7843181af702
Parents: 17b1b73
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Sun Jan 28 12:10:24 2018 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Sun Jan 28 12:10:24 2018 +0700

----------------------------------------------------------------------
 .../markup/head/filter/FilteredHeaderItem.java  |  2 ++
 .../filter/JavaScriptDeferHeaderResponse.java   |  5 +++-
 .../wicket/markup/head/filter/DeferredPage.java |  4 ++-
 .../filter/FilteringHeaderResponseTest.java     | 30 ++++++++------------
 .../examples/ajax/builtin/AjaxApplication.java  |  6 ++--
 5 files changed, 23 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/3e65110d/wicket-core/src/main/java/org/apache/wicket/markup/head/filter/FilteredHeaderItem.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/head/filter/FilteredHeaderItem.java b/wicket-core/src/main/java/org/apache/wicket/markup/head/filter/FilteredHeaderItem.java
index 18745a2..e1728ec 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/head/filter/FilteredHeaderItem.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/filter/FilteredHeaderItem.java
@@ -35,6 +35,8 @@ import org.apache.wicket.request.Response;
  */
 public class FilteredHeaderItem extends HeaderItem implements IWrappedHeaderItem
 {
+	private static final long serialVersionUID = 1L;
+
 	private HeaderItem wrapped;
 
 	private String filterName;

http://git-wip-us.apache.org/repos/asf/wicket/blob/3e65110d/wicket-core/src/main/java/org/apache/wicket/markup/head/filter/JavaScriptDeferHeaderResponse.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/head/filter/JavaScriptDeferHeaderResponse.java b/wicket-core/src/main/java/org/apache/wicket/markup/head/filter/JavaScriptDeferHeaderResponse.java
index 39c20d1..b3d48a8 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/head/filter/JavaScriptDeferHeaderResponse.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/filter/JavaScriptDeferHeaderResponse.java
@@ -70,6 +70,8 @@ public class JavaScriptDeferHeaderResponse extends DecoratingHeaderResponse
 	 */
 	private class NativeOnDomContentLoadedHeaderItem extends OnDomReadyHeaderItem
 	{
+		private static final long serialVersionUID = 1L;
+
 		/**
 		 * Construct.
 		 *
@@ -96,6 +98,7 @@ public class JavaScriptDeferHeaderResponse extends DecoratingHeaderResponse
 	 */
 	private class NativeOnLoadHeaderItem extends OnLoadHeaderItem
 	{
+		private static final long serialVersionUID = 1L;
 
 		/**
 		 * Construct.
@@ -117,4 +120,4 @@ public class JavaScriptDeferHeaderResponse extends DecoratingHeaderResponse
 			}
 		}
 	}	
-} 
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/3e65110d/wicket-core/src/test/java/org/apache/wicket/markup/head/filter/DeferredPage.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/head/filter/DeferredPage.java b/wicket-core/src/test/java/org/apache/wicket/markup/head/filter/DeferredPage.java
index 355328b..b5e3850 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/head/filter/DeferredPage.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/head/filter/DeferredPage.java
@@ -35,10 +35,12 @@ public class DeferredPage extends WebPage
 	public DeferredPage()
 	{
 		add(new AjaxEventBehavior("click") {
+			private static final long serialVersionUID = 1L;
+
 			@Override
 			protected void onEvent(AjaxRequestTarget target)
 			{
 			}
 		});
 	}
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/3e65110d/wicket-core/src/test/java/org/apache/wicket/markup/head/filter/FilteringHeaderResponseTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/head/filter/FilteringHeaderResponseTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/head/filter/FilteringHeaderResponseTest.java
index 99665a7..88e9c64 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/head/filter/FilteringHeaderResponseTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/head/filter/FilteringHeaderResponseTest.java
@@ -59,21 +59,22 @@ public class FilteringHeaderResponseTest extends WicketTestCase
 	@Test
 	public void createBucketOnTheFlyForFilteredHeaderItem() throws Exception
 	{
-		FilteringHeaderResponse headerResponse = new FilteringHeaderResponse(new HeaderResponse()
+		try (FilteringHeaderResponse headerResponse = new FilteringHeaderResponse(new HeaderResponse()
 		{
 			@Override
 			protected Response getRealResponse()
 			{
 				return new StringResponse();
 			}
-		}, "headerBucketName", Collections.EMPTY_LIST);
-
-		String filterName = "filterName";
-		String headerContent = "content";
-		FilteredHeaderItem item = new FilteredHeaderItem(StringHeaderItem.forString(headerContent), filterName);
-		headerResponse.render(item);
-		CharSequence realContent = headerResponse.getContent(filterName);
-		assertEquals(headerContent, realContent.toString());
+		}, "headerBucketName", Collections.emptyList()))
+		{
+			String filterName = "filterName";
+			String headerContent = "content";
+			FilteredHeaderItem item = new FilteredHeaderItem(StringHeaderItem.forString(headerContent), filterName);
+			headerResponse.render(item);
+			CharSequence realContent = headerResponse.getContent(filterName);
+			assertEquals(headerContent, realContent.toString());
+		}
 	}
 
 	/**
@@ -83,14 +84,7 @@ public class FilteringHeaderResponseTest extends WicketTestCase
 	@Test
 	public void deferred() throws Exception
 	{
-		tester.getApplication().setHeaderResponseDecorator(new IHeaderResponseDecorator()
-		{
-			@Override
-			public IHeaderResponse decorate(IHeaderResponse response)
-			{
-				return new ResourceAggregator(new JavaScriptDeferHeaderResponse(response));
-			}
-		});
+		tester.getApplication().setHeaderResponseDecorator(response -> new ResourceAggregator(new JavaScriptDeferHeaderResponse(response)));
 		executeTest(DeferredPage.class, "DeferredPageExpected.html");
 	}
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/3e65110d/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxApplication.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxApplication.java b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxApplication.java
index c38265a..9f8327e 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxApplication.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxApplication.java
@@ -46,10 +46,8 @@ public class AjaxApplication extends WicketExampleApplication
 
 		getDebugSettings().setAjaxDebugModeEnabled(true);
 		
-		setHeaderResponseDecorator(response -> {
-			// use this header resource decorator to defer all JavaScript resources
-			return new ResourceAggregator(new JavaScriptDeferHeaderResponse(response));
-		});
+		// use this header resource decorator to defer all JavaScript resources
+		setHeaderResponseDecorator(response -> new ResourceAggregator(new JavaScriptDeferHeaderResponse(response)));
 
 		getComponentInitializationListeners().add(new IComponentInitializationListener()
 		{