KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > axis > wsdl > SkeletonImpl


1 /*
2  * The Apache Software License, Version 1.1
3  *
4  *
5  * Copyright (c) 2001-2003 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 "Axis" 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. For more
52  * information on the Apache Software Foundation, please see
53  * <http://www.apache.org/>.
54  */

55 package org.jboss.axis.wsdl;
56
57 import javax.xml.namespace.QName JavaDoc;
58 import javax.xml.rpc.ParameterMode JavaDoc;
59 import java.util.HashMap JavaDoc;
60
61 /**
62  * Provides Base function implementation for the Skeleton interface
63  */

64 public class SkeletonImpl implements Skeleton
65 {
66    private static HashMap JavaDoc table = null;
67
68    /**
69     * Constructor
70     */

71    public SkeletonImpl()
72    {
73       if (table == null)
74       {
75          table = new HashMap JavaDoc();
76       }
77    }
78
79    class MetaInfo
80    {
81       QName JavaDoc[] names;
82       ParameterMode JavaDoc[] modes;
83       String JavaDoc inputNamespace;
84       String JavaDoc outputNamespace;
85       String JavaDoc soapAction;
86
87       MetaInfo(QName JavaDoc[] names, ParameterMode JavaDoc[] modes, String JavaDoc inputNamespace,
88                String JavaDoc outputNamespace, String JavaDoc soapAction)
89       {
90          this.names = names;
91          this.modes = modes;
92          this.inputNamespace = inputNamespace;
93          this.outputNamespace = outputNamespace;
94          this.soapAction = soapAction;
95       }
96    }
97
98    /**
99     * Add operation name and vector containing return and parameter names.
100     * The first name in the array is either the return name (which
101     * should be set to null if there is no return name)
102     */

103    public void add(String JavaDoc operation, QName JavaDoc[] names, ParameterMode JavaDoc[] modes,
104                    String JavaDoc inputNamespace, String JavaDoc outputNamespace, String JavaDoc soapAction)
105    {
106       table.put(operation, new MetaInfo(names, modes, inputNamespace,
107               outputNamespace, soapAction));
108    }
109
110    /**
111     * Convenience method which allows passing an array of Strings which
112     * will be converted into QNames with no namespace.
113     */

114    public void add(String JavaDoc operation, String JavaDoc[] names, ParameterMode JavaDoc[] modes,
115                    String JavaDoc inputNamespace, String JavaDoc outputNamespace, String JavaDoc soapAction)
116    {
117       QName JavaDoc[] qnames = new QName JavaDoc[names.length];
118       for (int i = 0; i < names.length; i++)
119       {
120          QName JavaDoc qname = new QName JavaDoc(null, names[i]);
121          qnames[i] = qname;
122       }
123       add(operation, qnames, modes, inputNamespace,
124               outputNamespace, soapAction);
125    }
126
127    /**
128     * Used to return the name of the n-th parameter of the specified
129     * operation. Use -1 to get the return type name
130     * Returns null if problems occur or the parameter is not known.
131     */

132    public QName JavaDoc getParameterName(String JavaDoc operationName, int n)
133    {
134       MetaInfo value = (MetaInfo)table.get(operationName);
135       if (value == null ||
136               value.names == null ||
137               value.names.length <= n + 1)
138       {
139          return null;
140       }
141       return value.names[n + 1];
142    }
143
144    /**
145     * Used to return the mode of the n-th parameter of the specified
146     * operation. Use -1 to get the return mode.
147     * Returns null if problems occur or the parameter is not known.
148     */

149    public ParameterMode JavaDoc getParameterMode(String JavaDoc operationName, int n)
150    {
151       MetaInfo value = (MetaInfo)table.get(operationName);
152       if (value == null ||
153               value.modes == null ||
154               value.modes.length <= n + 1)
155       {
156          return null;
157       }
158       return value.modes[n + 1];
159    }
160
161    /**
162     * Used to return the namespace of the input clause of the given
163     * operation. Returns null if problems occur.
164     */

165    public String JavaDoc getInputNamespace(String JavaDoc operationName)
166    {
167       MetaInfo value = (MetaInfo)table.get(operationName);
168       if (value == null)
169       {
170          return null;
171       }
172       return value.inputNamespace;
173    }
174
175    /**
176     * Used to return the namespace of the output clause of the given
177     * operation. Returns null if problems occur.
178     */

179    public String JavaDoc getOutputNamespace(String JavaDoc operationName)
180    {
181       MetaInfo value = (MetaInfo)table.get(operationName);
182       if (value == null)
183       {
184          return null;
185       }
186       return value.outputNamespace;
187    }
188
189    /**
190     * Used to return the SOAPAction of the given operation.
191     * Returns null if problems occur.
192     */

193    public String JavaDoc getSOAPAction(String JavaDoc operationName)
194    {
195       MetaInfo value = (MetaInfo)table.get(operationName);
196       if (value == null)
197       {
198          return null;
199       }
200       return value.soapAction;
201    }
202
203 }
204
Popular Tags