mirror of
https://github.com/tiennm99/lombok.git
synced 2026-09-08 02:20:00 +00:00
code cleanup
This commit is contained in:
@@ -120,13 +120,8 @@ final class LombokFileObjects {
|
||||
try {
|
||||
Field wrappedField = Class.forName("com.sun.tools.javac.api.ClientCodeWrapper$WrappedJavaFileManager").getDeclaredField("clientJavaFileManager");
|
||||
wrappedField.setAccessible(true);
|
||||
JavaFileManager wrappedManager = (JavaFileManager)wrappedField.get(jfm);
|
||||
Class<?> superType = Class.forName("com.sun.tools.javac.file.BaseFileManager");
|
||||
if (superType.isInstance(wrappedManager)) {
|
||||
return new Java9Compiler(wrappedManager);
|
||||
} else {
|
||||
return new Java9Compiler(new BaseFileManagerWrapper(wrappedManager));
|
||||
}
|
||||
JavaFileManager wrappedManager = (JavaFileManager) wrappedField.get(jfm);
|
||||
return new Java9Compiler(wrappedManager);
|
||||
}
|
||||
catch (Exception e) {}
|
||||
}
|
||||
@@ -149,80 +144,6 @@ final class LombokFileObjects {
|
||||
throw new IllegalArgumentException(sb.toString());
|
||||
}
|
||||
|
||||
static class BaseFileManagerWrapper extends BaseFileManager {
|
||||
JavaFileManager manager;
|
||||
|
||||
public BaseFileManagerWrapper(JavaFileManager manager) {
|
||||
super(null);
|
||||
this.manager = manager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int isSupportedOption(String option) {
|
||||
return manager.isSupportedOption(option);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassLoader getClassLoader(Location location) {
|
||||
return manager.getClassLoader(location);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<JavaFileObject> list(Location location, String packageName, Set<Kind> kinds, boolean recurse) throws IOException {
|
||||
return manager.list(location, packageName, kinds, recurse);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String inferBinaryName(Location location, JavaFileObject file) {
|
||||
return manager.inferBinaryName(location, file);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSameFile(FileObject a, FileObject b) {
|
||||
return manager.isSameFile(a, b);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handleOption(String current, Iterator<String> remaining) {
|
||||
return manager.handleOption(current, remaining);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasLocation(Location location) {
|
||||
return manager.hasLocation(location);
|
||||
}
|
||||
|
||||
@Override
|
||||
public JavaFileObject getJavaFileForInput(Location location, String className, Kind kind) throws IOException {
|
||||
return manager.getJavaFileForInput(location, className, kind);
|
||||
}
|
||||
|
||||
@Override
|
||||
public JavaFileObject getJavaFileForOutput(Location location, String className, Kind kind, FileObject sibling) throws IOException {
|
||||
return manager.getJavaFileForOutput(location, className, kind, sibling);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FileObject getFileForInput(Location location, String packageName, String relativeName) throws IOException {
|
||||
return manager.getFileForInput(location, packageName, relativeName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FileObject getFileForOutput(Location location, String packageName, String relativeName, FileObject sibling) throws IOException {
|
||||
return manager.getFileForOutput(location, packageName, relativeName, sibling);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void flush() throws IOException {
|
||||
manager.flush();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() throws IOException {
|
||||
manager.close();
|
||||
}
|
||||
}
|
||||
|
||||
static JavaFileObject createEmpty(Compiler compiler, String name, Kind kind) {
|
||||
return compiler.wrap(new EmptyLombokFileObject(name, kind));
|
||||
}
|
||||
@@ -235,25 +156,108 @@ final class LombokFileObjects {
|
||||
private final BaseFileManager fileManager;
|
||||
|
||||
public Java9Compiler(JavaFileManager jfm) {
|
||||
fileManager = (BaseFileManager) jfm;
|
||||
fileManager = asBaseFileManager(jfm);
|
||||
}
|
||||
|
||||
@Override public JavaFileObject wrap(LombokFileObject fileObject) {
|
||||
return new Javac9BaseFileObjectWrapper(fileManager, toPath(fileObject), fileObject);
|
||||
}
|
||||
|
||||
@Override public Method getDecoderMethod() {
|
||||
return null;
|
||||
}
|
||||
|
||||
private static Path toPath(LombokFileObject fileObject) {
|
||||
URI uri = fileObject.toUri();
|
||||
if (uri.getScheme() == null) {
|
||||
uri = URI.create("file:///" + uri);
|
||||
}
|
||||
Path path;
|
||||
try {
|
||||
path = Paths.get(uri);
|
||||
return Paths.get(uri);
|
||||
} catch (IllegalArgumentException e) {
|
||||
throw new IllegalArgumentException("Problems in URI '" + uri + "' (" + fileObject.toUri() + ")", e);
|
||||
}
|
||||
return new Javac9BaseFileObjectWrapper(fileManager, path, fileObject);
|
||||
}
|
||||
|
||||
@Override public Method getDecoderMethod() {
|
||||
throw new UnsupportedOperationException();
|
||||
private static BaseFileManager asBaseFileManager(JavaFileManager jfm) {
|
||||
if (jfm instanceof BaseFileManager) {
|
||||
return (BaseFileManager) jfm;
|
||||
}
|
||||
return new FileManagerWrapper(jfm);
|
||||
}
|
||||
|
||||
static class FileManagerWrapper extends BaseFileManager {
|
||||
JavaFileManager manager;
|
||||
|
||||
public FileManagerWrapper(JavaFileManager manager) {
|
||||
super(null);
|
||||
this.manager = manager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int isSupportedOption(String option) {
|
||||
return manager.isSupportedOption(option);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassLoader getClassLoader(Location location) {
|
||||
return manager.getClassLoader(location);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<JavaFileObject> list(Location location, String packageName, Set<Kind> kinds, boolean recurse) throws IOException {
|
||||
return manager.list(location, packageName, kinds, recurse);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String inferBinaryName(Location location, JavaFileObject file) {
|
||||
return manager.inferBinaryName(location, file);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSameFile(FileObject a, FileObject b) {
|
||||
return manager.isSameFile(a, b);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handleOption(String current, Iterator<String> remaining) {
|
||||
return manager.handleOption(current, remaining);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasLocation(Location location) {
|
||||
return manager.hasLocation(location);
|
||||
}
|
||||
|
||||
@Override
|
||||
public JavaFileObject getJavaFileForInput(Location location, String className, Kind kind) throws IOException {
|
||||
return manager.getJavaFileForInput(location, className, kind);
|
||||
}
|
||||
|
||||
@Override
|
||||
public JavaFileObject getJavaFileForOutput(Location location, String className, Kind kind, FileObject sibling) throws IOException {
|
||||
return manager.getJavaFileForOutput(location, className, kind, sibling);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FileObject getFileForInput(Location location, String packageName, String relativeName) throws IOException {
|
||||
return manager.getFileForInput(location, packageName, relativeName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FileObject getFileForOutput(Location location, String packageName, String relativeName, FileObject sibling) throws IOException {
|
||||
return manager.getFileForOutput(location, packageName, relativeName, sibling);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void flush() throws IOException {
|
||||
manager.flush();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() throws IOException {
|
||||
manager.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,5 +7,5 @@ import javax.tools.JavaFileManager;
|
||||
import java.nio.charset.Charset;
|
||||
|
||||
public abstract class BaseFileManager implements JavaFileManager {
|
||||
protected BaseFileManager(Charset charset) {}
|
||||
protected BaseFileManager(Charset charset) {}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user