ws-wsif-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From as...@apache.org
Subject svn commit: r535297 - in /webservices/wsif/trunk/java: lib/ src/META-INF/services/ src/org/apache/wsif/providers/soap/apacheaxis2/
Date Fri, 04 May 2007 15:47:23 GMT
Author: aslom
Date: Fri May  4 08:47:22 2007
New Revision: 535297

URL: http://svn.apache.org/viewvc?view=rev&rev=535297
Log:
patch provided by Hasalaka Waravita
https://issues.apache.org/jira/browse/WSIF-86
had to change package name 
did not commit test as it seems to require stub code 
that may need ot be copied from AXIS2 to build this unit test

Added:
    webservices/wsif/trunk/java/lib/axiom-api-1.0.jar   (with props)
    webservices/wsif/trunk/java/lib/axiom-impl-1.0.jar   (with props)
    webservices/wsif/trunk/java/lib/axis2-1.0.jar   (with props)
    webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/
    webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/Axis2Properties.java   (with props)
    webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/WSIFDynamicProvider_ApacheAxis2.java   (with props)
    webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/WSIFOperation_ApacheAxis2.java   (with props)
    webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/WSIFPort_ApacheAxis2.java   (with props)
Modified:
    webservices/wsif/trunk/java/src/META-INF/services/org.apache.wsif.spi.WSIFProvider

Added: webservices/wsif/trunk/java/lib/axiom-api-1.0.jar
URL: http://svn.apache.org/viewvc/webservices/wsif/trunk/java/lib/axiom-api-1.0.jar?view=auto&rev=535297
==============================================================================
Binary file - no diff available.

Propchange: webservices/wsif/trunk/java/lib/axiom-api-1.0.jar
------------------------------------------------------------------------------
    svn:mime-type = application/java-archive

Added: webservices/wsif/trunk/java/lib/axiom-impl-1.0.jar
URL: http://svn.apache.org/viewvc/webservices/wsif/trunk/java/lib/axiom-impl-1.0.jar?view=auto&rev=535297
==============================================================================
Binary file - no diff available.

Propchange: webservices/wsif/trunk/java/lib/axiom-impl-1.0.jar
------------------------------------------------------------------------------
    svn:mime-type = application/java-archive

Added: webservices/wsif/trunk/java/lib/axis2-1.0.jar
URL: http://svn.apache.org/viewvc/webservices/wsif/trunk/java/lib/axis2-1.0.jar?view=auto&rev=535297
==============================================================================
Binary file - no diff available.

Propchange: webservices/wsif/trunk/java/lib/axis2-1.0.jar
------------------------------------------------------------------------------
    svn:mime-type = application/java-archive

Modified: webservices/wsif/trunk/java/src/META-INF/services/org.apache.wsif.spi.WSIFProvider
URL: http://svn.apache.org/viewvc/webservices/wsif/trunk/java/src/META-INF/services/org.apache.wsif.spi.WSIFProvider?view=diff&rev=535297&r1=535296&r2=535297
==============================================================================
--- webservices/wsif/trunk/java/src/META-INF/services/org.apache.wsif.spi.WSIFProvider (original)
+++ webservices/wsif/trunk/java/src/META-INF/services/org.apache.wsif.spi.WSIFProvider Fri May  4 08:47:22 2007
@@ -4,6 +4,9 @@
 # Java provider
 org.apache.wsif.providers.java.WSIFDynamicProvider_Java
 
+# SOAP Apache Axis2 provider
+org.apache.wsif.providers.soap.apacheaxis2.WSIFDynamicProvider_ApacheAxis2
+
 # SOAP Apache Axis provider
 org.apache.wsif.providers.soap.apacheaxis.WSIFDynamicProvider_ApacheAxis
 
@@ -14,4 +17,4 @@
 org.apache.wsif.providers.jms.WSIFDynamicProvider_Jms
 
 # Native BSF provider
-org.apache.wsif.providers.bsf.WSIFDynamicProvider_BSF
\ No newline at end of file
+org.apache.wsif.providers.bsf.WSIFDynamicProvider_BSF

Added: webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/Axis2Properties.java
URL: http://svn.apache.org/viewvc/webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/Axis2Properties.java?view=auto&rev=535297
==============================================================================
--- webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/Axis2Properties.java (added)
+++ webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/Axis2Properties.java Fri May  4 08:47:22 2007
@@ -0,0 +1,112 @@
+package org.apache.wsif.providers.soap.apacheaxis2;
+
+/*
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 2002 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "WSIF" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2001, 2002, International
+ * Business Machines, Inc., http://www.apache.org.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+import java.io.InputStream;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.util.Properties;
+
+import org.apache.wsif.logging.Trc;
+
+/**
+ * Loads properties required by the Axis2 provider
+ * 
+ * @author Hasalaka Waravita
+ *
+ */
+public class Axis2Properties {
+	
+	 private static Properties properties;
+
+    /**
+     * Reads a property from the wsif.properties file.
+     * 
+     * @param property   the property to read
+     * @return the value of ther property or null if the property is not defined   
+     */
+    public static String getProperty(String property) {
+        Trc.entry(null, property);
+        if (properties == null) {
+            properties =
+                (Properties) AccessController.doPrivileged(new PrivilegedAction() {
+                public Object run() {
+                    InputStream in = (Thread.currentThread().getContextClassLoader())
+                       .getResourceAsStream("Axis2.properties");
+
+                    Properties p2 = new Properties();
+                    try {
+                        p2.load(in);
+                    } catch (Exception ignored) {
+			        	Trc.exception(ignored);
+                        return null;
+                    }
+                    return p2;
+                }
+            });
+        }
+
+        if (properties == null) {
+            Trc.exit(null);
+            return null;
+        }
+
+        String s = properties.getProperty(property);
+        Trc.exit(s);
+        return s;
+    }
+}

