cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dk...@apache.org
Subject svn commit: r641581 - in /incubator/cxf/trunk: rt/core/src/main/java/org/apache/cxf/bus/spring/ rt/core/src/main/java/org/apache/cxf/feature/ rt/core/src/main/java/org/apache/cxf/interceptor/ rt/core/src/main/resources/schemas/ rt/databinding/jaxb/src/...
Date Wed, 26 Mar 2008 21:23:41 GMT
Author: dkulp
Date: Wed Mar 26 14:23:40 2008
New Revision: 641581

URL: http://svn.apache.org/viewvc?rev=641581&view=rev
Log:
Add a new "FastInfoset" feature that will turn on fastinfoset negotiation and usage for more
efficient on the wire transmissions.
(tested interop with the JAX-WS RI to make sure it works)

Added:
    incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/feature/FastInfosetFeature.java
  (with props)
    incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/FIStaxInInterceptor.java
  (with props)
    incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/FIStaxOutInterceptor.java
  (with props)
Modified:
    incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/NamespaceHandler.java
    incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/StaxOutInterceptor.java
    incubator/cxf/trunk/rt/core/src/main/resources/schemas/core.xsd
    incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBContextInitializer.java
    incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerMiscTest.java
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstService.java
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstServiceImpl.java

Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/NamespaceHandler.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/NamespaceHandler.java?rev=641581&r1=641580&r2=641581&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/NamespaceHandler.java
(original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/NamespaceHandler.java
Wed Mar 26 14:23:40 2008
@@ -19,6 +19,7 @@
 package org.apache.cxf.bus.spring;
 
 import org.apache.cxf.configuration.spring.SimpleBeanDefinitionParser;
+import org.apache.cxf.feature.FastInfosetFeature;
 import org.apache.cxf.feature.LoggingFeature;
 import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
 
@@ -28,5 +29,7 @@
                                      new BusDefinitionParser());
         registerBeanDefinitionParser("logging",
                                      new SimpleBeanDefinitionParser(LoggingFeature.class));
+        registerBeanDefinitionParser("fastinfoset",
+                                     new SimpleBeanDefinitionParser(FastInfosetFeature.class));
     }
 }

Added: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/feature/FastInfosetFeature.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/feature/FastInfosetFeature.java?rev=641581&view=auto
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/feature/FastInfosetFeature.java
(added)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/feature/FastInfosetFeature.java
Wed Mar 26 14:23:40 2008
@@ -0,0 +1,73 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.feature;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.interceptor.FIStaxInInterceptor;
+import org.apache.cxf.interceptor.FIStaxOutInterceptor;
+import org.apache.cxf.interceptor.InterceptorProvider;
+//import org.apache.cxf.interceptor.FIStaxInInterceptor;
+
+/**
+ * <pre>
+ * <![CDATA[
+    <jaxws:endpoint ...>
+      <jaxws:features>
+       <bean class="org.apache.cxf.feature.FastInfosetFeature"/>
+      </jaxws:features>
+    </jaxws:endpoint>
+  ]]>
+  </pre>
+ */
+public class FastInfosetFeature extends AbstractFeature {
+    
+    boolean force;
+    
+    public FastInfosetFeature() {
+        //
+    }
+    
+    
+    @Override
+    protected void initializeProvider(InterceptorProvider provider, Bus bus) {
+        
+        FIStaxInInterceptor in = new FIStaxInInterceptor();
+        FIStaxOutInterceptor out = new FIStaxOutInterceptor(force);
+        provider.getInInterceptors().add(in);
+        provider.getInFaultInterceptors().add(in);
+        provider.getOutInterceptors().add(out);
+        provider.getOutFaultInterceptors().add(out);
+    }
+
+    /**
+     * Set if FastInfoset is always used without negotiation 
+     * @param b
+     */
+    public void setForce(boolean b) {
+        force = b;
+    }
+    
+    /**
+     * Retrieve the value set with {@link #setLimit(int)}.
+     * @return
+     */
+    public boolean getForce() {
+        return force;
+    }    
+}

