You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by jo...@apache.org on 2011/03/24 01:40:48 UTC
svn commit: r1084817 - in /cxf/sandbox/cxf-blueprint:
core/src/main/java/org/apache/cxf/blueprint/core/
jaxws/src/main/java/org/apache/cxf/blueprint/jaxws/
jaxws/src/test/java/org/apache/cxf/blueprint/jaxws/
Author: joed
Date: Thu Mar 24 00:40:48 2011
New Revision: 1084817
URL: http://svn.apache.org/viewvc?rev=1084817&view=rev
Log:
Fixed wsdl loading by resorting to a bundle.getEntry and passing that along.
That avoids CXF common trying to use classloading magick to resolve the resources.
Modified:
cxf/sandbox/cxf-blueprint/core/src/main/java/org/apache/cxf/blueprint/core/NSUtils.java
cxf/sandbox/cxf-blueprint/jaxws/src/main/java/org/apache/cxf/blueprint/jaxws/EndpointDefinitionParser.java
cxf/sandbox/cxf-blueprint/jaxws/src/main/java/org/apache/cxf/blueprint/jaxws/MetaDataBeans.java
cxf/sandbox/cxf-blueprint/jaxws/src/main/java/org/apache/cxf/blueprint/jaxws/ServerDefinitionParser.java
cxf/sandbox/cxf-blueprint/jaxws/src/test/java/org/apache/cxf/blueprint/jaxws/NsHandlerTest.java
Modified: cxf/sandbox/cxf-blueprint/core/src/main/java/org/apache/cxf/blueprint/core/NSUtils.java
URL: http://svn.apache.org/viewvc/cxf/sandbox/cxf-blueprint/core/src/main/java/org/apache/cxf/blueprint/core/NSUtils.java?rev=1084817&r1=1084816&r2=1084817&view=diff
==============================================================================
--- cxf/sandbox/cxf-blueprint/core/src/main/java/org/apache/cxf/blueprint/core/NSUtils.java (original)
+++ cxf/sandbox/cxf-blueprint/core/src/main/java/org/apache/cxf/blueprint/core/NSUtils.java Thu Mar 24 00:40:48 2011
@@ -17,6 +17,8 @@
package org.apache.cxf.blueprint.core;
+import java.io.IOException;
+import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
@@ -33,6 +35,7 @@ import org.apache.aries.blueprint.mutabl
import org.apache.aries.blueprint.reflect.MapEntryImpl;
import org.apache.aries.blueprint.reflect.MetadataUtil;
import org.apache.cxf.helpers.DOMUtils;
+import org.osgi.framework.Bundle;
import org.osgi.service.blueprint.container.ComponentDefinitionException;
import org.osgi.service.blueprint.reflect.MapEntry;
import org.osgi.service.blueprint.reflect.Metadata;
@@ -257,4 +260,17 @@ public class NSUtils {
return value;
}
}
+
+ public static URL location(String location, Bundle bundle) throws IOException {
+ int bangIndex = location.indexOf('!');
+ //No '!', getEntry will do
+ if (bangIndex == -1) {
+ URL url = bundle.getEntry(location);
+
+ if (url != null) {
+ return url;
+ }
+ }
+ return null;
+ }
}
Modified: cxf/sandbox/cxf-blueprint/jaxws/src/main/java/org/apache/cxf/blueprint/jaxws/EndpointDefinitionParser.java
URL: http://svn.apache.org/viewvc/cxf/sandbox/cxf-blueprint/jaxws/src/main/java/org/apache/cxf/blueprint/jaxws/EndpointDefinitionParser.java?rev=1084817&r1=1084816&r2=1084817&view=diff
==============================================================================
--- cxf/sandbox/cxf-blueprint/jaxws/src/main/java/org/apache/cxf/blueprint/jaxws/EndpointDefinitionParser.java (original)
+++ cxf/sandbox/cxf-blueprint/jaxws/src/main/java/org/apache/cxf/blueprint/jaxws/EndpointDefinitionParser.java Thu Mar 24 00:40:48 2011
@@ -53,6 +53,7 @@ class EndpointDefinitionParser extends B
//Add a blueprintContainer ref
cxfBean.addProperty("blueprintContainer", NSUtils.createRef(context, "blueprintContainer"));
+ cxfBean.addProperty("bundleContext", NSUtils.createRef(context, "blueprintBundleContext"));
if (!StringUtils.isEmpty(NSUtils.getIdOrName(element))) {
cxfBean.setId(NSUtils.getIdOrName(element));
} else {
Modified: cxf/sandbox/cxf-blueprint/jaxws/src/main/java/org/apache/cxf/blueprint/jaxws/MetaDataBeans.java
URL: http://svn.apache.org/viewvc/cxf/sandbox/cxf-blueprint/jaxws/src/main/java/org/apache/cxf/blueprint/jaxws/MetaDataBeans.java?rev=1084817&r1=1084816&r2=1084817&view=diff
==============================================================================
--- cxf/sandbox/cxf-blueprint/jaxws/src/main/java/org/apache/cxf/blueprint/jaxws/MetaDataBeans.java (original)
+++ cxf/sandbox/cxf-blueprint/jaxws/src/main/java/org/apache/cxf/blueprint/jaxws/MetaDataBeans.java Thu Mar 24 00:40:48 2011
@@ -17,20 +17,27 @@
package org.apache.cxf.blueprint.jaxws;
+import java.io.IOException;
+import java.net.URL;
import java.util.List;
import org.apache.cxf.Bus;
+import org.apache.cxf.blueprint.core.NSUtils;
import org.apache.cxf.frontend.ServerFactoryBean;
import org.apache.cxf.interceptor.Interceptor;
import org.apache.cxf.jaxws.EndpointImpl;
import org.apache.cxf.message.Message;
import org.apache.cxf.service.factory.ReflectionServiceFactoryBean;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
import org.osgi.service.blueprint.container.BlueprintContainer;
class MetaDataBeans {
public static class CxfBlueprintServer extends ServerFactoryBean {
+ private BundleContext bundleContext;
+
private BlueprintContainer blueprintContainer;
public CxfBlueprintServer() {
@@ -41,7 +48,25 @@ class MetaDataBeans {
super(fact);
}
+ private void setWsdl(String wsdl) {
+ super.setWsdlLocation(wsdl);
+ }
+
public void init() {
+
+ if (!getWsdlLocation().startsWith("file:") || !getWsdlLocation().startsWith("jar:") || !getWsdlLocation().startsWith("wsjar:")) {
+ try {
+ String wsdlLocation;
+ if (getWsdlLocation().startsWith("classpath:")) {
+ wsdlLocation = NSUtils.location(getWsdlLocation().split(":")[1], bundleContext.getBundle()).toString();
+ } else {
+ wsdlLocation = NSUtils.location(getWsdlLocation(), bundleContext.getBundle()).toString();
+ }
+ setWsdl(wsdlLocation);
+ } catch (IOException e) {
+ throw new RuntimeException("WSDL " + getWsdlLocation() + " not found.");
+ }
+ }
super.create();
}
@@ -104,6 +129,7 @@ class MetaDataBeans {
public static class CxfBlueprintEndpoint extends EndpointImpl {
+ private BundleContext bundleContext;
private BlueprintContainer blueprintContainer;
public CxfBlueprintEndpoint(Object implementor) {
@@ -115,6 +141,30 @@ class MetaDataBeans {
setBus(bus);
}
+ private void setWsdl(String wsdl) {
+ super.setWsdlLocation(wsdl);
+ }
+
+ @Override
+ public void publish() {
+
+ if (!getWsdlLocation().startsWith("file:") || !getWsdlLocation().startsWith("jar:") || !getWsdlLocation().startsWith("wsjar:")) {
+ try {
+ String wsdlLocation;
+ if (getWsdlLocation().startsWith("classpath:")) {
+ wsdlLocation = NSUtils.location(getWsdlLocation().split(":")[1], bundleContext.getBundle()).toString();
+ } else {
+ wsdlLocation = NSUtils.location(getWsdlLocation(), bundleContext.getBundle()).toString();
+ }
+ setWsdl(wsdlLocation);
+ } catch (IOException e) {
+ throw new RuntimeException("WSDL " + getWsdlLocation() + " not found.");
+ }
+ }
+
+ super.publish();
+ }
+
@Override
public void stop() {
super.stop();
@@ -129,6 +179,14 @@ class MetaDataBeans {
this.blueprintContainer = blueprintContainer;
}
+ public BundleContext getBundleContext() {
+ return bundleContext;
+ }
+
+ public void setBundleContext(BundleContext bundleContext) {
+ this.bundleContext = bundleContext;
+ }
+
public List getInInterceptors() {
return super.getInInterceptors();
}
@@ -153,6 +211,19 @@ class MetaDataBeans {
return super.getOutInterceptors();
}
+ private URL location(String location, Bundle bundle) throws IOException {
+ int bangIndex = location.indexOf('!');
+ //No '!', getEntry will do
+ if (bangIndex == -1) {
+ URL url = bundle.getEntry(location);
+
+ if (url != null) {
+ return url;
+ }
+ }
+ return null;
+ }
+
public void setOutInterceptors(List interceptors) {
for (Object o : interceptors) {
super.getOutInterceptors().add((Interceptor<? extends Message>) o);
Modified: cxf/sandbox/cxf-blueprint/jaxws/src/main/java/org/apache/cxf/blueprint/jaxws/ServerDefinitionParser.java
URL: http://svn.apache.org/viewvc/cxf/sandbox/cxf-blueprint/jaxws/src/main/java/org/apache/cxf/blueprint/jaxws/ServerDefinitionParser.java?rev=1084817&r1=1084816&r2=1084817&view=diff
==============================================================================
--- cxf/sandbox/cxf-blueprint/jaxws/src/main/java/org/apache/cxf/blueprint/jaxws/ServerDefinitionParser.java (original)
+++ cxf/sandbox/cxf-blueprint/jaxws/src/main/java/org/apache/cxf/blueprint/jaxws/ServerDefinitionParser.java Thu Mar 24 00:40:48 2011
@@ -40,6 +40,7 @@ class ServerDefinitionParser extends Bas
//Add a blueprintContainer ref
+ cxfBean.addProperty("bundleContext", NSUtils.createRef(context, "blueprintBundleContext"));
cxfBean.addProperty("blueprintContainer", NSUtils.createRef(context, "blueprintContainer"));
if (!StringUtils.isEmpty(NSUtils.getIdOrName(element))) {
Modified: cxf/sandbox/cxf-blueprint/jaxws/src/test/java/org/apache/cxf/blueprint/jaxws/NsHandlerTest.java
URL: http://svn.apache.org/viewvc/cxf/sandbox/cxf-blueprint/jaxws/src/test/java/org/apache/cxf/blueprint/jaxws/NsHandlerTest.java?rev=1084817&r1=1084816&r2=1084817&view=diff
==============================================================================
--- cxf/sandbox/cxf-blueprint/jaxws/src/test/java/org/apache/cxf/blueprint/jaxws/NsHandlerTest.java (original)
+++ cxf/sandbox/cxf-blueprint/jaxws/src/test/java/org/apache/cxf/blueprint/jaxws/NsHandlerTest.java Thu Mar 24 00:40:48 2011
@@ -36,7 +36,7 @@ public class NsHandlerTest extends BaseN
BeanMetadata comp = (BeanMetadata) cdr.getComponentDefinition("bob");
- BeanProperty bp = (BeanProperty) comp.getProperties().get(1);
+ BeanProperty bp = (BeanProperty) comp.getProperties().get(2);
RefMetadata anon = (RefMetadata) bp.getValue();
assertTrue("cxf.bus.threaded.default".equals(anon.getComponentId()));
@@ -48,7 +48,9 @@ public class NsHandlerTest extends BaseN
BeanMetadata comp = (BeanMetadata) cdr.getComponentDefinition("bob");
- BeanProperty bp = (BeanProperty) comp.getProperties().get(3);
+ System.out.println(comp.getProperties());
+
+ BeanProperty bp = (BeanProperty) comp.getProperties().get(4);
CollectionMetadata anon = (CollectionMetadata) bp.getValue();
RefMetadata interceptor = (RefMetadata) anon.getValues().get(0);