Propchange: webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/Axis2Properties.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/Axis2Properties.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/Axis2Properties.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/WSIFDynamicProvider_ApacheAxis2.java
URL: http://svn.apache.org/viewvc/webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/WSIFDynamicProvider_ApacheAxis2.java?view=auto&rev=535297
==============================================================================
--- webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/WSIFDynamicProvider_ApacheAxis2.java (added)
+++ webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/WSIFDynamicProvider_ApacheAxis2.java Fri May  4 08:47:22 2007
@@ -0,0 +1,114 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 2002 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "WSIF" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2001, 2002, International
+ * Business Machines, Inc., http://www.apache.org.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.wsif.providers.soap.apacheaxis2;
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.wsdl.Binding;
+import javax.wsdl.Definition;
+import javax.wsdl.Port;
+import javax.wsdl.Service;
+import javax.wsdl.extensions.soap.SOAPBinding;
+
+import org.apache.wsif.WSIFException;
+import org.apache.wsif.WSIFPort;
+import org.apache.wsif.logging.Trc;
+import org.apache.wsif.providers.WSIFDynamicTypeMap;
+import org.apache.wsif.spi.WSIFProvider;
+import org.apache.wsif.providers.soap.apacheaxis.WSIFDynamicProvider_ApacheAxis;
+
+/**
+ * Axis 2 dynamic provider for WSIF. Supports Axis2 engine as a soap engine. 
+ * Class inherits features from Axs1, hence this is extended from WSIFDynamicProvider_ApacheAxis
+ * 
+ * @author Hasalaka Waravita
+ */
+public class WSIFDynamicProvider_ApacheAxis2 extends WSIFDynamicProvider_ApacheAxis {
+
+	/**
+	 * Create a new AXIS WSIFPort
+	 * @see WSIFProvider.createDynamicWSIFPort
+	 */
+	public WSIFPort createDynamicWSIFPort(
+		Definition definition,
+		Service service,
+		Port port,
+		WSIFDynamicTypeMap wsifdynamictypemap)
+		throws WSIFException {
+		Trc.entry(this, definition, service, port, wsifdynamictypemap);
+
+		Binding binding = port.getBinding();
+		List list = binding.getExtensibilityElements();
+
+		WSIFPort wp = null;
+		for (Iterator i = list.iterator();(i.hasNext() && wp == null);) {
+			Object o = i.next();
+			if (o instanceof SOAPBinding) {
+				wp = new WSIFPort_ApacheAxis2(
+						definition,
+						port,
+						(SOAPBinding) o,
+						wsifdynamictypemap);
+			}
+		}
+
+		Trc.exit(wp);
+		return wp;
+	}
+}
\ No newline at end of file

