KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > axis > wsdl > symbolTable > SymTabEntry


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
56 package org.jboss.axis.wsdl.symbolTable;
57
58 import javax.xml.namespace.QName JavaDoc;
59 import java.util.HashMap JavaDoc;
60 import java.util.Iterator JavaDoc;
61 import java.util.Map JavaDoc;
62
63 /**
64  * SymTabEntry is the base class for all symbol table entries. It contains four things:
65  * - a QName
66  * - space for a Writer-specific name (for example, in Wsdl2java, this will be the Java name)
67  * - isReferenced flag indicating whether this entry is referenced by other entries
68  * - dynamicVars; a mechanism for Writers to add additional context information onto entries.
69  */

70 public abstract class SymTabEntry
71 {
72    // The QName of this entry is immutable. There is no setter for it.
73
protected QName JavaDoc qname;
74
75    // The name is Writer implementation dependent. For example, in Wsdl2java, this will become
76
// the Java name.
77
protected String JavaDoc name;
78
79    // Is this entry referenced by any other entry?
80
private boolean isReferenced = false;
81
82    private HashMap JavaDoc dynamicVars = new HashMap JavaDoc();
83
84    /**
85     * Construct a symbol table entry with the given QName.
86     */

87    protected SymTabEntry(QName JavaDoc qname)
88    {
89       this.qname = qname;
90    } // ctor
91

92    /**
93     * Get the QName of this entry.
94     */

95    public final QName JavaDoc getQName()
96    {
97       return qname;
98    } // getQName
99

100    /**
101     * Get the name of this entry. The name is Writer-implementation-dependent. For example, in
102     * Wsdl2java, this will become the Java name.
103     */

104    public String JavaDoc getName()
105    {
106       return name;
107    } // getName
108

109    /**
110     * Set the name of this entry. This method is not called by the framework, it is only called
111     * by the Writer implementation.
112     */

113    public void setName(String JavaDoc name)
114    {
115       this.name = name;
116    } // setName
117

118    /**
119     * Is this entry referenced by any other entry in the symbol table?
120     */

121    public final boolean isReferenced()
122    {
123       return isReferenced;
124    } // isReferenced
125

126    /**
127     * Set the isReferenced variable, default value is true.
128     */

129    public final void setIsReferenced(boolean isReferenced)
130    {
131       this.isReferenced = isReferenced;
132    } // setIsReferenced
133

134    /**
135     * There may be information that does not exist in WSDL4J/DOM
136     * structures and does not exist in
137     * our additional structures, but that Writer implementation
138     * will need. This information is
139     * most likely context-relative, so the DynamicVar map is
140     * provided for the Writers to store and
141     * retrieve their particular information.
142     */

143    public Object JavaDoc getDynamicVar(Object JavaDoc key)
144    {
145       return dynamicVars.get(key);
146    } // getDynamicVar
147

148    public void setDynamicVar(Object JavaDoc key, Object JavaDoc value)
149    {
150       dynamicVars.put(key, value);
151    } // setDynamicVar
152

153    /**
154     * Collate the info in this object in string form.
155     */

156    public String JavaDoc toString()
157    {
158       return toString("");
159    } // toString
160

161    /**
162     * Collate the info in this object in string form with indentation.
163     */

164    protected String JavaDoc toString(String JavaDoc indent)
165    {
166       String JavaDoc string =
167               indent + "QName: " + qname + '\n' +
168               indent + "name: " + name + '\n' +
169               indent + "isReferenced? " + isReferenced + '\n';
170       String JavaDoc prefix = indent + "dynamicVars: ";
171       Iterator JavaDoc entries = dynamicVars.entrySet().iterator();
172       while (entries.hasNext())
173       {
174          Map.Entry JavaDoc entry = (Map.Entry JavaDoc)entries.next();
175          Object JavaDoc key = entry.getKey();
176          string += prefix + key + " = " + entry.getValue() + '\n';
177          prefix = indent + " ";
178       }
179       return string;
180    } // toString
181
} // abstract class SymTabEntry
182
Popular Tags