You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2015/06/24 14:58:46 UTC

[40/50] [abbrv] wicket git commit: WICKET-5929 IPartialPageRequestHandler for updating of components

WICKET-5929 IPartialPageRequestHandler for updating of components


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

Branch: refs/heads/master
Commit: e0983f1c1544e0a08932835e7b201a596f37630f
Parents: 7a25922
Author: Sven Meier <sv...@apache.org>
Authored: Tue Jun 23 14:05:43 2015 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Wed Jun 24 14:56:35 2015 +0300

----------------------------------------------------------------------
 .../apache/wicket/ajax/AjaxRequestTarget.java   | 109 +---------------
 .../handler/IPartialPageRequestHandler.java     | 129 +++++++++++++++++++
 .../ws/api/IWebSocketRequestHandler.java        |   5 +-
 .../ws/api/WebSocketRequestHandler.java         |  13 +-
 4 files changed, 136 insertions(+), 120 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/e0983f1c/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
index 4b46f8c..9caad44 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
@@ -16,22 +16,19 @@
  */
 package org.apache.wicket.ajax;
 
-import java.util.Collection;
 import java.util.Map;
 
 import org.apache.wicket.Component;
-import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.Page;
 import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
-import org.apache.wicket.core.request.handler.IPageRequestHandler;
-import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.request.ILoggableRequestHandler;
 
 /**
  *
  * @since 6.0
  */