Propchange: webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/WSIFDynamicProvider_ApacheAxis2.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/WSIFDynamicProvider_ApacheAxis2.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/WSIFDynamicProvider_ApacheAxis2.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/WSIFOperation_ApacheAxis2.java
URL: http://svn.apache.org/viewvc/webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/WSIFOperation_ApacheAxis2.java?view=auto&rev=535297
==============================================================================
--- webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/WSIFOperation_ApacheAxis2.java (added)
+++ webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/WSIFOperation_ApacheAxis2.java Fri May  4 08:47:22 2007
@@ -0,0 +1,771 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 2002 The Apache Software Foundation.  All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "WSIF" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2001, 2002, International
+ * Business Machines, Inc., http://www.apache.org.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.wsif.providers.soap.apacheaxis2;
+
+import java.util.HashMap;
+import java.util.Iterator;
+
+import javax.wsdl.Binding;
+import javax.wsdl.BindingOperation;
+import javax.wsdl.Definition;
+import javax.wsdl.Operation;
+import javax.wsdl.Part;
+import javax.wsdl.extensions.soap.SOAPOperation;
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis.client.Transport;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.client.async.AsyncResult;
+import org.apache.axis2.client.async.Callback;
+import org.apache.wsif.WSIFConstants;
+import org.apache.wsif.WSIFCorrelationId;
+import org.apache.wsif.WSIFException;
+import org.apache.wsif.WSIFMessage;
+import org.apache.wsif.WSIFPort;
+import org.apache.wsif.WSIFResponseHandler;
+import org.apache.wsif.base.WSIFDefaultOperation;
+import org.apache.wsif.logging.Trc;
+import org.apache.wsif.providers.WSIFDynamicTypeMap;
+import org.apache.wsif.util.WSIFUtils;
+import org.apache.wsif.util.jms.WSIFJMSDestination;
+
+import org.apache.wsif.providers.soap.apacheaxis.WSIFAXISConstants;
+import org.apache.wsif.providers.soap.apacheaxis.WSIFJmsTransport;
+
+
+/**
+ * WSIFOperation class of the Axis2 support. This supports most operations required by WSIF using Axis2 Service client
+ * This allows both synchronous and asynchronous invocation of service.
+ * Axis2 ServiceClient does not give similar API what is available in Axis1 Call. Hence this class is not extended by
+ * Axis1 counterpart WSIFOperation_ApacheAxis1.
+ * This class does not provide functionality for JMS transport.
+ *
+ * @author Hasalaka Waravita
+ * @see WSIFOperation_ApacheAxis
+ */
+public class WSIFOperation_ApacheAxis2 extends WSIFDefaultOperation {
+
+    private static final long serialVersionUID = 2L;
+
+    transient protected WSIFPort_ApacheAxis2 wsifPort;
+
+    transient protected Operation portTypeOperation;
+    transient protected BindingOperation bindingOperation;
+    transient protected SOAPOperation soapOperation;
+
+    transient protected String inputEncodingStyle;
+    transient protected String inputNamespace;
+    transient protected String soapActionURI;
+
+    transient protected HashMap responseMessageParameters;
+
+    // for async operation
+    transient protected boolean asyncOperation;
+    transient protected WSIFCorrelationId asyncRequestID;
+
+    transient protected WSIFResponseHandler responseHandler;
+    transient protected String outputEncodingStyle;
+    transient protected WSIFDynamicTypeMap typeMap;
+    transient protected String operationStyle;
+    transient protected Callback callBack;
+    transient protected WSIFResponseHandler handler;
+
+    /**
+     * Construct a new WSIFOperation
+     */
+    public WSIFOperation_ApacheAxis2(
+        WSIFPort_ApacheAxis2 wsifPort,
+        Operation portTypeOperation,
+        WSIFDynamicTypeMap typeMap)
+        throws WSIFException {
+        Trc.entry(this, wsifPort, portTypeOperation, typeMap);
+
+        /* Note: if you change anything here make sure you consider
+         * the impact to the constructor, copy and prepare methods
+         * and to if any instance variables are transient
+         */
+
+        this.wsifPort = wsifPort;
+        this.portTypeOperation = portTypeOperation;
+        this.typeMap = typeMap;
+
+        this.bindingOperation = getBindingOperation(portTypeOperation);
+
+        this.inputEncodingStyle = WSIFAXISConstants.DEFAULT_SOAP_ENCODING_URI;
+        this.outputEncodingStyle = WSIFAXISConstants.DEFAULT_SOAP_ENCODING_URI;
+
+        if (Trc.ON) {
+            Trc.exit(deep());
+        }
+    }
+
+    /**
+     * @see WSIFOperation_ApacheAxis.copy()
+     */
+    protected WSIFOperation_ApacheAxis2 copy() throws WSIFException {
+        Trc.entry(this);
+
+        WSIFOperation_ApacheAxis2 op =
+            new WSIFOperation_ApacheAxis2(wsifPort, portTypeOperation, typeMap);
+
+        op.soapOperation = soapOperation;
+
+        op.setSoapActionURI(getSoapActionURI());
+        op.setInputNamespace(getInputNamespace());
+        op.setInputEncodingStyle(getInputEncodingStyle());
+        op.setOutputEncodingStyle(getOutputEncodingStyle());
+        op.setAsyncOperation(isAsyncOperation());
+        op.setResponseHandler(getResponseHandler());
+        op.setInputJmsProperties(getInputJmsProperties());
+        op.setOutputJmsProperties(getOutputJmsProperties());
+        op.setInputJmsPropertyValues(getInputJmsPropertyValues());
+
+        if (Trc.ON)
+            Trc.exit(op.deep());
+        return op;
+    }
+
+    /**
+     * Gets the WSDL binding:operation element for this operation
+     */
+    private BindingOperation getBindingOperation(Operation operation)
+        throws WSIFException {
+        Binding binding = wsifPort.getPort().getBinding();
+        BindingOperation bindingOp =
+            WSIFUtils.getBindingOperation(binding, operation);
+        if (bindingOp == null) {
+            throw new WSIFException(
+                "cannot find binding operation for port operation:"
+                    + operation.getName());
+        }
+        return bindingOp;
+    }
+
+    /**
+     * Returns the Definition object for the WSDL file
+     * @return Definition   the WSDL4J Definition object
+     */
+    public Definition getDefinition() {
+        Trc.entry(this);
+        Definition d = wsifPort.getDefinition();
+        Trc.exit(d);
+        return d;
+    }
+
+     public String getInputEncodingStyle() {
+        Trc.entry(this);
+        Trc.exit(inputEncodingStyle);
+        return inputEncodingStyle;
+    }
+
+    public String getInputNamespace() {
+        Trc.entry(this);
+        Trc.exit(inputNamespace);
+        return inputNamespace;
+    }
+
+    /**
+     * Gets the name of the portType wsdl:operation element
+     * being used by this WSIFOperation
+     * @return String   the operation name
+     */
+    public String getName() {
+        Trc.entry(this);
+        String s = portTypeOperation.getName();
+        Trc.exit(s);
+        return s;
+    }
+
+    /**
+     * Gets the portType wsdl:operation element used by this WSIFOperation
+     * @return Operation   the WSDL4J portType Operation object
+     */
+    public Operation getPortTypeOperation() {
+        Trc.entry(this);
+        Trc.exit(portTypeOperation);
+        return portTypeOperation;
+    }
+
+    public String getOutputEncodingStyle() {
+        Trc.entry(this);
+        Trc.exit(outputEncodingStyle);
+        return outputEncodingStyle;
+    }
+
+    public String getSoapActionURI() {
+        Trc.entry(this);
+        Trc.exit(soapActionURI);
+        return soapActionURI;
+    }
+
+    public Transport getTransport() throws WSIFException {
+        Trc.entry(this);
+        Transport t = wsifPort.getTransport();
+        Trc.exit(t);
+        return t;
+    }
+
+    public WSIFCorrelationId getAsyncRequestID() {
+        Trc.entry(this);
+        Trc.exit(asyncRequestID);
+        return asyncRequestID;
+    }
+
+    private HashMap getResponseMessageParameters() {
+        return responseMessageParameters;
+    }
+
+    public WSIFPort getWSIFPort() {
+        Trc.entry(this);
+        Trc.exit(wsifPort);
+        return wsifPort;
+    }
+
+    /**
+     * Tests if the currently executing request is an asynchronous request.
+     *
+     * @return   true if the current request is a asynchronous request,
+     *            otherwise false
+     */
+    public boolean isAsyncOperation() {
+        Trc.entry(this);
+        Trc.exit(asyncOperation);
+        return asyncOperation;
+    }
+
+    public void executeInputOnlyOperation(WSIFMessage inMsg)
+        throws WSIFException {
+        Trc.entry(this, inMsg);
+
+        if (inMsg == null) {
+            throw new IllegalArgumentException("input message is null");
+        }
+
+        setAsyncOperation(false);
+
+        try {
+            ServiceClient sender = wsifPort.getServiceClient();
+
+            sender.fireAndForget(getInputElement(inMsg));
+            /**
+             * We have to bock this thread untill we send the request , the problem
+             * is if we go out of the main thread , then request wont send ,so
+             * you have to wait some time :)
+             */
+            Thread.sleep(500);
+        }
+        catch(org.apache.axis2.AxisFault e) {
+            // TODO Auto-generated catch block
+            throw new WSIFException(e.getMessage());
+        }
+        catch(InterruptedException e){
+            e.printStackTrace();
+        }
+        Trc.exit();
+    }
+
+    public boolean executeRequestResponseOperation(
+        WSIFMessage inMsg,
+        WSIFMessage outMsg,
+        WSIFMessage faultMsg)
+        throws WSIFException {
+
+        Trc.entry(this, inMsg, outMsg, faultMsg);
+
+        if (inMsg == null) {
+            throw new IllegalArgumentException("input message is null");
+        }
+        if (outMsg == null) {
+            throw new IllegalArgumentException("output message is null");
+        }
+        if (faultMsg == null) {
+            throw new IllegalArgumentException("fault message is null");
+        }
+
+        close();
+        setAsyncOperation(false);
+
+        boolean succ =
+                invokeRequestResponseOperation(inMsg, outMsg, faultMsg);
+
+        Trc.exit(succ);
+        return succ;
+    }
+
+    /**
+     * Performs a request response operation asynchronously.
+     *
+     * @param input   input message to send to the operation
+     * @return the correlation ID or the request. The correlation ID
+     *         is used to associate the request with the WSIFOperation.
+     * @exception WSIFException if something goes wrong.
+     * @see WSIFOperation#executeRequestResponseAsync(WSIFMessage)
+     */
+    public WSIFCorrelationId executeRequestResponseAsync(WSIFMessage inMsg)
+        throws WSIFException {
+        Trc.entry(this, inMsg);
+
+        if (inMsg == null) {
+            throw new IllegalArgumentException("input message is null");
+        }
+
+        WSIFCorrelationId id = executeRequestResponseAsync(inMsg, null);
+        Trc.exit(id);
+        return id;
+
+    }
+
+    /**
+     * Performs a request response operation asynchronously.
+     *
+     * @param input   input message to send to the operation
+     * @param handler   the response handler that will be notified
+     *        when the asynchronous response becomes available.
+     * @return the correlation ID or the request. The correlation ID
+     *         is used to associate the request with the WSIFOperation.
+     * @exception WSIFException if something goes wrong.
+     * @see WSIFOperation#executeRequestResponseAsync(WSIFMessage,WSIFResponseHandler)
+     */
+    public WSIFCorrelationId executeRequestResponseAsync(
+        WSIFMessage inMsg,
+        WSIFResponseHandler handler)
+        throws WSIFException {
+        Trc.entry(this, inMsg, handler);
+        this.handler = handler;
+        if (inMsg == null) {
+            throw new IllegalArgumentException("input message is null");
+        }
+        close();
+
+        if (!wsifPort.supportsAsync()) {
+            throw new WSIFException("asynchronous operations not available");
+        }
+        try{
+
+            //load soap operation parameters
+            parseSoapOperation();
+
+            ServiceClient sender = wsifPort.getServiceClient();
+            Options options = sender.getOptions();
+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+            options.setUseSeparateListener(true);
+            options.setAction(getSoapActionURI());
+
+
+
+            sender.engageModule(new QName(Constants.MODULE_ADDRESSING));
+
+            callBack = getCallBack();
+            sender.sendReceiveNonBlocking(getInputElement(inMsg), callBack);
+
+            //Wait till the callback receives the response.
+            while (!callBack.isComplete()) {
+                try {
+                    Thread.sleep(1000);
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        catch(AxisFault ae){
+            throw new WSIFException(ae.getMessage(), ae);
+        }
+
+        WSIFCorrelationId id = getAsyncRequestID();
+        Trc.exit(id);
+        return id;
+    }
+
+    private Callback getCallBack() throws WSIFException{
+        //		Callback to handle the response
+        Callback callback = new Callback() {
+            public void onComplete(AsyncResult result) {
+
+                WSIFMessage outputMessage = createOutputMessage();
+                try {
+                    setResponseObject(outputMessage, result.getResponseEnvelope().getBody().getFirstElement());
+                    handler.executeAsyncResponse(outputMessage, null);
+                } catch (WSIFException e) {
+                    // TODO Auto-generated catch block
+                    e.printStackTrace();
+                }
+
+
+            }
+
+            public void onError(Exception e) {
+                e.printStackTrace();
+            }
+        };
+
+        return callback;
+    }
+
+
+    /**
+     * Initialises instance variables relating to the WSDL soap:operation element
+     * The soap:operation WSDL element has the form:
+     *    <soap:operation soapAction="uri"? style="rpc|document"?>?
+     */
+    private void parseSoapOperation() throws WSIFException {
+
+        this.soapOperation = wsifPort.getSOAPOperation(bindingOperation);
+        this.soapActionURI = soapOperation.getSoapActionURI();
+        this.operationStyle = soapOperation.getStyle();
+
+        if (operationStyle == null || operationStyle.length() < 1) {
+            operationStyle = wsifPort.getBindingStyle();
+        } else if (!WSIFAXISConstants.VALID_STYLES.contains(operationStyle)) {
+            throw new WSIFException(
+                "unsupported style "
+                    + operationStyle
+                    + " for operation "
+                    + portTypeOperation.getName());
+        }
+        if (operationStyle == null || operationStyle.length() < 1) {
+            operationStyle = WSIFAXISConstants.STYLE_DOCUMENT;
+        }
+    }
+
+    /**
+     * fireAsyncResponse is called by an AsyncListener when a response
+     * has been received for a previous executeRequestResponseAsync call.
+     * It passes the response to the executeAsyncResponse method of the
+     * associated WSIFResponseHandler.
+     * @see WSIFOperation#fireAsyncResponse(Object)
+     * @param response   an Object representing the response. The response
+     *            should be a JMS TextMessage containging the XML response.
+     */
+    public void fireAsyncResponse(Object response) throws WSIFException {
+        Trc.entry(this, response);
+
+        //Object result = deserialiseResponseObject(response);
+
+        WSIFMessage outMsg = createOutputMessage();
+        WSIFMessage faultMsg = createFaultMessage();
+        //TODO
+        //buildResponseMessages(result, outMsg, faultMsg);
+
+        getResponseHandler().executeAsyncResponse(outMsg, faultMsg);
+
+        Trc.exit(outMsg);
+    }
+
+
+    /**
+     * Gets the type of a Part, if the Part doesn't have a type,
+     * then gets the Element name as WSIF treats this as the same thing.
+     * (for now? probably the wrong thing to be doing)
+     */
+    private QName getPartType(Part p) {
+        QName type = p.getTypeName();
+        if (type == null) {
+            type = p.getElementName();
+        }
+        return type;
+    }
+
+    /**
+     * This is mapped to the blocking client invocation with single transport in AXIS 2
+     * @param inMsg
+     * @param outMsg
+     * @param faultMsg
+     * @return
+     * @throws WSIFException
+     */
+    public boolean invokeRequestResponseOperation(
+            WSIFMessage inMsg,
+            WSIFMessage outMsg,
+            WSIFMessage faultMsg)
+            throws WSIFException {
+            Trc.entry(this, inMsg, outMsg, faultMsg);
+
+
+            boolean workedOK = false;
+
+            try {
+                ServiceClient sender = wsifPort.getServiceClient();
+                OMElement result = null;
+
+                result = sender.sendReceive(getInputElement(inMsg));
+
+                //set the outmsg
+                if (result != null){
+                    workedOK = setResponseObject(outMsg, result);
+                }
+                else{
+                    faultMsg.setObjectPart("error", "Null result");
+                }
+
+            } catch (org.apache.axis2.AxisFault e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+
+                faultMsg.setObjectPart("error", e);
+            }
+
+
+            Trc.exit(workedOK);
+            return workedOK;
+    }
+
+    private OMElement getInputElement(WSIFMessage inMsg) throws WSIFException
+    {
+        Iterator partsIterator = inMsg.getParts();
+        while(partsIterator.hasNext()){
+
+            Object payLoad = partsIterator.next();
+            if (payLoad instanceof OMElement){
+                return (OMElement)payLoad;
+            }
+            else{
+                throw new WSIFException("Object part must be of OMElement");
+            }
+        }
+
+        throw new WSIFException("Input Message found not found");
+    }
+
+    /*
+     * Populates the Output Message
+     */
+    private boolean setResponseObject(WSIFMessage outputMessage, OMElement result) throws WSIFException{
+
+        boolean workedOK = false;
+
+        Iterator partsIterator = outputMessage.getPartNames();
+        Object outputPart = null;
+        while(partsIterator.hasNext()){
+
+            outputPart = partsIterator.next();
+        }
+
+        //Just in case output part name is missing, set the result object to blank object
+        String outputPartName = outputPart != null  ? outputPart.toString() : "";
+        outputMessage.setObjectPart(outputPartName, result);
+        workedOK = true;
+        return workedOK;
+    }
+
+
+    /**
+     * Sets the response handler that will be used to
+     * process the response to an asynchronous request.
+     * @param responseHandler   the responseHandler to use
+     */
+    private void setResponseHandler(WSIFResponseHandler responseHandler) {
+        this.responseHandler = responseHandler;
+    }
+
+    /**
+     * Gets the response handler that will be used to
+     * process the response to a asynchronous request.
+     * @return the current response handler.
+     * package visable as its used by the transport
+     */
+    WSIFResponseHandler getResponseHandler() {
+        return responseHandler;
+    }
+
+    public void setInputEncodingStyle(String s) {
+        Trc.entry(this, s);
+        inputEncodingStyle = s;
+        Trc.exit();
+    }
+
+    public void setInputNamespace(String s) {
+        Trc.entry(this, s);
+        inputNamespace = s;
+        Trc.exit();
+    }
+
+    public void setOperation(Operation operation1) {
+        Trc.entry(this, operation1);
+        portTypeOperation = operation1;
+        Trc.exit();
+    }
+
+    public void setOutputEncodingStyle(String s) {
+        Trc.entry(this, s);
+        outputEncodingStyle = s;
+        Trc.exit();
+    }
+
+    public void setSoapActionURI(String s) {
+        Trc.entry(this, s);
+        soapActionURI = s;
+        Trc.exit();
+    }
+
+    /**
+     * Sets if the currently executing request is an asynchronous request.
+     *
+     * @param b   true if the current request is a asynchronous request,
+     *            otherwise false
+     */
+    private void setAsyncOperation(boolean b) {
+        asyncOperation = b;
+    }
+
+    /**
+     * Gets the target namespace URI of this WSIFOperation
+     *
+     * @return the target namespace URI
+     */
+    public String getTargetNamespaceURI() {
+        Trc.entry(this);
+        Definition d = getDefinition();
+        String s = (d == null) ? "" : d.getTargetNamespace();
+        Trc.exit(s);
+        return s;
+    }
+
+    /**
+     * @deprecated use getPortTypeOperation
+     */
+    public Operation getOperation() {
+        Trc.entry(this);
+        Operation o = getPortTypeOperation();
+        Trc.exit(o);
+        return o;
+    }
+
+    /**
+     * This can be used to set the time out for invocations
+     * <TODO> integrate with synchronous invocation
+     */
+    private void checkForTimeoutProperties(
+        HashMap inJmsPropVals,
+        WSIFJMSDestination dest)
+        throws WSIFException {
+        for (Iterator i = inJmsPropVals.keySet().iterator(); i.hasNext();) {
+            String name = (String) i.next();
+            Object value = inJmsPropVals.get(name);
+            if (timeoutProperty(dest, name, value)) {
+                i.remove();
+            }
+        }
+    }
+
+    private boolean timeoutProperty(
+        WSIFJMSDestination dest,
+        String propertyName,
+        Object value)
+        throws WSIFException {
+        boolean isTimeoutProperty = false;
+        try {
+            if (WSIFConstants.WSIF_PROP_SYNC_TIMEOUT.equals(propertyName)) {
+                isTimeoutProperty = true;
+                Long syncTimeout = new Long(value.toString());
+                WSIFJmsTransport transport = (WSIFJmsTransport) getTransport();
+                transport.setSyncTimeout(syncTimeout);
+                Trc.event(this, "overridding syncTimeout to " + syncTimeout);
+            } else if (
+                WSIFConstants.WSIF_PROP_ASYNC_TIMEOUT.equals(propertyName)) {
+                isTimeoutProperty = true;
+                Long asyncTimeout = new Long(value.toString());
+                WSIFJmsTransport transport = (WSIFJmsTransport) getTransport();
+                transport.setAsyncTimeout(asyncTimeout);
+                Trc.event(this, "overridding asyncTimeout to " + asyncTimeout);
+            }
+        } catch (NumberFormatException ex) {
+            Trc.ignoredException(ex);
+        }
+        return isTimeoutProperty;
+    }
+
+
+    // package visable as it's used by WSIFJmsTransport
+    void setAsyncRequestID(WSIFCorrelationId asyncRequestID) {
+        Trc.entry(this, asyncRequestID);
+        this.asyncRequestID = asyncRequestID;
+        Trc.exit();
+    }
+
+    public String deep() {
+        StringBuffer buff = new StringBuffer();
+        try {
+            buff.append(super.toString()).append(":\n");
+            buff.append("wsifPort:").append(wsifPort);
+            buff.append(" portTypeOperation:").append(Trc.brief(portTypeOperation));
+            buff.append(" bindingOperation:").append(bindingOperation);
+            buff.append(" soapOperation:").append(soapOperation);
+            buff.append(" operationStyle:").append(operationStyle);
+            buff.append(" inputEncodingStyle:").append(inputEncodingStyle);
+            buff.append(" inputNamespace:").append(inputNamespace);
+            buff.append(" actionUri:").append(soapActionURI);
+            buff.append(" inJmsProps:").append(inJmsProps);
+            buff.append(" outJmsProps:").append(outJmsProps);
+            buff.append(" inJmsPropVals:").append(inJmsPropVals);
+            buff.append(" context:").append(context);
+            buff.append(" asyncOperation:").append(asyncOperation);
+            buff.append(" asyncRequestID:").append(asyncRequestID);
+            buff.append(" responseHandler:").append(responseHandler);
+            buff.append(" responseMessageParameters:").append(responseMessageParameters);
+            buff.append(" outputEncodingStyle:").append(outputEncodingStyle);
+            buff.append(" typeMap:").append(typeMap);
+        } catch (Exception e) {
+            Trc.exceptionInTrace(e);
+        }
+        return buff.toString();
+    }
+}

Propchange: webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/WSIFOperation_ApacheAxis2.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/WSIFOperation_ApacheAxis2.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/WSIFOperation_ApacheAxis2.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/WSIFPort_ApacheAxis2.java
URL: http://svn.apache.org/viewvc/webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/WSIFPort_ApacheAxis2.java?view=auto&rev=535297
==============================================================================
--- webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/WSIFPort_ApacheAxis2.java (added)
+++ webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/WSIFPort_ApacheAxis2.java Fri May  4 08:47:22 2007
@@ -0,0 +1,274 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 2002 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "WSIF" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2001, 2002, International
+ * Business Machines, Inc., http://www.apache.org.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.wsif.providers.soap.apacheaxis2;
+
+import java.util.HashMap;
+
+import javax.wsdl.BindingOperation;
+import javax.wsdl.Definition;
+import javax.wsdl.Port;
+import javax.wsdl.extensions.soap.SOAPBinding;
+
+import org.apache.axis.client.Call;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.wsif.WSIFException;
+import org.apache.wsif.WSIFOperation;
+import org.apache.wsif.logging.Trc;
+import org.apache.wsif.providers.WSIFDynamicTypeMap;
+import org.apache.wsif.providers.soap.apacheaxis.WSIFPort_ApacheAxis;
+import org.apache.wsif.util.WSIFUtils;
+
+
+/**
+ * This class implements a WSDL SOAP binding using Apache AXIS.
+ * See section 3 of the WSDL 1.1 specification for details 
+ * of the WSDL SOAP binding. WSIF extends this standard SOAP
+ * binding with the WSIF extensions for SOAP over JMS.
+ * 
+ * @author Mark Whitlock <whitlock@apache.org>
+ * @author Ant Elder <ant.elder@uk.ibm.com>
+ */
+public class WSIFPort_ApacheAxis2 extends WSIFPort_ApacheAxis {
+
+	private static final long serialVersionUID = 2L;
+	
+	private static final String AXIS2_LOCATION_PROPERTY = "AXIS2RepositoryLocation";
+	
+	/** ServiceClient instance associated with this operation */
+	protected ServiceClient serviceClient;
+	
+	/**
+	 * Construct a new WSIFPort
+	 */
+	public WSIFPort_ApacheAxis2(
+		Definition definition,
+		Port port,
+		SOAPBinding soapBinding,
+		WSIFDynamicTypeMap wsifdynamictypemap)
+		throws WSIFException {
+		
+		super(definition, port, soapBinding, wsifdynamictypemap);
+	}
+
+	/**
+	 * Creates a WSIFOperation for the given operation name
+	 * @return WSIFOperation   the WSIFOperation
+	 * @see WSIFOperation#createOperation(opName) 
+	 * @throws WSIFException  if there is an exception creating the WSIFOperation
+	 */
+	public WSIFOperation createOperation(String operationName)
+		throws WSIFException {
+		Trc.entry(this, operationName);
+		WSIFOperation wo = createOperation(operationName, null, null);
+		Trc.exit(wo);
+		return wo;
+	}
+
+	/**
+	 * Creates a WSIFOperation for the given operation name
+	 * @return WSIFOperation   the WSIFOperation_ApacheAxis
+	 * @see WSIFOperation#createOperation(opName, inName, outName) 
+	 * @throws WSIFException  if there is an exception creating the WSIFOperation
+	 */
+	public WSIFOperation createOperation(
+		String operationName,
+		String inputName,
+		String outputName)
+		throws WSIFException {
+		Trc.entry(this, operationName, inputName, outputName);
+
+		WSIFOperation_ApacheAxis2 op =
+			getDynamicWSIFOperationForAxis2(operationName, inputName, outputName);
+		if (op == null) {
+			throw new WSIFException(
+				"Could not create operation: "
+					+ operationName
+					+ ":"
+					+ inputName
+					+ ":"
+					+ outputName);
+		}
+		Trc.exit(op);
+		return op;
+	}
+
+	/**
+	 * Hides the getCall() of the super class. Call objects are not used in Axis2
+	 * @deprecated This method must not called. 
+	 */
+	public Call getCall() throws WSIFException {
+		Trc.entry(this);
+		throw new WSIFException("Call Not supported in Axis2");
+	}
+	
+	/**
+	 * Create a Axis2 ServiceClient instance. It returns cached instance if alredy created. Service client by defualt
+	 * inclides EndPointReference. Other options need to be set after calling this method.
+	 * @return
+	 * @throws WSIFException
+	 */
+	public ServiceClient getServiceClient() throws WSIFException {
+		Trc.entry(this);
+		if (serviceClient == null) {
+			serviceClient = makeNewAXIS2Client();
+		}
+		Trc.exit(serviceClient);
+		return serviceClient;
+	}
+	
+	private ServiceClient makeNewAXIS2Client() throws WSIFException{
+	
+		try {
+			String axis2RepoLoc = Axis2Properties.getProperty(AXIS2_LOCATION_PROPERTY);
+			
+			ConfigurationContext configContext = ConfigurationContextFactory.createConfigurationContextFromFileSystem(axis2RepoLoc, null);
+			ServiceClient sender = new ServiceClient(configContext, null);
+			
+			Options options = new Options();
+    		EndpointReference targetEPR = new EndpointReference(getEndPoint().toString());
+            options.setTo(targetEPR);
+            sender.setOptions(options);
+            
+            return sender;
+            
+		} catch (AxisFault e) {
+			throw new WSIFException("Cannot create the service Client", e);
+		}
+	}
+
+	private WSIFOperation_ApacheAxis2 getDynamicWSIFOperationForAxis2(
+		String opName,
+		String inputName,
+		String outputName)
+		throws WSIFException {
+		Trc.entry(this, opName, inputName, outputName);
+
+		WSIFOperation_ApacheAxis2 cachedOp = null;
+		
+        if (cachedWSIFOperations == null) {
+           cachedWSIFOperations = new HashMap();
+        } else {
+  		   cachedOp = (WSIFOperation_ApacheAxis2) cachedWSIFOperations.get(
+		      getKey(opName, inputName, outputName));
+	    }
+
+		WSIFOperation_ApacheAxis2 wsifOperation;
+		if (cachedOp == null) {
+            BindingOperation bop =
+               WSIFUtils.getBindingOperation( 
+                  port.getBinding(), opName, inputName, outputName );
+			if (bop == null) {
+				throw new WSIFException(
+				   "no operation found named " + 
+				   opName + ", input:" + inputName + ", output:" + outputName );
+			}
+			cachedOp =
+				new WSIFOperation_ApacheAxis2(
+					this,
+                    bop.getOperation(),
+					wsifdynamictypemap);
+			cachedWSIFOperations.put(
+				getKey(opName, inputName, outputName),
+				cachedOp);
+		    wsifOperation = cachedOp;
+		} else {
+		    wsifOperation = cachedOp.copy();
+		}
+
+		Trc.exit(wsifOperation);
+		return wsifOperation;
+	}
+	
+	/**
+	 * Axis2 provides async support over http
+	 */
+	public boolean supportsAsync() {
+		
+		return true;
+
+	}
+
+	public String deep() {
+		StringBuffer buff = new StringBuffer();
+		try {
+			buff.append(new String(super.toString()));
+			buff.append(":\n");
+			buff.append(" port: ").append(port);
+			buff.append(" definition: ").append(definition);
+			buff.append(" soapbinding: ").append(soapBinding);
+			buff.append(" bindingStyle: ").append(bindingStyle);
+			buff.append(" soapAddress: ").append(soapAddress);
+			buff.append(" jmsAddress: ").append(jmsAddress);
+			buff.append(" service url: ").append(endPointURL);
+			buff.append(" jmsAddressPropVals: ").append(jmsAddressPropVals);
+			buff.append(" dynamicTypeMap: ").append(wsifdynamictypemap);
+			buff.append(" transport: ").append(transport);
+			buff.append(" Servive: ").append(serviceClient);
+			buff.append("operationInstances: ").append(cachedWSIFOperations);
+		} catch (Exception e) {
+			Trc.exceptionInTrace(e);
+		}
+		return buff.toString();
+	}
+
+}
\ No newline at end of file

Propchange: webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/WSIFPort_ApacheAxis2.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/WSIFPort_ApacheAxis2.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: webservices/wsif/trunk/java/src/org/apache/wsif/providers/soap/apacheaxis2/WSIFPort_ApacheAxis2.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain



---------------------------------------------------------------------
To unsubscribe, e-mail: wsif-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: wsif-dev-help@ws.apache.org


Mime
View raw message