Added: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/PayloadProvider.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/PayloadProvider.java?view=auto&rev=453355
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/PayloadProvider.java (added)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/PayloadProvider.java Thu Oct 5 13:19:52 2006
@@ -0,0 +1,32 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.jaxws.provider;
+
+import javax.xml.transform.Source;
+import javax.xml.ws.Provider;
+import javax.xml.ws.WebServiceProvider;
+
+@WebServiceProvider
+public class PayloadProvider implements Provider<Source> {
+
+ public Source invoke(Source source) {
+ return source;
+ }
+
+}
Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/PayloadProvider.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/PayloadProvider.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/PayloadProvider.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/ProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/ProviderTest.java?view=auto&rev=453355
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/ProviderTest.java (added)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/ProviderTest.java Thu Oct 5 13:19:52 2006
@@ -0,0 +1,42 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.jaxws.provider;
+
+import org.w3c.dom.Node;
+
+import org.apache.cxf.jaxws.AbstractJaxWsTest;
+import org.apache.cxf.jaxws.EndpointImpl;
+import org.apache.cxf.transport.local.LocalTransportFactory;
+
+public class ProviderTest extends AbstractJaxWsTest {
+ public void testInvocation() throws Exception {
+ EndpointImpl ep = new EndpointImpl(getBus(), new PayloadProvider(), null);
+ ep.publish("http://localhost:9000/Provider");
+
+ Node response = invoke("http://localhost:9000/Provider",
+ LocalTransportFactory.TRANSPORT_ID,
+ "/org/apache/cxf/jaxws/sayHi.xml");
+
+ assertNotNull(response);
+ assertNoFault(response);
+
+ addNamespace("j", "http://service.jaxws.cxf.apache.org");
+ assertValid("//s:Body/j:sayHi", response);
+ }
+}
Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/ProviderTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/ProviderTest.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/ProviderTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/sayHi.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/sayHi.xml?view=auto&rev=453355
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/sayHi.xml (added)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/sayHi.xml Thu Oct 5 13:19:52 2006
@@ -0,0 +1,26 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+ <soap:Body>
+ <sayHi xmlns="http://service.jaxws.cxf.apache.org">
+ <text>hi</text>
+ </sayHi>
+ </soap:Body>
+
+</soap:Envelope>
Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/sayHi.xml
------------------------------------------------------------------------------
svn:executable = *
Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/sayHi.xml
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/sayHi.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/Hello.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/Hello.java?view=auto&rev=453355
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/Hello.java (added)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/Hello.java Thu Oct 5 13:19:52 2006
@@ -0,0 +1,31 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.jaxws.service;
+
+import javax.jws.WebMethod;
+import javax.jws.WebService;
+
+@WebService
+public class Hello {
+
+ @WebMethod
+ public String sayHi(String text) {
+ return text;
+ }
+}
Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/Hello.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/Hello.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/Hello.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/support/ProviderServiceFactoryBeanTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/support/ProviderServiceFactoryBeanTest.java?view=diff&rev=453355&r1=453354&r2=453355
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/support/ProviderServiceFactoryBeanTest.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/support/ProviderServiceFactoryBeanTest.java Thu Oct 5 13:19:52 2006
@@ -22,24 +22,20 @@
import javax.xml.namespace.QName;
-import junit.framework.TestCase;
-
import org.apache.cxf.Bus;
-import org.apache.cxf.binding.BindingFactoryManager;
-import org.apache.cxf.binding.BindingFactoryManagerImpl;
-import org.apache.cxf.binding.soap.SoapBindingFactory;
+import org.apache.cxf.binding.Binding;
+import org.apache.cxf.binding.soap.SoapBinding;
+import org.apache.cxf.binding.xml.XMLBinding;
+import org.apache.cxf.endpoint.Endpoint;
+import org.apache.cxf.endpoint.ServerImpl;
+import org.apache.cxf.jaxws.AbstractJaxWsTest;
import org.apache.cxf.service.Service;
+import org.apache.cxf.service.factory.ServerFactoryBean;
import org.apache.cxf.service.model.EndpointInfo;
import org.apache.cxf.service.model.InterfaceInfo;
-import org.apache.cxf.wsdl.WSDLManager;
-import org.apache.cxf.wsdl11.WSDLManagerImpl;
import org.apache.hello_world_soap_http.HWSoapMessageProvider;
-import org.easymock.IMocksControl;
-
-import static org.easymock.EasyMock.expect;
-import static org.easymock.classextension.EasyMock.createNiceControl;
-public class ProviderServiceFactoryBeanTest extends TestCase {
+public class ProviderServiceFactoryBeanTest extends AbstractJaxWsTest {
public void testFromWSDL() throws Exception {
URL resource = getClass().getResource("/wsdl/hello_world.wsdl");
assertNotNull(resource);
@@ -52,7 +48,7 @@
// only the unit test does.
bean.setWsdlURL(resource);
- Bus bus = createBus();
+ Bus bus = getBus();
bean.setBus(bus);
bean.setServiceClass(HWSoapMessageProvider.class);
@@ -64,13 +60,24 @@
InterfaceInfo intf = service.getServiceInfo().getInterface();
assertNotNull(intf);
+
+ ServerFactoryBean svrFactory = new ServerFactoryBean();
+ svrFactory.setBus(bus);
+ svrFactory.setServiceFactory(bean);
+ svrFactory.setStart(false);
+
+ ServerImpl server = (ServerImpl) svrFactory.create();
+
+ Endpoint endpoint = server.getEndpoint();
+ Binding binding = endpoint.getBinding();
+ assertTrue(binding instanceof SoapBinding);
}
public void testXMLBindingFromCode() throws Exception {
JaxWsImplementorInfo implInfo = new JaxWsImplementorInfo(SourcePayloadProvider.class);
ProviderServiceFactoryBean bean = new ProviderServiceFactoryBean(implInfo);
- Bus bus = createBus();
+ Bus bus = getBus();
bean.setBus(bus);
Service service = bean.create();
@@ -85,24 +92,15 @@
EndpointInfo ei = service.getServiceInfo().getEndpoint(new QName("SourcePayloadProviderPort"));
assertNotNull(ei);
- }
-
- Bus createBus() throws Exception {
- IMocksControl control = createNiceControl();
- Bus bus = control.createMock(Bus.class);
-
- SoapBindingFactory bindingFactory = new SoapBindingFactory();
- BindingFactoryManager bfm = new BindingFactoryManagerImpl();
- bfm.registerBindingFactory("http://schemas.xmlsoap.org/wsdl/soap/", bindingFactory);
-
- expect(bus.getExtension(BindingFactoryManager.class)).andReturn(bfm).anyTimes();
-
- WSDLManagerImpl wsdlMan = new WSDLManagerImpl();
- expect(bus.getExtension(WSDLManager.class)).andReturn(wsdlMan);
-
- control.replay();
-
- return bus;
+
+ ServerFactoryBean svrFactory = new ServerFactoryBean();
+ svrFactory.setBus(bus);
+ svrFactory.setServiceFactory(bean);
+
+ ServerImpl server = (ServerImpl) svrFactory.create();
+ Endpoint endpoint = server.getEndpoint();
+ Binding binding = endpoint.getBinding();
+ assertTrue(binding instanceof XMLBinding);
}
}
Modified: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/AbstractBindingInfoFactoryBean.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/AbstractBindingInfoFactoryBean.java?view=diff&rev=453355&r1=453354&r2=453355
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/AbstractBindingInfoFactoryBean.java (original)
+++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/AbstractBindingInfoFactoryBean.java Thu Oct 5 13:19:52 2006
@@ -19,6 +19,7 @@
package org.apache.cxf.service.factory;
import org.apache.cxf.service.model.BindingInfo;
+import org.apache.cxf.service.model.ServiceInfo;
/**
* An AbstractBindingFactory builds a binding for a Service.
@@ -34,5 +35,9 @@
public AbstractServiceFactoryBean getServiceFactory() {
return serviceFactory;
+ }
+
+ protected ServiceInfo getServiceInfo() {
+ return getServiceFactory().getService().getServiceInfo();
}
}
Modified: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/AbstractServiceConfiguration.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/AbstractServiceConfiguration.java?view=diff&rev=453355&r1=453354&r2=453355
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/AbstractServiceConfiguration.java (original)
+++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/AbstractServiceConfiguration.java Thu Oct 5 13:19:52 2006
@@ -123,6 +123,10 @@
return null;
}
+ public QName getEndpointName() {
+ return null;
+ }
+
public Class getResponseWrapper(Method selected) {
return null;
}
Modified: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/DefaultServiceConfiguration.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/DefaultServiceConfiguration.java?view=diff&rev=453355&r1=453354&r2=453355
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/DefaultServiceConfiguration.java (original)
+++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/DefaultServiceConfiguration.java Thu Oct 5 13:19:52 2006
@@ -51,7 +51,7 @@
@Override
public QName getInputMessageName(OperationInfo op) {
- return new QName(op.getName().getNamespaceURI(), op.getName() + "Request");
+ return new QName(op.getName().getNamespaceURI(), op.getName().getLocalPart());
}
@Override
@@ -85,12 +85,17 @@
@Override
public QName getOutputMessageName(OperationInfo op) {
- return new QName(op.getName().getNamespaceURI(), op.getName() + "R");
+ return new QName(op.getName().getNamespaceURI(), op.getName().getLocalPart() + "Response");
}
@Override
public QName getInterfaceName() {
return new QName(getServiceNamespace(), getServiceName() + "PortType");
+ }
+
+ @Override
+ public QName getEndpointName() {
+ return new QName(getServiceNamespace(), getServiceName() + "Port");
}
@Override
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/JaxWsMethodDispatcher.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/JaxWsMethodDispatcher.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/JaxWsMethodDispatcher.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
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?view=diff&rev=453355&r1=453354&r2=453355
==============================================================================
--- 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 Thu Oct 5 13:19:52 2006
@@ -34,6 +34,9 @@
import org.apache.cxf.common.i18n.BundleUtils;
import org.apache.cxf.common.i18n.Message;
+import org.apache.cxf.endpoint.Endpoint;
+import org.apache.cxf.endpoint.EndpointException;
+import org.apache.cxf.endpoint.EndpointImpl;
import org.apache.cxf.helpers.MethodComparator;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.service.Service;
@@ -42,12 +45,14 @@
import org.apache.cxf.service.invoker.FactoryInvoker;
import org.apache.cxf.service.invoker.Invoker;
import org.apache.cxf.service.invoker.LocalFactory;
+import org.apache.cxf.service.model.EndpointInfo;
import org.apache.cxf.service.model.FaultInfo;
import org.apache.cxf.service.model.InterfaceInfo;
import org.apache.cxf.service.model.MessageInfo;
import org.apache.cxf.service.model.MessagePartInfo;
import org.apache.cxf.service.model.OperationInfo;
import org.apache.cxf.service.model.ServiceInfo;
+import org.apache.cxf.service.model.UnwrappedOperationInfo;
import org.apache.cxf.wsdl11.WSDLServiceFactory;
/**
@@ -67,18 +72,15 @@
private List<AbstractServiceConfiguration> serviceConfigurations =
new ArrayList<AbstractServiceConfiguration>();
- private List<AbstractBindingInfoFactoryBean> bindingFactories =
- new ArrayList<AbstractBindingInfoFactoryBean>();
private QName serviceName;
private Invoker invoker;
private Executor executor;
private List<String> ignoredClasses = new ArrayList<String>();
+ private SimpleMethodDispatcher methodDispatcher = new SimpleMethodDispatcher();
public ReflectionServiceFactoryBean() {
getServiceConfigurations().add(0, new DefaultServiceConfiguration());
-
- bindingFactories.add(new SoapBindingInfoFactoryBean());
-
+
ignoredClasses.add("java.lang.Object");
ignoredClasses.add("java.lang.Throwable");
ignoredClasses.add("org.omg.CORBA_2_3.portable.ObjectImpl");
@@ -113,16 +115,31 @@
});
}
+ getService().put(MethodDispatcher.class.getName(), getMethodDispatcher());
+
+ createEndpoints();
+
return getService();
}
+
+ protected void createEndpoints() {
+ Service service = getService();
+
+ for (EndpointInfo ei : service.getServiceInfo().getEndpoints()) {
+ try {
+ Endpoint ep = createEndpoint(ei);
- protected void initializeBindings() {
- for (AbstractBindingInfoFactoryBean b : getBindingFactories()) {
- b.setServiceFactory(this);
- getService().getServiceInfo().addBinding(b.create());
+ service.getEndpoints().put(ei.getName(), ep);
+ } catch (EndpointException e) {
+ throw new ServiceConstructionException(e);
+ }
}
}
+ protected Endpoint createEndpoint(EndpointInfo ei) throws EndpointException {
+ return new EndpointImpl(getBus(), getService(), ei);
+ }
+
protected void initializeServiceConfigurations() {
for (AbstractServiceConfiguration c : serviceConfigurations) {
c.setServiceFactory(this);
@@ -141,8 +158,10 @@
initializeWSDLOperations();
} else {
LOG.info("Creating Service " + getServiceQName() + " from class " + getServiceClass().getName());
- // If we can't find the wsdlLocation, then we should build a service model from the class.
+ // If we can't find the wsdlLocation, then we should build a service model ufrom the class.
ServiceInfo serviceInfo = new ServiceInfo();
+ ServiceImpl service = new ServiceImpl(serviceInfo);
+
serviceInfo.setName(getServiceQName());
createInterface(serviceInfo);
@@ -151,10 +170,7 @@
getDataBinding().initialize(serviceInfo);
}
- ServiceImpl service = new ServiceImpl(serviceInfo);
setService(service);
-
- initializeBindings();
}
}
@@ -229,11 +245,34 @@
}
protected OperationInfo createOperation(ServiceInfo serviceInfo, InterfaceInfo intf, Method m) {
- OperationInfo info = intf.addOperation(getOperationName(intf, m));
+ OperationInfo op = intf.addOperation(getOperationName(intf, m));
- createMessageParts(intf, info, m);
+ if (isWrapped(m)) {
+ UnwrappedOperationInfo uOp = new UnwrappedOperationInfo(op);
+ op.setUnwrappedOperation(uOp);
+
+ createMessageParts(intf, uOp, m);
+
+ if (uOp.hasInput()) {
+ MessageInfo msg = new MessageInfo(op, op.getName());
+ op.setInput(uOp.getInputName(), msg);
+ msg.addMessagePart(op.getName());
+ }
+
+ if (uOp.hasOutput()) {
+ QName name = new QName(op.getName().getNamespaceURI(),
+ op.getName().getLocalPart() + "Response");
+ MessageInfo msg = new MessageInfo(op, name);
+ op.setOutput(uOp.getOutputName(), msg);
+ msg.addMessagePart(name);
+ }
+ } else {
+ createMessageParts(intf, op, m);
+ }
+
+ methodDispatcher.bind(op, m);
- return info;
+ return op;
}
protected void createMessageParts(InterfaceInfo intf, OperationInfo op, Method method) {
@@ -284,9 +323,9 @@
return serviceName;
}
- protected QName getPortQName() {
+ protected QName getEndpointName() {
for (AbstractServiceConfiguration c : serviceConfigurations) {
- QName name = c.getInterfaceName();
+ QName name = c.getEndpointName();
if (name != null) {
return name;
}
@@ -333,6 +372,16 @@
}
return true;
}
+
+ protected boolean isWrapped(final Method method) {
+// for (AbstractServiceConfiguration c : serviceConfigurations) {
+// Boolean b = c.isOperation(method);
+// if (b != null) {
+// return b.booleanValue();
+// }
+// }
+ return true;
+ }
protected boolean isMatchOperation(String methodNameInClass, String methodNameInWsdl) {
// TODO: This seems wrong and not sure who put it here. Will revisit - DBD
@@ -541,8 +590,10 @@
return null;
}
-
-
+ protected SimpleMethodDispatcher getMethodDispatcher() {
+ return methodDispatcher;
+ }
+
public List<AbstractServiceConfiguration> getConfigurations() {
return serviceConfigurations;
}
@@ -609,13 +660,5 @@
public void setIgnoredClasses(List<String> ignoredClasses) {
this.ignoredClasses = ignoredClasses;
- }
-
- public List<AbstractBindingInfoFactoryBean> getBindingFactories() {
- return bindingFactories;
- }
-
- public void setBindingFactories(List<AbstractBindingInfoFactoryBean> bindingFactories) {
- this.bindingFactories = bindingFactories;
}
}
Added: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ServerFactoryBean.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ServerFactoryBean.java?view=auto&rev=453355
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ServerFactoryBean.java (added)
+++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ServerFactoryBean.java Thu Oct 5 13:19:52 2006
@@ -0,0 +1,177 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.service.factory;
+
+import java.io.IOException;
+
+import javax.xml.namespace.QName;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusException;
+import org.apache.cxf.endpoint.Endpoint;
+import org.apache.cxf.endpoint.EndpointException;
+import org.apache.cxf.endpoint.Server;
+import org.apache.cxf.endpoint.ServerImpl;
+import org.apache.cxf.service.Service;
+import org.apache.cxf.service.model.BindingInfo;
+import org.apache.cxf.service.model.EndpointInfo;
+import org.apache.cxf.transport.ChainInitiationObserver;
+import org.apache.cxf.transport.DestinationFactory;
+import org.apache.cxf.transport.DestinationFactoryManager;
+import org.apache.cxf.wsdl11.WSDLEndpointFactory;
+
+public class ServerFactoryBean {
+ private ReflectionServiceFactoryBean serviceFactory;
+ private Service service;
+ private DestinationFactory destinationFactory;
+ private Server server;
+ private Bus bus;
+ private String address;
+ private String transportId; // where should this come from???
+ private AbstractBindingInfoFactoryBean bindingFactory = new SoapBindingInfoFactoryBean();
+ private QName endpointName;
+ private boolean start = true;
+
+ public Server create() {
+ try {
+ service = serviceFactory.getService();
+
+ if (endpointName == null) {
+ endpointName = serviceFactory.getEndpointName();
+ }
+
+ EndpointInfo ei = service.getServiceInfo().getEndpoint(endpointName);
+
+ if (ei == null) {
+ ei = createEndpoint();
+ } else if (address != null) {
+ ei.setAddress(address);
+ }
+
+ Endpoint ep = serviceFactory.createEndpoint(ei);
+ service.getEndpoints().put(ep.getEndpointInfo().getName(), ep);
+ server = new ServerImpl(bus, ep, new ChainInitiationObserver(ep, bus));
+
+ if (start) {
+ server.start();
+ }
+ } catch (EndpointException e) {
+ throw new ServiceConstructionException(e);
+ } catch (BusException e) {
+ throw new ServiceConstructionException(e);
+ } catch (IOException e) {
+ throw new ServiceConstructionException(e);
+ }
+
+ return server;
+ }
+
+ private EndpointInfo createEndpoint() throws BusException {
+ if (transportId == null) {
+ throw new NullPointerException("A transport id must be specified!");
+ }
+
+ DestinationFactoryManager dfm = bus.getExtension(DestinationFactoryManager.class);
+ destinationFactory = dfm.getDestinationFactory(transportId);
+
+ // Get the Service from the ServiceFactory if specified
+ bindingFactory.setServiceFactory(serviceFactory);
+ BindingInfo bindingInfo = bindingFactory.create();
+ service.getServiceInfo().addBinding(bindingInfo);
+
+ EndpointInfo ei = new EndpointInfo(service.getServiceInfo(), transportId);
+ ei.setName(endpointName);
+ ei.setAddress(address);
+ ei.setBinding(bindingInfo);
+
+ if (destinationFactory instanceof WSDLEndpointFactory) {
+ WSDLEndpointFactory we = (WSDLEndpointFactory) destinationFactory;
+
+ we.createPortExtensors(ei, service);
+ } else {
+ // ?
+ }
+ return ei;
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address;
+ }
+
+ public Bus getBus() {
+ return bus;
+ }
+
+ public void setBus(Bus bus) {
+ this.bus = bus;
+ }
+
+ public DestinationFactory getDestinationFactory() {
+ return destinationFactory;
+ }
+
+ public void setDestinationFactory(DestinationFactory destinationFactory) {
+ this.destinationFactory = destinationFactory;
+ }
+
+ public Server getServer() {
+ return server;
+ }
+
+ public void setServer(Server server) {
+ this.server = server;
+ }
+
+ public ReflectionServiceFactoryBean getServiceFactory() {
+ return serviceFactory;
+ }
+
+ public void setServiceFactory(ReflectionServiceFactoryBean serviceFactory) {
+ this.serviceFactory = serviceFactory;
+ }
+
+ public String getTransportId() {
+ return transportId;
+ }
+
+ public void setTransportId(String transportId) {
+ this.transportId = transportId;
+ }
+
+ public QName getEndpointName() {
+ return endpointName;
+ }
+
+ public void setEndpointName(QName endpointName) {
+ this.endpointName = endpointName;
+ }
+
+ public boolean isStart() {
+ return start;
+ }
+
+ public void setStart(boolean start) {
+ this.start = start;
+ }
+
+}
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ServerFactoryBean.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ServerFactoryBean.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ServerFactoryBean.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/SimpleMethodDispatcher.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/SimpleMethodDispatcher.java?view=auto&rev=453355
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/SimpleMethodDispatcher.java (added)
+++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/SimpleMethodDispatcher.java Thu Oct 5 13:19:52 2006
@@ -0,0 +1,97 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.service.factory;
+
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.cxf.endpoint.Endpoint;
+import org.apache.cxf.interceptor.WrappedInInterceptor;
+import org.apache.cxf.service.model.BindingInfo;
+import org.apache.cxf.service.model.BindingOperationInfo;
+import org.apache.cxf.service.model.OperationInfo;
+
+public class SimpleMethodDispatcher implements MethodDispatcher {
+
+ private Map<Method, Map<BindingInfo, BindingOperationInfo>> infoMap =
+ new ConcurrentHashMap<Method, Map<BindingInfo, BindingOperationInfo>>();
+ private Map<OperationInfo, Method> opToMethod =
+ new ConcurrentHashMap<OperationInfo, Method>();
+ private Map<Method, OperationInfo> methodToOp =
+ new ConcurrentHashMap<Method, OperationInfo>();
+
+ public void bind(OperationInfo o, Method... methods) {
+ Method primary = methods[0];
+ for (Method m : methods) {
+ methodToOp.put(m, o);
+
+ Map<BindingInfo, BindingOperationInfo> biToBop = new HashMap<BindingInfo, BindingOperationInfo>();
+ infoMap.put(m, biToBop);
+ }
+
+ opToMethod.put(o, primary);
+
+ if (o.isUnwrappedCapable()) {
+ opToMethod.put(o.getUnwrappedOperation(), primary);
+ }
+ }
+
+ public BindingOperationInfo getBindingOperation(Method method, Endpoint endpoint) {
+ Map<BindingInfo, BindingOperationInfo> bops = infoMap.get(method);
+ if (bops == null) {
+ return null;
+ }
+
+ BindingOperationInfo bop = bops.get(endpoint.getEndpointInfo().getBinding());
+ if (bop == null) {
+ OperationInfo o = methodToOp.get(method);
+ if (o == null) {
+ return null;
+ }
+
+ BindingInfo b = endpoint.getEndpointInfo().getBinding();
+ for (BindingOperationInfo bop2 : b.getOperations()) {
+ if (bop2.getOperationInfo().equals(o)) {
+ bop2 = getRealOperation(o, bop2);
+
+ bops.put(b, bop2);
+ return bop2;
+ }
+ }
+ }
+ return bop;
+ }
+
+ private BindingOperationInfo getRealOperation(OperationInfo o, BindingOperationInfo bop) {
+ BindingOperationInfo unwrappedOp = bop.getUnwrappedOperation();
+ if (unwrappedOp != null
+ && unwrappedOp.getOperationInfo().equals(o.getUnwrappedOperation())
+ && unwrappedOp.getOperationInfo().getInput()
+ .getProperty(WrappedInInterceptor.WRAPPER_CLASS) != null) {
+ bop = unwrappedOp;
+ }
+ return bop;
+ }
+
+ public Method getMethod(BindingOperationInfo op) {
+ return opToMethod.get(op.getOperationInfo());
+ }
+}
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/SimpleMethodDispatcher.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/SimpleMethodDispatcher.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/SimpleMethodDispatcher.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/SoapBindingInfoFactoryBean.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/SoapBindingInfoFactoryBean.java?view=diff&rev=453355&r1=453354&r2=453355
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/SoapBindingInfoFactoryBean.java (original)
+++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/SoapBindingInfoFactoryBean.java Thu Oct 5 13:19:52 2006
@@ -35,7 +35,7 @@
@Override
public BindingInfo create() {
ServiceInfo si = getServiceInfo();
- SoapBindingInfo info = new SoapBindingInfo(si, null, soapVersion);
+ SoapBindingInfo info = new SoapBindingInfo(si, "http://schemas.xmlsoap.org/wsdl/soap/", soapVersion);
info.setName(getBindingName());
info.setStyle(getStyle());
@@ -48,6 +48,7 @@
BindingOperationInfo bop =
info.buildOperation(op.getName(), op.getInputName(), op.getOutputName());
+
bop.addExtensor(sop);
info.addOperation(bop);
@@ -76,10 +77,6 @@
ServiceInfo si = getServiceInfo();
return new QName(si.getName().getNamespaceURI(),
si.getName().getLocalPart() + "SoapBinding");
- }
-
- protected ServiceInfo getServiceInfo() {
- return getServiceFactory().getService().getServiceInfo();
}
public SoapVersion getSoapVersion() {
Modified: incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/service/factory/ReflectionServiceFactoryTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/service/factory/ReflectionServiceFactoryTest.java?view=diff&rev=453355&r1=453354&r2=453355
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/service/factory/ReflectionServiceFactoryTest.java (original)
+++ incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/service/factory/ReflectionServiceFactoryTest.java Thu Oct 5 13:19:52 2006
@@ -19,29 +19,64 @@
package org.apache.cxf.service.factory;
import java.util.List;
+import java.util.Map;
+import javax.wsdl.extensions.soap.SOAPAddress;
+import javax.xml.bind.JAXBException;
import javax.xml.namespace.QName;
+import org.apache.cxf.Bus;
+import org.apache.cxf.binding.BindingFactoryManager;
+import org.apache.cxf.binding.soap.SoapBindingFactory;
+import org.apache.cxf.binding.soap.SoapDestinationFactory;
import org.apache.cxf.binding.soap.model.SoapBindingInfo;
import org.apache.cxf.binding.soap.model.SoapOperationInfo;
+import org.apache.cxf.endpoint.Endpoint;
+import org.apache.cxf.endpoint.Server;
import org.apache.cxf.jaxb.JAXBDataBinding;
import org.apache.cxf.service.Service;
import org.apache.cxf.service.model.BindingInfo;
import org.apache.cxf.service.model.BindingOperationInfo;
+import org.apache.cxf.service.model.EndpointInfo;
import org.apache.cxf.service.model.InterfaceInfo;
import org.apache.cxf.service.model.MessagePartInfo;
import org.apache.cxf.service.model.OperationInfo;
import org.apache.cxf.service.model.ServiceInfo;
import org.apache.cxf.test.AbstractCXFTest;
+import org.apache.cxf.transport.ConduitInitiatorManager;
+import org.apache.cxf.transport.DestinationFactoryManager;
+import org.apache.cxf.transport.local.LocalTransportFactory;
public class ReflectionServiceFactoryTest extends AbstractCXFTest {
- public void testReflectionBuilding() throws Exception {
- ReflectionServiceFactoryBean sf = new ReflectionServiceFactoryBean();
- sf.setDataBinding(new JAXBDataBinding(HelloService.class));
- sf.setBus(getBus());
- sf.setServiceClass(HelloService.class);
+ private ReflectionServiceFactoryBean serviceFactory;
+
+ public void setUp() throws Exception {
+ super.setUp();
- Service service = sf.create();
+ Bus bus = getBus();
+
+ SoapBindingFactory bindingFactory = new SoapBindingFactory();
+
+ bus.getExtension(BindingFactoryManager.class)
+ .registerBindingFactory("http://schemas.xmlsoap.org/wsdl/soap/", bindingFactory);
+
+ DestinationFactoryManager dfm = bus.getExtension(DestinationFactoryManager.class);
+ SoapDestinationFactory soapDF = new SoapDestinationFactory(dfm);
+ dfm.registerDestinationFactory("http://schemas.xmlsoap.org/wsdl/soap/", soapDF);
+ dfm.registerDestinationFactory("http://schemas.xmlsoap.org/soap/", soapDF);
+
+ LocalTransportFactory localTransport = new LocalTransportFactory();
+ dfm.registerDestinationFactory("http://schemas.xmlsoap.org/wsdl/soap/http", localTransport);
+ dfm.registerDestinationFactory("http://schemas.xmlsoap.org/soap/http", localTransport);
+
+ ConduitInitiatorManager extension = bus.getExtension(ConduitInitiatorManager.class);
+ extension.registerConduitInitiator(LocalTransportFactory.TRANSPORT_ID, localTransport);
+ extension.registerConduitInitiator("http://schemas.xmlsoap.org/wsdl/soap/http", localTransport);
+ extension.registerConduitInitiator("http://schemas.xmlsoap.org/soap/http", localTransport);
+ }
+
+ public void testReflectionBuild() throws Exception {
+ Service service = createService();
ServiceInfo si = service.getServiceInfo();
InterfaceInfo intf = si.getInterface();
@@ -52,16 +87,64 @@
OperationInfo sayHelloOp = intf.getOperation(new QName(ns, "sayHello"));
assertNotNull(sayHelloOp);
+ assertEquals("sayHello", sayHelloOp.getInput().getName().getLocalPart());
+
List<MessagePartInfo> messageParts = sayHelloOp.getInput().getMessageParts();
+ assertEquals(1, messageParts.size());
+
+ // test unwrapping
+ assertTrue(sayHelloOp.isUnwrappedCapable());
+
+ OperationInfo unwrappedOp = sayHelloOp.getUnwrappedOperation();
+ assertEquals("sayHello", unwrappedOp.getInput().getName().getLocalPart());
+
+ messageParts = unwrappedOp.getInput().getMessageParts();
assertEquals(0, messageParts.size());
+ // test output
messageParts = sayHelloOp.getOutput().getMessageParts();
assertEquals(1, messageParts.size());
+ assertEquals("sayHelloResponse", sayHelloOp.getOutput().getName().getLocalPart());
+
+ messageParts = unwrappedOp.getOutput().getMessageParts();
+ assertEquals("sayHelloResponse", unwrappedOp.getOutput().getName().getLocalPart());
+ assertEquals(1, messageParts.size());
MessagePartInfo mpi = messageParts.get(0);
assertEquals("out", mpi.getName().getLocalPart());
assertEquals(String.class, mpi.getProperty(Class.class.getName()));
+ }
+
+ private Service createService() throws JAXBException {
+ serviceFactory = new ReflectionServiceFactoryBean();
+ serviceFactory.setDataBinding(new JAXBDataBinding(HelloService.class));
+ serviceFactory.setBus(getBus());
+ serviceFactory.setServiceClass(HelloService.class);
+
+ Service service = serviceFactory.create();
+ return service;
+ }
+
+ public void testServerFactoryBean() throws Exception {
+ Service service = createService();
+
+ ServerFactoryBean svrBean = new ServerFactoryBean();
+ svrBean.setAddress("http://localhost/Hello");
+ svrBean.setTransportId("http://schemas.xmlsoap.org/soap/");
+ svrBean.setServiceFactory(serviceFactory);
+ svrBean.setBus(getBus());
+
+ Server server = svrBean.create();
+ assertNotNull(server);
+ Map<QName, Endpoint> eps = service.getEndpoints();
+ assertEquals(1, eps.size());
+
+ Endpoint ep = eps.values().iterator().next();
+ EndpointInfo endpointInfo = ep.getEndpointInfo();
+
+ SOAPAddress soapAddress = endpointInfo.getExtensor(SOAPAddress.class);
+ assertNotNull(soapAddress);
- BindingInfo b = si.getBindings().iterator().next();
+ BindingInfo b = service.getServiceInfo().getBindings().iterator().next();
assertTrue(b instanceof SoapBindingInfo);
Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPTransportFactory.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPTransportFactory.java?view=diff&rev=453355&r1=453354&r2=453355
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPTransportFactory.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPTransportFactory.java Thu Oct 5 13:19:52 2006
@@ -21,13 +21,20 @@
import java.io.IOException;
import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
+import javax.wsdl.Port;
+import javax.wsdl.extensions.http.HTTPAddress;
import org.apache.cxf.Bus;
import org.apache.cxf.configuration.Configurer;
+import org.apache.cxf.service.Service;
+import org.apache.cxf.service.model.BindingInfo;
import org.apache.cxf.service.model.EndpointInfo;
+import org.apache.cxf.service.model.ServiceInfo;
import org.apache.cxf.transport.Conduit;
import org.apache.cxf.transport.ConduitInitiator;
import org.apache.cxf.transport.ConduitInitiatorManager;
@@ -35,9 +42,11 @@
import org.apache.cxf.transport.DestinationFactory;
import org.apache.cxf.transport.DestinationFactoryManager;
import org.apache.cxf.ws.addressing.EndpointReferenceType;
+import org.apache.cxf.wsdl11.WSDLEndpointFactory;
+import org.xmlsoap.schemas.wsdl.http.AddressType;
-public class HTTPTransportFactory implements ConduitInitiator, DestinationFactory {
+public class HTTPTransportFactory implements ConduitInitiator, DestinationFactory, WSDLEndpointFactory {
private Bus bus;
private Collection<String> activationNamespaces;
@@ -99,5 +108,32 @@
configurer.configureBean(destination);
}
return destination;
+ }
+
+ public EndpointInfo createEndpointInfo(ServiceInfo serviceInfo, BindingInfo b, Port port) {
+ List ees = port.getExtensibilityElements();
+ for (Iterator itr = ees.iterator(); itr.hasNext();) {
+ Object extensor = itr.next();
+
+ if (extensor instanceof HTTPAddress) {
+ HTTPAddress httpAdd = (HTTPAddress)extensor;
+
+ EndpointInfo info = new EndpointInfo(serviceInfo, "http://schemas.xmlsoap.org/wsdl/http/");
+ info.setAddress(httpAdd.getLocationURI());
+ return info;
+ } else if (extensor instanceof AddressType) {
+ AddressType httpAdd = (AddressType)extensor;
+
+ EndpointInfo info = new EndpointInfo(serviceInfo, "http://schemas.xmlsoap.org/wsdl/http/");
+ info.setAddress(httpAdd.getLocation());
+ return info;
+ }
+ }
+
+ return null;
+ }
+
+ public void createPortExtensors(EndpointInfo ei, Service service) {
+ // TODO
}
}
Modified: incubator/cxf/trunk/rt/transports/http/src/main/resources/META-INF/bus-extensions.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/resources/META-INF/bus-extensions.xml?view=diff&rev=453355&r1=453354&r2=453355
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/resources/META-INF/bus-extensions.xml (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/resources/META-INF/bus-extensions.xml Thu Oct 5 13:19:52 2006
@@ -20,8 +20,8 @@
<extensions xmlns="http://cxf.apache.org/bus/extension">
<extension class="org.apache.cxf.transport.http.HTTPTransportFactory" deferred="true">
- <namespace>http://schemas.xmlsoap.org/wsdl/soap/</namespace>
<namespace>http://schemas.xmlsoap.org/wsdl/soap/http</namespace>
+ <namespace>http://schemas.xmlsoap.org/soap/http</namespace>
<namespace>http://schemas.xmlsoap.org/wsdl/http/</namespace>
<namespace>http://cxf.apache.org/transports/http/configuration</namespace>
<namespace>http://cxf.apache.org/bindings/xformat</namespace>
Modified: incubator/cxf/trunk/rt/transports/http/src/main/resources/META-INF/cxf/cxf-extension.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/resources/META-INF/cxf/cxf-extension.xml?view=diff&rev=453355&r1=453354&r2=453355
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/resources/META-INF/cxf/cxf-extension.xml (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/resources/META-INF/cxf/cxf-extension.xml Thu Oct 5 13:19:52 2006
@@ -27,7 +27,7 @@
<property name="bus" ref="cxf"/>
<property name="activationNamespaces">
<set>
- <value>http://schemas.xmlsoap.org/wsdl/soap/</value>
+ <value>http://schemas.xmlsoap.org/soap/http</value>
<value>http://schemas.xmlsoap.org/wsdl/soap/http</value>
<value>http://schemas.xmlsoap.org/wsdl/http/</value>
<value>http://cxf.apache.org/transports/http/configuration</value>
Modified: incubator/cxf/trunk/rt/transports/local/src/main/java/org/apache/cxf/transport/local/LocalConduit.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/local/src/main/java/org/apache/cxf/transport/local/LocalConduit.java?view=diff&rev=453355&r1=453354&r2=453355
==============================================================================
--- incubator/cxf/trunk/rt/transports/local/src/main/java/org/apache/cxf/transport/local/LocalConduit.java (original)
+++ incubator/cxf/trunk/rt/transports/local/src/main/java/org/apache/cxf/transport/local/LocalConduit.java Thu Oct 5 13:19:52 2006
@@ -65,6 +65,11 @@
final LocalConduit conduit = this;
final Exchange exchange = message.getExchange();
+ if (destination.getMessageObserver() == null) {
+ throw new IllegalStateException("Local destination does not have a MessageObserver on address "
+ + destination.getAddress().getAddress().getValue());
+ }
+
final Runnable receiver = new Runnable() {
public void run() {
MessageImpl m = new MessageImpl();
@@ -72,6 +77,7 @@
m.setDestination(destination);
m.put(IN_CONDUIT, conduit);
m.put(IN_EXCHANGE, exchange);
+
destination.getMessageObserver().onMessage(m);
}
};
Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/bus/SpringBusFactoryTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/bus/SpringBusFactoryTest.java?view=diff&rev=453355&r1=453354&r2=453355
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/bus/SpringBusFactoryTest.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/bus/SpringBusFactoryTest.java Thu Oct 5 13:19:52 2006
@@ -76,8 +76,9 @@
} catch (BusException ex) {
// expected
}
- assertNotNull("conduit initiator not available",
- cim.getConduitInitiator("http://schemas.xmlsoap.org/wsdl/soap/"));
+ // not sure that we need this - Dan Diephouse
+// assertNotNull("conduit initiator not available",
+// cim.getConduitInitiator("http://schemas.xmlsoap.org/wsdl/soap/"));
assertNotNull("conduit initiator not available",
cim.getConduitInitiator("http://schemas.xmlsoap.org/wsdl/soap/http"));
assertNotNull("conduit initiator not available",
Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerXMLBareTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerXMLBareTest.java?view=diff&rev=453355&r1=453354&r2=453355
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerXMLBareTest.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerXMLBareTest.java Thu Oct 5 13:19:52 2006
@@ -74,8 +74,8 @@
XMLService service = new XMLService();
assertNotNull(service);
- String response1 = new String("Hello ");
- String response2 = new String("Bonjour");
+ String response1 = "Hello ";
+ String response2 = "Bonjour";
try {
Greeter greeter = service.getPort(portName, Greeter.class);
String username = System.getProperty("user.name");
Modified: incubator/cxf/trunk/testutils/src/main/java/org/apache/cxf/testutil/common/ServerLauncher.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/testutils/src/main/java/org/apache/cxf/testutil/common/ServerLauncher.java?view=diff&rev=453355&r1=453354&r2=453355
==============================================================================
--- incubator/cxf/trunk/testutils/src/main/java/org/apache/cxf/testutil/common/ServerLauncher.java (original)
+++ incubator/cxf/trunk/testutils/src/main/java/org/apache/cxf/testutil/common/ServerLauncher.java Thu Oct 5 13:19:52 2006
@@ -48,7 +48,7 @@
final String className;
- private final boolean debug = false;
+ private final boolean debug = true;
private boolean inProcess = DEFAULT_IN_PROCESS;
private AbstractTestServerBase inProcessServer;
|