You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2009/06/03 19:26:40 UTC
svn commit: r781487 - in /geronimo/server/branches/2.1/plugins:
axis2/geronimo-axis2-builder/src/main/java/org/apache/geronimo/axis2/builder/
cxf/geronimo-cxf-builder/src/main/java/org/apache/geronimo/cxf/builder/
jaxws/geronimo-jaxws-builder/src/main/...
Author: gawor
Date: Wed Jun 3 17:26:39 2009
New Revision: 781487
URL: http://svn.apache.org/viewvc?rev=781487&view=rev
Log:
catch @WebServiceProvider servies without WSDL early (GERONIMO-4664)
Modified:
geronimo/server/branches/2.1/plugins/axis2/geronimo-axis2-builder/src/main/java/org/apache/geronimo/axis2/builder/Axis2Builder.java
geronimo/server/branches/2.1/plugins/cxf/geronimo-cxf-builder/src/main/java/org/apache/geronimo/cxf/builder/CXFBuilder.java
geronimo/server/branches/2.1/plugins/jaxws/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/JAXWSServiceBuilder.java
geronimo/server/branches/2.1/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/JAXWSUtils.java
Modified: geronimo/server/branches/2.1/plugins/axis2/geronimo-axis2-builder/src/main/java/org/apache/geronimo/axis2/builder/Axis2Builder.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.1/plugins/axis2/geronimo-axis2-builder/src/main/java/org/apache/geronimo/axis2/builder/Axis2Builder.java?rev=781487&r1=781486&r2=781487&view=diff
==============================================================================
--- geronimo/server/branches/2.1/plugins/axis2/geronimo-axis2-builder/src/main/java/org/apache/geronimo/axis2/builder/Axis2Builder.java (original)
+++ geronimo/server/branches/2.1/plugins/axis2/geronimo-axis2-builder/src/main/java/org/apache/geronimo/axis2/builder/Axis2Builder.java Wed Jun 3 17:26:39 2009
@@ -26,8 +26,6 @@
import java.util.Map;
import java.util.jar.JarFile;
-import javax.xml.ws.http.HTTPBinding;
-
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.geronimo.axis2.pojo.POJOWebServiceContainerFactoryGBean;
@@ -192,17 +190,22 @@
@Override
protected void initialize(GBeanData targetGBean, Class serviceClass, PortInfo portInfo, Module module)
throws DeploymentException {
+ String serviceName = (portInfo.getServiceName() == null ? serviceClass.getName() : portInfo.getServiceName());
if (isWsdlSet(portInfo, serviceClass)) {
- log.debug("Service " + portInfo.getServiceName() + " has WSDL.");
+ log.debug("Service " + serviceName + " has WSDL.");
return;
- }
+ }
if (isHTTPBinding(portInfo, serviceClass)) {
- log.debug("Service " + portInfo.getServiceName() + " is HTTPBinding. Only SOAP 1.1 or 1.2 is supported.");
+ log.debug("Service " + serviceName + " has HTTPBinding.");
return;
}
- log.debug("Service " + portInfo.getServiceName() + " does not have WSDL. Generating WSDL...");
+ if (JAXWSUtils.isWebServiceProvider(serviceClass)) {
+ throw new DeploymentException("WSDL must be specified for @WebServiceProvider service " + serviceName);
+ }
+
+ log.debug("Service " + serviceName + " does not have WSDL. Generating WSDL...");
WsdlGenerator generator = new WsdlGenerator();
generator.setAxis2SAAJ();
@@ -222,32 +225,9 @@
String wsdlFile = generator.generateWsdl(module, serviceClass.getName(), module.getEarContext(), portInfo);
portInfo.setWsdlFile(wsdlFile);
- log.debug("Generated " + wsdlFile + " for service " + portInfo.getServiceName());
- }
-
- private boolean isWsdlSet(PortInfo portInfo, Class serviceClass) {
- return (portInfo.getWsdlFile() != null && !portInfo.getWsdlFile().trim().equals(""))
- || JAXWSUtils.containsWsdlLocation(serviceClass, serviceClass.getClassLoader());
+ log.debug("Generated " + wsdlFile + " for service " + serviceName);
}
- private boolean isHTTPBinding(PortInfo portInfo, Class serviceClass) {
- String bindingURI = "";
- String bindingURIFromAnnot;
-
- if (portInfo.getProtocolBinding() != null) {
- bindingURI = JAXWSUtils.getBindingURI(portInfo.getProtocolBinding());
- }
- bindingURIFromAnnot = JAXWSUtils.getBindingURIFromAnnot(serviceClass, serviceClass.getClassLoader());
-
- if (bindingURI != null && !bindingURI.trim().equals("")) {
- return bindingURI.equals(HTTPBinding.HTTP_BINDING);
- } else if (bindingURIFromAnnot != null && !bindingURIFromAnnot.trim().equals("")) {
- return bindingURIFromAnnot.equals(HTTPBinding.HTTP_BINDING);
- }
-
- return false;
- }
-
public static final GBeanInfo GBEAN_INFO;
static {
Modified: geronimo/server/branches/2.1/plugins/cxf/geronimo-cxf-builder/src/main/java/org/apache/geronimo/cxf/builder/CXFBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.1/plugins/cxf/geronimo-cxf-builder/src/main/java/org/apache/geronimo/cxf/builder/CXFBuilder.java?rev=781487&r1=781486&r2=781487&view=diff
==============================================================================
--- geronimo/server/branches/2.1/plugins/cxf/geronimo-cxf-builder/src/main/java/org/apache/geronimo/cxf/builder/CXFBuilder.java (original)
+++ geronimo/server/branches/2.1/plugins/cxf/geronimo-cxf-builder/src/main/java/org/apache/geronimo/cxf/builder/CXFBuilder.java Wed Jun 3 17:26:39 2009
@@ -198,11 +198,22 @@
private void generateWSDL(Class serviceClass, PortInfo portInfo, Module module)
throws DeploymentException {
+ String serviceName = (portInfo.getServiceName() == null ? serviceClass.getName() : portInfo.getServiceName());
if (isWsdlSet(portInfo, serviceClass)) {
- LOG.debug("Service " + portInfo.getServiceName() + " has WSDL.");
+ LOG.debug("Service " + serviceName + " has WSDL.");
return;
}
- LOG.debug("Service " + portInfo.getServiceName() + " does not have WSDL. Generating WSDL...");
+
+ if (isHTTPBinding(portInfo, serviceClass)) {
+ LOG.debug("Service " + serviceName + " has HTTPBinding.");
+ return;
+ }
+
+ if (JAXWSUtils.isWebServiceProvider(serviceClass)) {
+ throw new DeploymentException("WSDL must be specified for @WebServiceProvider service " + serviceName);
+ }
+
+ LOG.debug("Service " + serviceName + " does not have WSDL. Generating WSDL...");
WsdlGenerator generator = new WsdlGenerator();
generator.setSunSAAJ();
@@ -224,14 +235,9 @@
String wsdlFile = generator.generateWsdl(module, serviceClass.getName(), module.getEarContext(), portInfo);
portInfo.setWsdlFile(wsdlFile);
- LOG.debug("Generated " + wsdlFile + " for service " + portInfo.getServiceName());
+ LOG.debug("Generated " + wsdlFile + " for service " + serviceName);
}
-
- private boolean isWsdlSet(PortInfo portInfo, Class serviceClass) {
- return (portInfo.getWsdlFile() != null && !portInfo.getWsdlFile().trim().equals(""))
- || JAXWSUtils.containsWsdlLocation(serviceClass, serviceClass.getClassLoader());
- }
-
+
public static final GBeanInfo GBEAN_INFO;
static {
Modified: geronimo/server/branches/2.1/plugins/jaxws/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/JAXWSServiceBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.1/plugins/jaxws/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/JAXWSServiceBuilder.java?rev=781487&r1=781486&r2=781487&view=diff
==============================================================================
--- geronimo/server/branches/2.1/plugins/jaxws/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/JAXWSServiceBuilder.java (original)
+++ geronimo/server/branches/2.1/plugins/jaxws/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/JAXWSServiceBuilder.java Wed Jun 3 17:26:39 2009
@@ -23,6 +23,8 @@
import java.util.Map;
import java.util.jar.JarFile;
+import javax.xml.ws.http.HTTPBinding;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.geronimo.common.DeploymentException;
@@ -228,4 +230,28 @@
throw new DeploymentException("Unable to load Web Service class: " + className, ex);
}
}
+
+ protected boolean isWsdlSet(PortInfo portInfo, Class serviceClass) {
+ return (portInfo.getWsdlFile() != null && !portInfo.getWsdlFile().trim().equals(""))
+ || JAXWSUtils.containsWsdlLocation(serviceClass, serviceClass.getClassLoader());
+ }
+
+ protected boolean isHTTPBinding(PortInfo portInfo, Class serviceClass) {
+ String bindingURI = "";
+ String bindingURIFromAnnot;
+
+ if (portInfo.getProtocolBinding() != null) {
+ bindingURI = JAXWSUtils.getBindingURI(portInfo.getProtocolBinding());
+ }
+ bindingURIFromAnnot = JAXWSUtils.getBindingURIFromAnnot(serviceClass, serviceClass.getClassLoader());
+
+ if (bindingURI != null && !bindingURI.trim().equals("")) {
+ return bindingURI.equals(HTTPBinding.HTTP_BINDING);
+ } else if (bindingURIFromAnnot != null && !bindingURIFromAnnot.trim().equals("")) {
+ return bindingURIFromAnnot.equals(HTTPBinding.HTTP_BINDING);
+ }
+
+ return false;
+ }
+
}
Modified: geronimo/server/branches/2.1/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/JAXWSUtils.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.1/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/JAXWSUtils.java?rev=781487&r1=781486&r2=781487&view=diff
==============================================================================
--- geronimo/server/branches/2.1/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/JAXWSUtils.java (original)
+++ geronimo/server/branches/2.1/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/JAXWSUtils.java Wed Jun 3 17:26:39 2009
@@ -76,6 +76,10 @@
isProperWebService(clazz));
}
+ public static boolean isWebServiceProvider(Class clazz) {
+ return (clazz.isAnnotationPresent(WebServiceProvider.class) && isProperWebService(clazz));
+ }
+
private static boolean isProperWebService(Class clazz) {
int modifiers = clazz.getModifiers();
return (Modifier.isPublic(modifiers) &&