[SMXCOMP-974]Upgrade to CXF 2.7.6

git-svn-id: https://svn.apache.org/repos/asf/servicemix/components/trunk@1533454 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/bindings/servicemix-cxf-bc/pom.xml b/bindings/servicemix-cxf-bc/pom.xml
index 28279d2..2c424b4 100644
--- a/bindings/servicemix-cxf-bc/pom.xml
+++ b/bindings/servicemix-cxf-bc/pom.xml
@@ -359,6 +359,12 @@
             <groupId>org.apache.servicemix</groupId>
             <artifactId>servicemix-utils</artifactId>
             <scope>provided</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>net.sf.ehcache</groupId>
+                    <artifactId>ehcache</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>org.apache.servicemix.specs</groupId>
diff --git a/bindings/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcConsumer.java b/bindings/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcConsumer.java
index 64b4c9a..f7dc2fe 100644
--- a/bindings/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcConsumer.java
+++ b/bindings/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcConsumer.java
@@ -40,6 +40,7 @@
 import javax.xml.namespace.QName;
 import javax.xml.transform.Source;
 
+import org.apache.cxf.feature.Feature;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
@@ -580,7 +581,7 @@
     private void addRMFeatureRequiredInterceptors() {
         CXFBusImpl bus = (CXFBusImpl) getBus();
         if (bus.getFeatures() != null) {
-            for (AbstractFeature feature : bus.getFeatures()){
+            for (Feature feature : bus.getFeatures()){
                 if (feature.getClass().getName().equals("org.apache.cxf.ws.rm.feature.RMFeature")) {
                     bus.getOutInterceptors().add(new BareOutInterceptor());
                 }
diff --git a/bindings/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/ws/addressing/CxfBcAddressingTest.java b/bindings/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/ws/addressing/CxfBcAddressingTest.java
index 5056736..8b89808 100644
--- a/bindings/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/ws/addressing/CxfBcAddressingTest.java
+++ b/bindings/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/ws/addressing/CxfBcAddressingTest.java
@@ -343,7 +343,8 @@
      */
     protected static String verifyHeaders(List<String> wsaHeaders,
                                           boolean partial,
-                                          boolean requestLeg) {
+                                          boolean requestLeg,
+                                          boolean replyToRequired) {
         
         String ret = null;
         if (!wsaHeaders.contains(Names.WSA_MESSAGEID_NAME)) {
@@ -353,13 +354,15 @@
             ret = "expected To header";
         }
        
-        if (!(wsaHeaders.contains(Names.WSA_REPLYTO_NAME)
-              || wsaHeaders.contains(Names.WSA_RELATESTO_NAME))) {
+        if (replyToRequired 
+            && !(wsaHeaders.contains(Names.WSA_REPLYTO_NAME)
+                || wsaHeaders.contains(Names.WSA_RELATESTO_NAME))) {
             ret = "expected ReplyTo or RelatesTo header";
         }
+        /*
         if (partial) { 
             if (!wsaHeaders.contains(Names.WSA_FROM_NAME)) {
-                //ret = "expected From header";
+                ret = "expected From header";
             }
         } else {
             // REVISIT Action missing from full response
@@ -367,6 +370,7 @@
             //    ret = "expected Action header";
             //}            
         }
+        */
         if (requestLeg && !(wsaHeaders.contains(CUSTOMER_NAME.getLocalPart()))) {
             ret = "expected CustomerKey header";
         }
diff --git a/bindings/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/ws/addressing/HeaderVerifier.java b/bindings/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/ws/addressing/HeaderVerifier.java
index e578c1f..bead7cb 100644
--- a/bindings/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/ws/addressing/HeaderVerifier.java
+++ b/bindings/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/ws/addressing/HeaderVerifier.java
@@ -37,6 +37,8 @@
 import org.apache.cxf.binding.soap.interceptor.AbstractSoapInterceptor;
 import org.apache.cxf.headers.Header;
 import org.apache.cxf.helpers.DOMUtils;
+import org.apache.cxf.interceptor.Fault;
+import org.apache.cxf.message.MessageUtils;
 import org.apache.cxf.phase.Phase;
 import org.apache.cxf.ws.addressing.AddressingProperties;
 import org.apache.cxf.ws.addressing.AttributedURIType;
@@ -60,11 +62,25 @@
         super(Phase.POST_PROTOCOL);
     }
     
+    public HeaderVerifier(String s) {
+        super(s);
+    }
+    
     public Set<QName> getUnderstoodHeaders() {
         return Names.HEADERS;
     }
 
     public void handleMessage(SoapMessage message) {
+        if (!MessageUtils.isRequestor(message)
+            && !MessageUtils.isOutbound(message)
+            && getPhase().equals(Phase.POST_PROTOCOL)) {
+            message.getInterceptorChain().add(new AbstractSoapInterceptor(Phase.UNMARSHAL) {
+                public void handleMessage(SoapMessage message) throws Fault {
+                    mediate(message);
+                }                
+            });
+            return;
+        }
         mediate(message);
     }
 
@@ -128,7 +144,10 @@
                                       || outgoingPartialResponse;
             verificationCache.put(CxfBcAddressingTest.verifyHeaders(wsaHeaders, 
                                                         partialResponse,
-                                                        isRequestLeg(message)));
+                                                        isRequestLeg(message),
+                                                        false));
+            
+                                                                   
         } catch (SOAPException se) {
             verificationCache.put("SOAP header verification failed: " + se);
         }
@@ -152,6 +171,20 @@
                             wsaHeaders.add(hdr.getLocalName());
                         }
                     }
