Skip to main content

[jax-rs-spec commits] [jax-rs-spec~git:199a5ed3] Further filtering API refactorings

  • From: m_potociar@...
  • To: commits@...
  • Subject: [jax-rs-spec commits] [jax-rs-spec~git:199a5ed3] Further filtering API refactorings
  • Date: Thu, 5 Apr 2012 14:55:38 +0000

Project:    jax-rs-spec
Repository: git
Revision:   199a5ed3c4ef6bf6b8b13eb47427a1afe7f4e19e
Author:     m_potociar
Date:       2012-04-05 14:55:26 UTC
Link:       

Log Message:
------------
Further filtering API refactorings


Revisions:
----------
199a5ed3c4ef6bf6b8b13eb47427a1afe7f4e19e


Modified Paths:
---------------
src/jax-rs-api/src/main/java/javax/ws/rs/client/ClientRequestContext.java
src/jax-rs-api/src/main/java/javax/ws/rs/client/ClientRequestFilter.java
src/jax-rs-api/src/main/java/javax/ws/rs/client/ClientResponseFilter.java
src/jax-rs-api/src/main/java/javax/ws/rs/container/ContainerRequestContext.java
src/jax-rs-api/src/main/java/javax/ws/rs/container/ContainerRequestFilter.java
src/jax-rs-api/src/main/java/javax/ws/rs/container/ContainerResponseFilter.java
src/jax-rs-api/src/main/java/javax/ws/rs/container/ResourceInfo.java
src/jax-rs-api/src/main/java/javax/ws/rs/ext/ReaderInterceptor.java
src/jax-rs-api/src/main/java/javax/ws/rs/ext/WriterInterceptor.java


Added Paths:
------------
src/examples/src/main/java/jaxrs/examples/filter/logging/DynamicLoggingFilterBinder.java
src/jax-rs-api/src/main/java/javax/ws/rs/container/DynamicBinder.java
src/jax-rs-api/src/main/java/javax/ws/rs/container/PostMatching.java


Diffs:
------
diff --git 
a/src/examples/src/main/java/jaxrs/examples/filter/logging/DynamicLoggingFilter.java
 
b/src/examples/src/main/java/jaxrs/examples/filter/logging/DynamicLoggingFilter.java
deleted file mode 100644
index ac469e9..0000000
--- 
a/src/examples/src/main/java/jaxrs/examples/filter/logging/DynamicLoggingFilter.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright (c) 2011-2012 Oracle and/or its affiliates. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License.  You can
- * obtain a copy of the License at
- * http://glassfish.java.net/public/CDDL+GPL_1_1.html
- * or packager/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at packager/legal/LICENSE.txt.
- *
- * GPL Classpath Exception:
- * Oracle designates this particular file as subject to the "Classpath"
- * exception as provided by Oracle in the GPL Version 2 section of the 
License
- * file that accompanied this code.
- *
- * Modifications:
- * If applicable, add the following below the License Header, with the fields
- * enclosed by brackets [] replaced by your own identifying information:
- * "Portions Copyright [year] [name of copyright owner]"
- *
- * Contributor(s):
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or 
GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-package jaxrs.examples.filter.logging;
-
-import javax.ws.rs.GET;
-import javax.ws.rs.container.DynamicBinding;
-import javax.ws.rs.container.ResourceFilter;
-import javax.ws.rs.container.ResourceInfo;
-import javax.ws.rs.ext.Provider;
-
-/**
- * Globally applied request/response {@link ResourceFilter resource filter}
- * that dynamically decides to be applied only to GET processing resource 
methods
- * on all subclasses of {@link MyResourceClass} and the {@code 
MyResourceClass} itself.
- *
- * @author Santiago Pericas-Geertsen
- * @author Marek Potociar
- */
-@Provider
-@ResourceFilter
-public class DynamicLoggingFilter extends LoggingFilter implements 
DynamicBinding {
-
-    @Override
-    public boolean isBound(ResourceInfo resourceInfo) {
-        return 
MyResourceClass.class.isAssignableFrom(resourceInfo.getResourceClass())
-                && 
resourceInfo.getResourceMethod().isAnnotationPresent(GET.class);
-    }
-}
diff --git 
a/src/examples/src/main/java/jaxrs/examples/filter/logging/DynamicLoggingFilterBinder.java
 
