src/share/classes/com/sun/tools/javac/file/BaseFileObject.java

changeset 418
4776a869fdfa
parent 404
14735c7932d7
parent 415
49359d0e6a9c
child 424
86b773b7cb40
equal deleted inserted replaced
412:9596dff46093 418:4776a869fdfa
32 import java.net.URI; 32 import java.net.URI;
33 import java.net.URISyntaxException; 33 import java.net.URISyntaxException;
34 import java.nio.charset.CharsetDecoder; 34 import java.nio.charset.CharsetDecoder;
35 import javax.lang.model.element.Modifier; 35 import javax.lang.model.element.Modifier;
36 import javax.lang.model.element.NestingKind; 36 import javax.lang.model.element.NestingKind;
37 import javax.tools.FileObject;
37 import javax.tools.JavaFileObject; 38 import javax.tools.JavaFileObject;
38 39
39 import static javax.tools.JavaFileObject.Kind.*; 40 import static javax.tools.JavaFileObject.Kind.*;
40 41
41 /** 42 /**
47 public abstract class BaseFileObject implements JavaFileObject { 48 public abstract class BaseFileObject implements JavaFileObject {
48 protected BaseFileObject(JavacFileManager fileManager) { 49 protected BaseFileObject(JavacFileManager fileManager) {
49 this.fileManager = fileManager; 50 this.fileManager = fileManager;
50 } 51 }
51 52
52 public JavaFileObject.Kind getKind() { 53 /** Return a short name for the object, such as for use in raw diagnostics
53 String n = getName(); 54 */
54 if (n.endsWith(CLASS.extension)) 55 public abstract String getShortName();
55 return CLASS;
56 else if (n.endsWith(SOURCE.extension))
57 return SOURCE;
58 else if (n.endsWith(HTML.extension))
59 return HTML;
60 else
61 return OTHER;
62 }
63 56
64 @Override 57 @Override
65 public String toString() { 58 public String toString() {
66 return getPath(); 59 return getClass().getSimpleName() + "[" + getName() + "]";
67 } 60 }
68
69 /** @deprecated see bug 6410637 */
70 @Deprecated
71 public String getPath() {
72 return getName();
73 }
74
75 /** @deprecated see bug 6410637 */
76 @Deprecated
77 abstract public String getName();
78 61
79 public NestingKind getNestingKind() { return null; } 62 public NestingKind getNestingKind() { return null; }
80 63
81 public Modifier getAccessLevel() { return null; } 64 public Modifier getAccessLevel() { return null; }
82 65
87 protected CharsetDecoder getDecoder(boolean ignoreEncodingErrors) { 70 protected CharsetDecoder getDecoder(boolean ignoreEncodingErrors) {
88 throw new UnsupportedOperationException(); 71 throw new UnsupportedOperationException();
89 } 72 }
90 73
91 protected abstract String inferBinaryName(Iterable<? extends File> path); 74 protected abstract String inferBinaryName(Iterable<? extends File> path);
75
76 protected static JavaFileObject.Kind getKind(String filename) {
77 if (filename.endsWith(CLASS.extension))
78 return CLASS;
79 else if (filename.endsWith(SOURCE.extension))
80 return SOURCE;
81 else if (filename.endsWith(HTML.extension))
82 return HTML;
83 else
84 return OTHER;
85 }
92 86
93 protected static String removeExtension(String fileName) { 87 protected static String removeExtension(String fileName) {
94 int lastDot = fileName.lastIndexOf("."); 88 int lastDot = fileName.lastIndexOf(".");
95 return (lastDot == -1 ? fileName : fileName.substring(0, lastDot)); 89 return (lastDot == -1 ? fileName : fileName.substring(0, lastDot));
96 } 90 }
113 public CannotCreateUriError(String value, Throwable cause) { 107 public CannotCreateUriError(String value, Throwable cause) {
114 super(value, cause); 108 super(value, cause);
115 } 109 }
116 } 110 }
117 111
112 /** Return the last component of a presumed hierarchical URI.
113 * From the scheme specific part of the URI, it returns the substring
114 * after the last "/" if any, or everything if no "/" is found.
115 */
116 public static String getSimpleName(FileObject fo) {
117 URI uri = fo.toUri();
118 String s = uri.getSchemeSpecificPart();
119 return s.substring(s.lastIndexOf("/") + 1); // safe when / not found
120
121 }
122
118 /** The file manager that created this JavaFileObject. */ 123 /** The file manager that created this JavaFileObject. */
119 protected final JavacFileManager fileManager; 124 protected final JavacFileManager fileManager;
120 } 125 }

mercurial