001: /**
002: * Redistribution and use of this software and associated documentation
003: * ("Software"), with or without modification, are permitted provided
004: * that the following conditions are met:
005: *
006: * 1. Redistributions of source code must retain copyright
007: * statements and notices. Redistributions must also contain a
008: * copy of this document.
009: *
010: * 2. Redistributions in binary form must reproduce the
011: * above copyright notice, this list of conditions and the
012: * following disclaimer in the documentation and/or other
013: * materials provided with the distribution.
014: *
015: * 3. The name "Exolab" must not be used to endorse or promote
016: * products derived from this Software without prior written
017: * permission of Intalio, Inc. For written permission,
018: * please contact info@exolab.org.
019: *
020: * 4. Products derived from this Software may not be called "Exolab"
021: * nor may "Exolab" appear in their names without prior written
022: * permission of Intalio, Inc. Exolab is a registered
023: * trademark of Intalio, Inc.
024: *
025: * 5. Due credit should be given to the Exolab Project
026: * (http://www.exolab.org/).
027: *
028: * THIS SOFTWARE IS PROVIDED BY INTALIO, INC. AND CONTRIBUTORS
029: * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
030: * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
031: * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
032: * INTALIO, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
033: * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
034: * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
035: * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
036: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
037: * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
038: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
039: * OF THE POSSIBILITY OF SUCH DAMAGE.
040: *
041: * Copyright 1999 (C) Intalio, Inc. All Rights Reserved.
042: *
043: * This file was originally developed by Keith Visco during the
044: * course of employment at Intalio Inc.
045: * All portions of this file developed by Keith Visco after Jan 19 2005 are
046: * Copyright (C) 2005 Keith Visco. All Rights Reserved.
047: *
048: * $Id: ClassDescriptorResolver.java 5951 2006-05-30 22:18:48Z bsnyder $
049: */package org.exolab.castor.xml;
050:
051: import java.util.Iterator;
052:
053: /**
054: * An interface for finding or "resolving" XMLClassDescriptor classes.
055: *
056: * <BR/>
057: * <B>Note:</B>
058: * This interface is used by the marshalling Framework for
059: * resolving XMLClassDescriptors for non-primitive types.
060: * There are no guarantees that this class will be called for
061: * java native classes.
062: *
063: * @author <a href="mailto:keith AT kvisco DOT com">Keith Visco</a>
064: * @version $Revision: 5951 $ $Date: 2005-02-28 17:41:38 -0700 (Mon, 28 Feb 2005) $
065: */
066: public interface XMLClassDescriptorResolver extends
067: ClassDescriptorResolver {
068:
069: // /**
070: // * Returns the XMLClassDescriptor for the given class
071: // * @param type the Class to find the XMLClassDescriptor for
072: // * @return the XMLClassDescriptor for the given class
073: // **/
074: // ClassDescriptor resolve(Class type) throws ResolverException;
075:
076: /**
077: * Returns the XMLClassDescriptor for the given class name
078: *
079: * @param className the class name to find the XMLClassDescriptor for
080: * @return the XMLClassDescriptor for the given class name
081: */
082: XMLClassDescriptor resolve(String className)
083: throws ResolverException;
084:
085: /**
086: * Returns the XMLClassDescriptor for the given class name
087: *
088: * @param className the class name to find the XMLClassDescriptor for
089: * @param loader the ClassLoader to use
090: * @return the XMLClassDescriptor for the given class name
091: */
092: XMLClassDescriptor resolve(String className, ClassLoader loader)
093: throws ResolverException;
094:
095: /**
096: * Returns the first XMLClassDescriptor that matches the given
097: * XML name and namespaceURI. Null is returned if no descriptor
098: * can be found.
099: *
100: * @param xmlName The class name to find the XMLClassDescriptor for.
101: * @param loader The ClassLoader to use.
102: * @return The XMLClassDescriptor for the given XML name.
103: */
104: XMLClassDescriptor resolveByXMLName(String xmlName,
105: String namespaceURI, ClassLoader loader)
106: throws ResolverException;
107:
108: /**
109: * Returns an enumeration of XMLClassDescriptor objects that
110: * match the given xml name.
111: *
112: * @param xmlName The class name to find the XMLClassDescriptor for.
113: * @param loader The ClassLoader to use.
114: * @return An Iterator of XMLClassDescriptor objects.
115: */
116: Iterator resolveAllByXMLName(String xmlName, String namespaceURI,
117: ClassLoader loader) throws ResolverException;
118:
119: /**
120: * Sets the ClassLoader to use when loading class descriptors
121: * @param loader the ClassLoader to use
122: **/
123: void setClassLoader(ClassLoader loader);
124:
125: /**
126: * Loads the class descriptor for the class instance specified. The use of this method is useful
127: * when no mapping is used, as happens when the domain classes hase been generated
128: * using the XML code generator (in which case instead of a mapping file class
129: * descriptor files will be generated).
130: *
131: * @param className Name of the class for which the associated descriptor should be loaded.
132: */
133: public void addClass(final String className);
134:
135: /**
136: * Loads the class descriptors for the class instances specified. The use of this method is useful
137: * when no mapping is used, as happens when the domain classes hase been generated
138: * using the XML code generator (in which case instead of a mapping file class
139: * descriptor files will be generated).
140: *
141: * @param classNames Names of the classes for which the associated descriptors should be loaded.
142: */
143: public void addClasses(final String[] classNames);
144:
145: /**
146: * Loads class descriptors from the package specified. The use of this method is useful
147: * when no mapping is used, as happens when the domain classes hase been generated
148: * using the XML code generator (in which case instead of a mapping file class
149: * descriptor files will be generated).
150: * <p>
151: * Please note that this functionality will work only if you provide the <tt>.castor.cdr</tt>
152: * file with your generated classes (as generated by the XML code generator).
153: * <p>
154: * @param packageName The package name for the (descriptor) classes
155: * @throws ResolverException If there's a problem loading class descriptors for the given package.
156: */
157: public void addPackage(final String packageName)
158: throws ResolverException;
159:
160: /**
161: * Loads class descriptors from the packages specified. The use of this method is useful
162: * when no mapping is used, as happens when the domain classes hase been generated
163: * using the XML code generator (in which case instead of a mapping file class
164: * descriptor files will be generated).
165: * <p>
166: * Please note that this functionality will work only if you provide the <tt>.castor.cdr</tt>
167: * files with your generated classes (as generated by the XML code generator).
168: * <p>
169: * @param packageNames The package names for the (descriptor) classes
170: * @throws ResolverException If there's a problem loading class descriptors for the given package.
171: */
172: public void addPackages(final String[] packageNames)
173: throws ResolverException;
174:
175: /**
176: * Loads class descriptors from the package specified. The use of this method is useful
177: * when no mapping is used, as happens when the domain classes hase been generated
178: * using the XML code generator (in which case instead of a mapping file class
179: * descriptor files will be generated).
180: * <p>
181: * Please note that this functionality will work only if you provide the <tt>.castor.cdr</tt>
182: * file with your generated classes (as generated by the XML code generator).
183: * <p>
184: * @param packageName The package name for the (descriptor) classes
185: * @throws ResolverException If there's a problem loading class descriptors for the given package.
186: * @deprecated Please use e.g. #addPackage(String) instead.
187: */
188: void loadClassDescriptors(final String packageName)
189: throws ResolverException;
190:
191: } //-- ClassDescriptorResolver
|