001: /*
002: * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
003: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004: *
005: * This code is free software; you can redistribute it and/or modify it
006: * under the terms of the GNU General Public License version 2 only, as
007: * published by the Free Software Foundation. Sun designates this
008: * particular file as subject to the "Classpath" exception as provided
009: * by Sun in the LICENSE file that accompanied this code.
010: *
011: * This code is distributed in the hope that it will be useful, but WITHOUT
012: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
014: * version 2 for more details (a copy is included in the LICENSE file that
015: * accompanied this code).
016: *
017: * You should have received a copy of the GNU General Public License version
018: * 2 along with this work; if not, write to the Free Software Foundation,
019: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020: *
021: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022: * CA 95054 USA or visit www.sun.com if you need additional information or
023: * have any questions.
024: */
025:
026: package javax.tools;
027:
028: import java.io.IOException;
029: import java.net.URI;
030: import java.util.Iterator;
031: import java.util.Set;
032: import javax.tools.JavaFileObject.Kind;
033:
034: /**
035: * Forwards calls to a given file manager. Subclasses of this class
036: * might override some of these methods and might also provide
037: * additional fields and methods.
038: *
039: * @param <M> the kind of file manager forwarded to by this object
040: * @author Peter von der Ahé
041: * @since 1.6
042: */
043: public class ForwardingJavaFileManager<M extends JavaFileManager>
044: implements JavaFileManager {
045:
046: /**
047: * The file manager which all methods are delegated to.
048: */
049: protected final M fileManager;
050:
051: /**
052: * Creates a new instance of ForwardingJavaFileManager.
053: * @param fileManager delegate to this file manager
054: */
055: protected ForwardingJavaFileManager(M fileManager) {
056: fileManager.getClass(); // null check
057: this .fileManager = fileManager;
058: }
059:
060: /**
061: * @throws SecurityException {@inheritDoc}
062: * @throws IllegalStateException {@inheritDoc}
063: */
064: public ClassLoader getClassLoader(Location location) {
065: return fileManager.getClassLoader(location);
066: }
067:
068: /**
069: * @throws IOException {@inheritDoc}
070: * @throws IllegalStateException {@inheritDoc}
071: */
072: public Iterable<JavaFileObject> list(Location location,
073: String packageName, Set<Kind> kinds, boolean recurse)
074: throws IOException {
075: return fileManager.list(location, packageName, kinds, recurse);
076: }
077:
078: /**
079: * @throws IllegalStateException {@inheritDoc}
080: */
081: public String inferBinaryName(Location location, JavaFileObject file) {
082: return fileManager.inferBinaryName(location, file);
083: }
084:
085: /**
086: * @throws IllegalArgumentException {@inheritDoc}
087: */
088: public boolean isSameFile(FileObject a, FileObject b) {
089: return fileManager.isSameFile(a, b);
090: }
091:
092: /**
093: * @throws IllegalArgumentException {@inheritDoc}
094: * @throws IllegalStateException {@inheritDoc}
095: */
096: public boolean handleOption(String current,
097: Iterator<String> remaining) {
098: return fileManager.handleOption(current, remaining);
099: }
100:
101: public boolean hasLocation(Location location) {
102: return fileManager.hasLocation(location);
103: }
104:
105: public int isSupportedOption(String option) {
106: return fileManager.isSupportedOption(option);
107: }
108:
109: /**
110: * @throws IllegalArgumentException {@inheritDoc}
111: * @throws IllegalStateException {@inheritDoc}
112: */
113: public JavaFileObject getJavaFileForInput(Location location,
114: String className, Kind kind) throws IOException {
115: return fileManager.getJavaFileForInput(location, className,
116: kind);
117: }
118:
119: /**
120: * @throws IllegalArgumentException {@inheritDoc}
121: * @throws IllegalStateException {@inheritDoc}
122: */
123: public JavaFileObject getJavaFileForOutput(Location location,
124: String className, Kind kind, FileObject sibling)
125: throws IOException {
126: return fileManager.getJavaFileForOutput(location, className,
127: kind, sibling);
128: }
129:
130: /**
131: * @throws IllegalArgumentException {@inheritDoc}
132: * @throws IllegalStateException {@inheritDoc}
133: */
134: public FileObject getFileForInput(Location location,
135: String packageName, String relativeName) throws IOException {
136: return fileManager.getFileForInput(location, packageName,
137: relativeName);
138: }
139:
140: /**
141: * @throws IllegalArgumentException {@inheritDoc}
142: * @throws IllegalStateException {@inheritDoc}
143: */
144: public FileObject getFileForOutput(Location location,
145: String packageName, String relativeName, FileObject sibling)
146: throws IOException {
147: return fileManager.getFileForOutput(location, packageName,
148: relativeName, sibling);
149: }
150:
151: public void flush() throws IOException {
152: fileManager.flush();
153: }
154:
155: public void close() throws IOException {
156: fileManager.close();
157: }
158: }
|