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 2007/11/09 23:41:22 UTC
svn commit: r593678 - in /incubator/cxf/trunk:
api/src/main/java/org/apache/cxf/service/model/
rt/core/src/main/java/org/apache/cxf/bus/spring/
rt/core/src/main/java/org/apache/cxf/wsdl11/
rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/intercepto...
Author: dkulp
Date: Fri Nov 9 14:41:21 2007
New Revision: 593678
URL: http://svn.apache.org/viewvc?rev=593678&view=rev
Log:
[CXF-1192] Fix concurrency problem with Jsr250 injection
More fixes to make sure MessagePartInfo's have xmlschematype set for jaxws/jaxb case.
Modified:
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/MessagePartInfo.java
incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/Jsr250BeanPostProcessor.java
incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceBuilder.java
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassInInterceptor.java
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassOutInterceptor.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/ws/rm/SequenceTest.java
Modified: incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/MessagePartInfo.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/MessagePartInfo.java?rev=593678&r1=593677&r2=593678&view=diff
==============================================================================
--- incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/MessagePartInfo.java (original)
+++ incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/MessagePartInfo.java Fri Nov 9 14:41:21 2007
@@ -22,6 +22,7 @@
import javax.xml.namespace.QName;
import org.apache.ws.commons.schema.XmlSchemaAnnotated;
+import org.apache.ws.commons.schema.XmlSchemaElement;
public final class MessagePartInfo extends AbstractPropertiesHolder {
@@ -78,6 +79,8 @@
public QName getTypeQName() {
if (!isElement) {
return typeName;
+ } else if (xmlSchema instanceof XmlSchemaElement) {
+ return ((XmlSchemaElement)xmlSchema).getSchemaTypeName();
}
return null;
}
Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/Jsr250BeanPostProcessor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/Jsr250BeanPostProcessor.java?rev=593678&r1=593677&r2=593678&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/Jsr250BeanPostProcessor.java (original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/Jsr250BeanPostProcessor.java Fri Nov 9 14:41:21 2007
@@ -37,11 +37,12 @@
public class Jsr250BeanPostProcessor
implements DestructionAwareBeanPostProcessor, Ordered, ApplicationContextAware {
- private ResourceInjector injector;
+ private ResourceManager resourceManager;
+ private List<ResourceResolver> resolvers;
+
private ApplicationContext context;
Jsr250BeanPostProcessor() {
- injector = new ResourceInjector(null, null);
}
public void setApplicationContext(ApplicationContext arg0) throws BeansException {
@@ -53,32 +54,30 @@
}
public Object postProcessAfterInitialization(Object bean, String beanId) throws BeansException {
- if (bean != null
- && injector != null) {
- injector.construct(bean);
+ if (bean != null) {
+ new ResourceInjector(resourceManager, resolvers).construct(bean);
}
if (bean instanceof ResourceManager) {
- ResourceManager rm = (ResourceManager)bean;
+ resourceManager = (ResourceManager)bean;
Map<String, Object> mp = CastUtils.cast(context.getBeansOfType(ResourceResolver.class));
Collection<ResourceResolver> resolvs = CastUtils.cast(mp.values());
- List<ResourceResolver> resolvers = new ArrayList<ResourceResolver>(rm.getResourceResolvers());
+ resolvers = new ArrayList<ResourceResolver>(resourceManager.getResourceResolvers());
resolvers.addAll(resolvs);
- injector = new ResourceInjector(rm, resolvers);
}
return bean;
}
public Object postProcessBeforeInitialization(Object bean, String beanId) throws BeansException {
- if (bean != null && injector != null) {
- injector.inject(bean);
+ if (bean != null) {
+ new ResourceInjector(resourceManager, resolvers).inject(bean);
}
return bean;
}
public void postProcessBeforeDestruction(Object bean, String beanId) {
if (bean != null) {
- injector.destroy(bean);
+ new ResourceInjector(resourceManager, resolvers).destroy(bean);
}
}
Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceBuilder.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceBuilder.java?rev=593678&r1=593677&r2=593678&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceBuilder.java (original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceBuilder.java Fri Nov 9 14:41:21 2007
@@ -622,10 +622,14 @@
MessagePartInfo mpi = wrapper.addMessagePart(new QName(namespaceURI, el.getName()));
mpi.setTypeQName(el.getSchemaTypeName());
mpi.setConcreteName(el.getQName());
+ mpi.setElement(true);
+ mpi.setElementQName(el.getQName());
mpi.setXmlSchema(el);
} else if (el.getRefName() != null) {
MessagePartInfo mpi = wrapper.addMessagePart(el.getRefName());
mpi.setTypeQName(el.getRefName());
+ mpi.setElementQName(el.getRefName());
+ mpi.setElement(true);
mpi.setXmlSchema(el);
// element reference is not permitted for wrapper element
if (!allowRefs) {
@@ -634,6 +638,7 @@
} else {
// anonymous type
MessagePartInfo mpi = wrapper.addMessagePart(new QName(namespaceURI, el.getName()));
+ mpi.setConcreteName(el.getQName());
mpi.setElementQName(mpi.getName());
mpi.setElement(true);
mpi.setXmlSchema(el);
Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassInInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassInInterceptor.java?rev=593678&r1=593677&r2=593678&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassInInterceptor.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassInInterceptor.java Fri Nov 9 14:41:21 2007
@@ -168,15 +168,11 @@
partNames.set(idx, null);
} else {
String elementType = null;
- if (p.isElement()) {
- elementType = p.getElementQName().getLocalPart();
+ if (p.getTypeQName() == null) {
+ // handling anonymous complex type
+ elementType = null;
} else {
- if (p.getTypeQName() == null) {
- // handling anonymous complex type
- elementType = null;
- } else {
- elementType = p.getTypeQName().getLocalPart();
- }
+ elementType = p.getTypeQName().getLocalPart();
}
int idx = p.getIndex();
ensureSize(elTypeNames, idx);
Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassOutInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassOutInterceptor.java?rev=593678&r1=593677&r2=593678&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassOutInterceptor.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassOutInterceptor.java Fri Nov 9 14:41:21 2007
@@ -80,15 +80,11 @@
partNames.set(p.getIndex(), p.getName().getLocalPart());
String elementType = null;
- if (p.isElement()) {
- elementType = p.getElementQName().getLocalPart();
+ if (p.getTypeQName() == null) {
+ // handling anonymous complex type
+ elementType = null;
} else {
- if (p.getTypeQName() == null) {
- // handling anonymous complex type
- elementType = null;
- } else {
- elementType = p.getTypeQName().getLocalPart();
- }
+ elementType = p.getTypeQName().getLocalPart();
}
elTypeNames.set(p.getIndex(), elementType);
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=593678&r1=593677&r2=593678&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 Fri Nov 9 14:41:21 2007
@@ -346,10 +346,10 @@
} else {
buildServiceFromClass();
}
- //assert validateServiceModel();
+ //validateServiceModel();
}
- public boolean validateServiceModel() {
+ public void validateServiceModel() {
for (ServiceInfo si : getService().getServiceInfos()) {
for (OperationInfo opInfo : si.getInterface().getOperations()) {
for (MessagePartInfo mpi : opInfo.getInput().getMessageParts()) {
@@ -360,17 +360,8 @@
assert !(mpi.getXmlSchema() instanceof XmlSchemaElement);
}
}
- for (MessagePartInfo mpi : opInfo.getOutput().getMessageParts()) {
- assert mpi.getXmlSchema() != null;
- if (mpi.isElement()) {
- assert mpi.getXmlSchema() instanceof XmlSchemaElement;
- } else {
- assert !(mpi.getXmlSchema() instanceof XmlSchemaElement);
- }
- }
- if (opInfo.isUnwrappedCapable()) {
- opInfo = opInfo.getUnwrappedOperation();
- for (MessagePartInfo mpi : opInfo.getInput().getMessageParts()) {
+ if (opInfo.hasOutput()) {
+ for (MessagePartInfo mpi : opInfo.getOutput().getMessageParts()) {
assert mpi.getXmlSchema() != null;
if (mpi.isElement()) {
assert mpi.getXmlSchema() instanceof XmlSchemaElement;
@@ -378,7 +369,10 @@
assert !(mpi.getXmlSchema() instanceof XmlSchemaElement);
}
}
- for (MessagePartInfo mpi : opInfo.getOutput().getMessageParts()) {
+ }
+ if (opInfo.isUnwrappedCapable()) {
+ opInfo = opInfo.getUnwrappedOperation();
+ for (MessagePartInfo mpi : opInfo.getInput().getMessageParts()) {
assert mpi.getXmlSchema() != null;
if (mpi.isElement()) {
assert mpi.getXmlSchema() instanceof XmlSchemaElement;
@@ -386,6 +380,16 @@
assert !(mpi.getXmlSchema() instanceof XmlSchemaElement);
}
}
+ if (opInfo.hasOutput()) {
+ for (MessagePartInfo mpi : opInfo.getOutput().getMessageParts()) {
+ assert mpi.getXmlSchema() != null;
+ if (mpi.isElement()) {
+ assert mpi.getXmlSchema() instanceof XmlSchemaElement;
+ } else {
+ assert !(mpi.getXmlSchema() instanceof XmlSchemaElement);
+ }
+ }
+ }
}
if (opInfo.hasFaults()) {
//check to make sure the faults are elements
@@ -400,7 +404,6 @@
}
}
- return true;
}
public boolean isPopulateFromClass() {
@@ -631,6 +634,7 @@
for (SchemaInfo s : serviceInfo.getSchemas()) {
XmlSchemaElement e = s.getElementByQName(mpi.getElementQName());
if (e != null) {
+ mpi.setXmlSchema(e);
return;
}
}
@@ -651,6 +655,7 @@
XmlSchemaType tp = (XmlSchemaType)mpi.getXmlSchema();
el.setSchemaTypeName(tp.getQName());
+ mpi.setXmlSchema(el);
}
public boolean getAnonymousWrapperTypes() {
@@ -737,6 +742,7 @@
if (schema != null && schema.getElementByName(qname) != null) {
mpi.setElement(true);
mpi.setElementQName(qname);
+ mpi.setXmlSchema(schema.getElementByName(qname));
paraNumber++;
continue;
}
@@ -880,11 +886,11 @@
boolean wasType = !mpi.isElement();
if (wasType) {
QName concreteName = mpi.getConcreteName();
- mpi.setXmlSchema(el);
mpi.setElement(true);
mpi.setElementQName(el.getQName());
mpi.setConcreteName(concreteName);
}
+ mpi.setXmlSchema(el);
addMimeType(el, getMethodParameterAnnotations(mpi));
Annotation[] methodAnnotations = getMethodAnnotations(mpi);
Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/SequenceTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/SequenceTest.java?rev=593678&r1=593677&r2=593678&view=diff
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/SequenceTest.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/SequenceTest.java Fri Nov 9 14:41:21 2007
@@ -126,8 +126,12 @@
@After
public void tearDown() {
- stopGreeter();
- stopControl();
+ try {
+ stopGreeter();
+ stopControl();
+ } catch (Throwable t) {
+ //ignore
+ }
}
/**