b/src/examples/src/main/java/jaxrs/examples/filter/logging/DynamicLoggingFilterBinder.java
new file mode 100644
index 0000000..7b5e0d8
--- /dev/null
+++ 
b/src/examples/src/main/java/jaxrs/examples/filter/logging/DynamicLoggingFilterBinder.java
@@ -0,0 +1,69 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2011-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * http://glassfish.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the 
License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or 
GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package jaxrs.examples.filter.logging;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.container.DynamicBinder;
+import javax.ws.rs.container.PostMatching;
+import javax.ws.rs.container.ResourceInfo;
+import javax.ws.rs.ext.Provider;
+
+/**
+ * Dynamic binder for a logging request/response {@link PostMatching 
post-matching}
+ * filter that dynamically decides to bind the logging filter only to GET 
processing
+ * resource methods on all subclasses of {@link MyResourceClass} and the
+ * {@code MyResourceClass} itself.
+ *
+ * @author Santiago Pericas-Geertsen
+ * @author Marek Potociar
+ */
+@Provider
+public class DynamicLoggingFilterBinder implements 
DynamicBinder<LoggingFilter> {
+
+    @Override
+    public LoggingFilter getBoundInstance(ResourceInfo resourceInfo) {
+        if 
(MyResourceClass.class.isAssignableFrom(resourceInfo.getResourceClass())
+                && 
resourceInfo.getResourceMethod().isAnnotationPresent(GET.class)) {
+            return new LoggingFilter();
+        }
+
+        return null;
+    }
+}
diff --git 
a/src/jax-rs-api/src/main/java/javax/ws/rs/client/ClientRequestContext.java 
b/src/jax-rs-api/src/main/java/javax/ws/rs/client/ClientRequestContext.java
index e135d6d..6fff021 100644
--- 
a/src/jax-rs-api/src/main/java/javax/ws/rs/client/ClientRequestContext.java
+++ 
b/src/jax-rs-api/src/main/java/javax/ws/rs/client/ClientRequestContext.java
@@ -162,5 +162,12 @@ public interface ClientRequestContext {
     // get the entity annotations (used by MBW)
     public Annotation[] getEntityAnnotations();
 
+    // client instance getter
+    public Client getClient();
+
+    // request configuration getter
+    public Configuration getConfiguration();
+
+    // abort the request filter chain with a response
     public void abortWith(Response response);
 }
diff --git 
a/src/jax-rs-api/src/main/java/javax/ws/rs/client/ClientRequestFilter.java 
b/src/jax-rs-api/src/main/java/javax/ws/rs/client/ClientRequestFilter.java
index 28955d1..e849ba6 100644
--- a/src/jax-rs-api/src/main/java/javax/ws/rs/client/ClientRequestFilter.java
+++ b/src/jax-rs-api/src/main/java/javax/ws/rs/client/ClientRequestFilter.java
@@ -47,8 +47,8 @@ import javax.ws.rs.WebApplicationException;
  * An extension interface implemented by client request filters.
  *
  * Filters implementing this interface MUST be annotated with
