You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by bv...@apache.org on 2013/06/06 15:16:18 UTC

git commit: CAMEL-5815: As https://jira.springsource.org/browse/SWS-817 has been already resolved removed the hacked version of org.springframework.ws.soap.addressing.server.AbstractAddressingEndpointMapping.

Updated Branches:
  refs/heads/master 02763a539 -> 7edb76796


CAMEL-5815: As https://jira.springsource.org/browse/SWS-817 has been already resolved removed the hacked version of org.springframework.ws.soap.addressing.server.AbstractAddressingEndpointMapping.

Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/7edb7679
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/7edb7679
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/7edb7679

Branch: refs/heads/master
Commit: 7edb767964b5f2f96ed146fc639c7f857cdef58b
Parents: 02763a5
Author: Babak Vahdat <bv...@apache.org>
Authored: Thu Jun 6 15:16:13 2013 +0200
Committer: Babak Vahdat <bv...@apache.org>
Committed: Thu Jun 6 15:16:13 2013 +0200

----------------------------------------------------------------------
 .../spring/ws/bean/WSACamelEndpointMapping.java    |   33 +--
 .../AbstractAddressingEndpointMappingHacked.java   |  309 ---------------
 2 files changed, 3 insertions(+), 339 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/7edb7679/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/bean/WSACamelEndpointMapping.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/bean/WSACamelEndpointMapping.java b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/bean/WSACamelEndpointMapping.java
index cca6eb9..ceabf97 100644
--- a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/bean/WSACamelEndpointMapping.java
+++ b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/bean/WSACamelEndpointMapping.java
@@ -31,9 +31,7 @@ import org.springframework.ws.server.endpoint.MessageEndpoint;
 import org.springframework.ws.soap.addressing.core.MessageAddressingProperties;
 import org.springframework.ws.soap.addressing.messageid.MessageIdStrategy;
 import org.springframework.ws.soap.addressing.server.AbstractAddressingEndpointMapping;
-import org.springframework.ws.soap.addressing.server.AbstractAddressingEndpointMappingHacked;
 import org.springframework.ws.soap.addressing.server.AnnotationActionEndpointMapping;
-import org.springframework.ws.transport.WebServiceConnection;
 import org.springframework.ws.transport.WebServiceMessageSender;
 
 /**
@@ -44,7 +42,7 @@ import org.springframework.ws.transport.WebServiceMessageSender;
  * uses the camel uri to map to a WS-Addressing {@code Action} header.
  * <p/>
  */
