cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bimargul...@apache.org
Subject svn commit: r598856 - in /incubator/cxf/trunk: rt/core/src/main/java/org/apache/cxf/databinding/source/ rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/ rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/ rt/databindi...
Date Wed, 28 Nov 2007 03:05:13 GMT
Author: bimargulies
Date: Tue Nov 27 19:05:10 2007
New Revision: 598856

URL: http://svn.apache.org/viewvc?rev=598856&view=rev
Log:
Set up namespace control conveniently for JAXB. The JAXBDataBinding now 
has a property, just like Aegis, that provides a map from URI to prefix.
This is used by JAXB on the wire. Those users who want to tweak namespace
prefixes are now good to go.


Added:
    incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/fortest/QualifiedBean.java
Modified:
    incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/AbstractDataBinding.java
    incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java
    incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java
    incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java
    incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/JAXBDataBindingTest.java
    incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/JAXBEncoderDecoderTest.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/SpringBeansTest.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/servers.xml
    incubator/cxf/trunk/testutils/src/main/java/org/apache/hello_world_soap_http/GreeterImpl.java

Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/AbstractDataBinding.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/AbstractDataBinding.java?rev=598856&r1=598855&r2=598856&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/AbstractDataBinding.java
(original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/AbstractDataBinding.java
Tue Nov 27 19:05:10 2007
@@ -20,6 +20,9 @@
 package org.apache.cxf.databinding.source;
 
 import java.util.Collection;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
 
 import javax.xml.transform.dom.DOMSource;
 
@@ -36,6 +39,7 @@
 
 public class AbstractDataBinding {
     private Collection<DOMSource> schemas;
+    private Map<String, String> namespaceMap;
 
     public Collection<DOMSource> getSchemas() {
         return schemas;
@@ -69,5 +73,48 @@
         schema.setSchema(xmlSchema);
         serviceInfo.addSchema(schema);
         return xmlSchema;
+    }
+    
+    /**
+      * @return Returns the namespaceMap.
+     */
+    public Map<String, String> getNamespaceMap() {
+        return namespaceMap;
+    }
+
+    /**
+     * @param namespaceMap The namespaceMap to set.
+     */
+    public void setNamespaceMap(Map<String, String> namespaceMap) {
+        // make some checks. This is a map from namespace to prefix, but we want unique prefixes.
+        if (namespaceMap != null) {
+            Set<String> prefixesSoFar = new HashSet<String>();
+            for (Map.Entry<String, String> mapping : namespaceMap.entrySet()) {
+                if (prefixesSoFar.contains(mapping.getValue())) {
+                    throw new IllegalArgumentException("Duplicate prefix " + mapping.getValue());
+                }
+            }
+        }
+        this.namespaceMap = namespaceMap;
+    }
+
+    /** 
+     * Provide explicit mappings to ReflectionServiceFactory.
+     * {@inheritDoc}
+     * */
+    public Map<String, String> getDeclaredNamespaceMappings() {
+        return this.namespaceMap;
+    }
+
+    protected static void checkNamespaceMap(Map<String, String> namespaceMap) {
+        // make some checks. This is a map from namespace to prefix, but we want unique prefixes.
+        if (namespaceMap != null) {
+            Set<String> prefixesSoFar = new HashSet<String>();
+            for (Map.Entry<String, String> mapping : namespaceMap.entrySet()) {
+                if (prefixesSoFar.contains(mapping.getValue())) {
+                    throw new IllegalArgumentException("Duplicate prefix " + mapping.getValue());
+                }
+            }
+        }
     }
 }

Modified: incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java?rev=598856&r1=598855&r2=598856&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java
(original)
+++ incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java
Tue Nov 27 19:05:10 2007
@@ -92,8 +92,6 @@
     private Map<MessagePartInfo, Type> part2Type;
     private List overrideTypes;
     private Service service;
-    // allow applications to express an opinion about the namespace prefixes.
-    private Map<String, String> namespaceMap;
     
     public AegisDatabinding() {
         super();
@@ -318,6 +316,8 @@
             }
         }
 
