KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > wsif > providers > jms > WSIFDynamicProvider_Jms


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.jms;
59
60 import java.security.AccessController JavaDoc;
61 import java.security.PrivilegedAction JavaDoc;
62 import java.util.Iterator JavaDoc;
63 import java.util.List JavaDoc;
64
65 import javax.wsdl.Binding;
66 import javax.wsdl.Definition;
67 import javax.wsdl.Port;
68 import javax.wsdl.Service;
69
70 import org.apache.wsif.WSIFException;
71 import org.apache.wsif.WSIFPort;
72 import org.apache.wsif.base.WSIFServiceImpl;
73 import org.apache.wsif.logging.Trc;
74 import org.apache.wsif.providers.WSIFDynamicTypeMap;
75 import org.apache.wsif.spi.WSIFProvider;
76 import org.apache.wsif.wsdl.extensions.jms.JMSBinding;
77
78 /**
79  * WSIF Jms provider
80  *
81  * @author <a HREF="mailto:ake@de.ibm.com">Hermann Akermann</a>
82  */

83 public class WSIFDynamicProvider_Jms implements WSIFProvider {
84
85     private static final String JavaDoc jms = "http://schemas.xmlsoap.org/wsdl/jms/";
86     private static String JavaDoc[] bindings = new String JavaDoc[0];
87     private static String JavaDoc[] addresses = new String JavaDoc[0];
88     private static boolean setUpBindings = false;
89     private static boolean setUpAddresses = false;
90
91     public WSIFDynamicProvider_Jms() {
92         Trc.entry(this);
93         if (!setUpBindings) {
94             setUpBindingNamespaceURIs();
95         }
96         if (!setUpAddresses) {
97             setUpAddressNamespaceURIs();
98         }
99         // FormatExtensionRegistry is provided by default
100
WSIFServiceImpl.addExtensionRegistry(
101             new org.apache.wsif.wsdl.extensions.jms.JMSExtensionRegistry());
102         Trc.exit();
103     }
104
105     /**
106      * @see WSIFProvider#createDynamicWSIFPort(Definition, Service, Port, WSIFDynamicTypeMap)
107      */

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

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

150     public String JavaDoc[] getAddressNamespaceURIs() {
151         Trc.entry(this);
152         Trc.exit(addresses);
153         return addresses;
154     }
155
156     private void setUpBindingNamespaceURIs() {
157         // check if the jms classes are available, if not then we cannot
158
// support jms bindings!
159
Class JavaDoc cls =
160             (Class JavaDoc) AccessController.doPrivileged(new PrivilegedAction JavaDoc() {
161             public Object JavaDoc run() {
162                 try {
163                     return Class.forName(
164                         "javax.jms.Queue",
165                         true,
166                         Thread.currentThread().getContextClassLoader());
167                 } catch (Throwable JavaDoc ignored) {
168                     Trc.ignoredException(ignored);
169                 }
170                 return null;
171             }
172         });
173         if (cls != null) {
174             bindings = new String JavaDoc[] { jms };
175         }
176         setUpBindings = true;
177     }
178
179     private void setUpAddressNamespaceURIs() {
180         // check if the jms classes are available, if not then we cannot
181
// support jms addresses!
182
Class JavaDoc cls =
183             (Class JavaDoc) AccessController.doPrivileged(new PrivilegedAction JavaDoc() {
184             public Object JavaDoc run() {
185                 try {
186                     return Class.forName(
187                         "javax.jms.Queue",
188                         true,
189                         Thread.currentThread().getContextClassLoader());
190                 } catch (Throwable JavaDoc ignored) {
191                     Trc.ignoredException(ignored);
192                 }
193                 return null;
194             }
195         });
196                 
197         if (cls != null) {
198             addresses = new String JavaDoc[] { jms };
199         }
200         setUpAddresses = true;
201     }
202 }
Popular Tags