cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ff...@apache.org
Subject svn commit: r1463387 - in /cxf/branches/2.6.x-fixes: ./ api/src/main/java/org/apache/cxf/annotations/ api/src/main/java/org/apache/cxf/feature/ api/src/main/java/org/apache/cxf/interceptor/ rt/core/src/main/java/org/apache/cxf/service/factory/
Date Tue, 02 Apr 2013 05:15:24 GMT
Author: ffang
Date: Tue Apr  2 05:15:24 2013
New Revision: 1463387

URL: http://svn.apache.org/r1463387
Log:
Merged revisions 1463385 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/branches/2.7.x-fixes

................
  r1463385 | ffang | 2013-04-02 13:08:19 +0800 (二, 02  4 2013) | 9 lines
  
  Merged revisions 1463382 via svnmerge from 
  https://svn.apache.org/repos/asf/cxf/trunk
  
  ........
    r1463382 | ffang | 2013-04-02 13:01:49 +0800 (二, 02  4 2013) | 1 line
    
    [CXF-4936]Expose FastInfoset serializer tuning properties
  ........
................

Modified:
    cxf/branches/2.6.x-fixes/   (props changed)
    cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/annotations/FastInfoset.java
    cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/feature/FastInfosetFeature.java
    cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/interceptor/FIStaxOutInterceptor.java
    cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/service/factory/AnnotationsFactoryBeanListener.java

Propchange: cxf/branches/2.6.x-fixes/
------------------------------------------------------------------------------
  Merged /cxf/branches/2.7.x-fixes:r1463385
  Merged /cxf/trunk:r1463382

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

Modified: cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/annotations/FastInfoset.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/annotations/FastInfoset.java?rev=1463387&r1=1463386&r2=1463387&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/annotations/FastInfoset.java
(original)
+++ cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/annotations/FastInfoset.java
Tue Apr  2 05:15:24 2013
@@ -32,6 +32,51 @@ import java.lang.annotation.Target;
 @Retention(RetentionPolicy.RUNTIME)
 @Target({ ElementType.TYPE })
 public @interface FastInfoset {
+    /**
+     * Set to true in order for FastInfoset to be always used without negotiation
+     */
     boolean force() default false;
+
+    /**
+     * Sets the property <code>attributeValueMapMemoryLimit</code> on FastInfoset
StAX Serializers. The property
+     * controls attribute value map size and can be used to control the memory and (indirectly)
CPU footprint of
+     * processing.
+     */
+    int serializerAttributeValueMapMemoryLimit() default -1;
+
+    /**
+     * Sets the property <code>minAttributeValueSize</code> on FastInfoset StAX
Serializers. The property controls the
+     * <b>minimum</b> size of attribute values to be indexed.
+     */
+    int serializerMinAttributeValueSize() default -1;
+
+    /**
+     * Sets the property <code>maxAttributeValueSize</code> on FastInfoset StAX
Serializers. The property controls the
+     * <b>maximum</b> size of attribute values to be indexed. Tests have shown
that setting this property to lower
+     * values reduces CPU burden of processing, at the expense of larger sizes of resultant
encoded Fast Infoset data.
+     */
+    int serializerMaxAttributeValueSize() default -1;
+
+    /**
+     * Sets the property <code>characterContentChunkMapMemoryLimit</code> on
FastInfoset StAX Serializers. The property
+     * controls character content chunk map size and can be used to control the memory and
(indirectly) CPU footprint of
+     * processing.
+     */
+    int serializerCharacterContentChunkMapMemoryLimit() default -1;
+
+    /**
+     * Sets the property <code>minCharacterContentChunkSize</code> on FastInfoset
StAX Serializers. The property
+     * controls the <b>minimum</b> size of character content chunks to be indexed.
+     */
+    int serializerMinCharacterContentChunkSize() default -1;
+
+    /**
+     * Sets the property <code>maxCharacterContentChunkSize</code> on FastInfoset
StAX Serializers. The property
+     * controls the <b>maximum</b> size of character content chunks to be indexed.
Tests have shown that setting this
+     * property to lower values reduces CPU burden of processing, at the expense of larger
sizes of resultant encoded
+     * Fast Infoset data.
+     */
+    int serializerMaxCharacterContentChunkSize() default -1;
+    
 }
 