+        Map<String, String> namespaceMap = getDeclaredNamespaceMappings();
+        
         for (Map.Entry<String, Set<Type>> entry : tns2Type.entrySet()) {
             String xsdPrefix = SOAPConstants.XSD_PREFIX;
             if (namespaceMap != null && namespaceMap.containsKey(SOAPConstants.XSD))
{
@@ -474,37 +474,6 @@
 
     public Service getService() {
         return service;
-    }
-
-    /**
-      * @return Returns the namespaceMap.
-     */
-    public Map<String, String> getNamespaceMap() {
-        return namespaceMap;
-    }
-
-    /**
-     * @param namespaceMap The namespaceMap to set.
-     */
-    public void setNamespaceMap(Map<String, String> namespaceMap) {
-        // make some checks. This is a map from namespace to prefix, but we want unique prefixes.
-        if (namespaceMap != null) {
-            Set<String> prefixesSoFar = new HashSet<String>();
-            for (Map.Entry<String, String> mapping : namespaceMap.entrySet()) {
-                if (prefixesSoFar.contains(mapping.getValue())) {
-                    throw new IllegalArgumentException("Duplicate prefix " + mapping.getValue());
-                }
-            }
-        }
-        this.namespaceMap = namespaceMap;
-    }
-
-    /** 
-     * Provide explicit mappings to ReflectionServiceFactory.
-     * {@inheritDoc}
-     * */
-    public Map<String, String> getDeclaredNamespaceMappings() {
-        return this.namespaceMap;
     }
 
     /** 

Modified: incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java?rev=598856&r1=598855&r2=598856&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java
(original)
+++ incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java
Tue Nov 27 19:05:10 2007
@@ -57,6 +57,7 @@
 import org.apache.cxf.Bus;
 import org.apache.cxf.bus.CXFBusFactory;
 import org.apache.cxf.common.i18n.Message;
+import org.apache.cxf.common.i18n.UncheckedException;
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.common.util.StringUtils;
 import org.apache.cxf.endpoint.Client;
@@ -379,9 +380,8 @@
                                 classPath.addFileset(fs);
                             }
                         } catch (URISyntaxException e) {
-                            // TODO Auto-generated catch block
-                            e.printStackTrace();
-                        } 
+                            throw new UncheckedException(e);
+                        }
                     }
                 }
             }

Modified: incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java?rev=598856&r1=598855&r2=598856&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java
(original)
+++ incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java
Tue Nov 27 19:05:10 2007
@@ -52,6 +52,7 @@
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
 
+import com.sun.xml.bind.marshaller.NamespacePrefixMapper;
 import com.sun.xml.bind.v2.ContextFactory;
 import com.sun.xml.bind.v2.runtime.JAXBContextImpl;
 
@@ -124,17 +125,46 @@
         context = ctx;
     }    
     
+    private NamespacePrefixMapper getNamespacePrefixMapper() {
+        Map<String, String> mappings = getDeclaredNamespaceMappings();
+        if (mappings == null) {
+            mappings = Collections.emptyMap();
+        }
+        
+        final Map<String, String> closedMappings = mappings;
+        
+        NamespacePrefixMapper mapper = new NamespacePrefixMapper() {
+            @Override
+            public String getPreferredPrefix(String namespaceUri, String suggestion, boolean
requirePrefix) {
+                String prefix = closedMappings.get(namespaceUri);
+                if (prefix != null) {
+                    return prefix;
+                }
+                return suggestion;
+            } 
+        };
+        return mapper;
+    }
+
+
     @SuppressWarnings("unchecked")
     public <T> DataWriter<T> createWriter(Class<T> c) {
+        Map<String, Object> currentMarshallerProperties = new HashMap<String, Object>();
+        if (!marshallerProperties.containsKey("com.sun.xml.bind.namespacePrefixMapper"))
{
+            currentMarshallerProperties.put("com.sun.xml.bind.namespacePrefixMapper",
+                                            getNamespacePrefixMapper());
+        }
+        currentMarshallerProperties.putAll(marshallerProperties);
         if (c == XMLStreamWriter.class) {
-            return (DataWriter<T>)new DataWriterImpl<XMLStreamWriter>(context,
marshallerProperties);
+            return (DataWriter<T>)new DataWriterImpl<XMLStreamWriter>(context,
currentMarshallerProperties);
         } else if (c == OutputStream.class) {
-            return (DataWriter<T>)new DataWriterImpl<OutputStream>(context, marshallerProperties);
           
+            return (DataWriter<T>)new DataWriterImpl<OutputStream>(context, 
+                currentMarshallerProperties);            
         } else if (c == XMLEventWriter.class) {
             return (DataWriter<T>)new DataWriterImpl<XMLEventWriter>(context,
-                                                                     marshallerProperties);
          
+                                                                     currentMarshallerProperties);
          
         } else if (c == Node.class) {
-            return (DataWriter<T>)new DataWriterImpl<Node>(context, marshallerProperties);
     
+            return (DataWriter<T>)new DataWriterImpl<Node>(context, currentMarshallerProperties);
     
         }
         
         return null;
@@ -427,14 +457,6 @@
             
         }
         return added;
-    }
-
-    /**
-     * Jaxb has no declared namespace prefixes.
-     * {@inheritDoc}
-     */
-    public Map<String, String> getDeclaredNamespaceMappings() {
-        return null;
     }
 
     /**

Modified: incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/JAXBDataBindingTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/JAXBDataBindingTest.java?rev=598856&r1=598855&r2=598856&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/JAXBDataBindingTest.java
(original)
+++ incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/JAXBDataBindingTest.java
Tue Nov 27 19:05:10 2007
@@ -52,6 +52,7 @@
 import org.apache.cxf.databinding.DataReader;
 import org.apache.cxf.databinding.DataWriter;
 import org.apache.cxf.helpers.CastUtils;
+import org.apache.cxf.jaxb.fortest.QualifiedBean;
 import org.apache.cxf.jaxb.fortest.unqualified.UnqualifiedBean;
 import org.apache.cxf.jaxb.io.DataReaderImpl;
 import org.apache.cxf.jaxb.io.DataWriterImpl;
@@ -220,4 +221,27 @@
         assertTrue(xml.contains("uri:ultima:thule"));
     }
     
+    @Test
+    public void testDeclaredNamespaceMapping() throws Exception {
+        JAXBDataBinding db = new JAXBDataBinding();
+        Map<String, String> nsMap = new HashMap<String, String>();
+        nsMap.put("uri:ultima:thule", "greenland");
+        db.setNamespaceMap(nsMap);
+        Map<String, Object> contextProperties = new HashMap<String, Object>();
+        contextProperties.put(JAXBRIContext.DEFAULT_NAMESPACE_REMAP, "uri:ultima:thule");
+        db.setContextProperties(contextProperties);
+        Set<Class<?>> classes = new HashSet<Class<?>>();
+        classes.add(QualifiedBean.class);
+        db.setContext(db.createJAXBContext(classes));
+        DataWriter<XMLStreamWriter> writer = db.createWriter(XMLStreamWriter.class);
+        XMLOutputFactory writerFactory = XMLOutputFactory.newInstance();
+        StringWriter stringWriter = new StringWriter();
+        XMLStreamWriter xmlWriter = writerFactory.createXMLStreamWriter(stringWriter);
+        QualifiedBean bean = new QualifiedBean();
+        bean.setAriadne("spider");
+        writer.write(bean, xmlWriter);
+        xmlWriter.flush();
+        String xml = stringWriter.toString();
+        assertTrue(xml.contains("greenland=\"uri:ultima:thule"));
+    }
 }

Modified: incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/JAXBEncoderDecoderTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/JAXBEncoderDecoderTest.java?rev=598856&r1=598855&r2=598856&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/JAXBEncoderDecoderTest.java
(original)
+++ incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/JAXBEncoderDecoderTest.java
Tue Nov 27 19:05:10 2007
@@ -221,7 +221,7 @@
         // so that it could be examined inside the debugger to see how JAXB works.
         assertTrue(xmlResult.contains("Gallia:string2"));
     }
-
+    
     @Test
     public void testMarshallIntoStax() throws Exception {
         GreetMe obj = new GreetMe();

Added: incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/fortest/QualifiedBean.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/fortest/QualifiedBean.java?rev=598856&view=auto
==============================================================================
--- incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/fortest/QualifiedBean.java
(added)
+++ incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/fortest/QualifiedBean.java
Tue Nov 27 19:05:10 2007
@@ -0,0 +1,35 @@
+/**
+ * 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.jaxb.fortest;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement(namespace = "uri:ultima:thule")
+public class QualifiedBean {
+    private String ariadne;
+
+    public String getAriadne() {
+        return ariadne;
+    }
+
+    public void setAriadne(String ariadne) {
+        this.ariadne = ariadne;
+    }
+}

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/SpringBeansTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/SpringBeansTest.java?rev=598856&r1=598855&r2=598856&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/SpringBeansTest.java
(original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/SpringBeansTest.java
Tue Nov 27 19:05:10 2007
@@ -18,6 +18,8 @@
  */
 package org.apache.cxf.jaxws.spring;
 
+import java.io.PrintWriter;
+import java.io.StringWriter;
 import java.util.List;
 
 import javax.xml.namespace.QName;
@@ -25,6 +27,8 @@
 import junit.framework.Assert;
 
 import org.apache.cxf.BusFactory;
+import org.apache.cxf.anonymous_complex_type.AnonymousComplexType;
+import org.apache.cxf.anonymous_complex_type.SplitNameResponse.Names;
 import org.apache.cxf.binding.BindingConfiguration;
 import org.apache.cxf.binding.soap.Soap12;
 import org.apache.cxf.binding.soap.SoapBindingConfiguration;
@@ -44,6 +48,7 @@
 import org.apache.hello_world_soap_http.Greeter;
 import org.junit.After;
 import org.junit.Test;
+import org.springframework.context.ApplicationContext;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 public class SpringBeansTest extends Assert {
@@ -55,7 +60,6 @@
         }
     }
 
-    
     @Test
     public void testEndpoints() throws Exception {
         ClassPathXmlApplicationContext ctx = 
@@ -154,9 +158,23 @@
         assertTrue("Could not find server factory with autogenerated id", found);
         
         testInterceptors(ctx);
-        
     }
 
+    private void testNamespaceMapping(ApplicationContext ctx) throws Exception {
+        AnonymousComplexType act = (AnonymousComplexType) ctx.getBean("bookClient");
+        Client client = ClientProxy.getClient(act);
+        assertNotNull(act);
+
+        StringWriter logWriter = new StringWriter();
+        PrintWriter writer = new PrintWriter(logWriter);
+        LoggingInInterceptor spy = new LoggingInInterceptor(writer);
+        client.getInInterceptors().add(spy);
+        Names n = act.splitName("Hello There");
+        assertEquals("Hello", n.getFirst());
+        assertTrue(logWriter.toString().contains("BeepBeep:"));
+    }
+
+
     private void testInterceptors(ClassPathXmlApplicationContext ctx) {
         EndpointImpl ep;
         ep = (EndpointImpl) ctx.getBean("epWithInterceptors");
@@ -212,6 +230,7 @@
             }
         }
         assertTrue("Could not find server factory with autogenerated id", found);
