KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > wsif > providers > soap > soaprmi > WSIFDynamicProvider_SoapRMI


1 /*
2  * The Apache Software License, Version 1.1
3  *
4  *
5  * Copyright (c) 2002 The Apache Software Foundation. All rights
6  * reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  * 1. Redistributions of source code must retain the above copyright
13  * notice, this list of conditions and the following disclaimer.
14  *
15  * 2. Redistributions in binary form must reproduce the above copyright
16  * notice, this list of conditions and the following disclaimer in
17  * the documentation and/or other materials provided with the
18  * distribution.
19  *
20  * 3. The end-user documentation included with the redistribution,
21  * if any, must include the following acknowledgment:
22  * "This product includes software developed by the
23  * Apache Software Foundation (http://www.apache.org/)."
24  * Alternately, this acknowledgment may appear in the software itself,
25  * if and wherever such third-party acknowledgments normally appear.
26  *
27  * 4. The names "WSIF" and "Apache Software Foundation" must
28  * not be used to endorse or promote products derived from this
29  * software without prior written permission. For written
30  * permission, please contact apache@apache.org.
31  *
32  * 5. Products derived from this software may not be called "Apache",
33  * nor may "Apache" appear in their name, without prior written
34  * permission of the Apache Software Foundation.
35  *
36  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
37  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
38  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
39  * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
40  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
42  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
43  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
44  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
45  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
46  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
47  * SUCH DAMAGE.
48  * ====================================================================
49  *
50  * This software consists of voluntary contributions made by many
51  * individuals on behalf of the Apache Software Foundation and was
52  * originally based on software copyright (c) 2001, 2002, International
53  * Business Machines, Inc., http://www.apache.org. For more
54  * information on the Apache Software Foundation, please see
55  * <http://www.apache.org/>.
56  */

57
58 package org.apache.wsif.providers.soap.soaprmi;
59
60 import java.util.Iterator JavaDoc;
61 import java.util.List JavaDoc;
62
63 import javax.wsdl.Binding;
64 import javax.wsdl.Definition;
65 import javax.wsdl.Port;
66 import javax.wsdl.Service;
67 import javax.wsdl.extensions.soap.SOAPBinding;
68 import org.apache.wsif.WSIFException;
69 import org.apache.wsif.WSIFPort;
70 import org.apache.wsif.base.WSIFServiceImpl;
71 import org.apache.wsif.logging.Trc;
72 import org.apache.wsif.providers.WSIFDynamicTypeMap;
73 import org.apache.wsif.spi.WSIFProvider;
74
75 /**
76  * SoapRMI provider of dynamic WSDL invocations.
77  *
78  * <P>Limitations of this SoapRMI dynamic port provider
79  * (relative to WSDL 1.1 SOAP binding):<UL>
80  * <LI>only rpc style is supported (not document)
81  * <LI>only HTTP transport is supported
82  * <LI>only soap:body use 'encoded' is supported (not literal)
83  * <LI>soap:header is not allowed
84  * <LI>soap:fault is ignored
85  * <LI>only first encodingStyle is used from input soap:body
86  * (when the space separated list of encoding styles is provided)
87  * <LI>output soap:body namespaceURI and encodingStyles are ignored
88  * <LI>first part from output soap:body is used as return value
89  * <LI>fault processing is not yet implemented - SOAP faults
90  * as provided by Apache SOAP exceptions are always wrapped into
91  * WSIFException.
92  * </UL>
93  *
94  * @author Aleksander Slominski
95  */

96 public class WSIFDynamicProvider_SoapRMI implements WSIFProvider {
97
98     private static final String JavaDoc[] supportedBindingNamespaceURIs =
99         { "http://schemas.xmlsoap.org/wsdl/soap/xxx" };
100
101     private static final String JavaDoc[] supportedAddressNamespaceURIs =
102         { "http://schemas.xmlsoap.org/wsdl/soap/xxx" };
103
104     public WSIFDynamicProvider_SoapRMI() {
105         WSIFServiceImpl.addExtensionRegistry(
106             new org.apache.wsif.wsdl.extensions.jms.JMSExtensionRegistry());
107     }
108
109     /**
110      * Check if WSDL port has SOAP binding and if successful try
111      * to create SOAP port instance.
112      */

113     public WSIFPort createDynamicWSIFPort(
114         Definition def,
115         Service service,
116         Port port,
117         WSIFDynamicTypeMap typeMap)
118         throws WSIFException {
119
120         // check that Port binding has SOAP binding extensibility element
121
Binding binding = port.getBinding();
122         List JavaDoc exs = binding.getExtensibilityElements();
123         for (Iterator JavaDoc i = exs.iterator(); i.hasNext();) {
124             Object JavaDoc o = i.next();
125             if (o instanceof SOAPBinding) {
126                 // if so try to create SOAP dynamic port instance
127
return new WSIFPort_SoapRMI(def, service, port, typeMap);
128             }
129         }
130
131         // otherwise return null (so other providers can be checked)
132
return null;
133     }
134
135     /**
136      * Returns the WSDL namespace URIs of any bindings this provider supports.
137      * @return an array of all binding namespaces supported by this provider
138      */

139     public String JavaDoc[] getBindingNamespaceURIs() {
140         Trc.entry(this);
141         Trc.exit(supportedBindingNamespaceURIs);
142         return supportedBindingNamespaceURIs;
143     }
144
145     /**
146      * Returns the WSDL namespace URIs of any port addresses this provider supports.
147      * @return an array of all address namespaces supported by this provider
148      */

149     public String JavaDoc[] getAddressNamespaceURIs() {
150         Trc.entry(this);
151         Trc.exit(supportedAddressNamespaceURIs);
152         return supportedAddressNamespaceURIs;
153     }
154 }
Popular Tags