You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by aj...@apache.org on 2007/04/25 21:13:37 UTC
svn commit: r532442 - in /incubator/cxf/trunk:
rt/bindings/coloc/src/main/java/org/apache/cxf/binding/coloc/
rt/bindings/coloc/src/main/java/org/apache/cxf/binding/coloc/feature/
rt/bindings/coloc/src/test/java/org/apache/cxf/binding/coloc/ systests/sr...
Author: ajaypaibir
Date: Wed Apr 25 12:13:36 2007
New Revision: 532442
URL: http://svn.apache.org/viewvc?view=rev&rev=532442
Log:
Adding ColocFeature to configure the coloc out interceptors on a client.
Added:
incubator/cxf/trunk/rt/bindings/coloc/src/main/java/org/apache/cxf/binding/coloc/feature/
incubator/cxf/trunk/rt/bindings/coloc/src/main/java/org/apache/cxf/binding/coloc/feature/ColocFeature.java (with props)
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/coloc/coloc_rpc.xml (with props)
Modified:
incubator/cxf/trunk/rt/bindings/coloc/src/main/java/org/apache/cxf/binding/coloc/ColocMessageObserver.java
incubator/cxf/trunk/rt/bindings/coloc/src/main/java/org/apache/cxf/binding/coloc/ColocOutInterceptor.java
incubator/cxf/trunk/rt/bindings/coloc/src/test/java/org/apache/cxf/binding/coloc/ColocMessageObserverTest.java
incubator/cxf/trunk/rt/bindings/coloc/src/test/java/org/apache/cxf/binding/coloc/ColocOutInterceptorTest.java
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/coloc/ColocHeaderRpcLitTest.java
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/coloc/cxf.xml
Modified: incubator/cxf/trunk/rt/bindings/coloc/src/main/java/org/apache/cxf/binding/coloc/ColocMessageObserver.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/coloc/src/main/java/org/apache/cxf/binding/coloc/ColocMessageObserver.java?view=diff&rev=532442&r1=532441&r2=532442
==============================================================================
--- incubator/cxf/trunk/rt/bindings/coloc/src/main/java/org/apache/cxf/binding/coloc/ColocMessageObserver.java (original)
+++ incubator/cxf/trunk/rt/bindings/coloc/src/main/java/org/apache/cxf/binding/coloc/ColocMessageObserver.java Wed Apr 25 12:13:36 2007
@@ -28,6 +28,7 @@
import org.apache.cxf.Bus;
import org.apache.cxf.binding.Binding;
import org.apache.cxf.endpoint.Endpoint;
+import org.apache.cxf.interceptor.Interceptor;
import org.apache.cxf.interceptor.InterceptorChain;
import org.apache.cxf.message.Exchange;
import org.apache.cxf.message.ExchangeImpl;
@@ -82,6 +83,7 @@
List<Phase> phases = new ArrayList<Phase>(bus.getExtension(PhaseManager.class).getInPhases());
ColocUtil.setPhases(phases, Phase.USER_LOGICAL, Phase.INVOKE);
InterceptorChain chain = ColocUtil.getInInterceptorChain(ex, phases);
+ chain.add(addColocInterceptors());
inMsg.setInterceptorChain(chain);
chain.doIntercept(inMsg);
@@ -115,5 +117,11 @@
exchange.put(BindingInfo.class, bi);
exchange.put(BindingOperationInfo.class, boi);
exchange.put(OperationInfo.class, boi.getOperationInfo());
+ }
+
+ protected List<Interceptor> addColocInterceptors() {
+ List<Interceptor> list = new ArrayList<Interceptor>();
+ list.add(new ColocInInterceptor());
+ return list;
}
}
Modified: incubator/cxf/trunk/rt/bindings/coloc/src/main/java/org/apache/cxf/binding/coloc/ColocOutInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/coloc/src/main/java/org/apache/cxf/binding/coloc/ColocOutInterceptor.java?view=diff&rev=532442&r1=532441&r2=532442
==============================================================================
--- incubator/cxf/trunk/rt/bindings/coloc/src/main/java/org/apache/cxf/binding/coloc/ColocOutInterceptor.java (original)
+++ incubator/cxf/trunk/rt/bindings/coloc/src/main/java/org/apache/cxf/binding/coloc/ColocOutInterceptor.java Wed Apr 25 12:13:36 2007
@@ -53,16 +53,23 @@
private static final Logger LOG = LogUtils.getL7dLogger(ClientImpl.class);
private static final String COLOCATED = Message.class.getName() + ".COLOCATED";
private MessageObserver colocObserver;
+ private Bus bus;
public ColocOutInterceptor() {
super();
setPhase(Phase.POST_LOGICAL);
}
+ public void setBus(Bus bus) {
+ this.bus = bus;
+ }
+
public void handleMessage(Message message) throws Fault {
- Bus bus = BusFactory.getDefaultBus(false);
if (bus == null) {
- throw new Fault(new org.apache.cxf.common.i18n.Message("BUS_NOT_FOUND", BUNDLE));
+ bus = BusFactory.getDefaultBus(false);
+ if (bus == null) {
+ throw new Fault(new org.apache.cxf.common.i18n.Message("BUS_NOT_FOUND", BUNDLE));
+ }
}
ServerRegistry registry = bus.getExtension(ServerRegistry.class);
@@ -99,7 +106,7 @@
message.put(COLOCATED, Boolean.TRUE);
message.put(Message.WSDL_OPERATION, boi.getName());
message.put(Message.WSDL_INTERFACE, boi.getBinding().getInterface().getName());
- invokeColocObserver(message, srv.getEndpoint(), bus);
+ invokeColocObserver(message, srv.getEndpoint());
if (!exchange.isOneWay()) {
invokeInboundChain(exchange, senderEndpoint);
}
@@ -112,7 +119,7 @@
}
}
- protected void invokeColocObserver(Message outMsg, Endpoint inboundEndpoint, Bus bus) {
+ protected void invokeColocObserver(Message outMsg, Endpoint inboundEndpoint) {
if (colocObserver == null) {
colocObserver = new ColocMessageObserver(inboundEndpoint, bus);
}
@@ -136,7 +143,6 @@
inMsg.put(Message.INBOUND_MESSAGE, Boolean.TRUE);
inMsg.setExchange(ex);
- Bus bus = ex.get(Bus.class);
Exception exc = inMsg.getContent(Exception.class);
if (exc != null) {
ex.setInFaultMessage(inMsg);
Added: incubator/cxf/trunk/rt/bindings/coloc/src/main/java/org/apache/cxf/binding/coloc/feature/ColocFeature.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/coloc/src/main/java/org/apache/cxf/binding/coloc/feature/ColocFeature.java?view=auto&rev=532442
==============================================================================
--- incubator/cxf/trunk/rt/bindings/coloc/src/main/java/org/apache/cxf/binding/coloc/feature/ColocFeature.java (added)
+++ incubator/cxf/trunk/rt/bindings/coloc/src/main/java/org/apache/cxf/binding/coloc/feature/ColocFeature.java Wed Apr 25 12:13:36 2007
@@ -0,0 +1,37 @@
+/**
+ * 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.binding.coloc.feature;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.binding.coloc.ColocInInterceptor;
+import org.apache.cxf.binding.coloc.ColocOutInterceptor;
+import org.apache.cxf.feature.AbstractFeature;
+import org.apache.cxf.interceptor.InterceptorProvider;
+
+public class ColocFeature extends AbstractFeature {
+ private static final ColocOutInterceptor COLOC_OUT = new ColocOutInterceptor();
+ private static final ColocInInterceptor COLOC_IN = new ColocInInterceptor();
+
+ @Override
+ protected void initializeProvider(InterceptorProvider provider, Bus bus) {
+ COLOC_OUT.setBus(bus);
+ provider.getInInterceptors().add(COLOC_IN);
+ provider.getOutInterceptors().add(COLOC_OUT);
+ }
+}
Propchange: incubator/cxf/trunk/rt/bindings/coloc/src/main/java/org/apache/cxf/binding/coloc/feature/ColocFeature.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/cxf/trunk/rt/bindings/coloc/src/main/java/org/apache/cxf/binding/coloc/feature/ColocFeature.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/cxf/trunk/rt/bindings/coloc/src/test/java/org/apache/cxf/binding/coloc/ColocMessageObserverTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/coloc/src/test/java/org/apache/cxf/binding/coloc/ColocMessageObserverTest.java?view=diff&rev=532442&r1=532441&r2=532442
==============================================================================
--- incubator/cxf/trunk/rt/bindings/coloc/src/test/java/org/apache/cxf/binding/coloc/ColocMessageObserverTest.java (original)
+++ incubator/cxf/trunk/rt/bindings/coloc/src/test/java/org/apache/cxf/binding/coloc/ColocMessageObserverTest.java Wed Apr 25 12:13:36 2007
@@ -19,6 +19,7 @@
package org.apache.cxf.binding.coloc;
import java.util.ArrayList;
+import java.util.List;
import javax.xml.namespace.QName;
@@ -160,6 +161,10 @@
exchange.put(Endpoint.class, ep);
exchange.put(Service.class, srv);
exchange.put(OperationInfo.class, oi);
+ }
+
+ protected List<Interceptor> addColocInterceptors() {
+ return new ArrayList<Interceptor>();
}
}
}
Modified: incubator/cxf/trunk/rt/bindings/coloc/src/test/java/org/apache/cxf/binding/coloc/ColocOutInterceptorTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/coloc/src/test/java/org/apache/cxf/binding/coloc/ColocOutInterceptorTest.java?view=diff&rev=532442&r1=532441&r2=532442
==============================================================================
--- incubator/cxf/trunk/rt/bindings/coloc/src/test/java/org/apache/cxf/binding/coloc/ColocOutInterceptorTest.java (original)
+++ incubator/cxf/trunk/rt/bindings/coloc/src/test/java/org/apache/cxf/binding/coloc/ColocOutInterceptorTest.java Wed Apr 25 12:13:36 2007
@@ -70,6 +70,7 @@
@After
public void tearDown() throws Exception {
+ colocOut.setBus(null);
BusFactory.setDefaultBus(null);
}
@@ -217,6 +218,7 @@
//Reset Exchange on msg
msg.setExchange(null);
Bus bus = setupBus();
+ colocOut.setBus(bus);
PhaseManager pm = new PhaseManagerImpl();
EasyMock.expect(bus.getExtension(PhaseManager.class)).andReturn(pm).times(2);
@@ -416,7 +418,7 @@
}
class TestColocOutInterceptor1 extends ColocOutInterceptor {
- public void invokeColocObserver(Message outMsg, Endpoint inboundEndpoint, Bus bus) {
+ public void invokeColocObserver(Message outMsg, Endpoint inboundEndpoint) {
//No Op
}
Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/coloc/ColocHeaderRpcLitTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/coloc/ColocHeaderRpcLitTest.java?view=diff&rev=532442&r1=532441&r2=532442
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/coloc/ColocHeaderRpcLitTest.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/coloc/ColocHeaderRpcLitTest.java Wed Apr 25 12:13:36 2007
@@ -29,6 +29,10 @@
private Log logger = LogFactory.getLog(ColocHeaderRpcLitTest.class);
+ protected String getCxfConfig() {
+ return "org/apache/cxf/systest/coloc/coloc_rpc.xml";
+ }
+
protected Log getLogger() {
return logger;
}
Added: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/coloc/coloc_rpc.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/coloc/coloc_rpc.xml?view=auto&rev=532442
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/coloc/coloc_rpc.xml (added)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/coloc/coloc_rpc.xml Wed Apr 25 12:13:36 2007
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:http="http://cxf.apache.org/transports/http/configuration"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:jaxws="http://cxf.apache.org/jaxws"
+ xsi:schemaLocation="
+http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schema/transports/http.xsd
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+<!--
+ <bean id="org.apache.cxf.ws.policy.PolicyEngine" class="org.apache.cxf.ws.policy.spring.InitializingPolicyEngine">
+ <property name="bus" ref="cxf"/>
+ <property name="enabled" value="true"/>
+ </bean>
+ <wsp:Policy wsu:Id="AddressingPolicy"
+ xmlns:wsp="http://www.w3.org/2006/07/ws-policy"
+ xmlns:coloc="http://cxf.apache.org/binding/coloc">
+ <coloc:EnableColoc wsp:Optional="true">
+ </wsp:Policy>
+ <bean class="org.apache.cxf.ws.policy.attachment.external.ExternalAttachmentProvider">
+ <constructor-arg ref="cxf"/>
+ <property name="location" value="org/apache/cxf/systest/coloc/coloc-external.xml"/>
+ </bean>
+-->
+ <bean id="faultOutbound" class="org.apache.cxf.systest.coloc.ThrowFaultInterceptor"/>
+
+ <!-- Adding interceptors to the bus will add it to all services/endpoints-->
+ <bean id="cxf" class="org.apache.cxf.bus.CXFBusImpl">
+ <property name="outInterceptors">
+ <list>
+ <ref bean="faultOutbound"/>
+ </list>
+ </property>
+ </bean>
+
+ <jaxws:client id="{http://apache.org/headers/rpc_lit}SoapPort"
+ createdFromAPI="true">
+ <jaxws:features>
+ <bean class="org.apache.cxf.binding.coloc.feature.ColocFeature"/>
+ </jaxws:features>
+ <jaxws:conduitSelector>
+ <bean class="org.apache.cxf.endpoint.DeferredConduitSelector"/>
+ </jaxws:conduitSelector>
+ </jaxws:client>
+</beans>
\ No newline at end of file
Propchange: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/coloc/coloc_rpc.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/coloc/coloc_rpc.xml
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/coloc/coloc_rpc.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/coloc/cxf.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/coloc/cxf.xml?view=diff&rev=532442&r1=532441&r2=532442
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/coloc/cxf.xml (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/coloc/cxf.xml Wed Apr 25 12:13:36 2007
@@ -62,51 +62,29 @@
</http:conduit>
-->
- <!-- Logging Interceptor-->
- <bean id="logInbound" class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
- <bean id="logOutbound" class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
-
<!-- Coloc Interceptor-->
- <bean id="colocInbound" class="org.apache.cxf.binding.coloc.ColocInInterceptor"/>
<bean id="colocOutbound" class="org.apache.cxf.binding.coloc.ColocOutInterceptor"/>
<bean id="faultOutbound" class="org.apache.cxf.systest.coloc.ThrowFaultInterceptor"/>
<!-- Adding interceptors to the bus will add it to all services/endpoints-->
<bean id="cxf" class="org.apache.cxf.bus.CXFBusImpl">
- <property name="inInterceptors">
- <list>
- <ref bean="logInbound"/>
- <ref bean="colocInbound"/>
- </list>
- </property>
- <property name="inFaultInterceptors">
- <list>
- <ref bean="logInbound"/>
- </list>
- </property>
<property name="outInterceptors">
<list>
- <ref bean="logOutbound"/>
<ref bean="colocOutbound"/>
<ref bean="faultOutbound"/>
</list>
</property>
- <property name="outFaultInterceptors">
- <list>
- <ref bean="logOutbound"/>
- </list>
- </property>
</bean>
<!-- Avoid upfront Conduit creation, as client-side transport resources
are not required in the coloc case -->
- <jaxws:client id="{http://apache.org/headers/rpc_lit}SoapPort"
+ <jaxws:client id="{http://apache.org/headers/rpc_lit}SoapPort"
createdFromAPI="true">
<jaxws:conduitSelector>
<bean class="org.apache.cxf.endpoint.DeferredConduitSelector"/>
</jaxws:conduitSelector>
</jaxws:client>
- <jaxws:client id="{http://apache.org/headers/doc_lit}SoapPort9000"
+ <jaxws:client id="{http://apache.org/headers/doc_lit}SoapPort9000"
createdFromAPI="true">
<jaxws:conduitSelector>
<bean class="org.apache.cxf.endpoint.DeferredConduitSelector"/>