You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by an...@apache.org on 2007/04/19 18:52:47 UTC
svn commit: r530485 - in /incubator/cxf/trunk:
api/src/main/java/org/apache/cxf/ws/policy/builder/jaxb/
api/src/test/java/org/apache/cxf/ws/policy/builder/jaxb/
rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/
rt/frontend/jaxws/src/main/java...
Author: andreasmyth
Date: Thu Apr 19 09:52:42 2007
New Revision: 530485
URL: http://svn.apache.org/viewvc?view=rev&rev=530485
Log:
Made the allowDuplicates property if the MAPAggregator configurable and fix its use in validateIncomingMAPs.
Allow for retrieval of addressing properties to fail without reporting a warning.
Fixed JAXWS proxy executor issue [JIRA CXF-544]
Make access to soap version public.
Added:
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/JaxwsExecutorTest.java (with props)
Modified:
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/jaxb/JaxbAssertion.java
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/jaxb/JaxbAssertionBuilder.java
incubator/cxf/trunk/api/src/test/java/org/apache/cxf/ws/policy/builder/jaxb/JaxbAssertionTest.java
incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java
incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/policy/HTTPClientAssertionBuilder.java
incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/policy/HTTPServerAssertionBuilder.java
incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/policy/HTTPClientAssertionBuilderTest.java
incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/policy/HTTPServerAssertionBuilderTest.java
incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ContextUtils.java
incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/MAPAggregator.java
incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
incubator/cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/MAPAggregatorTest.java
Modified: incubator/cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/jaxb/JaxbAssertion.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/jaxb/JaxbAssertion.java?view=diff&rev=530485&r1=530484&r2=530485
==============================================================================
--- incubator/cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/jaxb/JaxbAssertion.java (original)
+++ incubator/cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/jaxb/JaxbAssertion.java Thu Apr 19 09:52:42 2007
@@ -23,6 +23,7 @@
import org.apache.cxf.ws.policy.builder.primitive.PrimitiveAssertion;
import org.apache.neethi.Assertion;
+import org.apache.neethi.PolicyComponent;
/**
@@ -38,7 +39,16 @@
public JaxbAssertion(QName qn, boolean optional) {
super(qn, optional);
}
-
+
+ @Override
+ public boolean equal(PolicyComponent policyComponent) {
+ if (!super.equal(policyComponent)) {
+ return false;
+ }
+ JaxbAssertion<T> a = (JaxbAssertion<T>)policyComponent;
+ return data.equals(a.getData());
+ }
+
public void setData(T d) {
data = d;
}
Modified: incubator/cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/jaxb/JaxbAssertionBuilder.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/jaxb/JaxbAssertionBuilder.java?view=diff&rev=530485&r1=530484&r2=530485
==============================================================================
--- incubator/cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/jaxb/JaxbAssertionBuilder.java (original)
+++ incubator/cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/jaxb/JaxbAssertionBuilder.java Thu Apr 19 09:52:42 2007
@@ -97,6 +97,14 @@
}
public Assertion buildCompatible(Assertion a, Assertion b) {
+ if (a.equal(b)) {
+ JaxbAssertion<T> ja = (JaxbAssertion<T>)a;
+ JaxbAssertion<T> compatible = buildAssertion();
+ compatible.setName(a.getName());
+ compatible.setOptional(a.isOptional() && b.isOptional());
+ compatible.setData(ja.getData());
+ return compatible;
+ }
return null;
}
Modified: incubator/cxf/trunk/api/src/test/java/org/apache/cxf/ws/policy/builder/jaxb/JaxbAssertionTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/test/java/org/apache/cxf/ws/policy/builder/jaxb/JaxbAssertionTest.java?view=diff&rev=530485&r1=530484&r2=530485
==============================================================================
--- incubator/cxf/trunk/api/src/test/java/org/apache/cxf/ws/policy/builder/jaxb/JaxbAssertionTest.java (original)
+++ incubator/cxf/trunk/api/src/test/java/org/apache/cxf/ws/policy/builder/jaxb/JaxbAssertionTest.java Thu Apr 19 09:52:42 2007
@@ -95,7 +95,9 @@
JaxbAssertion<FooType> oassertion = new JaxbAssertion<FooType>();
oassertion.setData(odata);
oassertion.setName(qn);
- assertTrue(assertion.equal(oassertion));
+ assertTrue(!assertion.equal(oassertion));
+ oassertion.setData(data);
+ assertTrue(assertion.equal(oassertion));
assertTrue(assertion.equal(assertion));
}
Modified: incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java?view=diff&rev=530485&r1=530484&r2=530485
==============================================================================
--- incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java (original)
+++ incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java Thu Apr 19 09:52:42 2007
@@ -46,6 +46,10 @@
public void setSoapVersion(SoapVersion v) {
this.version = v;
}
+
+ public SoapVersion getSoapVersion() {
+ return version;
+ }
public Message createMessage() {
return createMessage(new MessageImpl());
Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java?view=diff&rev=530485&r1=530484&r2=530485
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java Thu Apr 19 09:52:42 2007
@@ -43,7 +43,6 @@
import org.apache.cxf.frontend.MethodDispatcher;
import org.apache.cxf.jaxws.support.ContextPropertiesMapping;
import org.apache.cxf.service.model.BindingOperationInfo;
-import org.apache.cxf.workqueue.OneShotAsyncExecutor;
public class JaxWsClientProxy extends org.apache.cxf.frontend.ClientProxy implements
InvocationHandler, BindingProvider {
@@ -133,8 +132,7 @@
FutureTask<Object> f = new FutureTask<Object>(new JAXWSAsyncCallable(this, method, oi, params,
context));
- endpoint.getService().setExecutor(OneShotAsyncExecutor.getInstance());
- endpoint.getService().getExecutor().execute(f);
+ endpoint.getExecutor().execute(f);
Response<?> r = new AsyncResponse<Object>(f, Object.class);
if (params.length > 0 && params[params.length - 1] instanceof AsyncHandler) {
// callback style
Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/policy/HTTPClientAssertionBuilder.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/policy/HTTPClientAssertionBuilder.java?view=diff&rev=530485&r1=530484&r2=530485
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/policy/HTTPClientAssertionBuilder.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/policy/HTTPClientAssertionBuilder.java Thu Apr 19 09:52:42 2007
@@ -25,6 +25,7 @@
import org.apache.cxf.ws.policy.builder.jaxb.JaxbAssertion;
import org.apache.cxf.ws.policy.builder.jaxb.JaxbAssertionBuilder;
import org.apache.neethi.Assertion;
+import org.apache.neethi.Constants;
import org.apache.neethi.PolicyComponent;
/**
@@ -68,7 +69,8 @@
@Override
public boolean equal(PolicyComponent policyComponent) {
- if (!super.equal(policyComponent)) {
+ if (policyComponent.getType() != Constants.TYPE_ASSERTION
+ || !getName().equals(((Assertion)policyComponent).getName())) {
return false;
}
JaxbAssertion<HTTPClientPolicy> other = JaxbAssertion.cast((Assertion)policyComponent);
Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/policy/HTTPServerAssertionBuilder.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/policy/HTTPServerAssertionBuilder.java?view=diff&rev=530485&r1=530484&r2=530485
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/policy/HTTPServerAssertionBuilder.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/policy/HTTPServerAssertionBuilder.java Thu Apr 19 09:52:42 2007
@@ -25,6 +25,7 @@
import org.apache.cxf.ws.policy.builder.jaxb.JaxbAssertion;
import org.apache.cxf.ws.policy.builder.jaxb.JaxbAssertionBuilder;
import org.apache.neethi.Assertion;
+import org.apache.neethi.Constants;
import org.apache.neethi.PolicyComponent;
/**
@@ -63,12 +64,13 @@
class HTTPServerPolicyAssertion extends JaxbAssertion<HTTPServerPolicy> {
HTTPServerPolicyAssertion() {
- super(PolicyUtils.HTTPSERVERPOLICY_ASSERTION_QNAME, false);
+ super(PolicyUtils.HTTPSERVERPOLICY_ASSERTION_QNAME, false);
}
@Override
public boolean equal(PolicyComponent policyComponent) {
- if (!super.equal(policyComponent)) {
+ if (policyComponent.getType() != Constants.TYPE_ASSERTION
+ || !getName().equals(((Assertion)policyComponent).getName())) {
return false;
}
JaxbAssertion<HTTPServerPolicy> other = JaxbAssertion.cast((Assertion)policyComponent);
@@ -82,4 +84,4 @@
return a;
}
}
-}
+}
\ No newline at end of file
Modified: incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/policy/HTTPClientAssertionBuilderTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/policy/HTTPClientAssertionBuilderTest.java?view=diff&rev=530485&r1=530484&r2=530485
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/policy/HTTPClientAssertionBuilderTest.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/policy/HTTPClientAssertionBuilderTest.java Thu Apr 19 09:52:42 2007
@@ -57,9 +57,11 @@
@Test
public void testHTTPCLientPolicyAssertionEqual() throws Exception {
HTTPClientAssertionBuilder ab = new HTTPClientAssertionBuilder();
- JaxbAssertion<HTTPClientPolicy> a = ab.buildAssertion();
+ JaxbAssertion<HTTPClientPolicy> a = ab.buildAssertion();
+ a.setData(new HTTPClientPolicy());
assertTrue(a.equal(a));
JaxbAssertion<HTTPClientPolicy> b = ab.buildAssertion();
+ b.setData(new HTTPClientPolicy());
assertTrue(a.equal(b));
HTTPClientPolicy pa = new HTTPClientPolicy();
a.setData(pa);
Modified: incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/policy/HTTPServerAssertionBuilderTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/policy/HTTPServerAssertionBuilderTest.java?view=diff&rev=530485&r1=530484&r2=530485
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/policy/HTTPServerAssertionBuilderTest.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/policy/HTTPServerAssertionBuilderTest.java Thu Apr 19 09:52:42 2007
@@ -57,9 +57,11 @@
@Test
public void testHTTPServerPolicyAssertionEqual() throws Exception {
HTTPServerAssertionBuilder ab = new HTTPServerAssertionBuilder();
- JaxbAssertion<HTTPServerPolicy> a = ab.buildAssertion();
+ JaxbAssertion<HTTPServerPolicy> a = ab.buildAssertion();
+ a.setData(new HTTPServerPolicy());
assertTrue(a.equal(a));
JaxbAssertion<HTTPServerPolicy> b = ab.buildAssertion();
+ b.setData(new HTTPServerPolicy());
assertTrue(a.equal(b));
HTTPServerPolicy pa = new HTTPServerPolicy();
a.setData(pa);
Modified: incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ContextUtils.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ContextUtils.java?view=diff&rev=530485&r1=530484&r2=530485
==============================================================================
--- incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ContextUtils.java (original)
+++ incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ContextUtils.java Thu Apr 19 09:52:42 2007
@@ -224,8 +224,7 @@
message.put(mapProperty, maps);
}
}
-
-
+
/**
* @param message the current message
* @param isProviderContext true if the binding provider request context
@@ -238,6 +237,23 @@
Message message,
boolean isProviderContext,
boolean isOutbound) {
+ return retrieveMAPs(message, isProviderContext, isOutbound, true);
+ }
+
+ /**
+ * @param message the current message
+ * @param isProviderContext true if the binding provider request context
+ * available to the client application as opposed to the message context
+ * visible to handlers
+ * @param isOutbound true iff the message is outbound
+ * @param warnIfMissing log a warning message if properties cannot be retrieved
+ * @return the current addressing properties
+ */
+ public static AddressingPropertiesImpl retrieveMAPs(
+ Message message,
+ boolean isProviderContext,
+ boolean isOutbound,
+ boolean warnIfMissing) {
boolean isRequestor = ContextUtils.isRequestor(message);
String mapProperty =
ContextUtils.getMAPProperty(isProviderContext,
@@ -251,7 +267,8 @@
if (maps != null) {
LOG.log(Level.INFO, "current MAPs {0}", maps);
} else if (!isProviderContext) {
- LOG.warning("MAPS_RETRIEVAL_FAILURE_MSG");
+ LogUtils.log(LOG, warnIfMissing ? Level.WARNING : Level.INFO,
+ "MAPS_RETRIEVAL_FAILURE_MSG");
}
return maps;
}
@@ -391,7 +408,7 @@
} catch (Exception e) {
LOG.log(Level.WARNING, "SERVER_TRANSPORT_REBASE_FAILURE_MSG", e);
}
- }
+ }
}
Modified: incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/MAPAggregator.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/MAPAggregator.java?view=diff&rev=530485&r1=530484&r2=530485
==============================================================================
--- incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/MAPAggregator.java (original)
+++ incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/MAPAggregator.java Thu Apr 19 09:52:42 2007
@@ -71,10 +71,7 @@
private Map<Endpoint, Boolean> usingAddressing = new ConcurrentHashMap<Endpoint, Boolean>();
- /**
- * REVISIT allow this policy to be configured.
- */
- private final boolean allowDuplicates = true;
+ private boolean allowDuplicates = true;
/**
* Constructor.
@@ -83,6 +80,23 @@
super();
setPhase(Phase.PRE_LOGICAL);
}
+
+ /**
+ * Indicates if duplicate messageIDs are allowed.
+ * @return true iff duplicate messageIDs are allowed
+ */
+ public boolean allowDuplicates() {
+ return allowDuplicates;
+ }
+
+ /**
+ * Allows/disallows duplicate messageIdDs.
+ * @param ad whether duplicate messageIDs are allowed
+ */
+ public void setAllowDuplicates(boolean ad) {
+ allowDuplicates = ad;
+ }
+
/**
* Invoked for normal processing of inbound and outbound messages.
@@ -419,7 +433,7 @@
private boolean validateIncomingMAPs(AddressingProperties maps,
Message message) {
boolean valid = true;
- if (allowDuplicates && maps != null) {
+ if (!allowDuplicates && maps != null) {
AttributedURIType messageID = maps.getMessageID();
if (messageID != null
&& messageIDs.put(messageID.getValue(),
Modified: incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java?view=diff&rev=530485&r1=530484&r2=530485
==============================================================================
--- incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java (original)
+++ incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java Thu Apr 19 09:52:42 2007
@@ -123,7 +123,7 @@
private void mediate(SoapMessage message) {
if (ContextUtils.isOutbound(message)) {
encode(message, ContextUtils.retrieveMAPs(message, false, true));
- } else if (null == ContextUtils.retrieveMAPs(message, false, false)) {
+ } else if (null == ContextUtils.retrieveMAPs(message, false, false, false)) {
AddressingProperties maps = decode(message);
ContextUtils.storeMAPs(maps, message, false);
markPartialResponse(message, maps);
Modified: incubator/cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/MAPAggregatorTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/MAPAggregatorTest.java?view=diff&rev=530485&r1=530484&r2=530485
==============================================================================
--- incubator/cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/MAPAggregatorTest.java (original)
+++ incubator/cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/MAPAggregatorTest.java Thu Apr 19 09:52:42 2007
@@ -215,6 +215,7 @@
public void testResponderInboundInvalidMAPs() throws Exception {
aggregator.messageIDs.put("urn:uuid:12345", "urn:uuid:12345");
Message message = setUpMessage(false, false, false);
+ aggregator.setAllowDuplicates(false);
aggregator.mediate(message, false);
control.verify();
verifyMessage(message, false, false, false /*check*/);
@@ -223,6 +224,7 @@
public void testResponderInboundInvalidMAPsFault() throws Exception {
aggregator.messageIDs.put("urn:uuid:12345", "urn:uuid:12345");
Message message = setUpMessage(false, false, false);
+ aggregator.setAllowDuplicates(false);
aggregator.mediate(message, true);
control.verify();
verifyMessage(message, false, false, false /*check*/);
Added: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/JaxwsExecutorTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/JaxwsExecutorTest.java?view=auto&rev=530485
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/JaxwsExecutorTest.java (added)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/JaxwsExecutorTest.java Thu Apr 19 09:52:42 2007
@@ -0,0 +1,114 @@
+/**
+ * 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.systest.jaxws;
+
+import java.util.concurrent.Executor;
+
+import javax.jws.WebService;
+import javax.xml.ws.Response;
+
+import org.apache.cxf.greeter_control.AbstractGreeterImpl;
+import org.apache.cxf.greeter_control.BasicGreeterService;
+import org.apache.cxf.greeter_control.Greeter;
+import org.apache.cxf.greeter_control.types.GreetMeResponse;
+import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
+import org.apache.cxf.testutil.common.AbstractBusTestServerBase;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class JaxwsExecutorTest extends AbstractBusClientServerTestBase {
+
+ public static class Server extends AbstractBusTestServerBase {
+
+ protected void run() {
+ GreeterImpl implementor = new GreeterImpl();
+ String address = "http://localhost:9020/SoapContext/GreeterPort";
+ javax.xml.ws.Endpoint.publish(address, implementor);
+ }
+
+
+ public static void main(String[] args) {
+ try {
+ Server s = new Server();
+ s.start();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ System.exit(-1);
+ } finally {
+ System.out.println("done!");
+ }
+ }
+
+ @WebService(serviceName = "BasicGreeterService",
+ portName = "GreeterPort",
+ endpointInterface = "org.apache.cxf.greeter_control.Greeter",
+ targetNamespace = "http://cxf.apache.org/greeter_control",
+ wsdlLocation = "testutils/greeter_control.wsdl")
+ public class GreeterImpl extends AbstractGreeterImpl {
+ }
+ }
+
+
+ @BeforeClass
+ public static void startServers() throws Exception {
+ assertTrue("server did not launch correctly", launchServer(Server.class));
+ }
+
+ @Test
+ public void testUseCustomExecutorOnClient() throws Exception {
+ BasicGreeterService service = new BasicGreeterService();
+
+ class CustomExecutor implements Executor {
+
+ private int count;
+
+ public void execute(Runnable command) {
+ count++;
+ command.run();
+ }
+
+ public int getCount() {
+ return count;
+ }
+ }
+
+ CustomExecutor executor = new CustomExecutor();
+ service.setExecutor(executor);
+ assertSame(executor, service.getExecutor());
+
+ Greeter proxy = service.getGreeterPort();
+
+ assertEquals(0, executor.getCount());
+
+ Response<GreetMeResponse> response = proxy.greetMeAsync("cxf");
+ int waitCount = 0;
+ while (!response.isDone() && waitCount < 10) {
+ Thread.sleep(100);
+ waitCount++;
+ }
+ assertTrue("Response still not received.", response.isDone());
+
+ assertEquals(1, executor.getCount());
+ }
+
+}
Propchange: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/JaxwsExecutorTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/JaxwsExecutorTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date