Propchange: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/feature/FastInfosetFeature.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/feature/FastInfosetFeature.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/FIStaxInInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/FIStaxInInterceptor.java?rev=641581&view=auto
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/FIStaxInInterceptor.java
(added)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/FIStaxInInterceptor.java
Wed Mar 26 14:23:40 2008
@@ -0,0 +1,74 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.interceptor;
+
+
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+
+import com.sun.xml.fastinfoset.stax.factory.StAXInputFactory;
+
+import org.apache.cxf.endpoint.Endpoint;
+import org.apache.cxf.message.Message;
+import org.apache.cxf.phase.AbstractPhaseInterceptor;
+import org.apache.cxf.phase.Phase;
+
+/**
+ * Creates an XMLStreamReader from the InputStream on the Message.
+ */
+public class FIStaxInInterceptor extends AbstractPhaseInterceptor<Message> {
+    XMLInputFactory factory = new StAXInputFactory();
+
+    public FIStaxInInterceptor() {
+        this(Phase.POST_STREAM);
+    }
+    public FIStaxInInterceptor(String phase) {
+        super(phase);
+        addBefore(StaxInInterceptor.class.getName());
+    }
+    protected boolean isRequestor(Message message) {
+        return Boolean.TRUE.equals(message.containsKey(Message.REQUESTOR_ROLE));
+    }
+
+    public void handleMessage(Message message) {
+        if (isGET(message) || message.getContentFormats().contains(XMLStreamReader.class))
{
+            return;
+        }
+
+        String ct = (String)message.get(Message.CONTENT_TYPE);
+        if (ct != null && ct.indexOf("fastinfoset") != -1) {
+            message.put(XMLInputFactory.class.getName(), factory);
+            ct = ct.replace("fastinfoset", "xml");
+            if (ct.contains("application/xml")) {
+                ct = ct.replace("application/xml", "text/xml"); 
+            }
+            message.put(Message.CONTENT_TYPE, ct);
+            
+            message.getExchange().put(FIStaxOutInterceptor.FI_ENABLED, Boolean.TRUE);
+            if (isRequestor(message)) {
+                //record the fact that is worked so future requests will 
+                //automatically be FI enabled
+                Endpoint ep = message.getExchange().get(Endpoint.class);
+                ep.put(FIStaxOutInterceptor.FI_ENABLED, Boolean.TRUE);
+            }
+        }
+    }
+}

Propchange: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/FIStaxInInterceptor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/FIStaxInInterceptor.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/FIStaxOutInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/FIStaxOutInterceptor.java?rev=641581&view=auto
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/FIStaxOutInterceptor.java
(added)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/FIStaxOutInterceptor.java
Wed Mar 26 14:23:40 2008
@@ -0,0 +1,106 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.interceptor;
+
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamWriter;
+
+import com.sun.xml.fastinfoset.stax.factory.StAXOutputFactory;
+
+import org.apache.cxf.helpers.CastUtils;
+import org.apache.cxf.message.Message;
+import org.apache.cxf.phase.AbstractPhaseInterceptor;
+import org.apache.cxf.phase.Phase;
+
+
+/**
+ * Creates an XMLStreamReader from the InputStream on the Message.
+ */
+public class FIStaxOutInterceptor extends AbstractPhaseInterceptor<Message> {
+    public static final String FI_ENABLED = "org.apache.cxf.fastinfoset.enabled";
+    
+    boolean force;
+    XMLOutputFactory factory = new StAXOutputFactory();
+    
+    public FIStaxOutInterceptor() {
+        super(Phase.PRE_STREAM);
+        addAfter(AttachmentOutInterceptor.class.getName());
+        addBefore(StaxOutInterceptor.class.getName());
+    }
+    public FIStaxOutInterceptor(boolean f) {
+        this();
+        force = f;
+    }
+    protected boolean isRequestor(Message message) {
+        return Boolean.TRUE.equals(message.containsKey(Message.REQUESTOR_ROLE));
+    }
+    
+    
+    public void handleMessage(Message message) {
+        XMLStreamWriter writer = message.getContent(XMLStreamWriter.class);
+        if (writer != null) {
+            return;
+        }
+        boolean req = isRequestor(message);
+        Object o = message.getContextualProperty(FI_ENABLED);
+        if (!req) {
+            if (message.getExchange().getInMessage() != null) {
+                //check incoming accept header
+                String s = (String)message.getExchange().getInMessage().get(Message.ACCEPT_CONTENT_TYPE);
+                if (s != null && s.contains("fastinfoset")) {
+                    o = Boolean.TRUE;
+                }
+            }
+        } else {
+            Map<String, List<String>> headers 
+                = CastUtils.cast((Map<?, ?>)message.get(Message.PROTOCOL_HEADERS));
+            List<String> accepts = headers.get("Accept");
+            if (accepts == null) {
+                accepts = new ArrayList<String>();
+                headers.put("Accept", accepts);
+            }
+            String a = "application/fastinfoset";
+            if (!accepts.isEmpty()) {
+                a += ", " + accepts.get(0);
+            }
+            accepts.set(0, a);
+        }
+            
+        if (force 
+            || Boolean.TRUE.equals(o)) {
+            
+            message.put(XMLOutputFactory.class.getName(),
+                        factory);
+            String s = (String)message.get(Message.CONTENT_TYPE);
+            if (s.contains("application/soap+xml")) {
+                s = s.replace("application/soap+xml", "application/soap+fastinfoset");
+                message.put(Message.CONTENT_TYPE, s);
+            } else {
+                message.put(Message.CONTENT_TYPE, "application/fastinfoset");
+            }
+        }
+    }
+
+}

