Skip to main content

[jax-rs-spec commits] [jax-rs-spec~git:31190372] Merge branch 'master' of ssh://git.java.net/jax-rs-spec~git

  • From: spericas@...
  • To: commits@...
  • Subject: [jax-rs-spec commits] [jax-rs-spec~git:31190372] Merge branch 'master' of ssh://git.java.net/jax-rs-spec~git
  • Date: Thu, 19 Jan 2012 14:34:02 +0000

Project:    jax-rs-spec
Repository: git
Revision:   31190372ebcd9cbdfb2e403a1d29200f410a9a19
Author:     spericas
Date:       2012-01-19 14:33:28 UTC
Link:       

Log Message:
------------
Dropped NextAction from filter interfaces, returning void instead (based on 
results from poll). A request filter chain (Pre or PreMatch) can be 
implicitly stopped by setting a response in the context.
Merge branch 'master' of ssh://git.java.net/jax-rs-spec~git


Revisions:
----------
e5f2e8ec30117e36f6648da610cc9ceef7f0d0ae
31190372ebcd9cbdfb2e403a1d29200f410a9a19


Modified Paths:
---------------
src/examples/src/main/java/jaxrs/examples/client/cache/CacheEntryLocator.java
src/examples/src/main/java/jaxrs/examples/client/cache/CacheResponseHandler.java
src/examples/src/main/java/jaxrs/examples/filter/caching/ServerCachingFilter.java
src/examples/src/main/java/jaxrs/examples/filter/logging/LoggingFilter.java
src/jax-rs-api/src/main/java/javax/ws/rs/ext/FilterContext.java
src/jax-rs-api/src/main/java/javax/ws/rs/ext/PreMatchRequestFilter.java
src/jax-rs-api/src/main/java/javax/ws/rs/ext/RequestFilter.java
src/jax-rs-api/src/main/java/javax/ws/rs/ext/ResponseFilter.java
src/jax-rs-api/src/main/java/javax/ws/rs/core/Application.java
src/jax-rs-api/src/main/java/javax/ws/rs/core/RequestHeaders.java
src/jax-rs-api/src/main/java/javax/ws/rs/core/ResponseHeaders.java


Diffs:
------
diff --git 
a/src/examples/src/main/java/jaxrs/examples/client/cache/CacheEntryLocator.java
 
b/src/examples/src/main/java/jaxrs/examples/client/cache/CacheEntryLocator.java
index 336e93b..f771b7b 100644
--- 
a/src/examples/src/main/java/jaxrs/examples/client/cache/CacheEntryLocator.java
+++ 
b/src/examples/src/main/java/jaxrs/examples/client/cache/CacheEntryLocator.java
@@ -47,7 +47,6 @@ import java.util.Map;
 import java.util.concurrent.atomic.AtomicBoolean;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.ext.FilterContext;
