You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pluto-scm@portals.apache.org by ms...@apache.org on 2016/04/14 14:28:59 UTC
[19/50] [abbrv] portals-pluto git commit: Added methods for
asynchronous processing on ResourceRequest. Added async configuration items
on @PortletConfiguration and @ServeResourceMethod annotations. Added
async-supported item to portlet deployment descri
Added methods for asynchronous processing on ResourceRequest. Added async
configuration items on @PortletConfiguration and @ServeResourceMethod
annotations. Added async-supported item to portlet deployment descriptor
XSD. Added method stubs on ResourceRequestImpl.
Project: http://git-wip-us.apache.org/repos/asf/portals-pluto/repo
Commit: http://git-wip-us.apache.org/repos/asf/portals-pluto/commit/e14ab860
Tree: http://git-wip-us.apache.org/repos/asf/portals-pluto/tree/e14ab860
Diff: http://git-wip-us.apache.org/repos/asf/portals-pluto/diff/e14ab860
Branch: refs/heads/master
Commit: e14ab8607cb720e10152c1354b3b51345aa9aec6
Parents: c19723e
Author: Scott Nicklous <ms...@apache.org>
Authored: Fri Mar 11 14:55:08 2016 +0100
Committer: Scott Nicklous <ms...@apache.org>
Committed: Fri Mar 11 14:55:08 2016 +0100
----------------------------------------------------------------------
.../container/impl/ResourceRequestImpl.java | 33 +++
.../pluto/container/impl/portlet-app_3_0.xsd | 16 +-
.../fixtures/mocks/MockResourceRequest.java | 33 +++
.../java/javax/portlet/ResourceRequest.java | 204 +++++++++++++++++++
.../annotations/PortletConfiguration.java | 11 +
.../annotations/ServeResourceMethod.java | 11 +
.../javax/portlet/filter/ResourceFilter.java | 26 ++-
.../portlet/filter/ResourceRequestWrapper.java | 33 +++
portlet-api/src/main/javadoc/overview.html | 16 ++
portlet-api/src/main/javadoc/portlet-api.css | 1 +
10 files changed, 380 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/e14ab860/pluto-container/src/main/java/org/apache/pluto/container/impl/ResourceRequestImpl.java
----------------------------------------------------------------------
diff --git a/pluto-container/src/main/java/org/apache/pluto/container/impl/ResourceRequestImpl.java b/pluto-container/src/main/java/org/apache/pluto/container/impl/ResourceRequestImpl.java
index e09ce3a..96aa81e 100644
--- a/pluto-container/src/main/java/org/apache/pluto/container/impl/ResourceRequestImpl.java
+++ b/pluto-container/src/main/java/org/apache/pluto/container/impl/ResourceRequestImpl.java
@@ -23,6 +23,9 @@ import javax.portlet.CacheControl;
import javax.portlet.PortletRequest;
import javax.portlet.ResourceParameters;
import javax.portlet.ResourceRequest;
+import javax.portlet.ResourceResponse;
+import javax.servlet.AsyncContext;
+import javax.servlet.DispatcherType;
import org.apache.pluto.container.PortletResourceRequestContext;
import org.apache.pluto.container.PortletResourceResponseContext;
@@ -107,4 +110,34 @@ public class ResourceRequestImpl extends ClientDataRequestImpl implements Resour
public ResourceParameters getResourceParameters() {
return requestContext.getResourceParameters();
}
+
+ @Override
+ public AsyncContext startAsync() throws IllegalStateException {
+ return null;
+ }
+
+ @Override
+ public AsyncContext startAsync(ResourceRequest request, ResourceResponse response) throws IllegalStateException {
+ return null;
+ }
+
+ @Override
+ public boolean isAsyncStarted() {
+ return false;
+ }
+
+ @Override
+ public boolean isAsyncSupported() {
+ return false;
+ }
+
+ @Override
+ public AsyncContext getAsyncContext() {
+ return null;
+ }
+
+ @Override
+ public DispatcherType getDispatcherType() {
+ return null;
+ }
}
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/e14ab860/pluto-container/src/main/resources/org/apache/pluto/container/impl/portlet-app_3_0.xsd
----------------------------------------------------------------------
diff --git a/pluto-container/src/main/resources/org/apache/pluto/container/impl/portlet-app_3_0.xsd b/pluto-container/src/main/resources/org/apache/pluto/container/impl/portlet-app_3_0.xsd
index fc0f672..8d97be1 100644
--- a/pluto-container/src/main/resources/org/apache/pluto/container/impl/portlet-app_3_0.xsd
+++ b/pluto-container/src/main/resources/org/apache/pluto/container/impl/portlet-app_3_0.xsd
@@ -142,7 +142,8 @@
<element name="default-namespace" type="xs:anyURI" minOccurs="0"/>
<element name="event-definition" type="portlet:event-definitionType" minOccurs="0" maxOccurs="unbounded"/>
<element name="public-render-parameter" type="portlet:public-render-parameterType" minOccurs="0" maxOccurs="unbounded"/>
- <element name="listener" type="portlet:listenerType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="listener" type="portlet:listenerType" minOccurs="0" maxOccurs="unbounded"/>
+
<element name="container-runtime-option" type="portlet:container-runtime-optionType" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="version" type="portlet:string" use="required"/>
@@ -305,7 +306,15 @@
<element name="supported-publishing-event" type="portlet:event-definition-referenceType" minOccurs="0" maxOccurs="unbounded"/>
<element name="supported-public-render-parameter" type="portlet:string" minOccurs="0" maxOccurs="unbounded"/>
<element name="container-runtime-option" type="portlet:container-runtime-optionType" minOccurs="0" maxOccurs="unbounded"/>
- <element name="dependency" type="portlet:dependencyType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="dependency" type="portlet:dependencyType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="async-supported" type="boolean" minOccurs="0" maxOccurs="1">
+ <annotation>
+ <documentation>
+ If set to 'true', the portlet will support
+ asynchronous processing in resource requests.
+ </documentation>
+ </annotation>
+ </element>
</sequence>
<attribute name="id" type="portlet:string" use="optional"/>
</complexType>
@@ -425,7 +434,8 @@
<element name="name" type="xs:NCName"/>
</choice>
<attribute name="id" type="portlet:string" use="optional"/>
- </complexType>
+ </complexType>
+
<complexType name="listenerType">
<annotation>
<documentation>
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/e14ab860/pluto-container/src/test/java/org/apache/pluto/container/bean/processor/fixtures/mocks/MockResourceRequest.java
----------------------------------------------------------------------
diff --git a/pluto-container/src/test/java/org/apache/pluto/container/bean/processor/fixtures/mocks/MockResourceRequest.java b/pluto-container/src/test/java/org/apache/pluto/container/bean/processor/fixtures/mocks/MockResourceRequest.java
index 6a36ed5..2b4d1a2 100644
--- a/pluto-container/src/test/java/org/apache/pluto/container/bean/processor/fixtures/mocks/MockResourceRequest.java
+++ b/pluto-container/src/test/java/org/apache/pluto/container/bean/processor/fixtures/mocks/MockResourceRequest.java
@@ -23,6 +23,9 @@ import java.util.Map;
import javax.portlet.ResourceParameters;
import javax.portlet.ResourceRequest;
+import javax.portlet.ResourceResponse;
+import javax.servlet.AsyncContext;
+import javax.servlet.DispatcherType;
/**
* @author Scott Nicklous
@@ -86,4 +89,34 @@ public class MockResourceRequest extends MockClientDataRequest implements Resour
return null;
}
+ @Override
+ public AsyncContext startAsync() throws IllegalStateException {
+ return null;
+ }
+
+ @Override
+ public AsyncContext startAsync(ResourceRequest request, ResourceResponse response) throws IllegalStateException {
+ return null;
+ }
+
+ @Override
+ public boolean isAsyncStarted() {
+ return false;
+ }
+
+ @Override
+ public boolean isAsyncSupported() {
+ return false;
+ }
+
+ @Override
+ public AsyncContext getAsyncContext() {
+ return null;
+ }
+
+ @Override
+ public DispatcherType getDispatcherType() {
+ return null;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/e14ab860/portlet-api/src/main/java/javax/portlet/ResourceRequest.java
----------------------------------------------------------------------
diff --git a/portlet-api/src/main/java/javax/portlet/ResourceRequest.java b/portlet-api/src/main/java/javax/portlet/ResourceRequest.java
index 7863897..24177a8 100644
--- a/portlet-api/src/main/java/javax/portlet/ResourceRequest.java
+++ b/portlet-api/src/main/java/javax/portlet/ResourceRequest.java
@@ -24,6 +24,9 @@
package javax.portlet;
+import javax.servlet.AsyncContext;
+import javax.servlet.DispatcherType;
+
/**
* <span class="changed_modified_3_0">The</span>
* <code>ResourceRequest</code> interface represents the request
@@ -234,4 +237,205 @@ public interface ResourceRequest extends ClientDataRequest {
public WindowState getWindowState ();
+
+ /**
+ * <div class="changed_added_3_0">
+ * Puts this request into asynchronous mode and initializes the <code>AsyncContext</code>
+ * object.
+ * <p>
+ * Calling this method will cause committal of the associated response to be delayed until
+ * <code>AsyncContext#complete</code> is called on the returned <code>AsyncContext</code>,
+ * or the asynchronous operation has timed out.
+ * <p>
+ * This method clears the list of <code>AsyncListener</code> instances (if any) that were
+ * registered with the <code>AsyncContext</code> returned by the previous call to one of the
+ * <code>startAsync</code> methods, after calling each <code>AsyncListener</code> at
+ * its <code>onStartAsync</code> method.
+ * <p>
+ * Subsequent invocations of this method, or its overloaded variant, will return
+ * the same <code>AsyncContext</code> instance, reinitialized as appropriate.
+ * <p>
+ * The <code>AsyncContext</code> object can be used as described by the servlet
+ * specification. The <code>ServletRequest</code> and <code>ServletResponse</code>
+ * objects obtained from the <code>AsyncContext</code> will provide functionality
+ * appropriate for the portlet environment.
+ * <p>
+ * The original <code>ResourceRequest</code> and <code>ResourceResponse</code> objects
+ * will be made available as request attributes on the code>ServletRequest</code> object
+ * obtained from the <code>AsyncContext</code> under the names
+ * <code>javax.portlet.request</code>
+ * and <code>javax.portlet.response</code>, respectively.
+ * The <code>PortletConfig</code> object will be made available on the
+ * <code>ServletRequest</code> under the name
+ * <code>javax.portlet.config</code>.
+ * <p>
+ * The <code>AsyncContext#dispatch()</code> method will cause the portlet resource
+ * method to be invoked with the <code>ResourceRequest</code> and <code>ResourceResponse</code>
+ * objects available as attributes on the <code>ServletRequest</code> object obtained from
+ * the <code>AsyncContext</code>.
+ * In this case, the <code>ResourceRequest#isAsyncStarted()</code> method will return
+ * <code>false</code> and the <code>ResourceRequest#getDispatcherType()</code> method
+ * will return <code>DispatcherType#ASYNC</code>.
+ * <p>
+ * A portlet <code>ResourceFilter</code> that allocates resources and attaches them to the
+ * <code>ResourceRequest</code> or that wraps the <code>ResourceRequest</code> or
+ * <code>ResourceResponse</code> should not release resources in the outbound direction
+ * if asynchronous mode has been started.
+ * A portlet <code>ResourceFilter</code> can use the values provided by the
+ * <code>ResourceRequest#isAsyncStarted()</code> and the
+ * <code>ResourceRequest#getDispatcherType()</code> methods to determine when to
+ * allocate and release resources.
+ * </div>
+ *
+ * @return the (re)initialized AsyncContext
+ * @since 3.0
+ * @see javax.servlet.ServletRequest#startAsync()
+ * @see javax.servlet.AsyncContext
+ * @see #isAsyncStarted()
+ * @see #getDispatcherType()
+ * @see javax.portlet.filter.ResourceFilter
+ */
+
+ public AsyncContext startAsync() throws IllegalStateException;
+
+
+ /**
+ * <div class="changed_added_3_0">
+ * Puts this request into asynchronous mode and initializes the <code>AsyncContext</code>
+ * object.
+ * <p>
+ * Calling this method will cause committal of the associated response to be delayed until
+ * <code>AsyncContext#complete</code> is called on the returned <code>AsyncContext</code>,
+ * or the asynchronous operation has timed out.
+ * <p>
+ * This method clears the list of <code>AsyncListener</code> instances (if any) that were
+ * registered with the <code>AsyncContext</code> returned by the previous call to one of the
+ * <code>startAsync</code> methods, after calling each <code>AsyncListener</code> at
+ * its <code>onStartAsync</code> method.
+ * <p>
+ * The <code>AsyncContext</code> object can be used as described by the servlet
+ * specification. The <code>ServletRequest</code> and <code>ServletResponse</code>
+ * objects obtained from the <code>AsyncContext</code> will provide functionality
+ * appropriate for the portlet environment.
+ * <p>
+ * The <code>ResourceRequest</code> and <code>ResourceResponse</code> objects
+ * passed as arguments to this method
+ * will be made available as request attributes on the code>ServletRequest</code> object
+ * obtained from the <code>AsyncContext</code> under the names
+ * <code>javax.portlet.request</code>
+ * and <code>javax.portlet.response</code>, respectively.
+ * The <code>PortletConfig</code> object will be made available on the
+ * <code>ServletRequest</code> under the name
+ * <code>javax.portlet.config</code>.
+ * <p>
+ * Subsequent invocations of this method, or its zero-argument variant, will return
+ * the same <code>AsyncContext</code> instance, reinitialized as appropriate.
+ * If a call to this method is followed by a call to its zero-argument variant,
+ * the specified (and possibly wrapped) <code>ResourceRequest</code> and
+ * <code>ResourceResponse</code> objects will remain available
+ * as request attributes on the <code>ServletRequest</code> object
+ * obtained from the <code>AsyncContext</code>.
+ * <p>
+ * The <code>AsyncContext#dispatch()</code> method will cause the portlet resource
+ * method to be invoked with the <code>ResourceRequest</code> and <code>ResourceResponse</code>
+ * objects available as attributes on the <code>ServletRequest</code> object obtained from
+ * the <code>AsyncContext</code>.
+ * In this case, the <code>ResourceRequest#isAsyncStarted()</code> method will return
+ * <code>false</code> and the <code>ResourceRequest#getDispatcherType()</code> method
+ * will return <code>DispatcherType#ASYNC</code>.
+ * <p>
+ * A portlet <code>ResourceFilter</code> that allocates resources and attaches them to the
+ * <code>ResourceRequest</code> or that wraps the <code>ResourceRequest</code> or
+ * <code>ResourceResponse</code> should not release resources in the outbound direction
+ * if asynchronous mode has been started.
+ * A portlet <code>ResourceFilter</code> can use the values provided by the
+ * <code>ResourceRequest#isAsyncStarted()</code> and the
+ * <code>ResourceRequest#getDispatcherType()</code> methods to determine when to
+ * allocate and release resources.
+ * </div>
+ *
+ * @return the (re)initialized AsyncContext
+ * @since 3.0
+ * @see javax.servlet.ServletRequest#startAsync()
+ * @see javax.servlet.AsyncContext
+ * @see #isAsyncStarted()
+ * @see #getDispatcherType()
+ * @see javax.portlet.filter.ResourceFilter
+ */
+
+ public AsyncContext startAsync(ResourceRequest request, ResourceResponse response) throws IllegalStateException;
+
+
+ /**
+ * <div class="changed_added_3_0">
+ * Checks if this request has been put into asynchronous mode.
+ * <p>
+ * A <code>ResourceRequest</code> is put into asynchronous mode by calling
+ * <code>startAsync()</code> or <code>startAsync(ResourceRequest,ResourceResponse)</code>
+ * on it.
+ * <p>
+ * This method returns <code>false</code> if this request was put into asynchronous mode,
+ * but has since been dispatched using one of the <code>AsyncContext#dispatch</code>
+ * methods or released from asynchronous mode via a call to <code>AsyncContext#complete</code>.
+ * </div>
+ *
+ * @return <code>true</code> if asynchronous mode has been started
+ * @since 3.0
+ * @see #startAsync()
+ * @see #startAsync(ResourceRequest, ResourceResponse)
+ */
+
+ public boolean isAsyncStarted();
+
+
+ /**
+ * <div class="changed_added_3_0">
+ * Checks if this request supports asynchronous operation.
+ * <p>
+ * Asynchronous operation is disabled for this request if this request is within
+ * the scope of a filter or servlet that has not been annotated or flagged in
+ * the portlet configuration as being able to support asynchronous handling.
+ * </div>
+ *
+ * @return <code>true</code> if this request supports asynchronous operation
+ * @since 3.0
+ */
+
+ public boolean isAsyncSupported();
+
+
+ /**
+ * <div class="changed_added_3_0">
+ * Gets the <code>AsyncContext</code> that was created or reinitialized by the most
+ * recent invocation of <code>startAsync()</code> or
+ * <code>startAsync(ResourceRequest,ResourceResponse)</code> on this request.
+ * </div>
+ *
+ * @return the <code>AsyncContext</code> (re)initialized by the most recent <code>startAsync</code> method invocation
+ * @since 3.0
+ * @see javax.servlet.ServletRequest#startAsync()
+ * @see javax.servlet.AsyncContext
+ */
+
+ public AsyncContext getAsyncContext();
+
+
+ /**
+ * <div class="changed_added_3_0">
+ * Gets the dispatcher type of this request.
+ * <p>
+ * The initial dispatcher type of a request is defined as <code>DispatcherType.REQUEST</code>.
+ * The dispatcher type of a request dispatched via a <code>RequestDispatcher</code>
+ * is given as <code>DispatcherType.FORWARD</code> or <code>DispatcherType.INCLUDE</code>,
+ * while the dispatcher type of an asynchronous request dispatched via one of the
+ * <code>AsyncContext#dispatch</code> methods is given as <code>DispatcherType.ASYNC</code>.
+ * </div>
+ *
+ * @return the dispatcher type of this request
+ * @since 3.0
+ * @see javax.servlet.DispatcherType
+ */
+
+ public DispatcherType getDispatcherType();
+
}
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/e14ab860/portlet-api/src/main/java/javax/portlet/annotations/PortletConfiguration.java
----------------------------------------------------------------------
diff --git a/portlet-api/src/main/java/javax/portlet/annotations/PortletConfiguration.java b/portlet-api/src/main/java/javax/portlet/annotations/PortletConfiguration.java
index 7508094..140993f 100644
--- a/portlet-api/src/main/java/javax/portlet/annotations/PortletConfiguration.java
+++ b/portlet-api/src/main/java/javax/portlet/annotations/PortletConfiguration.java
@@ -223,4 +223,15 @@ public @interface PortletConfiguration {
* @return The security role references
*/
SecurityRoleRef[] roleRefs() default {};
+
+ /**
+ * Declares whether the portlet supports asynchronous operation mode.
+ * <p>
+ * If this flag is set, any resource method used by this portlet will
+ * be marked as supporting asynchronous operation.
+ * Asynchronous support applies to resource methods only.
+ *
+ * @return <code>true</code> if the method supports asynchronous mode.
+ */
+ boolean asyncSupported() default false;
}
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/e14ab860/portlet-api/src/main/java/javax/portlet/annotations/ServeResourceMethod.java
----------------------------------------------------------------------
diff --git a/portlet-api/src/main/java/javax/portlet/annotations/ServeResourceMethod.java b/portlet-api/src/main/java/javax/portlet/annotations/ServeResourceMethod.java
index af64501..4a05b2c 100644
--- a/portlet-api/src/main/java/javax/portlet/annotations/ServeResourceMethod.java
+++ b/portlet-api/src/main/java/javax/portlet/annotations/ServeResourceMethod.java
@@ -154,4 +154,15 @@ public @interface ServeResourceMethod {
* @return The ordinal number
*/
int ordinal() default 0;
+
+ /**
+ * Declares whether the serve resource method supports asynchronous operation mode.
+ * <p>
+ * If this flag is set, any portlet to which this annotated method applies will
+ * be marked as supporting asynchronous operation.
+ * Asynchronous support applies to resource methods only.
+ *
+ * @return <code>true</code> if the method supports asynchronous mode.
+ */
+ boolean asyncSupported() default false;
}
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/e14ab860/portlet-api/src/main/java/javax/portlet/filter/ResourceFilter.java
----------------------------------------------------------------------
diff --git a/portlet-api/src/main/java/javax/portlet/filter/ResourceFilter.java b/portlet-api/src/main/java/javax/portlet/filter/ResourceFilter.java
index 96babc3..94ae61d 100644
--- a/portlet-api/src/main/java/javax/portlet/filter/ResourceFilter.java
+++ b/portlet-api/src/main/java/javax/portlet/filter/ResourceFilter.java
@@ -31,7 +31,8 @@ import javax.portlet.ResourceResponse;
import javax.portlet.PortletException;
/**
- * The <code>ResourceFilter</code> is an object that performs filtering
+ * <span class="changed_modified_3_0">The</span>
+ * <code>ResourceFilter</code> is an object that performs filtering
* tasks on either the resource request to a portlet, or on the resource response from
* a portlet, or both.
* <p>
@@ -42,6 +43,29 @@ import javax.portlet.PortletException;
* <p>
* Filters are configured in the portlet deployment descriptor of a
* portlet application.
+ * <p>
+ * <div class="changed_added_3_0">
+ * <strong>Asynchronous Processing Considerations</strong>
+ * <p>
+ * If the <code>ResourceFilter</code> is to support asynchronous mode, care must be taken
+ * regarding resource allocation and release.
+ * Any resources attached to the <code>ResourceRequest</code> during the inbound portion
+ * of the <code>doFilter</code> invocation
+ * and needed during asynchronous processing should not be released during outbound processing
+ * if asynchronous mode has been started.
+ * <p>
+ * If resources must be allocated in this way during inbound processing, the portlet should
+ * use the <code>AsyncContext#dispatch()</code> method at the end of asynchronous processing
+ * in order to cause the portlet resource method to be invoked again with the same
+ * <code>ResourceRequest</code> and <code>ResourceResponse</code> objects.
+ * The resources can be released during asynchronous dispatch outbound processing.
+ * <p>
+ * The <code>ResourceRequest#isAsyncStarted()</code> method will return <code>true</code>
+ * if the portlet is currently in asynchronous mode.
+ * The <code>ResourceRequest#igetDispatcherType()</code> method will return
+ * <code>DispatcherType#REQUEST</code> during initial request processing and
+ * <code>DipatcherType#ASYNC</code> during processing resulting from an asynchronous dispatch.
+ * </div>
*
* @since 2.0
*/
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/e14ab860/portlet-api/src/main/java/javax/portlet/filter/ResourceRequestWrapper.java
----------------------------------------------------------------------
diff --git a/portlet-api/src/main/java/javax/portlet/filter/ResourceRequestWrapper.java b/portlet-api/src/main/java/javax/portlet/filter/ResourceRequestWrapper.java
index 5ce2388..406a8c7 100644
--- a/portlet-api/src/main/java/javax/portlet/filter/ResourceRequestWrapper.java
+++ b/portlet-api/src/main/java/javax/portlet/filter/ResourceRequestWrapper.java
@@ -28,6 +28,9 @@ import java.util.Map;
import javax.portlet.ResourceParameters;
import javax.portlet.ResourceRequest;
+import javax.portlet.ResourceResponse;
+import javax.servlet.AsyncContext;
+import javax.servlet.DispatcherType;
/**
* <span class="changed_modified_3_0">The</span>
@@ -115,4 +118,34 @@ public class ResourceRequestWrapper extends ClientDataRequestWrapper implements
return ((ResourceRequest)wrapped).getResourceParameters();
}
+ @Override
+ public AsyncContext startAsync() throws IllegalStateException {
+ return ((ResourceRequest)wrapped).startAsync();
+ }
+
+ @Override
+ public AsyncContext startAsync(ResourceRequest request, ResourceResponse response) throws IllegalStateException {
+ return ((ResourceRequest)wrapped).startAsync(request, response);
+ }
+
+ @Override
+ public boolean isAsyncStarted() {
+ return ((ResourceRequest)wrapped).isAsyncStarted();
+ }
+
+ @Override
+ public boolean isAsyncSupported() {
+ return ((ResourceRequest)wrapped).isAsyncSupported();
+ }
+
+ @Override
+ public AsyncContext getAsyncContext() {
+ return ((ResourceRequest)wrapped).getAsyncContext();
+ }
+
+ @Override
+ public DispatcherType getDispatcherType() {
+ return ((ResourceRequest)wrapped).getDispatcherType();
+ }
+
}
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/e14ab860/portlet-api/src/main/javadoc/overview.html
----------------------------------------------------------------------
diff --git a/portlet-api/src/main/javadoc/overview.html b/portlet-api/src/main/javadoc/overview.html
index 4c1eaf7..ade4007 100644
--- a/portlet-api/src/main/javadoc/overview.html
+++ b/portlet-api/src/main/javadoc/overview.html
@@ -21,6 +21,22 @@
<div class="indexContainer-not">
<ul>
<li>
+ 20160316:
+ Added new methods, configuration elements, and documentation to implement
+ <a href="https://java.net/jira/browse/PORTLETSPEC3-68">PORTLETSPEC3-68 Add Async Support</a>:
+ {@link javax.portlet.annotations.PortletConfiguration#asyncSupported() PortletConfiguration#asyncSupported()},
+ {@link javax.portlet.annotations.ServeResourceMethod#asyncSupported() ServeResourceMethod#asyncSupported()},
+ {@link javax.portlet.ResourceRequest#startAsync() ResourceRequest#startAsync()},
+ {@link javax.portlet.ResourceRequest#startAsync(ResourceRequest, ResourceResponse) ResourceRequest#startAsync(ResourceRequest, ResourceResponse)},
+ {@link javax.portlet.ResourceRequest#isAsyncStarted() ResourceRequest#isAsyncStarted()},
+ {@link javax.portlet.ResourceRequest#isAsyncSupported() ResourceRequest#isAsyncSupported()},
+ {@link javax.portlet.ResourceRequest#getAsyncContext() ResourceRequest#getAsyncContext()}, and
+ {@link javax.portlet.ResourceRequest#getDispatcherType() ResourceRequest#getDispatcherType()}.
+ Added appropriate documentation to
+ {@link javax.portlet.filter.ResourceFilter ResourceFilter}.
+ Updated affected wrapper classes accordingly.
+ </li>
+ <li>
20160315:
Added new methods to implement
<a href="https://java.net/jira/browse/PORTLETSPEC3-63">PORTLETSPEC3-63</a>
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/e14ab860/portlet-api/src/main/javadoc/portlet-api.css
----------------------------------------------------------------------
diff --git a/portlet-api/src/main/javadoc/portlet-api.css b/portlet-api/src/main/javadoc/portlet-api.css
index 3a84aa1..14cc9ea 100644
--- a/portlet-api/src/main/javadoc/portlet-api.css
+++ b/portlet-api/src/main/javadoc/portlet-api.css
@@ -529,6 +529,7 @@ h1.hidden {
.indexContainer a[href*="StateAwareResponse.html"],
.indexContainer a[href*="EventResponse.html"],
.indexContainer a[href*="MimeResponse.html"],
+.indexContainer a[href*="ResourceFilter.html"],
.indexContainer a[href*="ResourceURL.html"],
.indexContainer a[href*="ResourceResponse.html"],
.indexContainer a[href*="ActionRequestWrapper.html"],