001: /*
002: Copyright (c) 2004-2005, Dennis M. Sosnoski
003: All rights reserved.
004:
005: Redistribution and use in source and binary forms, with or without modification,
006: are permitted provided that the following conditions are met:
007:
008: * Redistributions of source code must retain the above copyright notice, this
009: list of conditions and the following disclaimer.
010: * Redistributions in binary form must reproduce the above copyright notice,
011: this list of conditions and the following disclaimer in the documentation
012: and/or other materials provided with the distribution.
013: * Neither the name of JiBX nor the names of its contributors may be used
014: to endorse or promote products derived from this software without specific
015: prior written permission.
016:
017: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
018: ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
019: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
020: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
021: ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
022: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
023: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
024: ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
025: (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
026: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
027: */
028:
029: package org.jibx.binding.model;
030:
031: /**
032: * Interface for field or method information. Provides the information needed
033: * for access to the item.
034: *
035: * @author Dennis M. Sosnoski
036: * @version 1.0
037: */
038:
039: public interface IClassItem {
040: /**
041: * Get owning class information.
042: *
043: * @return owning class information
044: */
045: public IClass getOwningClass();
046:
047: /**
048: * Get item name.
049: *
050: * @return item name
051: */
052: public String getName();
053:
054: /**
055: * Get item JavaDoc description, if available.
056: *
057: * @return non-empty JavaDoc text (<code>null</code> if not available)
058: */
059: public String getJavaDoc();
060:
061: /**
062: * Get item type as fully qualified class name.
063: *
064: * @return item type name
065: */
066: public String getTypeName();
067:
068: /**
069: * Get return JavaDoc description for method, if available.
070: *
071: * @return non-empty JavaDoc text (<code>null</code> if not available)
072: */
073: public String getReturnJavaDoc();
074:
075: /**
076: * Get number of arguments for method.
077: *
078: * @return argument count for method, or <code>-1</code> if not a method
079: */
080: public int getArgumentCount();
081:
082: /**
083: * Get argument type as fully qualified class name. This method will throw a
084: * runtime exception if called on a field.
085: *
086: * @param index argument number
087: * @return argument type name
088: */
089: public String getArgumentType(int index);
090:
091: /**
092: * Get method parameter name, if available. This method will throw a
093: * runtime exception if called on a field.
094: *
095: * @param index parameter number
096: * @return parameter name (<code>null</code> if not available)
097: */
098: public String getParameterName(int index);
099:
100: /**
101: * Get method parameter JavaDoc description, if available. This method will
102: * throw a runtime exception if called on a field.
103: *
104: * @param index parameter number
105: * @return non-empty JavaDoc text (<code>null</code> if not available)
106: */
107: public String getParameterJavaDoc(int index);
108:
109: /**
110: * Get access flags.
111: *
112: * @return flags for access type of field or method
113: */
114: public int getAccessFlags();
115:
116: /**
117: * Get field or method signature.
118: *
119: * @return encoded method signature
120: */
121: public String getSignature();
122:
123: /**
124: * Check if item is a method.
125: *
126: * @return <code>true</code> if a method, <code>false</code> if a field
127: */
128: public boolean isMethod();
129:
130: /**
131: * Check if item is an initializer.
132: *
133: * @return <code>true</code> if an initializer, <code>false</code> if a
134: * field or normal method
135: */
136: public boolean isInitializer();
137:
138: /**
139: * Get names of exceptions thrown by method.
140: *
141: * @return array of exceptions thrown by method, or <code>null</code> if
142: * a field
143: */
144: public String[] getExceptions();
145:
146: /**
147: * Get method throws JavaDoc description, if available. This method will
148: * throw a runtime exception if called on a field.
149: *
150: * @param index exception index (into array returned by
151: * {@link #getExceptions()}
152: * @return non-empty JavaDoc text (<code>null</code> if not available)
153: */
154: public String getExceptionJavaDoc(int index);
155:
156: /**
157: * Get the generics signature information for item.
158: *
159: * @return generics signature (<code>null</code> if none)
160: */
161: public String getGenericsSignature();
162: }
|