Author: sergeyb
Date: Fri Jan 21 18:12:52 2011
New Revision: 1061946

URL: http://svn.apache.org/viewvc?rev=1061946&view=rev
Log:
Merged revisions 1061941 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/trunk

........
  r1061941 | sergeyb | 2011-01-21 18:06:01 +0000 (Fri, 21 Jan 2011) | 1 line
  
  [CXF-3261] Removing reflective calls from the JAXRSOutInterceptor
........

Modified:
    cxf/branches/2.3.x-fixes/   (props changed)
    
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java
    
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractConfigurableProvider.java
    
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
    
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
    cxf/branches/2.3.x-fixes/rt/ws/security/   (props changed)

Propchange: cxf/branches/2.3.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Jan 21 18:12:52 2011
@@ -1 +1 @@
-/cxf/trunk:1061256-1061261
+/cxf/trunk:1061256-1061261,1061941

Propchange: cxf/branches/2.3.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: 
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java
URL: 
http://svn.apache.org/viewvc/cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java?rev=1061946&r1=1061945&r2=1061946&view=diff
==============================================================================
--- 
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java
 (original)
+++ 
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java
 Fri Jan 21 18:12:52 2011
@@ -54,6 +54,7 @@ import org.apache.cxf.jaxrs.lifecycle.Re
 import org.apache.cxf.jaxrs.model.ClassResourceInfo;
 import org.apache.cxf.jaxrs.model.OperationResourceInfo;
 import org.apache.cxf.jaxrs.model.ProviderInfo;
+import org.apache.cxf.jaxrs.provider.AbstractConfigurableProvider;
 import org.apache.cxf.jaxrs.provider.ProviderFactory;
 import org.apache.cxf.jaxrs.utils.HttpUtils;
 import org.apache.cxf.jaxrs.utils.InjectionUtils;
@@ -291,12 +292,14 @@ public class JAXRSOutInterceptor extends
             return false;
         }
         Object outBuf = m.getContextualProperty(OUT_BUFFERING);