-public class WSACamelEndpointMapping extends AbstractAddressingEndpointMappingHacked implements CamelSpringWSEndpointMapping {
+public class WSACamelEndpointMapping extends AbstractAddressingEndpointMapping implements CamelSpringWSEndpointMapping {
 
     private static final Logger LOG = LoggerFactory.getLogger(WSACamelEndpointMapping.class);
 
@@ -175,14 +173,14 @@ public class WSACamelEndpointMapping extends AbstractAddressingEndpointMappingHa
      * priority over this endpoint.
      */
     @Override
-    protected MessageIdStrategy getMessageStrategy(Object endpoint) {
+    protected MessageIdStrategy getMessageIdStrategy(Object endpoint) {
         SpringWebserviceEndpoint camelEndpoint = getSpringWebserviceEndpoint(endpoint);
 
         if (camelEndpoint.getConfiguration().getMessageIdStrategy() != null) {
             return camelEndpoint.getConfiguration().getMessageIdStrategy();
         }
 
-        return super.getMessageStrategy(endpoint);
+        return super.getMessageIdStrategy(endpoint);
     }
 
     /**
@@ -225,40 +223,15 @@ public class WSACamelEndpointMapping extends AbstractAddressingEndpointMappingHa
         }
     }
 
-    /*
-     * (non-Javadoc)
-     * @see
-     * org.apache.camel.component.spring.ws.bean.CamelSpringWSEndpoint#addConsumer
-     * (org.apache.camel.component.spring.ws.type.EndpointMappingKey,
-     * org.springframework.ws.server.endpoint.MessageEndpoint)
-     */
     public void addConsumer(EndpointMappingKey key, MessageEndpoint endpoint) {
         endpoints.put(key, endpoint);
     }
 
-    /*
-     * (non-Javadoc)
-     * @see org.apache.camel.component.spring.ws.bean.CamelSpringWSEndpoint#
-     * removeConsumer(java.lang.Object)
-     */
     public void removeConsumer(Object key) {
         endpoints.remove(key);
     }
 
     /**
-     * Sets the single message sender used for sending messages.
-     * <p/>
-     * This message sender will be used to resolve an URI to a
-     * {@link WebServiceConnection}.
-     * 
-     * @see #createConnection(URI)
-     */
-    public void setMessageSender(WebServiceMessageSender messageSender) {
-        Assert.notNull(messageSender, "'messageSender' must not be null");
-        setMessageSenders(new WebServiceMessageSender[] {messageSender});
-    }
-
-    /**
      * Returns the suffix to add to request <code>Action</code>s for reply
      * messages.
      */

http://git-wip-us.apache.org/repos/asf/camel/blob/7edb7679/components/camel-spring-ws/src/main/java/org/springframework/ws/soap/addressing/server/AbstractAddressingEndpointMappingHacked.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-ws/src/main/java/org/springframework/ws/soap/addressing/server/AbstractAddressingEndpointMappingHacked.java b/components/camel-spring-ws/src/main/java/org/springframework/ws/soap/addressing/server/AbstractAddressingEndpointMappingHacked.java
deleted file mode 100644
index 5f22842..0000000
--- a/components/camel-spring-ws/src/main/java/org/springframework/ws/soap/addressing/server/AbstractAddressingEndpointMappingHacked.java
+++ /dev/null
@@ -1,309 +0,0 @@
-/**
- * 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.springframework.ws.soap.addressing.server;
-
-import java.net.URI;
-import java.util.Arrays;
-import java.util.Iterator;
-import javax.xml.transform.TransformerException;
-
-import org.springframework.beans.factory.InitializingBean;
-import org.springframework.core.Ordered;
-import org.springframework.util.Assert;
-import org.springframework.ws.context.MessageContext;
-import org.springframework.ws.server.EndpointInterceptor;
-import org.springframework.ws.server.EndpointInvocationChain;
-import org.springframework.ws.server.EndpointMapping;
-import org.springframework.ws.soap.SoapHeader;
-import org.springframework.ws.soap.SoapHeaderElement;
-import org.springframework.ws.soap.SoapMessage;
-import org.springframework.ws.soap.addressing.core.MessageAddressingProperties;
-import org.springframework.ws.soap.addressing.messageid.MessageIdStrategy;
-import org.springframework.ws.soap.addressing.messageid.UuidMessageIdStrategy;
-import org.springframework.ws.soap.addressing.version.Addressing10;
-import org.springframework.ws.soap.addressing.version.Addressing200408;
-import org.springframework.ws.soap.addressing.version.AddressingVersion;
-import org.springframework.ws.soap.server.SoapEndpointInvocationChain;
-import org.springframework.ws.soap.server.SoapEndpointMapping;
-import org.springframework.ws.transport.WebServiceMessageSender;
-import org.springframework.xml.transform.TransformerObjectSupport;
-
-/**
- * THIS CLASS WILL BE REMOVED, WHEN THE FOLLOWING ISSUE WILL BE SOLVED: 
- * https://jira.springsource.org/browse/SWS-817
- * 
- * Abstract base class for {@link EndpointMapping} implementations that handle WS-Addressing. Besides the normal {@link
- * SoapEndpointMapping} properties, this mapping has a {@link #setVersions(org.springframework.ws.soap.addressing.version.AddressingVersion[])
- * versions} property, which defines the WS-Addressing specifications supported. By default, these are {@link
- * org.springframework.ws.soap.addressing.version.Addressing200408} and {@link org.springframework.ws.soap.addressing.version.Addressing10}.
- * <p/>
- * The {@link #setMessageIdStrategy(MessageIdStrategy) messageIdStrategy} property defines the strategy to use for
- * creating reply <code>MessageIDs</code>. By default, this is the {@link UuidMessageIdStrategy}.
- * <p/>
- * The {@link #setMessageSenders(WebServiceMessageSender[]) messageSenders} are used to send out-of-band reply messages.
- * If a request messages defines a non-anonymous reply address, these senders will be used to send the message.
- * <p/>
- * This mapping (and all subclasses) uses an implicit WS-Addressing {@link EndpointInterceptor}, which is added in every
- * {@link EndpointInvocationChain} produced. As such, this mapping does not have the standard <code>interceptors</code>
- * property, but rather a {@link #setPreInterceptors(EndpointInterceptor[]) preInterceptors} and {@link
- * #setPostInterceptors(EndpointInterceptor[]) postInterceptors} property, which are added before and after the implicit
- * WS-Addressing interceptor, respectively.
- *
- * @author Arjen Poutsma, Andrej Zachar
- * @since 1.5.0
- */
-public abstract class AbstractAddressingEndpointMappingHacked extends TransformerObjectSupport
-        implements SoapEndpointMapping, InitializingBean, Ordered {
-
-    private String[] actorsOrRoles;
-
-    private boolean isUltimateReceiver = true;
-
-    private MessageIdStrategy messageIdStrategy;
-
-    private WebServiceMessageSender[] messageSenders = new WebServiceMessageSender[0];
-
-    private AddressingVersion[] versions;
-
-    private EndpointInterceptor[] preInterceptors = new EndpointInterceptor[0];
-
-    private EndpointInterceptor[] postInterceptors = new EndpointInterceptor[0];
-
-    private int order = Integer.MAX_VALUE;  // default: same as non-Ordered
-
-
-    /** Protected constructor. Initializes the default settings. */
-    protected AbstractAddressingEndpointMappingHacked() {
-        initDefaultStrategies();
-    }
-
-    /**
-     * Initializes the default implementation for this mapping's strategies: the {@link
-     * org.springframework.ws.soap.addressing.version.Addressing200408} and {@link org.springframework.ws.soap.addressing.version.Addressing10}
-     * versions of the specification, and the {@link UuidMessageIdStrategy}.
-     */
-    protected void initDefaultStrategies() {
-        this.versions = new AddressingVersion[]{new Addressing200408(), new Addressing10()};
-        messageIdStrategy = new UuidMessageIdStrategy();
-    }
-
-    public final void setActorOrRole(String actorOrRole) {
-        Assert.notNull(actorOrRole, "actorOrRole must not be null");
-        actorsOrRoles = new String[]{actorOrRole};
-    }
-
-    public final void setActorsOrRoles(String[] actorsOrRoles) {
-        Assert.notEmpty(actorsOrRoles, "actorsOrRoles must not be empty");
-        this.actorsOrRoles = actorsOrRoles;
-    }
-
-    public final void setUltimateReceiver(boolean ultimateReceiver) {
-        this.isUltimateReceiver = ultimateReceiver;
-    }
-
-    public final int getOrder() {
-        return order;
-    }
-
-    /**
-     * Specify the order value for this mapping.
-     * <p/>
-     * Default value is {@link Integer#MAX_VALUE}, meaning that it's non-ordered.
-     *
-     * @see org.springframework.core.Ordered#getOrder()
-     */
-    public final void setOrder(int order) {
-        this.order = order;
-    }
-    
-
-    /**
-     * Set additional interceptors to be applied before the implicit WS-Addressing interceptor, e.g.
-     * <code>XwsSecurityInterceptor</code>.
-     */
-    public final void setPreInterceptors(EndpointInterceptor[] preInterceptors) {
-        Assert.notNull(preInterceptors, "'preInterceptors' must not be null");
-        this.preInterceptors = preInterceptors;
-    }
-
-    /**
-     * Set additional interceptors to be applied after the implicit WS-Addressing interceptor, e.g.
-     * <code>PayloadLoggingInterceptor</code>.
-     */
-    public final void setPostInterceptors(EndpointInterceptor[] postInterceptors) {
-        Assert.notNull(postInterceptors, "'postInterceptors' must not be null");
-        this.postInterceptors = postInterceptors;
-    }
-
-    /**
-     * Sets the message id strategy used for creating WS-Addressing MessageIds.
-     * <p/>
-     * By default, the {@link UuidMessageIdStrategy} is used.
-     */
-    public final void setMessageIdStrategy(MessageIdStrategy messageIdStrategy) {
-        Assert.notNull(messageIdStrategy, "'messageIdStrategy' must not be null");
-        this.messageIdStrategy = messageIdStrategy;
-    }
-
-    /**
-     * Sets the single message sender used for sending messages.
-     * <p/>
-     * This message sender will be used to resolve an URI to a
-     * {@link WebServiceConnection}.
-     * 
-     * @see #createConnection(URI)
-     */
-    public void setMessageSender(WebServiceMessageSender messageSender) {
-        Assert.notNull(messageSender, "'messageSender' must not be null");
-        setMessageSenders(new WebServiceMessageSender[] {messageSender});
-    }
-
-    public final void setMessageSenders(WebServiceMessageSender[] messageSenders) {
-        Assert.notNull(messageSenders, "'messageSenders' must not be null");
-        this.messageSenders = messageSenders;
-    }
-
-    public final WebServiceMessageSender[] getMessageSenders() {
-        return this.messageSenders;
-    }
-    /**
-     * Sets the WS-Addressing versions to be supported by this mapping.
-     * <p/>
-     * By default, this array is set to support {@link org.springframework.ws.soap.addressing.version.Addressing200408
-     * the August 2004} and the {@link org.springframework.ws.soap.addressing.version.Addressing10 May 2006} versions of
-     * the specification.
-     */
-    public final void setVersions(AddressingVersion[] versions) {
-        this.versions = versions;
-    }
-
-    public void afterPropertiesSet() throws Exception {
-        if (logger.isInfoEnabled()) {
-            logger.info("Supporting " + Arrays.asList(versions));
-        }
-    }
-
-    public final EndpointInvocationChain getEndpoint(MessageContext messageContext) throws TransformerException {
-        Assert.isInstanceOf(SoapMessage.class, messageContext.getRequest());
-        SoapMessage request = (SoapMessage) messageContext.getRequest();
-        for (AddressingVersion version : versions) {
-            if (supports(version, request)) {
-                if (logger.isDebugEnabled()) {
-                    logger.debug("Request [" + request + "] uses [" + version + "]");
-                }
-                MessageAddressingProperties requestMap = version.getMessageAddressingProperties(request);
-                if (requestMap == null) {
-                    return null;
-                }
-                Object endpoint = getEndpointInternal(requestMap);
-                if (endpoint == null) {
-                    return null;
-                }
-                return getEndpointInvocationChain(endpoint, version, requestMap);
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Creates a {@link SoapEndpointInvocationChain} based on the given endpoint and {@link
-     * org.springframework.ws.soap.addressing.version.AddressingVersion}.
-     */
-    private EndpointInvocationChain getEndpointInvocationChain(Object endpoint,
-                                                               AddressingVersion version,
-                                                               MessageAddressingProperties requestMap) {
-        URI responseAction = getResponseAction(endpoint, requestMap);
-        URI faultAction = getFaultAction(endpoint, requestMap);
-        
-        WebServiceMessageSender[] messageSenders = getMessageSenders(endpoint);
-        MessageIdStrategy messageIdStrategy = getMessageStrategy(endpoint);
- 
-        EndpointInterceptor[] interceptors =
-                new EndpointInterceptor[preInterceptors.length + postInterceptors.length + 1];
-        System.arraycopy(preInterceptors, 0, interceptors, 0, preInterceptors.length);
-        AddressingEndpointInterceptor interceptor = new AddressingEndpointInterceptor(version, messageIdStrategy,
-                messageSenders, responseAction, faultAction);
-        interceptors[preInterceptors.length] = interceptor;
-        System.arraycopy(postInterceptors, 0, interceptors, preInterceptors.length + 1, postInterceptors.length);
-        return new SoapEndpointInvocationChain(endpoint, interceptors, actorsOrRoles, isUltimateReceiver);
-    }
-
-    private boolean supports(AddressingVersion version, SoapMessage request) {
-        SoapHeader header = request.getSoapHeader();
-        if (header != null) {
-            for (Iterator<SoapHeaderElement> iterator = header.examineAllHeaderElements(); iterator.hasNext();) {
-                SoapHeaderElement headerElement = iterator.next();
-                if (version.understands(headerElement)) {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-    
-    
-    /**
-     * Default implementation
-     * 
-     * @param endpoint specific message strategy
-     * @return
-     */
-    protected MessageIdStrategy getMessageStrategy(Object endpoint) {
-        return this.messageIdStrategy;
-    }
-
-    /**
-     * Default implementation
-     * 
-     * @param endpoint
-     * @return endpoint specific message senders
-     */
-    protected WebServiceMessageSender[] getMessageSenders(Object endpoint) {
-        return this.messageSenders;
-    }
-
-    /**
-     * Lookup an endpoint for the given  {@link MessageAddressingProperties}, returning <code>null</code> if no specific
-     * one is found. This template method is called by {@link #getEndpoint(MessageContext)}.
-     *
-     * @param map the message addressing properties
-     * @return the endpoint, or <code>null</code>
-     */
-    protected abstract Object getEndpointInternal(MessageAddressingProperties map);
-
-    /**
-     * Provides the WS-Addressing Action for response messages, given the endpoint, and request Message Addressing
-     * Properties.
-     *
-     * @param endpoint   the mapped endpoint
-     * @param requestMap the MAP for the request
-     * @return the response Action
-     */
-    protected abstract URI getResponseAction(Object endpoint, MessageAddressingProperties requestMap);
-
-    /**
-     * Provides the WS-Addressing Action for response fault messages, given the endpoint, and request Message Addressing
-     * Properties.
-     *
-     * @param endpoint   the mapped endpoint
-     * @param requestMap the MAP for the request
-     * @return the response Action
-     */
-    protected abstract URI getFaultAction(Object endpoint, MessageAddressingProperties requestMap);
-
-}