You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2011/01/12 16:27:21 UTC
svn commit: r1058189 - in /cxf/branches/2.3.x-fixes: ./
rt/core/src/main/java/org/apache/cxf/service/factory/
rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/
rt/frontend/simple/src/main/java/org/apache/cxf/frontend/
Author: dkulp
Date: Wed Jan 12 15:27:21 2011
New Revision: 1058189
URL: http://svn.apache.org/viewvc?rev=1058189&view=rev
Log:
Merged revisions 1058163 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1058163 | dkulp | 2011-01-12 10:00:08 -0500 (Wed, 12 Jan 2011) | 2 lines
[CXF-3092,CXF-3093] Make sure the Documentation annotaions are handled
at endpoint selection time, not when the server is created.
........
Modified:
cxf/branches/2.3.x-fixes/ (props changed)
cxf/branches/2.3.x-fixes/rt/core/src/main/java/org/apache/cxf/service/factory/AnnotationsFactoryBeanListener.java
cxf/branches/2.3.x-fixes/rt/core/src/main/java/org/apache/cxf/service/factory/FactoryBeanListener.java
cxf/branches/2.3.x-fixes/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/CodeFirstWSDLTest.java
cxf/branches/2.3.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/AbstractWSDLBasedEndpointFactory.java
Propchange: cxf/branches/2.3.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.3.x-fixes/rt/core/src/main/java/org/apache/cxf/service/factory/AnnotationsFactoryBeanListener.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.3.x-fixes/rt/core/src/main/java/org/apache/cxf/service/factory/AnnotationsFactoryBeanListener.java?rev=1058189&r1=1058188&r2=1058189&view=diff
==============================================================================
--- cxf/branches/2.3.x-fixes/rt/core/src/main/java/org/apache/cxf/service/factory/AnnotationsFactoryBeanListener.java (original)
+++ cxf/branches/2.3.x-fixes/rt/core/src/main/java/org/apache/cxf/service/factory/AnnotationsFactoryBeanListener.java Wed Jan 12 15:27:21 2011
@@ -87,6 +87,7 @@ public class AnnotationsFactoryBeanListe
break;
}
case ENDPOINT_SELECTED: {
+ Class<?> implCls = args.length > 3 ? (Class<?>)args[3] : null;
Class<?> cls = (Class<?>)args[2];
Endpoint ep = (Endpoint)args[1];
Bus bus = factory.getBus();
@@ -103,6 +104,27 @@ public class AnnotationsFactoryBeanListe
if (props != null) {
addEndpointProperties(ep, bus, props.value());
}
+ // To avoid the NPE
+ if (implCls == null || implCls == cls) {
+ return;
+ }
+ WSDLDocumentation doc = implCls.getAnnotation(WSDLDocumentation.class);
+ if (doc != null) {
+ addDocumentation(ep, WSDLDocumentation.Placement.SERVICE, doc);
+ }
+ WSDLDocumentationCollection col = implCls.getAnnotation(WSDLDocumentationCollection.class);
+ if (col != null) {
+ addDocumentation(ep, WSDLDocumentation.Placement.SERVICE, col.value());
+ }
+ InterfaceInfo i = ep.getEndpointInfo().getInterface();
+ List<WSDLDocumentation> docs = CastUtils.cast((List<?>)i.removeProperty(EXTRA_DOCUMENTATION));
+ if (docs != null) {
+ addDocumentation(ep,
+ WSDLDocumentation.Placement.SERVICE,
+ docs.toArray(new WSDLDocumentation[docs.size()]));
+ }
+ addBindingOperationDocs(ep);
+
break;
}
case SERVER_CREATED: {
@@ -116,27 +138,11 @@ public class AnnotationsFactoryBeanListe
addSchemaValidationSupport(server.getEndpoint(), cls.getAnnotation(SchemaValidation.class));
addFastInfosetSupport(server.getEndpoint(), cls.getAnnotation(FastInfoset.class));
addLoggingSupport(server.getEndpoint(), bus, cls.getAnnotation(Logging.class));
- WSDLDocumentation doc = cls.getAnnotation(WSDLDocumentation.class);
- if (doc != null) {
- addDocumentation(server, WSDLDocumentation.Placement.SERVICE, doc);
- }
- WSDLDocumentationCollection col = cls.getAnnotation(WSDLDocumentationCollection.class);
- if (col != null) {
- addDocumentation(server, WSDLDocumentation.Placement.SERVICE, col.value());
- }
- InterfaceInfo i = server.getEndpoint().getEndpointInfo().getInterface();
- List<WSDLDocumentation> docs = CastUtils.cast((List<?>)i.removeProperty(EXTRA_DOCUMENTATION));
- if (docs != null) {
- addDocumentation(server,
- WSDLDocumentation.Placement.SERVICE,
- docs.toArray(new WSDLDocumentation[docs.size()]));
- }
addEndpointProperties(server.getEndpoint(), bus, cls.getAnnotation(EndpointProperty.class));
EndpointProperties props = cls.getAnnotation(EndpointProperties.class);
if (props != null) {
addEndpointProperties(server.getEndpoint(), bus, props.value());
}
- addBindingOperationDocs(server);
setScope(factory, server, cls);
break;
}
@@ -272,8 +278,8 @@ public class AnnotationsFactoryBeanListe
}
}
- private void addBindingOperationDocs(Server server) {
- for (BindingOperationInfo binfo : server.getEndpoint().getBinding()
+ private void addBindingOperationDocs(Endpoint ep) {
+ for (BindingOperationInfo binfo : ep.getBinding()
.getBindingInfo().getOperations()) {
List<WSDLDocumentation> later = CastUtils.cast((List<?>)binfo.getOperationInfo()
.getProperty(EXTRA_DOCUMENTATION));
@@ -390,7 +396,7 @@ public class AnnotationsFactoryBeanListe
}
}
}
- private void addDocumentation(Server server,
+ private void addDocumentation(Endpoint ep,
WSDLDocumentation.Placement defPlace,
WSDLDocumentation ... values) {
for (WSDLDocumentation doc : values) {
@@ -400,20 +406,20 @@ public class AnnotationsFactoryBeanListe
}
switch (p) {
case PORT_TYPE:
- server.getEndpoint().getEndpointInfo().getService()
+ ep.getEndpointInfo().getService()
.getInterface().setDocumentation(doc.value());
break;
case TOP:
- server.getEndpoint().getEndpointInfo().getService().setTopLevelDoc(doc.value());
+ ep.getEndpointInfo().getService().setTopLevelDoc(doc.value());
break;
case SERVICE:
- server.getEndpoint().getEndpointInfo().getService().setDocumentation(doc.value());
+ ep.getEndpointInfo().getService().setDocumentation(doc.value());
break;
case SERVICE_PORT:
- server.getEndpoint().getEndpointInfo().setDocumentation(doc.value());
+ ep.getEndpointInfo().setDocumentation(doc.value());
break;
case BINDING:
- server.getEndpoint().getEndpointInfo().getBinding().setDocumentation(doc.value());
+ ep.getEndpointInfo().getBinding().setDocumentation(doc.value());
break;
default:
//nothing?
Modified: cxf/branches/2.3.x-fixes/rt/core/src/main/java/org/apache/cxf/service/factory/FactoryBeanListener.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.3.x-fixes/rt/core/src/main/java/org/apache/cxf/service/factory/FactoryBeanListener.java?rev=1058189&r1=1058188&r2=1058189&view=diff
==============================================================================
--- cxf/branches/2.3.x-fixes/rt/core/src/main/java/org/apache/cxf/service/factory/FactoryBeanListener.java (original)
+++ cxf/branches/2.3.x-fixes/rt/core/src/main/java/org/apache/cxf/service/factory/FactoryBeanListener.java Wed Jan 12 15:27:21 2011
@@ -115,7 +115,7 @@ public interface FactoryBeanListener {
CLIENT_CREATED,
/**
- * EndpointInfo, Endpoint, Class
+ * EndpointInfo, Endpoint, SEI Class, Class
*/
ENDPOINT_SELECTED,
Modified: cxf/branches/2.3.x-fixes/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/CodeFirstWSDLTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.3.x-fixes/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/CodeFirstWSDLTest.java?rev=1058189&r1=1058188&r2=1058189&view=diff
==============================================================================
--- cxf/branches/2.3.x-fixes/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/CodeFirstWSDLTest.java (original)
+++ cxf/branches/2.3.x-fixes/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/CodeFirstWSDLTest.java Wed Jan 12 15:27:21 2011
@@ -40,6 +40,7 @@ import org.apache.cxf.service.Service;
import org.apache.cxf.service.factory.ReflectionServiceFactoryBean;
import org.apache.cxf.service.model.BindingInfo;
import org.apache.cxf.service.model.InterfaceInfo;
+import org.apache.cxf.service.model.ServiceInfo;
import org.apache.cxf.wsdl.WSDLManager;
import org.apache.cxf.wsdl11.ServiceWSDLBuilder;
import org.junit.Test;
@@ -154,6 +155,22 @@ public class CodeFirstWSDLTest extends A
d.getDocumentElement());
assertXPathEquals("//wsdl:definitions/wsdl:binding/wsdl:documentation", "My binding doc",
d.getDocumentElement());
+
+
+ JaxwsServiceBuilder builder = new JaxwsServiceBuilder();
+ builder.setServiceClass(CXF3093Impl.class);
+ ServiceInfo serviceInfo = builder.createService();
+ wsdlBuilder = new ServiceWSDLBuilder(bus, serviceInfo);
+
+ def = wsdlBuilder.build();
+ d = bus.getExtension(WSDLManager.class).getWSDLFactory().newWSDLWriter().getDocument(def);
+ //org.apache.cxf.helpers.XMLUtils.printDOM(d);
+ assertXPathEquals("//wsdl:definitions/wsdl:documentation", "My top level documentation",
+ d.getDocumentElement());
+ assertXPathEquals("//wsdl:definitions/wsdl:portType/wsdl:documentation", "My portType documentation",
+ d.getDocumentElement());
+ assertXPathEquals("//wsdl:definitions/wsdl:binding/wsdl:documentation", "My binding doc",
+ d.getDocumentElement());
}
@WebService(targetNamespace = "http://www.example.org/contract/DoubleIt")
@@ -180,7 +197,7 @@ public class CodeFirstWSDLTest extends A
@Test
public void testDocumentationOnImpl() throws Exception {
- //CXF-3093
+ //CXF-3092
EndpointImpl ep = (EndpointImpl)Endpoint.publish("local://foo", new CXF3092Impl());
ServiceWSDLBuilder wsdlBuilder =
new ServiceWSDLBuilder(bus, ep.getService().getServiceInfos().get(0));
@@ -193,6 +210,21 @@ public class CodeFirstWSDLTest extends A
d.getDocumentElement());
assertXPathEquals("//wsdl:definitions/wsdl:binding/wsdl:documentation", "My binding doc",
d.getDocumentElement());
+
+ JaxwsServiceBuilder builder = new JaxwsServiceBuilder();
+ builder.setServiceClass(CXF3092Impl.class);
+ ServiceInfo serviceInfo = builder.createService();
+ wsdlBuilder = new ServiceWSDLBuilder(bus, serviceInfo);
+
+ def = wsdlBuilder.build();
+ d = bus.getExtension(WSDLManager.class).getWSDLFactory().newWSDLWriter().getDocument(def);
+ //org.apache.cxf.helpers.XMLUtils.printDOM(d);
+ assertXPathEquals("//wsdl:definitions/wsdl:documentation", "My top level documentation",
+ d.getDocumentElement());
+ assertXPathEquals("//wsdl:definitions/wsdl:service/wsdl:documentation", "My Service documentation",
+ d.getDocumentElement());
+ assertXPathEquals("//wsdl:definitions/wsdl:binding/wsdl:documentation", "My binding doc",
+ d.getDocumentElement());
}
@WebService(targetNamespace = "http://www.example.org/contract/DoubleIt")
Modified: cxf/branches/2.3.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/AbstractWSDLBasedEndpointFactory.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.3.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/AbstractWSDLBasedEndpointFactory.java?rev=1058189&r1=1058188&r2=1058189&view=diff
==============================================================================
--- cxf/branches/2.3.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/AbstractWSDLBasedEndpointFactory.java (original)
+++ cxf/branches/2.3.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/AbstractWSDLBasedEndpointFactory.java Wed Jan 12 15:27:21 2011
@@ -191,7 +191,7 @@ public abstract class AbstractWSDLBasedE
ep.getOutFaultInterceptors().addAll(getOutFaultInterceptors());
}
serviceFactory.sendEvent(FactoryBeanListener.Event.ENDPOINT_SELECTED, ei, ep,
- serviceFactory.getServiceClass());
+ serviceFactory.getServiceClass(), getServiceClass());
return ep;
}
private void modifyTransportIdPerAddress(EndpointInfo ei) {