Propchange: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/FIStaxOutInterceptor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/FIStaxOutInterceptor.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/StaxOutInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/StaxOutInterceptor.java?rev=641581&r1=641580&r2=641581&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/StaxOutInterceptor.java
(original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/StaxOutInterceptor.java
Wed Mar 26 14:23:40 2008
@@ -41,6 +41,8 @@
  * Creates an XMLStreamReader from the InputStream on the Message.
  */
 public class StaxOutInterceptor extends AbstractPhaseInterceptor<Message> {
+    public static final String FORCE_START_DOCUMENT = "org.apache.cxf.stax.force-start-document";
+    
     private static final ResourceBundle BUNDLE = BundleUtils.getBundle(StaxOutInterceptor.class);
     private static Map<Object, XMLOutputFactory> factories = new HashMap<Object,
XMLOutputFactory>();
 
@@ -64,6 +66,9 @@
         
         try {
             writer = getXMLOutputFactory(message).createXMLStreamWriter(os, encoding);
+            if (Boolean.TRUE.equals(message.getContextualProperty(FORCE_START_DOCUMENT)))
{
+                writer.writeStartDocument(encoding);
+            }
         } catch (XMLStreamException e) {
             throw new Fault(new org.apache.cxf.common.i18n.Message("STREAM_CREATE_EXC", BUNDLE),
e);
         }
@@ -91,6 +96,9 @@
     public static XMLOutputFactory getXMLOutputFactory(Message m) throws Fault {
         Object o = m.getContextualProperty(XMLOutputFactory.class.getName());
         if (o instanceof XMLOutputFactory) {
+            m.put(AbstractOutDatabindingInterceptor.DISABLE_OUTPUTSTREAM_OPTIMIZATION,
+                        Boolean.TRUE);
+            m.put(FORCE_START_DOCUMENT, Boolean.TRUE);
             return (XMLOutputFactory)o;
         } else if (o != null) {
             XMLOutputFactory xif = (XMLOutputFactory)factories.get(o);
@@ -118,6 +126,9 @@
                     throw new Fault(e);
                 }
             }
+            m.put(AbstractOutDatabindingInterceptor.DISABLE_OUTPUTSTREAM_OPTIMIZATION,
+                  Boolean.TRUE);
+            m.put(FORCE_START_DOCUMENT, Boolean.TRUE);
             return xif;
         } else {
             return StaxUtils.getXMLOutputFactory();

Modified: incubator/cxf/trunk/rt/core/src/main/resources/schemas/core.xsd
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/resources/schemas/core.xsd?rev=641581&r1=641580&r2=641581&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/resources/schemas/core.xsd (original)
+++ incubator/cxf/trunk/rt/core/src/main/resources/schemas/core.xsd Wed Mar 26 14:23:40 2008
@@ -48,6 +48,18 @@
       <xsd:attribute name="limit" type="xsd:int" use="optional" default="102400"/>
     </xsd:complexType>
   </xsd:element>
+  <xsd:element name="fastinfoset">
+    <xsd:annotation>
+      <xsd:documentation>
+        The fastinfoset feature enables you to turn on using fastinfoset encoding of 
+        xml payloads.   
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:sequence />
+      <xsd:attribute name="force" type="xsd:boolean" use="optional" default="false"/>
+    </xsd:complexType>
+  </xsd:element>
   
   <xsd:element name="bus">
     <xsd:complexType>

Modified: incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBContextInitializer.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBContextInitializer.java?rev=641581&r1=641580&r2=641581&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBContextInitializer.java
(original)
+++ incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBContextInitializer.java
Wed Mar 26 14:23:40 2008
@@ -296,7 +296,9 @@
             && !Modifier.isPublic(field.getModifiers())) {
             return false;
         }
-
+        if (field.getAnnotation(XmlJavaTypeAdapter.class) != null) {
+            return false;
+        }
         if (accessType == XmlAccessType.NONE
             || accessType == XmlAccessType.PROPERTY) {
             return checkJaxbAnnotation(field.getAnnotations());
@@ -325,7 +327,8 @@
 
         boolean isPropGetter = method.getName().startsWith("get") || method.getName().startsWith("is");
 
-        if (!isPropGetter) {
+        if (!isPropGetter 
+            || method.getAnnotation(XmlJavaTypeAdapter.class) != null) {
             return false;
         }
         int beginIndex = 3;

Modified: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java?rev=641581&r1=641580&r2=641581&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java
(original)
+++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java
Wed Mar 26 14:23:40 2008
@@ -137,7 +137,10 @@
         
         if (serviceBean != null) {
             initializeAnnotationInterceptors(server.getEndpoint(), this.getServiceBean().getClass());
+        } else if (getServiceClass() != null) {
+            initializeAnnotationInterceptors(server.getEndpoint(), getServiceClass());
         }
+        
         
         applyFeatures();
         return server;

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerMiscTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerMiscTest.java?rev=641581&r1=641580&r2=641581&view=diff
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerMiscTest.java
(original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerMiscTest.java
Wed Mar 26 14:23:40 2008
@@ -59,7 +59,7 @@
 
     @BeforeClass
     public static void startServers() throws Exception {
-        assertTrue("server did not launch correctly", launchServer(ServerMisc.class));
+        assertTrue("server did not launch correctly", launchServer(ServerMisc.class, true));
     }
     
     @Test

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstService.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstService.java?rev=641581&r1=641580&r2=641581&view=diff
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstService.java
(original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstService.java
Wed Mar 26 14:23:40 2008
@@ -31,6 +31,7 @@
 import javax.xml.ws.RequestWrapper;
 import javax.xml.ws.ResponseWrapper;
 
+import org.apache.cxf.feature.Features;
 import org.apache.cxf.message.Exchange;
 import org.apache.cxf.systest.jaxws.types.Bar;
 
@@ -38,6 +39,7 @@
             targetNamespace = "http://cxf.apache.org/systest/jaxws/DocLitWrappedCodeFirstService")
 @SOAPBinding(style = SOAPBinding.Style.DOCUMENT,
              use = SOAPBinding.Use.LITERAL)
+@Features(features = { "org.apache.cxf.feature.FastInfosetFeature" })
 public interface DocLitWrappedCodeFirstService {
 
     @WebMethod

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstServiceImpl.java?rev=641581&r1=641580&r2=641581&view=diff
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstServiceImpl.java
(original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstServiceImpl.java
Wed Mar 26 14:23:40 2008
@@ -27,6 +27,7 @@
 import javax.xml.ws.Holder;
 import javax.xml.ws.WebServiceContext;
 
+import org.apache.cxf.feature.Features;
 import org.apache.cxf.message.Exchange;
 import org.apache.cxf.systest.jaxws.types.Bar;
 import org.apache.cxf.systest.jaxws.types.BarImpl;
@@ -35,6 +36,7 @@
             serviceName = "DocLitWrappedCodeFirstService",
             portName = "DocLitWrappedCodeFirstServicePort",
             targetNamespace = "http://cxf.apache.org/systest/jaxws/DocLitWrappedCodeFirstService")
+@Features(features = { "org.apache.cxf.feature.FastInfosetFeature" })
 public class DocLitWrappedCodeFirstServiceImpl implements DocLitWrappedCodeFirstService {
     public static final String DATA[] = new String[] {"string1", "string2", "string3"};
     



Mime
View raw message