-import javax.ws.rs.ext.FilterContext.FilterAction;
 import javax.ws.rs.ext.RequestFilter;
 
 /**
@@ -65,7 +64,7 @@ public class CacheEntryLocator implements RequestFilter {
     }
 
     @Override
-    public FilterAction preFilter(FilterContext ctx) throws IOException {
+    public void preFilter(FilterContext ctx) throws IOException {
         if (enabledFlag.get() && 
ctx.getRequest().getMethod().equalsIgnoreCase("GET")) {
             URI uri = ctx.getRequest().getUri();
             CacheEntry entry = cache.get(uri.toString());
@@ -74,10 +73,8 @@ public class CacheEntryLocator implements RequestFilter {
                 Response.ResponseBuilder responseBuilder = 
ctx.createResponse();
                 // TODO: response.getHeaders().putAll(entry.getHeaders());
                 responseBuilder.entity(new 
ByteArrayInputStream(entry.getBody())).status(200);
-                ctx.setResponse(responseBuilder.build());      // Set 
response and stop
-                return FilterAction.STOP;
+                ctx.setResponse(responseBuilder.build());      // stops 
filter chain
             }
         }
-        return FilterAction.NEXT;
     }
 }
diff --git 
a/src/examples/src/main/java/jaxrs/examples/client/cache/CacheResponseHandler.java
 
b/src/examples/src/main/java/jaxrs/examples/client/cache/CacheResponseHandler.java
index 825a261..1380bfb 100644
--- 
a/src/examples/src/main/java/jaxrs/examples/client/cache/CacheResponseHandler.java
+++ 
b/src/examples/src/main/java/jaxrs/examples/client/cache/CacheResponseHandler.java
@@ -49,7 +49,6 @@ import java.util.Map;
 import java.util.concurrent.atomic.AtomicBoolean;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.ext.FilterContext;
-import javax.ws.rs.ext.FilterContext.FilterAction;
 import javax.ws.rs.ext.ResponseFilter;
 
 /**
@@ -68,7 +67,7 @@ public class CacheResponseHandler implements ResponseFilter 
{
     }
 
     @Override
-    public FilterAction postFilter(FilterContext ctx) throws IOException {
+    public void postFilter(FilterContext ctx) throws IOException {
         if (enabledFlag.get() && 
ctx.getRequest().getMethod().equalsIgnoreCase("GET")) {
             URI uri = ctx.getRequest().getUri();
             Response.ResponseBuilder responseBuilder = 
ctx.getResponseBuilder();
@@ -77,7 +76,6 @@ public class CacheResponseHandler implements ResponseFilter 
{
             cache.put(uri.toString(), entry);
             responseBuilder.entity(new ByteArrayInputStream(body));
         }
-        return FilterAction.NEXT;
     }
 
     public static byte[] readFromStream(int bufferSize, InputStream 
entityStream) {
diff --git 
a/src/examples/src/main/java/jaxrs/examples/filter/caching/ServerCachingFilter.java
 
b/src/examples/src/main/java/jaxrs/examples/filter/caching/ServerCachingFilter.java
index 3ed82f8..4d54b65 100644
--- 
a/src/examples/src/main/java/jaxrs/examples/filter/caching/ServerCachingFilter.java
+++ 
b/src/examples/src/main/java/jaxrs/examples/filter/caching/ServerCachingFilter.java
@@ -44,12 +44,12 @@ import java.io.IOException;
 import javax.ws.rs.BindingPriority;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.ext.FilterContext;
-import javax.ws.rs.ext.FilterContext.FilterAction;
 import javax.ws.rs.ext.Provider;
 import javax.ws.rs.ext.RequestFilter;
 
 /**
- *
+ * ServerCachingFilter class.
+ * 
  * @author Santiago Pericas-Geertsen
  */
 @Provider