-        boolean enabled = Boolean.TRUE.equals(outBuf) || "true".equals(outBuf);
-        if (!enabled && outBuf == null) {
-            enabled = InjectionUtils.invokeBooleanGetter(w, 
"getEnableBuffering");
+        boolean enabled = MessageUtils.isTrue(outBuf);
+        boolean configurableProvider = w instanceof 
AbstractConfigurableProvider;
+        if (!enabled && outBuf == null && configurableProvider) {
+            enabled = ((AbstractConfigurableProvider)w).getEnableBuffering();
         }
         if (enabled) {
-            boolean streamingOn = InjectionUtils.invokeBooleanGetter(w, 
"getEnableStreaming");
+            boolean streamingOn = configurableProvider 
+                ? ((AbstractConfigurableProvider)w).getEnableStreaming() : 
false;
             if (streamingOn) {
                 m.setContent(XMLStreamWriter.class, new 
CachingXmlEventWriter());
             } else {

Modified: 
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractConfigurableProvider.java
URL: 
http://svn.apache.org/viewvc/cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractConfigurableProvider.java?rev=1061946&r1=1061945&r2=1061946&view=diff
==============================================================================
--- 
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractConfigurableProvider.java
 (original)
+++ 
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractConfigurableProvider.java
 Fri Jan 21 18:12:52 2011
@@ -30,42 +30,116 @@ public abstract class AbstractConfigurab
     private List<String> consumeMediaTypes;
     private List<String> produceMediaTypes;
     private boolean enableBuffering;
+    private boolean enableStreaming;
     private Bus bus;
     
+    /**
+     * Sets the Bus
+     * @param b
+     */
     public void setBus(Bus b) {
         if (bus != null) {
             bus = b;
         }
     }
     
+    /**
+     * Gets the Bus. 
+     * Providers may use the bus to resolve resource references.
+     * Example:
+     * ResourceUtils.getResourceStream(reference, this.getBus())
+     * 
+     * @return
+     */
     public Bus getBus() {
         return bus != null ? bus : BusFactory.getThreadDefaultBus();
     }
     
+    /**
+     * Sets custom Consumes media types; can be used to override static
+     * {@link Consumes} annotation value set on the provider.
+     * @param types the media types
+     */
     public void setConsumeMediaTypes(List<String> types) {
         consumeMediaTypes = types;
     }
     
+    /**
+     * Gets the custom Consumes media types
+     * @return media types
+     */
     public List<String> getConsumeMediaTypes() {
         return consumeMediaTypes;    
     }
     
+    /**
+     * Sets custom Produces media types; can be used to override static
+     * {@link Produces} annotation value set on the provider.
+     * @param types the media types
+     */
     public void setProduceMediaTypes(List<String> types) {
         produceMediaTypes = types;
     }
     
+    /**
+     * Gets the custom Produces media types
+     * @return media types
+     */
     public List<String> getProduceMediaTypes() {
         return produceMediaTypes;    
     }
     
+    /**
+     * Enables the buffering mode. If set to true then the runtime will ensure
+     * that the provider writes to a cached stream.
+     *  
+     * For example, the JAXB marshalling process may fail after the initial XML
+     * tags have already been written out to the HTTP output stream. Enabling
+     * the buffering ensures no incomplete payloads are sent back to clients
+     * in case of marshalling errors at the cost of the initial buffering - 
which
+     * might be negligible for small payloads.
+     * 
+     * @param enableBuf the value of the buffering mode, false is default.
+     */
     public void setEnableBuffering(boolean enableBuf) {
         enableBuffering = enableBuf;
     }
     
+    /**
+     * Gets the value of the buffering mode
+     * @return true if the buffering is enabled
+     */
     public boolean getEnableBuffering() {
         return enableBuffering;
     }
     
+    /**
+     * Enables the support for streaming. XML-aware providers which prefer 
+     * writing to Stax XMLStreamWriter can set this value to true. 
Additionally,
+     * if the streaming and the buffering modes are enabled, the runtime will
+     * ensure the XMLStreamWriter events are cached properly. 
+     * @param enableStream the value of the streaming mode, false is default.
+     */
+    public void setEnableStreaming(boolean enableStream) {
+        enableStreaming = enableStream; 
+    }
+    
+    /**
+     * Gets the value of the streaming mode
+     * @return true if the streaming is enabled
+     */
+    public boolean getEnableStreaming() {
+        return enableStreaming;
+    }
+    
+    /**
+     * Gives providers a chance to introspect the JAX-RS model classes.
+     * For example, the JAXB provider may use the model classes to create
+     * a single composite JAXBContext supporting all the JAXB-annotated 
+     * root resource classes/types.
+     * 
+     * @param resources
+     */
     public void init(List<ClassResourceInfo> resources) {
         // complete
     }

Modified: 
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
URL: 
http://svn.apache.org/viewvc/cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java?rev=1061946&r1=1061945&r2=1061946&view=diff
==============================================================================
--- 
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
 (original)
+++ 
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
 Fri Jan 21 18:12:52 2011
@@ -76,7 +76,6 @@ public class JAXBElementProvider extends
                                     Marshaller.JAXB_SCHEMA_LOCATION});
     
     private Map<String, Object> mProperties = Collections.emptyMap();
-    private boolean enableStreaming;
     private ValidationEventHandler eventHandler;
     
     public JAXBElementProvider() {
@@ -105,14 +104,6 @@ public class JAXBElementProvider extends
         eventHandler = handler;
     }
     
-    public void setEnableStreaming(boolean enableStream) {
-        enableStreaming = enableStream; 
-    }
-    
-    public boolean getEnableStreaming() {
-        return enableStreaming;
-    }
-    
     public void setEnableBuffering(boolean enableBuf) {
         super.setEnableBuffering(enableBuf);
     }
@@ -425,7 +416,7 @@ public class JAXBElementProvider extends
                     }
                 }
             }
-            if (writer == null && enableStreaming) {
+            if (writer == null && getEnableStreaming()) {
                 writer = StaxUtils.createXMLStreamWriter(os);
             }
         } 

Modified: 
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
URL: 
http://svn.apache.org/viewvc/cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java?rev=1061946&r1=1061945&r2=1061946&view=diff
==============================================================================
--- 
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
 (original)
+++ 
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
 Fri Jan 21 18:12:52 2011
@@ -133,16 +133,6 @@ public final class InjectionUtils {
         return result == null ? Object.class : result;
     }
     
-    public static boolean invokeBooleanGetter(Object o, String name) {
-        try {
-            Method method = o.getClass().getMethod(name, new Class[]{});
-            return (Boolean)method.invoke(o, new Object[]{});
-        } catch (Exception ex) {
-            LOG.finest("Can not invoke method " + name + " on object of class 
" + o.getClass().getName());
-        }
-        return false;
-    }
-    
     public static Method checkProxy(Method methodToInvoke, Object 
resourceObject) {
         if (Proxy.class.isInstance(resourceObject)) {
             for (Class<?> c : resourceObject.getClass().getInterfaces()) {

Propchange: cxf/branches/2.3.x-fixes/rt/ws/security/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Jan 21 18:12:52 2011
@@ -1 +1 @@
-/cxf/trunk/rt/ws/security:1061256-1061261,1061788
+/cxf/trunk/rt/ws/security:1061256-1061261,1061788,1061941


Reply via email to