Modified: cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/feature/FastInfosetFeature.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/feature/FastInfosetFeature.java?rev=1463387&r1=1463386&r2=1463387&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/feature/FastInfosetFeature.java
(original)
+++ cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/feature/FastInfosetFeature.java
Tue Apr  2 05:15:24 2013
@@ -38,9 +38,15 @@ import org.apache.cxf.interceptor.Interc
  */
 @NoJSR250Annotations
 public class FastInfosetFeature extends AbstractFeature {
-    
+
     boolean force;
-    
+    private Integer serializerAttributeValueMapMemoryLimit;
+    private Integer serializerMinAttributeValueSize;
+    private Integer serializerMaxAttributeValueSize;
+    private Integer serializerCharacterContentChunkMapMemoryLimit;
+    private Integer serializerMinCharacterContentChunkSize;
+    private Integer serializerMaxCharacterContentChunkSize;
+
     public FastInfosetFeature() {
         //
     }
@@ -50,7 +56,29 @@ public class FastInfosetFeature extends 
     protected void initializeProvider(InterceptorProvider provider, Bus bus) {
         
         FIStaxInInterceptor in = new FIStaxInInterceptor();
+
         FIStaxOutInterceptor out = new FIStaxOutInterceptor(force);
+        if (serializerAttributeValueMapMemoryLimit != null && serializerAttributeValueMapMemoryLimit.intValue()
> 0) {
+            out.setSerializerAttributeValueMapMemoryLimit(serializerAttributeValueMapMemoryLimit.intValue());
+        }
+        if (serializerMinAttributeValueSize != null && serializerMinAttributeValueSize.intValue()
> 0) {
+            out.setSerializerMinAttributeValueSize(serializerMinAttributeValueSize.intValue());
+        }
+        if (serializerMaxAttributeValueSize != null && serializerMaxAttributeValueSize.intValue()
> 0) {
+            out.setSerializerMaxAttributeValueSize(serializerMaxAttributeValueSize.intValue());
+        }
+        if (serializerCharacterContentChunkMapMemoryLimit != null
+                && serializerCharacterContentChunkMapMemoryLimit.intValue() >
0) {
+            out.setSerializerCharacterContentChunkMapMemoryLimit(
+                    serializerCharacterContentChunkMapMemoryLimit.intValue());
+        }
+        if (serializerMinCharacterContentChunkSize != null && serializerMinCharacterContentChunkSize.intValue()
> 0) {
+            out.setSerializerMinCharacterContentChunkSize(serializerMinCharacterContentChunkSize.intValue());
+        }
+        if (serializerMaxCharacterContentChunkSize != null && serializerMaxCharacterContentChunkSize.intValue()
> 0) {
+            out.setSerializerMaxCharacterContentChunkSize(serializerMaxCharacterContentChunkSize.intValue());
+        }
+        
         provider.getInInterceptors().add(in);
         provider.getInFaultInterceptors().add(in);
         provider.getOutInterceptors().add(out);

Modified: cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/interceptor/FIStaxOutInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/interceptor/FIStaxOutInterceptor.java?rev=1463387&r1=1463386&r2=1463387&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/interceptor/FIStaxOutInterceptor.java
(original)
+++ cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/interceptor/FIStaxOutInterceptor.java
Tue Apr  2 05:15:24 2013
@@ -24,12 +24,15 @@ import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamWriter;
 
 import com.sun.xml.fastinfoset.stax.StAXDocumentSerializer;
 
+import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.message.MessageUtils;
@@ -42,11 +45,19 @@ import org.apache.cxf.phase.Phase;
  */
 public class FIStaxOutInterceptor extends AbstractPhaseInterceptor<Message> {
     public static final String FI_ENABLED = "org.apache.cxf.fastinfoset.enabled";
+
+    private static final Logger LOG = LogUtils.getL7dLogger(FIStaxOutInterceptor.class);
     private static final String OUTPUT_STREAM_HOLDER = FIStaxOutInterceptor.class.getName()
+ ".outputstream";
     private static final StaxOutEndingInterceptor ENDING = new StaxOutEndingInterceptor(OUTPUT_STREAM_HOLDER);
 
     boolean force;
-    
+    private Integer serializerAttributeValueMapMemoryLimit;
+    private Integer serializerMinAttributeValueSize;
+    private Integer serializerMaxAttributeValueSize;
+    private Integer serializerCharacterContentChunkMapMemoryLimit;
+    private Integer serializerMinCharacterContentChunkSize;
+    private Integer serializerMaxCharacterContentChunkSize;
+
     public FIStaxOutInterceptor() {
         super(Phase.PRE_STREAM);
         addAfter(AttachmentOutInterceptor.class.getName());
@@ -138,8 +149,140 @@ public class FIStaxOutInterceptor extend
         }
         return serializer;
         */
-        return new StAXDocumentSerializer(out);
+        final StAXDocumentSerializer stAXDocumentSerializer = new StAXDocumentSerializer(out);
+        if (serializerAttributeValueMapMemoryLimit != null && serializerAttributeValueMapMemoryLimit.intValue()
> 0) {
+            stAXDocumentSerializer.setAttributeValueMapMemoryLimit(serializerAttributeValueMapMemoryLimit.intValue());
+        }
+        if (serializerMinAttributeValueSize != null && serializerMinAttributeValueSize.intValue()
> 0) {
+            stAXDocumentSerializer.setMinAttributeValueSize(serializerMinAttributeValueSize.intValue());
+        }
+        if (serializerMaxAttributeValueSize != null && serializerMaxAttributeValueSize.intValue()
> 0) {
+            stAXDocumentSerializer.setMaxAttributeValueSize(serializerMaxAttributeValueSize.intValue());
+        }
+        if (serializerCharacterContentChunkMapMemoryLimit != null
+                && serializerCharacterContentChunkMapMemoryLimit.intValue() >
0) {
+            stAXDocumentSerializer
+                    .setCharacterContentChunkMapMemoryLimit(serializerCharacterContentChunkMapMemoryLimit.intValue());
+        }
+        if (serializerMinCharacterContentChunkSize != null && serializerMinCharacterContentChunkSize.intValue()
> 0) {
+            stAXDocumentSerializer.setMinCharacterContentChunkSize(serializerMinCharacterContentChunkSize.intValue());
+        }
+        if (serializerMaxCharacterContentChunkSize != null && serializerMaxCharacterContentChunkSize.intValue()
> 0) {
+            stAXDocumentSerializer.setMaxCharacterContentChunkSize(serializerMaxCharacterContentChunkSize.intValue());
+        }
+        return stAXDocumentSerializer;
+    }
+
+    public Integer getSerializerMinAttributeValueSize() {
+        return serializerMinAttributeValueSize;
+    }
+
+    /**
+     * Sets the property <code>minAttributeValueSize</code> on FastInfoset StAX
Serializers created and used
+     * by this interceptor. The property controls the <b>minimum</b> size of
attribute values to be indexed.
+     *
+     * @param serializerMinAttributeValueSize
+     *         The <b>minimum</b> size for attribute values to be indexed,
+     *         measured as a number of characters. The default is typically 0.
+     */
+    public void setSerializerMinAttributeValueSize(Integer serializerMinAttributeValueSize)
{
+        logSetter("serializerMinAttributeValueSize", serializerMinAttributeValueSize);
+        this.serializerMinAttributeValueSize = serializerMinAttributeValueSize;
+    }
+
+    public Integer getSerializerMaxAttributeValueSize() {
+        return serializerMaxAttributeValueSize;
+    }
+
+    /**
+     * Sets the property <code>maxAttributeValueSize</code> on FastInfoset StAX
Serializers created and used
+     * by this interceptor. The property controls the <b>maximum</b> size of
attribute values to be indexed.
+     * Tests have shown that setting this property to lower values reduces CPU burden of
processing, at the expense
+     * of larger sizes of resultant encoded Fast Infoset data.
+     *
+     * @param serializerMaxAttributeValueSize
+     *         The <b>maximum</b> size for attribute values to be indexed,
+     *         measured as a number of characters. The default is typically 32.
+     */
+    public void setSerializerMaxAttributeValueSize(Integer serializerMaxAttributeValueSize)
{
+        logSetter("serializerMaxAttributeValueSize", serializerMaxAttributeValueSize);
+        this.serializerMaxAttributeValueSize = serializerMaxAttributeValueSize;
     }
-        
 
+    public Integer getSerializerCharacterContentChunkMapMemoryLimit() {
+        return serializerCharacterContentChunkMapMemoryLimit;
+    }
+
+    /**
+     * Sets the property <code>characterContentChunkMapMemoryLimit</code> on
FastInfoset StAX Serializers created and
+     * used by this interceptor. The property controls character content chunk map size and
can be used to control the
+     * memory and (indirectly) CPU footprint of processing.
+     *
+     * @param serializerCharacterContentChunkMapMemoryLimit
+     *         The value for the limit, measured as a number of Unicode characters.
+     */
+    public void setSerializerCharacterContentChunkMapMemoryLimit(
+            Integer serializerCharacterContentChunkMapMemoryLimit) {
+        logSetter("serializerCharacterContentChunkMapMemoryLimit", serializerCharacterContentChunkMapMemoryLimit);
+        this.serializerCharacterContentChunkMapMemoryLimit = serializerCharacterContentChunkMapMemoryLimit;
+    }
+
+    public Integer getSerializerMinCharacterContentChunkSize() {
+        return serializerMinCharacterContentChunkSize;
+    }
+
+    /**
+     * Sets the property <code>minCharacterContentChunkSize</code> on FastInfoset
StAX Serializers created and used
+     * by this interceptor. The property controls the <b>minimum</b> size of
character content chunks to be indexed.
+     *
+     * @param serializerMinCharacterContentChunkSize
+     *         The <b>minimum</b> size for character content chunks to be indexed,
+     *         measured as a number of characters. The default is typically 0.
+     */
+    public void setSerializerMinCharacterContentChunkSize(Integer serializerMinCharacterContentChunkSize)
{
+        logSetter("serializerMinCharacterContentChunkSize", serializerMinCharacterContentChunkSize);
+        this.serializerMinCharacterContentChunkSize = serializerMinCharacterContentChunkSize;
+    }
+
+    public Integer getSerializerMaxCharacterContentChunkSize() {
+        return serializerMaxCharacterContentChunkSize;
+    }
+
+    /**
+     * Sets the property <code>maxCharacterContentChunkSize</code> on FastInfoset
StAX Serializers created and used
+     * by this interceptor. The property controls the <b>maximum</b> size of
character content chunks to be indexed.
+     * Tests have shown that setting this property to lower values reduces CPU burden of
processing, at the expense
+     * of larger sizes of resultant encoded Fast Infoset data.
+     *
+     * @param serializerMaxCharacterContentChunkSize
+     *         The <b>maximum</b> size for character content chunks to be indexed,
+     *         measured as a number of characters. The default is typically 32.
+     */
+    public void setSerializerMaxCharacterContentChunkSize(Integer serializerMaxCharacterContentChunkSize)
{
+        logSetter("serializerMaxCharacterContentChunkSize", serializerMaxCharacterContentChunkSize);
+        this.serializerMaxCharacterContentChunkSize = serializerMaxCharacterContentChunkSize;
+    }
+
+    public Integer getSerializerAttributeValueMapMemoryLimit() {
+        return serializerAttributeValueMapMemoryLimit;
+    }
+
+    /**
+     * Sets the property <code>attributeValueMapMemoryLimit</code> on FastInfoset
StAX Serializers created and used
+     * by this interceptor. The property controls attribute value map size and can be used
to control
+     * the memory and (indirectly) CPU footprint of processing.
+     *
+     * @param serializerAttributeValueMapMemoryLimit
+     *         The value for the limit, measured as a number of Unicode characters.
+     */
+    public void setSerializerAttributeValueMapMemoryLimit(Integer serializerAttributeValueMapMemoryLimit)
{
+        logSetter("serializerAttributeValueMapMemoryLimit", serializerAttributeValueMapMemoryLimit);
+        this.serializerAttributeValueMapMemoryLimit = serializerAttributeValueMapMemoryLimit;
+    }
+
+    private void logSetter(String propertyName, Object propertyValue) {
+        if (LOG.isLoggable(Level.CONFIG)) {
+            LOG.config("Setting " + propertyName + " to " + propertyValue);
+        }
+    }
 }

Modified: cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/service/factory/AnnotationsFactoryBeanListener.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/service/factory/AnnotationsFactoryBeanListener.java?rev=1463387&r1=1463386&r2=1463387&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/service/factory/AnnotationsFactoryBeanListener.java
(original)
+++ cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/service/factory/AnnotationsFactoryBeanListener.java
Tue Apr  2 05:15:24 2013
@@ -276,7 +276,16 @@ public class AnnotationsFactoryBeanListe
     private void addFastInfosetSupport(InterceptorProvider provider, FastInfoset annotation)
{
         if (annotation != null) {
             FIStaxInInterceptor in = new FIStaxInInterceptor();
+
             FIStaxOutInterceptor out = new FIStaxOutInterceptor(annotation.force());
+            out.setSerializerAttributeValueMapMemoryLimit(annotation.serializerAttributeValueMapMemoryLimit());
+            out.setSerializerMinAttributeValueSize(annotation.serializerMinAttributeValueSize());
+            out.setSerializerMaxAttributeValueSize(annotation.serializerMaxAttributeValueSize());
+            out.setSerializerCharacterContentChunkMapMemoryLimit(
+                    annotation.serializerCharacterContentChunkMapMemoryLimit());
+            out.setSerializerMinCharacterContentChunkSize(annotation.serializerMinCharacterContentChunkSize());
+            out.setSerializerMaxCharacterContentChunkSize(annotation.serializerMaxCharacterContentChunkSize());
+
             provider.getInInterceptors().add(in);
             provider.getInFaultInterceptors().add(in);
             provider.getOutInterceptors().add(out);



Mime
View raw message