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/12/07 00:59:23 UTC
svn commit: r1211239 - in /cxf/branches/2.4.x-fixes: ./
rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsServerFactoryBean.java
rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/EndpointDefinitionParser.java
Author: dkulp
Date: Tue Dec 6 23:59:22 2011
New Revision: 1211239
URL: http://svn.apache.org/viewvc?rev=1211239&view=rev
Log:
Merged revisions 1211229 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1211229 | dkulp | 2011-12-06 18:42:20 -0500 (Tue, 06 Dec 2011) | 1 line
[CXF-3959] Fix issues of double injection with Spring Part 1
........
Modified:
cxf/branches/2.4.x-fixes/ (props changed)
cxf/branches/2.4.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsServerFactoryBean.java
cxf/branches/2.4.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/EndpointDefinitionParser.java
Propchange: cxf/branches/2.4.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsServerFactoryBean.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsServerFactoryBean.java?rev=1211239&r1=1211238&r2=1211239&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsServerFactoryBean.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsServerFactoryBean.java Tue Dec 6 23:59:22 2011
@@ -63,6 +63,7 @@ public class JaxWsServerFactoryBean exte
protected List<Handler> handlers = new ArrayList<Handler>();
private boolean blockPostConstruct;
+ private boolean blockInjection;
public JaxWsServerFactoryBean() {
this(new JaxWsServiceFactoryBean());
@@ -251,7 +252,7 @@ public class JaxWsServerFactoryBean exte
* @param instance
*/
protected void injectResources(Object instance) {
- if (instance != null) {
+ if (instance != null && !blockInjection) {
ResourceManager resourceManager = getBus().getExtension(ResourceManager.class);
List<ResourceResolver> resolvers = resourceManager.getResourceResolvers();
resourceManager = new DefaultResourceManager(resolvers);
@@ -272,7 +273,6 @@ public class JaxWsServerFactoryBean exte
}
/**
- *
* @param blockPostConstruct @PostConstruct method will not be called
* if this property is set to true - this may be necessary in cases
* when the @PostConstruct method needs to be called at a later stage,
@@ -281,5 +281,14 @@ public class JaxWsServerFactoryBean exte
public void setBlockPostConstruct(boolean blockPostConstruct) {
this.blockPostConstruct = blockPostConstruct;
}
+ /**
+ * No injection or PostContstuct will be called if this is set to true.
+ * If the container has already handled the injection, this should
+ * be set to true.
+ * @param b
+ */
+ public void setBlockInjection(boolean b) {
+ this.blockInjection = b;
+ }
}
Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/EndpointDefinitionParser.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/EndpointDefinitionParser.java?rev=1211239&r1=1211238&r2=1211239&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/EndpointDefinitionParser.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/EndpointDefinitionParser.java Tue Dec 6 23:59:22 2011
@@ -152,6 +152,7 @@ public class EndpointDefinitionParser ex
if (!StringUtils.isEmpty(val)) {
if (val.startsWith("#")) {
bean.addConstructorArgReference(val.substring(1));
+ bean.addPropertyValue("checkBlockConstuct", Boolean.TRUE);
} else {
try {
Object obj = ClassLoaderUtils.loadClass(val, getClass()).newInstance();
@@ -179,6 +180,8 @@ public class EndpointDefinitionParser ex
public static class SpringEndpointImpl extends EndpointImpl
implements ApplicationContextAware {
+ boolean checkBlockConstruct;
+
public SpringEndpointImpl(Object o) {
super(o instanceof Bus ? (Bus)o : null,
o instanceof Bus ? null : o);
@@ -188,8 +191,26 @@ public class EndpointDefinitionParser ex
super(bus, implementor);
}
+ public void setCheckBlockConstuct(Boolean b) {
+ checkBlockConstruct = b;
+ }
public void setApplicationContext(ApplicationContext ctx) throws BeansException {
+ if (checkBlockConstruct) {
+ try {
+ Class<?> cls = Class
+ .forName("org.springframework.context.annotation.CommonAnnotationBeanPostProcessor");
+ if (ctx.getBeanNamesForType(cls, true, false).length != 0) {
+ //Spring will handle the postconstruct, but won't inject the
+ // WebServiceContext so we do need to do that.
+ super.getServerFactory().setBlockPostConstruct(true);
+ } else {
+ super.getServerFactory().setBlockInjection(true);
+ }
+ } catch (ClassNotFoundException e) {
+ //ignore
+ }
+ }
if (getBus() == null) {
setBus(BusWiringBeanFactoryPostProcessor.addDefaultBus(ctx));
}