- * {@link javax.ws.rs.ext.Provider}. This type of filters is supported only 
as
- * part of the Client API.
+ * {@link javax.ws.rs.ext.Provider &#64;Provider}. This type of filters is 
supported
+ * only as part of the Client API.
  *
  * @author Marek Potociar
  * @author Santiago Pericas-Geertsen
diff --git 
a/src/jax-rs-api/src/main/java/javax/ws/rs/client/ClientResponseFilter.java 
b/src/jax-rs-api/src/main/java/javax/ws/rs/client/ClientResponseFilter.java
index 680369c..b7a4d86 100644
--- 
a/src/jax-rs-api/src/main/java/javax/ws/rs/client/ClientResponseFilter.java
+++ 
b/src/jax-rs-api/src/main/java/javax/ws/rs/client/ClientResponseFilter.java
@@ -45,8 +45,8 @@ import java.io.IOException;
  * An extension interface implemented by client response filters.
  *
  * Filters implementing this interface MUST be annotated with
- * {@link javax.ws.rs.ext.Provider}. This type of filters is supported only 
as
- * part of the Client API.
+ * {@link javax.ws.rs.ext.Provider &#64;Provider}. This type of filters is 
supported
+ * only as part of the Client API.
  *
  * @author Marek Potociar
  * @author Santiago Pericas-Geertsen
diff --git 
a/src/jax-rs-api/src/main/java/javax/ws/rs/container/ContainerRequestContext.java
 
b/src/jax-rs-api/src/main/java/javax/ws/rs/container/ContainerRequestContext.java
index a4f5a31..6afeae2 100644
--- 
a/src/jax-rs-api/src/main/java/javax/ws/rs/container/ContainerRequestContext.java
+++ 
b/src/jax-rs-api/src/main/java/javax/ws/rs/container/ContainerRequestContext.java
@@ -190,5 +190,6 @@ public interface ContainerRequestContext {
 
     public Request getRequest();
 
+    // abort the request filter chain with a response
     public void abortWith(Response response);
 }
diff --git 
a/src/jax-rs-api/src/main/java/javax/ws/rs/container/ContainerRequestFilter.java
 
b/src/jax-rs-api/src/main/java/javax/ws/rs/container/ContainerRequestFilter.java
index 1908f61..ad37c3d 100644
--- 
a/src/jax-rs-api/src/main/java/javax/ws/rs/container/ContainerRequestFilter.java
+++ 
b/src/jax-rs-api/src/main/java/javax/ws/rs/container/ContainerRequestFilter.java
@@ -59,7 +59,7 @@ import java.io.IOException;
  * (after a successful resource method matching) is recommended.
  * <p />
  * Filters implementing this interface MUST be annotated with
- * {@link javax.ws.rs.ext.Provider}. This type of filters is supported only 
as
+ * {@link javax.ws.rs.ext.Provider &#64;Provider}. This type of filters is 
supported only as
  * part of the Server API.
  *
  * @author Marek Potociar
@@ -67,7 +67,7 @@ import java.io.IOException;
  *
  * @since 2.0
  *
- * @see javax.ws.rs.container.ResourceFilter
+ * @see javax.ws.rs.container.PostMatching
  * @see javax.ws.rs.container.ContainerResponseFilter
  */
 public interface ContainerRequestFilter {
@@ -98,7 +98,7 @@ public interface ContainerRequestFilter {
      * @param requestContext request context.
      * @throws IOException if an I/O exception occurs.
      *
-     * @see javax.ws.rs.container.ResourceFilter
+     * @see javax.ws.rs.container.PostMatching
      */
     public void filter(ContainerRequestContext requestContext) throws 
IOException;
 }
diff --git 
a/src/jax-rs-api/src/main/java/javax/ws/rs/container/ContainerResponseFilter.java
 
b/src/jax-rs-api/src/main/java/javax/ws/rs/container/ContainerResponseFilter.java
index 091b1f0..42d207a 100644
--- 
a/src/jax-rs-api/src/main/java/javax/ws/rs/container/ContainerResponseFilter.java
+++ 
b/src/jax-rs-api/src/main/java/javax/ws/rs/container/ContainerResponseFilter.java
@@ -60,7 +60,7 @@ import java.io.IOException;
  * response filter.
  * <p />
  * Filters implementing this interface MUST be annotated with
- * {@link javax.ws.rs.ext.Provider}. This type of filters is supported only 
as
+ * {@link javax.ws.rs.ext.Provider &#64;Provider}. This type of filters is 
supported only as
  * part of the Server API.
  *
  * @author Marek Potociar
@@ -68,7 +68,7 @@ import java.io.IOException;
  *
  * @since 2.0
  *
- * @see javax.ws.rs.container.ResourceFilter
+ * @see javax.ws.rs.container.PostMatching
  * @see javax.ws.rs.container.ContainerRequestFilter
  */
 public interface ContainerResponseFilter {
@@ -93,7 +93,7 @@ public interface ContainerResponseFilter {
      * @param responseContext response context.
      * @throws IOException if an I/O exception occurs.
      *
-     * @see javax.ws.rs.container.ResourceFilter
+     * @see javax.ws.rs.container.PostMatching
      */
     public void filter(ContainerRequestContext requestContext, 
ContainerResponseContext responseContext)
             throws IOException;
diff --git 
a/src/jax-rs-api/src/main/java/javax/ws/rs/container/DynamicBinder.java 
b/src/jax-rs-api/src/main/java/javax/ws/rs/container/DynamicBinder.java
new file mode 100644
index 0000000..43fe90d
--- /dev/null
+++ b/src/jax-rs-api/src/main/java/javax/ws/rs/container/DynamicBinder.java
@@ -0,0 +1,93 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2011-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * http://glassfish.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the 
License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or 
GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.ws.rs.container;
+
+import javax.ws.rs.ext.ReaderInterceptor;
+import javax.ws.rs.ext.WriterInterceptor;
+
+/**
+ * A dynamic ({@link PostMatching post-matching}) filter or interceptor 
binding
+ * provider.
+ *
+ * Dynamic binding provider is used by JAX-RS runtime to provide a the 
filter or
+ * interceptor that shall be applied to a particular resource class and 
method and
+ * overrides any annotation-based binding definitions defined on the returned
+ * resource filter or interceptor instance.
+ * <p />
+ * Providers implementing this interface MUST be annotated with
+ * {@link javax.ws.rs.ext.Provider &#64;Provider} annotation. This type of 
providers
+ * is supported only as part of the Server API.
+ *
+ * @author Santiago Pericas-Geertsen
+ * @author Bill Burke
+ * @author Marek Potociar
+ *
+ * @since 2.0
+ * @see javax.ws.rs.NameBinding
+ */
+public interface DynamicBinder<T> {
+
+    /**
+     * Get the filter or interceptor instance that should be bound to the 
particular
+     * resource method.
+     *
+     * The returned instance is expected to return an instance implementing 
one
+     * or more of the following interfaces:
+     * <ul>
+     *     <li>{@link ContainerRequestFilter}</li>
+     *     <li>{@link ContainerResponseFilter}</li>
+     *     <li>{@link ReaderInterceptor}</li>
+     *     <li>{@link WriterInterceptor}</li>
+     * </ul>
+     * A returned instance that does not implement any of the interfaces 
above
+     * is ignored and a {@link java.util.logging.Level#WARNING warning} 
message
+     * is logged.
+     * <p />
+     * The method is called during a (sub)resource method discovery phase 
(typically
+     * once per each discovered (sub)resource method) to return a filter 
instance
+     * that should be bound to a particular (sub)resource method identified 
by the
+     * supplied {@link ResourceInfo resource information}.
+     *
+     * @param resourceInfo resource class and method information.
+     * @return a filter or interceptor instance that should be dynamically 
bound
+     *     to the (sub)resource method or {@code null} otherwise.
+     */
+    public T getBoundInstance(ResourceInfo resourceInfo);
+}
diff --git 
a/src/jax-rs-api/src/main/java/javax/ws/rs/container/DynamicBinding.java 
b/src/jax-rs-api/src/main/java/javax/ws/rs/container/DynamicBinding.java
deleted file mode 100644
index 40868ce..0000000
--- a/src/jax-rs-api/src/main/java/javax/ws/rs/container/DynamicBinding.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright (c) 2011-2012 Oracle and/or its affiliates. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License.  You can
- * obtain a copy of the License at
- * http://glassfish.java.net/public/CDDL+GPL_1_1.html
- * or packager/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at packager/legal/LICENSE.txt.
- *
- * GPL Classpath Exception:
- * Oracle designates this particular file as subject to the "Classpath"
- * exception as provided by Oracle in the GPL Version 2 section of the 
License
- * file that accompanied this code.
- *
- * Modifications:
- * If applicable, add the following below the License Header, with the fields
- * enclosed by brackets [] replaced by your own identifying information:
- * "Portions Copyright [year] [name of copyright owner]"
- *
- * Contributor(s):
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or 
GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-package javax.ws.rs.container;
-
-/**
- * A resource (name-bound) filter or interceptor that implements this 
interface
- * indicates that it requires a dynamic binding.
- *
- * Dynamic binding is supported only as part of the Server API. Regardless of
- * whether a resource filter or interceptor is bound {@link ResourceFilter 
globally}
- * or via a custom {@link javax.ws.rs.NameBinding name binding} annotation, 
this
- * interface will be used by JAX-RS runtime to determine if the filter or 
interceptor
- * applies to a particular resource class and method or not.
- *
- * @author Santiago Pericas-Geertsen
- * @author Bill Burke
- * @author Marek Potociar
- *
- * @since 2.0
- * @see javax.ws.rs.NameBinding
- */
-public interface DynamicBinding {
-
-    /**
-     * Determine if this filter or interceptor applies to the matched
-     * resource class and method.
-     *
-     * @param resourceInfo matched resource class and method information.
-     * @return {@code true} if it applies, {@code false} otherwise.
-     */
-    public boolean isBound(ResourceInfo resourceInfo);
-}
diff --git 
a/src/jax-rs-api/src/main/java/javax/ws/rs/container/PostMatching.java 
b/src/jax-rs-api/src/main/java/javax/ws/rs/container/PostMatching.java
new file mode 100644
index 0000000..01f0381
--- /dev/null
+++ b/src/jax-rs-api/src/main/java/javax/ws/rs/container/PostMatching.java
@@ -0,0 +1,69 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * http://glassfish.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the 
License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or 
GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.ws.rs.container;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import javax.ws.rs.NameBinding;
+
+/**
+ * Global binding annotation that can be applied to a {@link 
ContainerRequestFilter
+ * container request filter} or a {@link ContainerResponseFilter container 
response
+ * filter} to indicate that such filter should be applied globally on all 
resources
+ * in the application but depends on a matched resource information being 
available.
+ * <p />
+ * The JAX-RS runtime will apply the filters marked with the {@code 
@PostMatching}
+ * annotation globally to all resources, but only in case the incoming 
request
+ * has been matched to a particular resource method. In case the request has 
not
+ * been matched, the filter implementations annotated with the {@code 
@PostMatching}
+ * annotation will not be applied.
+ *
+ * @author Marek Potociar (marek.potociar at oracle.com)
+ */
+@Target({ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@NameBinding
+public @interface PostMatching {
+}
diff --git 
a/src/jax-rs-api/src/main/java/javax/ws/rs/container/ResourceFilter.java 
b/src/jax-rs-api/src/main/java/javax/ws/rs/container/ResourceFilter.java
deleted file mode 100644
index 779324b..0000000
--- a/src/jax-rs-api/src/main/java/javax/ws/rs/container/ResourceFilter.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License.  You can
- * obtain a copy of the License at
- * http://glassfish.java.net/public/CDDL+GPL_1_1.html
- * or packager/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at packager/legal/LICENSE.txt.
- *
- * GPL Classpath Exception:
- * Oracle designates this particular file as subject to the "Classpath"
- * exception as provided by Oracle in the GPL Version 2 section of the 
License
- * file that accompanied this code.
- *
- * Modifications:
- * If applicable, add the following below the License Header, with the fields
- * enclosed by brackets [] replaced by your own identifying information:
- * "Portions Copyright [year] [name of copyright owner]"
- *
- * Contributor(s):
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or 
GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-package javax.ws.rs.container;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-import javax.ws.rs.NameBinding;
-
-/**
- * Global binding annotation that can be applied to a {@link 
ContainerRequestFilter
- * container request filter} or a {@link ContainerResponseFilter container 
response
- * filter} to indicate that such filter should be applied globally on all 
resources
- * in the application but depends on a matched resource information being 
available.
- * <p />
- * The JAX-RS runtime will apply the filters marked with the {@code 
@ResourceFilter}
- * annotation globally to all resources, but only in case the incoming 
request
- * has been matched to a particular resource method. In case the request has 
not
- * been matched, the filter implementations annotated with the {@code 
@ResourceFilter}
- * annotation will not be applied.
- *
- * @author Marek Potociar (marek.potociar at oracle.com)
- */
-@Target({ElementType.TYPE})
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@NameBinding
-public @interface ResourceFilter {
-}
diff --git 
a/src/jax-rs-api/src/main/java/javax/ws/rs/container/ResourceInfo.java 
b/src/jax-rs-api/src/main/java/javax/ws/rs/container/ResourceInfo.java
index 52015bf..eb15e5e 100644
--- a/src/jax-rs-api/src/main/java/javax/ws/rs/container/ResourceInfo.java
+++ b/src/jax-rs-api/src/main/java/javax/ws/rs/container/ResourceInfo.java
@@ -46,7 +46,7 @@ import java.lang.reflect.Method;
  * matched by the current request. Methods in this class MAY return
  * <code>null</code> if a resource class and method have not been matched,
  * e.g. in a standalone, pre-matching {@link ContainerRequestFilter} that was
- * not provided by a post-matching {@link ResourceFilter}.
+ * not provided by a post-matching {@link PostMatching}.
  *
  * @author Santiago Pericas-Geertsen
  * @since 2.0
diff --git 
a/src/jax-rs-api/src/main/java/javax/ws/rs/ext/ReaderInterceptor.java 
b/src/jax-rs-api/src/main/java/javax/ws/rs/ext/ReaderInterceptor.java
index 5e2eeaa..4e56167 100644
--- a/src/jax-rs-api/src/main/java/javax/ws/rs/ext/ReaderInterceptor.java
+++ b/src/jax-rs-api/src/main/java/javax/ws/rs/ext/ReaderInterceptor.java
@@ -43,7 +43,7 @@ package javax.ws.rs.ext;
  * Interface for message body reader interceptors that wrap around calls
  * to {@link javax.ws.rs.ext.MessageBodyReader#readFrom}. Message body
  * interceptors implementing this interface MUST be annotated with
- * {@link javax.ws.rs.ext.Provider}.
+ * {@link javax.ws.rs.ext.Provider &#64;Provider} annotation.
  *
  * @param <T> Java type supported by corresponding message body reader
  *
diff --git 
a/src/jax-rs-api/src/main/java/javax/ws/rs/ext/WriterInterceptor.java 
b/src/jax-rs-api/src/main/java/javax/ws/rs/ext/WriterInterceptor.java
index 981898a..8fde581 100644
--- a/src/jax-rs-api/src/main/java/javax/ws/rs/ext/WriterInterceptor.java
+++ b/src/jax-rs-api/src/main/java/javax/ws/rs/ext/WriterInterceptor.java
@@ -43,7 +43,7 @@ package javax.ws.rs.ext;
  * Interface for message body writer interceptors that wrap around calls
  * to {@link javax.ws.rs.ext.MessageBodyWriter#writeTo}. Message body
  * interceptors implementing this interface MUST be annotated with
- * {@link javax.ws.rs.ext.Provider}.
+ * {@link javax.ws.rs.ext.Provider &#64;Provider} annotation.
  *
  * @param <T> Java type supported by corresponding message body writer
  *




[jax-rs-spec commits] [jax-rs-spec~git:199a5ed3] Further filtering API refactorings

m_potociar 04/05/2012
 
 
Close
loading
Please Confirm
Close