@@ -57,13 +57,11 @@ import javax.ws.rs.ext.RequestFilter;
 public class ServerCachingFilter implements RequestFilter {
 
     @Override
-    public FilterAction preFilter(FilterContext ctx) throws IOException {
+    public void preFilter(FilterContext ctx) throws IOException {
         Response.ResponseBuilder res = getCachedResponse(ctx);
         if (res != null) {
-            ctx.setResponse(res.build());
-            return FilterAction.STOP;     // break filter chain
+            ctx.setResponse(res.build());   // stops filter chain
         }
-        return FilterAction.NEXT;
     }
 
     private Response.ResponseBuilder getCachedResponse(FilterContext ctx) {
diff --git 
a/src/examples/src/main/java/jaxrs/examples/filter/logging/LoggingFilter.java 
b/src/examples/src/main/java/jaxrs/examples/filter/logging/LoggingFilter.java
index dc78628..588d431 100644
--- 
a/src/examples/src/main/java/jaxrs/examples/filter/logging/LoggingFilter.java
+++ 
b/src/examples/src/main/java/jaxrs/examples/filter/logging/LoggingFilter.java
@@ -45,7 +45,6 @@ import javax.ws.rs.BindingPriority;
 import javax.ws.rs.core.Request;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.ext.FilterContext;
-import javax.ws.rs.ext.FilterContext.FilterAction;
 import javax.ws.rs.ext.Provider;
 import javax.ws.rs.ext.RequestFilter;
 import javax.ws.rs.ext.ResponseFilter;
@@ -60,15 +59,13 @@ import javax.ws.rs.ext.ResponseFilter;
 public class LoggingFilter implements RequestFilter, ResponseFilter {
 
     @Override
-    public FilterAction preFilter(FilterContext ctx) throws IOException {
+    public void preFilter(FilterContext ctx) throws IOException {
         logRequest(ctx.getRequest());
-        return FilterAction.NEXT;
     }
 
     @Override
-    public FilterAction postFilter(FilterContext ctx) throws IOException {
+    public void postFilter(FilterContext ctx) throws IOException {
         logResponse(ctx.getResponse());
-        return FilterAction.NEXT;
     }
 
     private void logRequest(Request req) {
diff --git a/src/jax-rs-api/src/main/java/javax/ws/rs/ext/FilterContext.java 
b/src/jax-rs-api/src/main/java/javax/ws/rs/ext/FilterContext.java
index 1268b2f..898cb38 100644
--- a/src/jax-rs-api/src/main/java/javax/ws/rs/ext/FilterContext.java
+++ b/src/jax-rs-api/src/main/java/javax/ws/rs/ext/FilterContext.java
@@ -55,13 +55,6 @@ import javax.ws.rs.core.Response;
 public interface FilterContext {
 
     /**
-     * Enumeration to control how the filter chain is processed.
-     * A filter can return {@link #NEXT} to continue the filter chain 
-     * or {@link #STOP} to abort it.
-     */
-    public enum FilterAction { STOP, NEXT };
-
-    /**
      * Get a mutable map of properties that can be used for
      * communication between interceptors and between filters. In
      * the Client API, this property map is initialized by calling
@@ -104,9 +97,10 @@ public interface FilterContext {
 
     /**
      * Set the response object in the context. A caching filter
-     * could set a response by calling this method and returning
-     * {@link javax.ws.rs.ext.FilterContext.FilterAction#STOP} to
-     * stop the filter chain.
+     * that implements {@link RequestFilter} or {@link PreMatchRequestFilter}
+     * could set a response by calling this method. See 
+     * {@link RequestFilter#preFilter} and {@link 
PreMatchRequestFilter#preMatchFilter}
+     * for more information.
      * 
      * @param res response object to be set
      */
diff --git 
a/src/jax-rs-api/src/main/java/javax/ws/rs/ext/PreMatchRequestFilter.java 
b/src/jax-rs-api/src/main/java/javax/ws/rs/ext/PreMatchRequestFilter.java
index 47a25e5..70e1743 100644
--- a/src/jax-rs-api/src/main/java/javax/ws/rs/ext/PreMatchRequestFilter.java
+++ b/src/jax-rs-api/src/main/java/javax/ws/rs/ext/PreMatchRequestFilter.java
@@ -40,14 +40,13 @@
 package javax.ws.rs.ext;
 
 import java.io.IOException;
-import javax.ws.rs.ext.FilterContext.FilterAction;
 
 /**
  * <p>Interface implemented by filters invoked at the <emph>PreMatch</emph>
  * extension point. Use a filter of this type to update the input to the
  * JAX-RS matching algorithm, e.g., the HTTP method, Accept header, etc. 
  * Otherwise, the use of a filter invoked at the <emph>Pre</emph> extension
- * point (after resource matching) is recommended. </p>
+ * point (after resource matching) is recommended.</p>
  * 
  * <p>Filters implementing
  * this interface MUST be annotated with {@link javax.ws.rs.ext.Provider}.
@@ -60,16 +59,21 @@ import javax.ws.rs.ext.FilterContext.FilterAction;
 public interface PreMatchRequestFilter {
 
     /**
-     * Filter method called at the <emph>PreMatch</emph> extension point.
-     * I.e., before resource matching as part of the Server API. This method
-     * can return {@link javax.ws.rs.ext.FilterContext.FilterAction#NEXT}
-     * to continue the execution of the filter chain, or 
-     * {@link javax.ws.rs.ext.FilterContext.FilterAction#STOP} to 
-     * abort the execution of the filter chain.
+     * <p>Filter method called at the <emph>PreMatch</emph> extension point.
+     * I.e., before resource matching as part of the Server API. This type
+     * of filters are not supported in the Client API.</p>
+     *
+     * <p>Filters in a chain are ordered according to their binding
+     * priority (see {@link javax.ws.rs.BindingPriority}). If a pre-match
+     * request filter produces a response by calling
+     * {@link FilterContext#setResponse}, the execution of the pre-match 
request
+     * chain is stopped and the response is returned without matching a 
resource
+     * method. For example, a caching filter may produce a response in this 
way.
+     * Note that responses produced in this manner are still processed by
+     * the response filter chain.</p>
      *
      * @param context invocation context
-     * @return filter action to continue or stop filter chain
-     * @throws IOException 
+     * @throws IOException if an I/O exception occurs
      */
-    FilterAction preMatchFilter(FilterContext context) throws IOException;
+    void preMatchFilter(FilterContext context) throws IOException;
 }
diff --git a/src/jax-rs-api/src/main/java/javax/ws/rs/ext/RequestFilter.java 
b/src/jax-rs-api/src/main/java/javax/ws/rs/ext/RequestFilter.java
index 34bd478..cea6f99 100644
--- a/src/jax-rs-api/src/main/java/javax/ws/rs/ext/RequestFilter.java
+++ b/src/jax-rs-api/src/main/java/javax/ws/rs/ext/RequestFilter.java
@@ -40,7 +40,6 @@
 package javax.ws.rs.ext;
 
 import java.io.IOException;
-import javax.ws.rs.ext.FilterContext.FilterAction;
 
 /**
  * <p>Interface implemented by filters invoked at the <emph>Pre</emph> 
@@ -61,19 +60,23 @@ import javax.ws.rs.ext.FilterContext.FilterAction;
 public interface RequestFilter {
 
     /**
-     * Filter method called at the <emph>Pre</emph> extension point. 
+     * <p>Filter method called at the <emph>Pre</emph> extension point.
      * I.e., before the HTTP invocation in the client and before the
      * resource method invocation (but after resource matching) in the
-     * server. This method can return
-     * {@link javax.ws.rs.ext.FilterContext.FilterAction#NEXT}
-     * to continue the execution of the filter chain, or 
-     * {@link javax.ws.rs.ext.FilterContext.FilterAction#STOP} to 
-     * abort the execution of the filter chain (e.g., a caching filter
-     * may want to stop execution upon a cache hit). 
+     * server.</p>
+     *
+     * <p>Filters in a chain are ordered according to their binding
+     * priority (see {@link javax.ws.rs.BindingPriority}). If a request 
filter
+     * produces a response by calling {@link FilterContext#setResponse},
+     * the execution of the request chain is stopped and the response is
+     * returned without calling the corresponding resource method
+     * (Server API) or HTTP invocation (Client API). For example, a
+     * caching filter may produce a response in this way. Note that
+     * responses produced in this manner are still processed by
+     * the response filter chain.</p>
      *
      * @param context invocation context
-     * @return filter action to continue or stop filter chain
-     * @throws IOException 
+     * @throws IOException if an I/O exception occurs
      */
-    FilterAction preFilter(FilterContext context) throws IOException;
+    void preFilter(FilterContext context) throws IOException;
 }
diff --git a/src/jax-rs-api/src/main/java/javax/ws/rs/ext/ResponseFilter.java 
b/src/jax-rs-api/src/main/java/javax/ws/rs/ext/ResponseFilter.java
index 28f4bea..8449505 100644
--- a/src/jax-rs-api/src/main/java/javax/ws/rs/ext/ResponseFilter.java
+++ b/src/jax-rs-api/src/main/java/javax/ws/rs/ext/ResponseFilter.java
@@ -40,7 +40,6 @@
 package javax.ws.rs.ext;
 
 import java.io.IOException;
-import javax.ws.rs.ext.FilterContext.FilterAction;
 
 /**
  * <p>Interface implemented by filters invoked at the <emph>Post</emph> 
@@ -60,15 +59,12 @@ public interface ResponseFilter {
     /**
      * Filter method called at the <emph>Post</emph> extension point.
      * I.e., after the invocation returns in the client API and after the
-     * resource method returns in the server API. This method
-     * can return {@link javax.ws.rs.ext.FilterContext.FilterAction#NEXT}
-     * to continue the execution of the filter chain, or 
-     * {@link javax.ws.rs.ext.FilterContext.FilterAction#STOP} to 
-     * abort the execution of the filter chain. 
+     * resource method returns in the server API. Filters in a chain are
+     * ordered according to their binding priority (see 
+     * {@link javax.ws.rs.BindingPriority}).
      *
      * @param context invocation context
-     * @return filter action to continue or stop filter chain
-     * @throws IOException 
+     * @throws IOException if an I/O exception occurs
      */
-    FilterAction postFilter(FilterContext context) throws IOException;
+    void postFilter(FilterContext context) throws IOException;
 }
diff --git a/src/jax-rs-api/src/main/java/javax/ws/rs/core/Application.java 
b/src/jax-rs-api/src/main/java/javax/ws/rs/core/Application.java
index 41ed375..912631b 100644
--- a/src/jax-rs-api/src/main/java/javax/ws/rs/core/Application.java
+++ b/src/jax-rs-api/src/main/java/javax/ws/rs/core/Application.java
@@ -73,7 +73,7 @@ public class Application {
      *
      * <p>The default implementation returns an empty set.</p>
      *
-     * @return a set of root resource and provider classes. Returning null
+     * @return a set of root resource and provider classes. Returning {@code 
null}
      * is equivalent to returning an empty set.
      */
     public Set<Class<?>> getClasses() {
@@ -93,7 +93,7 @@ public class Application {
      *
      * <p>The default implementation returns an empty set.</p>
      *
-     * @return a set of root resource and provider instances. Returning null
+     * @return a set of root resource and provider instances. Returning 
{@code null}
      * is equivalent to returning an empty set.
      */
     public Set<Object> getSingletons() {
diff --git 
a/src/jax-rs-api/src/main/java/javax/ws/rs/core/RequestHeaders.java 
b/src/jax-rs-api/src/main/java/javax/ws/rs/core/RequestHeaders.java
index e773011..35baec0 100644
--- a/src/jax-rs-api/src/main/java/javax/ws/rs/core/RequestHeaders.java
+++ b/src/jax-rs-api/src/main/java/javax/ws/rs/core/RequestHeaders.java
@@ -43,7 +43,6 @@ import java.util.Date;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
-import java.util.Set;
 
 /**
  * general-header =
@@ -98,6 +97,7 @@ import java.util.Set;
  * via its {@link Request#getHeaders() getHeaders()} method.
  *
  * @author Marek Potociar
+ * @see Context
  * @since 2.0
  */
 public interface RequestHeaders {
diff --git 
a/src/jax-rs-api/src/main/java/javax/ws/rs/core/ResponseHeaders.java 
b/src/jax-rs-api/src/main/java/javax/ws/rs/core/ResponseHeaders.java
index 45d0cc0..0092db6 100644
--- a/src/jax-rs-api/src/main/java/javax/ws/rs/core/ResponseHeaders.java
+++ b/src/jax-rs-api/src/main/java/javax/ws/rs/core/ResponseHeaders.java
@@ -88,6 +88,7 @@ import java.util.Set;
  * via its {@link Response#getHeaders() getHeaders()} method.
  *
  * @author Marek Potociar
+ * @see Context
  * @since 2.0
  */
 public interface ResponseHeaders {




[jax-rs-spec commits] [jax-rs-spec~git:31190372] Merge branch 'master' of ssh://git.java.net/jax-rs-spec~git

spericas 01/19/2012
 
 
Close
loading
Please Confirm
Close