+        testNamespaceMapping(ctx);
     }
     
 

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/servers.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/servers.xml?rev=598856&r1=598855&r2=598856&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/servers.xml
(original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/servers.xml
Tue Nov 27 19:05:10 2007
@@ -67,9 +67,40 @@
         </constructor-arg>
       </bean>
     </jaxws:invoker>
-    
+    <jaxws:dataBinding>
+      <bean class="org.apache.cxf.jaxb.JAXBDataBinding"/>
+    </jaxws:dataBinding>
   </jaxws:server>
-  
+ 
+  <jaxws:server id="bookServer"
+  	serviceClass="org.apache.cxf.anonymous_complex_type.AnonymousComplexTypeImpl"
+    address="http://localhost:8080/act" 
+    bus="cxf">
+    <jaxws:invoker>
+      <bean class="org.apache.cxf.service.invoker.BeanInvoker">
+        <constructor-arg>
+          <bean class="org.apache.cxf.anonymous_complex_type.AnonymousComplexTypeImpl"/>
+        </constructor-arg>
+      </bean>
+    </jaxws:invoker>
+     <jaxws:dataBinding>
+      <bean class="org.apache.cxf.jaxb.JAXBDataBinding">
+        <property name="namespaceMap">
+    		<map>
+   			<entry>
+      			<key><value>http://cxf.apache.org/anonymous_complex_type/</value></key>
+      			<value>BeepBeep</value>
+   			</entry>
+      		</map>
+        </property>
+      </bean>
+      </jaxws:dataBinding>
+  </jaxws:server>
+
+   <jaxws:client id="bookClient" 
+    serviceClass="org.apache.cxf.anonymous_complex_type.AnonymousComplexType"
+    address="http://localhost:8080/act"/>
+
   <jaxws:server id="inlineSoapBinding" 
     serviceClass="org.apache.cxf.jaxws.service.Hello"
     address="http://localhost:8080/test">

Modified: incubator/cxf/trunk/testutils/src/main/java/org/apache/hello_world_soap_http/GreeterImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/testutils/src/main/java/org/apache/hello_world_soap_http/GreeterImpl.java?rev=598856&r1=598855&r2=598856&view=diff
==============================================================================
--- incubator/cxf/trunk/testutils/src/main/java/org/apache/hello_world_soap_http/GreeterImpl.java
(original)
+++ incubator/cxf/trunk/testutils/src/main/java/org/apache/hello_world_soap_http/GreeterImpl.java
Tue Nov 27 19:05:10 2007
@@ -26,6 +26,7 @@
 
 import javax.annotation.Resource;
 
+import javax.jws.WebMethod;
 import javax.jws.WebService;
 import javax.xml.ws.AsyncHandler;
 import javax.xml.ws.BindingProvider;
@@ -131,6 +132,7 @@
         return "How are you " + me;
     }
 
+    @WebMethod
     public BareDocumentResponse testDocLitBare(String in) {
         invocationCount++;
         BareDocumentResponse res = new BareDocumentResponse();



Mime
View raw message