+                
+                }
+            } else if (obj instanceof JAXBElement) {
+                JAXBElement<?> el = (JAXBElement<?>)obj;
+                if (namespaceURI.equals(el.getName().getNamespaceURI())) {
+                    if (namespaceURI.endsWith("addressing")) {
+                        currentNamespaceURI = namespaceURI;
+                        wsaHeaders.add(el.getName().getLocalPart());
+                    } else if (CxfBcAddressingTest.CUSTOMER_NAME.getNamespaceURI().equals(namespaceURI)) {
+                        String headerText = (String)el.getValue();
+                        if (CxfBcAddressingTest.CUSTOMER_KEY.equals(headerText)) {
+                            wsaHeaders.add(el.getName().getLocalPart());
+                        }
+                    }
                 }
             }
             
diff --git a/bindings/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/ws/rm/CxfBcRMSequenceTest.java b/bindings/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/ws/rm/CxfBcRMSequenceTest.java
index 2f36c77..a131521 100644
--- a/bindings/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/ws/rm/CxfBcRMSequenceTest.java
+++ b/bindings/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/ws/rm/CxfBcRMSequenceTest.java
@@ -20,7 +20,6 @@
 import java.math.BigInteger;
 import java.net.URL;
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 import java.util.concurrent.Executor;
 import java.util.concurrent.Executors;
@@ -68,6 +67,8 @@
     private static final String GREETMEONEWAY_ACTION = "http://cxf.apache.org/greeter_control/Greeter/greetMeOneWayRequest";
     private static final String GREETME_ACTION = "http://cxf.apache.org/greeter_control/Greeter/greetMeRequest";
     private static final String GREETME_RESPONSE_ACTION = "http://cxf.apache.org/greeter_control/Greeter/greetMeResponse";
+    private static final String RM10_GENERIC_FAULT_ACTION 
+            = "http://schemas.xmlsoap.org/ws/2004/08/addressing/fault";
     private static final QName CONTROL_SERVICE = new QName("http://cxf.apache.org/greeter_control", "ControlService");
     private static final QName GREETER_SERVICE = new QName("http://cxf.apache.org/greeter_control", "GreeterService");
 
@@ -168,10 +169,10 @@
 
         greeterBus = bf.createBus("org/apache/servicemix/cxfbc/ws/rm/rminterceptors.xml");
         BusFactory.setDefaultBus(greeterBus);
-        removeRMInterceptors(greeterBus.getOutInterceptors());
+        /*removeRMInterceptors(greeterBus.getOutInterceptors());
         removeRMInterceptors(greeterBus.getOutFaultInterceptors());
         removeRMInterceptors(greeterBus.getInInterceptors());
-        removeRMInterceptors(greeterBus.getInFaultInterceptors());
+        removeRMInterceptors(greeterBus.getInFaultInterceptors());*/
         LOG.fine("Initialised greeter bus with addressing but without RM interceptors");
 
         outRecorder = new OutMessageRecorder();
@@ -702,7 +703,7 @@
 
         mf.verifyMessages(3, false);
         expectedActions = new String[] {RM10Constants.INSTANCE.getCreateSequenceResponseAction(),
-                                        GREETME_RESPONSE_ACTION, null};
+                                        GREETME_RESPONSE_ACTION, RM10_GENERIC_FAULT_ACTION};
         mf.verifyActions(expectedActions, false);
         mf.verifyMessageNumbers(new String[] {null, "1", null}, false);
         mf.verifyAcknowledgements(new boolean[3] , false);
@@ -802,7 +803,7 @@
         mf.verifyMessages(3, false);
         expectedActions = new String[] {RM10Constants.INSTANCE.getCreateSequenceResponseAction(),
                                         GREETME_RESPONSE_ACTION,
-                                        null};
+                                        RM10_GENERIC_FAULT_ACTION};
         mf.verifyActions(expectedActions, false);
         mf.verifyMessageNumbers(new String[] {null, "1", null}, false);
         mf.verifyAcknowledgements(new boolean[] {false, true, false} , false);
diff --git a/engines/servicemix-cxf-se/pom.xml b/engines/servicemix-cxf-se/pom.xml
index e77907a..bcd55a8 100644
--- a/engines/servicemix-cxf-se/pom.xml
+++ b/engines/servicemix-cxf-se/pom.xml
@@ -170,6 +170,10 @@
                     <groupId>org.springframework</groupId>
                     <artifactId>spring-jmx</artifactId>
                 </exclusion>
+                <exclusion>
+                    <groupId>woodstox</groupId>
+                    <artifactId>wstx-asl</artifactId>
+                </exclusion>
             </exclusions>
         </dependency>
 
diff --git a/pom.xml b/pom.xml
index 667b9fc..a912956 100644
--- a/pom.xml
+++ b/pom.xml
@@ -89,7 +89,7 @@
         <camel.version>2.12.1</camel.version>
 
         <!-- CXF -->
-        <cxf.version>2.6.4</cxf.version>
+        <cxf.version>2.7.6</cxf.version>
 
         <!-- Geronimo Specs and Modules -->
         <geronimo-activation.version>1.0.2</geronimo-activation.version>
@@ -146,9 +146,9 @@
         <spring.osgi.version>1.2.0</spring.osgi.version>
         <stax-api.version>1.0-2</stax-api.version>
         <woden.version>1.0.0M6</woden.version>
-        <woodstox.version>4.0.8</woodstox.version>
+        <woodstox.version>4.2.0</woodstox.version>
         <wsdl4j.version>1.6.2</wsdl4j.version>
-        <wss4j.version>1.6.8</wss4j.version>
+        <wss4j.version>1.6.10</wss4j.version>
         <xalan.version>2.7.1</xalan.version>
         <xbean.version>3.11.1</xbean.version>
         <xercesImpl.version>2.9.1</xercesImpl.version>