Author: dkulp
Date: Tue Aug 28 17:14:32 2007
New Revision: 570596

URL: http://svn.apache.org/viewvc?rev=570596&view=rev
Log:
[CXF-874] Warn about issues of using Proxies for services.   Use a default 
namespace to avoid wsdl creation problems.

Added:
    
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/SimpleMessages.properties
      - copied, changed from r570457, 
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/Messages.properties
Removed:
    
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/Messages.properties
Modified:
    
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsImplementorInfo.java
    
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.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/ClientServerTest.java

Modified: 
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsImplementorInfo.java
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsImplementorInfo.java?rev=570596&r1=570595&r2=570596&view=diff
==============================================================================
--- 
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsImplementorInfo.java
 (original)
+++ 
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsImplementorInfo.java
 Tue Aug 28 17:14:32 2007
@@ -225,7 +225,7 @@
     private String getDefaultNamespace(Class clazz) {
         Package pkg = clazz.getPackage();
         if (pkg == null) {
-            return null;
+            return "http://unknown.namespace/";;
         } else {
             return PackageUtils.getNamespace(pkg.getName());
         }

Modified: 
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java?rev=570596&r1=570595&r2=570596&view=diff
==============================================================================
--- 
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java
 (original)
+++ 
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java
 Tue Aug 28 17:14:32 2007
@@ -24,6 +24,7 @@
 import java.lang.reflect.GenericArrayType;
 import java.lang.reflect.Method;
 import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Proxy;
 import java.lang.reflect.Type;
 import java.net.URL;
 import java.util.ArrayList;
@@ -33,8 +34,8 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.ResourceBundle;
 import java.util.concurrent.Executor;
+import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import javax.xml.namespace.QName;
@@ -42,8 +43,8 @@
 
 import org.apache.cxf.BusException;
 import org.apache.cxf.binding.BindingFactoryManager;
-import org.apache.cxf.common.i18n.BundleUtils;
 import org.apache.cxf.common.i18n.Message;
+import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.endpoint.Endpoint;
 import org.apache.cxf.endpoint.EndpointException;
 import org.apache.cxf.endpoint.EndpointImpl;
@@ -102,8 +103,8 @@
     public static final String ELEMENT_NAME = "messagepart.elementName";
     public static final String METHOD = "operation.method";
 
-    private static final Logger LOG = 
Logger.getLogger(ReflectionServiceFactoryBean.class.getName());
-    private static final ResourceBundle BUNDLE = 
BundleUtils.getBundle(ReflectionServiceFactoryBean.class);
+    private static final Logger LOG = 
LogUtils.getL7dLogger(ReflectionServiceFactoryBean.class,
+                                                            "SimpleMessages");
 
     protected String wsdlURL;
 
@@ -217,6 +218,11 @@
 
     protected void buildServiceFromClass() {
         LOG.info("Creating Service " + getServiceQName() + " from class " + 
getServiceClass().getName());
+        
+        if (Proxy.isProxyClass(this.getServiceClass())) {
+            LOG.log(Level.WARNING, "USING_PROXY_FOR_SERVICE", 
getServiceClass());
+        }
+        
         ServiceInfo serviceInfo = new ServiceInfo();
         ServiceImpl service = new ServiceImpl(serviceInfo);
 
@@ -283,7 +289,7 @@
                 return si.getInterface();
             }
         }
-        throw new ServiceConstructionException(new 
Message("COULD_NOT_FIND_PORTTYPE", BUNDLE, qn));
+        throw new ServiceConstructionException(new 
Message("COULD_NOT_FIND_PORTTYPE", LOG, qn));
     }
 
     protected void initializeWSDLOperations() {
@@ -313,7 +319,7 @@
             }
 
             if (selected == null) {
-                throw new ServiceConstructionException(new 
Message("NO_METHOD_FOR_OP", BUNDLE, o.getName()));
+                throw new ServiceConstructionException(new 
Message("NO_METHOD_FOR_OP", LOG, o.getName()));
             }
 
             initializeWSDLOperation(intf, o, selected);

Copied: 
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/SimpleMessages.properties
 (from r570457, 
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/Messages.properties)
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/SimpleMessages.properties?p2=incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/SimpleMessages.properties&p1=incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/Messages.properties&r1=570457&r2=570596&rev=570596&view=diff
==============================================================================
--- 
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/Messages.properties
 (original)
+++ 
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/SimpleMessages.properties
 Tue Aug 28 17:14:32 2007
@@ -20,4 +20,9 @@
 #
 COULD_NOT_FIND_PORTTYPE = Could not find portType named {0}
 NO_METHOD_FOR_OP = Could not find a matching method for operation {0}
-COULD_NOT_SET_WRAPPER_STYLE = Service class : {0} contains overloaded 
operation can not use wrapper style
\ No newline at end of file
+COULD_NOT_SET_WRAPPER_STYLE = Service class: {0} contains overloaded operation 
can not use wrapper style
+USING_PROXY_FOR_SERVICE = Service class: {0} is a java.lang.reflect.Proxy 
instance.  This is known not to work well as \
+  annotations on the real instance are not available.  We suggest overriding 
the ServiceClass via spring config or \
+  other configuration. (serviceClass/implementorClass attributes on the 
endpoint/server spring config entry)
+ 
+ 
\ No newline at end of file

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=570596&r1=570595&r2=570596&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
 Tue Aug 28 17:14:32 2007
@@ -58,7 +58,7 @@
 
     @BeforeClass
     public static void startServers() throws Exception {
-        assertTrue("server did not launch correctly", 
launchServer(ServerMisc.class, true));
+        assertTrue("server did not launch correctly", 
launchServer(ServerMisc.class));
     }
 
     @Test

Modified: 
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerTest.java
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerTest.java?rev=570596&r1=570595&r2=570596&view=diff
==============================================================================
--- 
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerTest.java
 (original)
+++ 
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerTest.java
 Tue Aug 28 17:14:32 2007
@@ -22,6 +22,9 @@
 
 
 import java.io.InputStream;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
 import java.lang.reflect.UndeclaredThrowableException;
 import java.net.HttpURLConnection;
 import java.net.URISyntaxException;
@@ -39,6 +42,7 @@
 import javax.xml.namespace.QName;
 import javax.xml.ws.AsyncHandler;
 import javax.xml.ws.BindingProvider;
+import javax.xml.ws.Endpoint;
 import javax.xml.ws.Response;
 import javax.xml.ws.Service;
 import javax.xml.ws.WebServiceException;
@@ -846,5 +850,23 @@
         assertEquals("Hello CXF", result);
     }
 
+    @Test
+    public void testProxy() throws Exception {
+        InvocationHandler handler = new InvocationHandler() {
+
+            public Object invoke(Object proxy, Method method, Object[] args) 
throws Throwable {
+                // TODO Auto-generated method stub
+                return null;
+            }
+            
+        };
+        Object implementor4 = 
Proxy.newProxyInstance(this.getClass().getClassLoader(),
+                                                     new Class<?>[] 
{DocLitWrappedCodeFirstService.class},
+                                                     handler);
+        
Endpoint.publish("http://localhost:9023/DocLitWrappedCodeFirstService/";, 
implementor4);
+        URL url = new 
URL("http://localhost:9023/DocLitWrappedCodeFirstService/?wsdl";);
+        InputStream ins = url.openStream();
+        ins.close();
+    }
     
 }


Reply via email to