-public interface AjaxRequestTarget extends IPageRequestHandler, ILoggableRequestHandler
+public interface AjaxRequestTarget extends IPartialPageRequestHandler, ILoggableRequestHandler
 {
 	/**
 	 * An {@link AjaxRequestTarget} listener that can be used to respond to various target-related
@@ -135,43 +132,6 @@ public interface AjaxRequestTarget extends IPageRequestHandler, ILoggableRequest
 		void onTargetRespond(AjaxRequestTarget target);
 	}
 
-
-	/**
-	 * Adds a component to the list of components to be rendered
-	 *
-	 * @param markupId
-	 *            id of client-side dom element that will be updated
-	 * @param component
-	 *            component to be rendered
-	 * @throws IllegalArgumentException
-	 *             if the component is a {@link org.apache.wicket.Page} or an {@link org.apache.wicket.markup.repeater.AbstractRepeater}
-	 * @throws IllegalStateException
-	 *             if the components are currently being rendered, or have already been rendered
-	 */
-	void add(final Component component, final String markupId);
-
-	/**
-	 * Adds components to the list of components to be rendered.
-	 *
-	 * @param components
-	 *            components to be rendered
-	 */
-	void add(Component... components);
-
-
-	/**
-	 * Visits all children of the specified parent container and adds them to the target if they are
-	 * of same type as <code>childCriteria</code>
-	 *
-	 * @param parent
-	 *            Must not be null.
-	 * @param childCriteria
-	 *            Must not be null. If you want to traverse all components use ` Component.class as
-	 *            the value for this argument.
-	 */
-	void addChildren(MarkupContainer parent, Class<?> childCriteria);
-
-
 	/**
 	 * Adds a listener to this target
 	 *
@@ -183,36 +143,6 @@ public interface AjaxRequestTarget extends IPageRequestHandler, ILoggableRequest
 	void addListener(AjaxRequestTarget.IListener listener);
 
 	/**
-	 * Adds javascript that will be evaluated on the client side after components are replaced
-	 *
-	 * <p>If the javascript needs to do something asynchronously (i.e. needs to use window.setTimeout(), for example
-	 * to do animations) then the following special syntax may be used: <code>someFunctionName|myJsLogic(someFunctionName);</code>.
-	 * Wicket will transform it to: <code>function(someFunctionName){myJsLogic(someFunctionName);}</code> and your code
-	 * is responsible to execute <em>someFunctionName()</em> when the asynchronous task is finished. Once <em>someFunctionName</em>
-	 * is executed the next appended script will be executed. <strong>Important</strong>: it is highly recommended to
-	 * execute your code in try/finally to make sure <em>someFunctionName</em> is executed even an error happens in
-	 * your code, otherwise all following scripts wont be executed.</p>
-	 *
-	 * @param javascript
-	 */
-	void appendJavaScript(CharSequence javascript);
-
-	/**
-	 * Adds javascript that will be evaluated on the client side before components are replaced.
-	 *
-	 * <p>If the javascript needs to do something asynchronously (i.e. needs to use window.setTimeout(), for example
-	 * to do animations) then the following special syntax may be used: <code>someFunctionName|myJsLogic(someFunctionName);</code>.
-	 * Wicket will transform it to: <code>function(someFunctionName){myJsLogic(someFunctionName);}</code> and your code
-	 * is responsible to execute <em>someFunctionName()</em> when the asynchronous task is finished. Once <em>someFunctionName</em>
-	 * is executed the next prepended script will be executed. <strong>Important</strong>: it is highly recommended to
-	 * execute your code in try/finally to make sure <em>someFunctionName</em> is executed even an error happens in
-	 * your code, otherwise all following scripts and component replacements wont be made.</p>
-	 *
-	 * @param javascript
-	 */
-	void prependJavaScript(CharSequence javascript);
-
-	/**
 	 * Register the given respond listener. The listener's
 	 * {@link org.apache.wicket.ajax.AjaxRequestTarget.ITargetRespondListener#onTargetRespond} method will be invoked when
 	 * the {@link AjaxRequestTarget} starts to respond.
@@ -222,41 +152,6 @@ public interface AjaxRequestTarget extends IPageRequestHandler, ILoggableRequest
 	void registerRespondListener(ITargetRespondListener listener);
 
 	/**
-	 * Returns an unmodifiable collection of all components added to this target
-	 *
-	 * @return unmodifiable collection of all components added to this target
-	 */
-	Collection<? extends Component> getComponents();
-
-	/**
-	 * Sets the focus in the browser to the given component. The markup id must be set. If the
-	 * component is null the focus will not be set to any component.
-	 *
-	 * @param component
-	 *            The component to get the focus or null.
-	 */
-	void focusComponent(Component component);
-
-	/**
-	 * Returns the header response associated with current AjaxRequestTarget.
-	 *
-	 * Beware that only renderOnDomReadyJavaScript and renderOnLoadJavaScript can be called outside
-	 * the renderHeader(IHeaderResponse response) method. Calls to other render** methods will
-	 * result in the call failing with a debug-level log statement to help you see why it failed.
-	 *
-	 * @return header response
-	 */
-	IHeaderResponse getHeaderResponse();
-
-	/**
-	 * Returns the HTML id of the last focused element.
-	 *
-	 * @return markup id of last focused element, <code>null</code> if none
-	 */
-	String getLastFocusedElementId();
-
-
-	/**
 	 * Returns the page. Be aware that the page can be instantiated if this wasn't the case already.
 	 *
 	 * @return page instance

http://git-wip-us.apache.org/repos/asf/wicket/blob/e0983f1c/wicket-core/src/main/java/org/apache/wicket/core/request/handler/IPartialPageRequestHandler.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/IPartialPageRequestHandler.java b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/IPartialPageRequestHandler.java
new file mode 100644
index 0000000..806028f
--- /dev/null
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/IPartialPageRequestHandler.java
@@ -0,0 +1,129 @@
+/*
+ * 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.core.request.handler;
+
+import java.util.Collection;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.markup.head.IHeaderResponse;
+
+/**
+ * Request handler that allows partial updates of the current page instance.
+ */
+public interface IPartialPageRequestHandler extends IPageRequestHandler
+{
+
+	/**
+	 * Adds a component to the list of components to be rendered
+	 *
+	 * @param markupId
+	 *            id of client-side dom element that will be updated
+	 * @param component
+	 *            component to be rendered
+	 * @throws IllegalArgumentException
+	 *             if the component is a {@link org.apache.wicket.Page} or an {@link org.apache.wicket.markup.repeater.AbstractRepeater}
+	 * @throws IllegalStateException
+	 *             if the components are currently being rendered, or have already been rendered
+	 */
+	void add(final Component component, final String markupId);
+
+	/**
+	 * Adds components to the list of components to be rendered.
+	 *
+	 * @param components
+	 *            components to be rendered
+	 */
+	void add(Component... components);
+
+
+	/**
+	 * Visits all children of the specified parent container and adds them to the target if they are
+	 * of same type as <code>childCriteria</code>
+	 *
+	 * @param parent
+	 *            Must not be null.
+	 * @param childCriteria
+	 *            Must not be null. If you want to traverse all components use ` Component.class as
+	 *            the value for this argument.
+	 */
+	void addChildren(MarkupContainer parent, Class<?> childCriteria);
+
+	/**
+	 * Adds javascript that will be evaluated on the client side after components are replaced
+	 *
+	 * <p>If the javascript needs to do something asynchronously (i.e. needs to use window.setTimeout(), for example
+	 * to do animations) then the following special syntax may be used: <code>someFunctionName|myJsLogic(someFunctionName);</code>.
+	 * Wicket will transform it to: <code>function(someFunctionName){myJsLogic(someFunctionName);}</code> and your code
+	 * is responsible to execute <em>someFunctionName()</em> when the asynchronous task is finished. Once <em>someFunctionName</em>
+	 * is executed the next appended script will be executed. <strong>Important</strong>: it is highly recommended to
+	 * execute your code in try/finally to make sure <em>someFunctionName</em> is executed even an error happens in
+	 * your code, otherwise all following scripts wont be executed.</p>
+	 *
+	 * @param javascript
+	 */
+	void appendJavaScript(CharSequence javascript);
+
+	/**
+	 * Adds javascript that will be evaluated on the client side before components are replaced.
+	 *
+	 * <p>If the javascript needs to do something asynchronously (i.e. needs to use window.setTimeout(), for example
+	 * to do animations) then the following special syntax may be used: <code>someFunctionName|myJsLogic(someFunctionName);</code>.
+	 * Wicket will transform it to: <code>function(someFunctionName){myJsLogic(someFunctionName);}</code> and your code
+	 * is responsible to execute <em>someFunctionName()</em> when the asynchronous task is finished. Once <em>someFunctionName</em>
+	 * is executed the next prepended script will be executed. <strong>Important</strong>: it is highly recommended to
+	 * execute your code in try/finally to make sure <em>someFunctionName</em> is executed even an error happens in
+	 * your code, otherwise all following scripts and component replacements wont be made.</p>
+	 *
+	 * @param javascript
+	 */
+	void prependJavaScript(CharSequence javascript);
+
+	/**
+	 * Sets the focus in the browser to the given component. The markup id must be set. If the
+	 * component is null the focus will not be set to any component.
+	 *
+	 * @param component
+	 *            The component to get the focus or null.
+	 */
+	void focusComponent(Component component);
+
+	/**
+	 * Returns the HTML id of the last focused element.
+	 *
+	 * @return markup id of last focused element, <code>null</code> if none
+	 */
+	String getLastFocusedElementId();
+
+	/**
+	 * Returns an unmodifiable collection of all components added to this target
+	 *
+	 * @return unmodifiable collection of all components added to this target
+	 */
+	Collection<? extends Component> getComponents();
+
+	/**
+	 * Returns the header response associated with current handler.
+	 *
+	 * Beware that only renderOnDomReadyJavaScript and renderOnLoadJavaScript can be called outside
+	 * the renderHeader(IHeaderResponse response) method. Calls to other render** methods will
+	 * result in the call failing with a debug-level log statement to help you see why it failed.
+	 *
+	 * @return header response
+	 */
+	IHeaderResponse getHeaderResponse();
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/e0983f1c/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/IWebSocketRequestHandler.java
----------------------------------------------------------------------
diff --git a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/IWebSocketRequestHandler.java b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/IWebSocketRequestHandler.java
index ba8ec9e..8d49155 100644
--- a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/IWebSocketRequestHandler.java
+++ b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/IWebSocketRequestHandler.java
@@ -16,12 +16,15 @@
  */
 package org.apache.wicket.protocol.ws.api;
 
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
+import org.apache.wicket.request.ILoggableRequestHandler;
+
 /**
  * An interface for outbound communication with web socket clients
  *
  * @since 6.0
  */
-public interface IWebSocketRequestHandler
+public interface IWebSocketRequestHandler extends IPartialPageRequestHandler, ILoggableRequestHandler
 {
 	/**
 	 * Pushes a text message to the client.

http://git-wip-us.apache.org/repos/asf/wicket/blob/e0983f1c/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketRequestHandler.java
----------------------------------------------------------------------
diff --git a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketRequestHandler.java b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketRequestHandler.java
index 1363866..2a14374 100644
--- a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketRequestHandler.java
+++ b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketRequestHandler.java
@@ -24,7 +24,6 @@ import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.Page;
 import org.apache.wicket.ajax.AbstractAjaxResponse;
-import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.XmlAjaxResponse;
 import org.apache.wicket.core.request.handler.logger.PageLogData;
 import org.apache.wicket.markup.head.IHeaderResponse;
@@ -47,7 +46,7 @@ import org.slf4j.LoggerFactory;
  *
  * @since 6.0
  */
-public class WebSocketRequestHandler implements AjaxRequestTarget, IWebSocketRequestHandler
+public class WebSocketRequestHandler implements IWebSocketRequestHandler
 {
 	private static final Logger LOG = LoggerFactory.getLogger(WebSocketRequestHandler.class);
 
@@ -165,11 +164,6 @@ public class WebSocketRequestHandler implements AjaxRequestTarget, IWebSocketReq
 	}
 
 	@Override
-	public void addListener(IListener listener)
-	{
-	}
-
-	@Override
 	public void appendJavaScript(CharSequence javascript)
 	{
 		hasData.set(true);
@@ -184,11 +178,6 @@ public class WebSocketRequestHandler implements AjaxRequestTarget, IWebSocketReq
 	}
 
 	@Override
-	public void registerRespondListener(ITargetRespondListener listener)
-	{
-	}
-
-	@Override
 	public Collection<? extends Component> getComponents()
 	{
 		return ajaxResponse.getComponents();