mirror of
https://github.com/alibaba/testable-mock.git
synced 2025-03-23 16:20:26 +08:00
get Javac processing environment for intellij
This commit is contained in:
parent
ee21c8dcd8
commit
96ea5680df
@ -11,7 +11,6 @@ import com.sun.tools.javac.code.Symbol;
|
|||||||
import com.sun.tools.javac.processing.JavacProcessingEnvironment;
|
import com.sun.tools.javac.processing.JavacProcessingEnvironment;
|
||||||
import com.sun.tools.javac.tree.JCTree;
|
import com.sun.tools.javac.tree.JCTree;
|
||||||
import com.sun.tools.javac.tree.TreeMaker;
|
import com.sun.tools.javac.tree.TreeMaker;
|
||||||
import com.sun.tools.javac.util.Context;
|
|
||||||
import com.sun.tools.javac.util.Names;
|
import com.sun.tools.javac.util.Names;
|
||||||
|
|
||||||
import javax.annotation.processing.AbstractProcessor;
|
import javax.annotation.processing.AbstractProcessor;
|
||||||
@ -35,14 +34,14 @@ public class EnablePrivateAccessProcessor extends AbstractProcessor {
|
|||||||
@Override
|
@Override
|
||||||
public synchronized void init(ProcessingEnvironment processingEnv) {
|
public synchronized void init(ProcessingEnvironment processingEnv) {
|
||||||
super.init(processingEnv);
|
super.init(processingEnv);
|
||||||
Context context = getJavacProcessingContext(processingEnv);
|
JavacProcessingEnvironment javacProcessingContext = getJavacProcessingEnvironment(processingEnv);
|
||||||
if (context == null) {
|
if (javacProcessingContext == null) {
|
||||||
cx = new TestableContext(new TestableLogger(processingEnv.getMessager()), processingEnv.getFiler());
|
cx = new TestableContext(new TestableLogger(processingEnv.getMessager()), processingEnv.getFiler());
|
||||||
cx.logger.info("Skip testable compile time processing");
|
cx.logger.info("Skip testable compile time processing");
|
||||||
} else {
|
} else {
|
||||||
cx = new TestableContext(new TestableLogger(processingEnv.getMessager()), processingEnv.getFiler(),
|
cx = new TestableContext(new TestableLogger(processingEnv.getMessager()), processingEnv.getFiler(),
|
||||||
processingEnv.getElementUtils(), processingEnv.getTypeUtils(), JavacTrees.instance(processingEnv),
|
processingEnv.getElementUtils(), processingEnv.getTypeUtils(), JavacTrees.instance(javacProcessingContext),
|
||||||
TreeMaker.instance(context), Names.instance(context));
|
TreeMaker.instance(javacProcessingContext.getContext()), Names.instance(javacProcessingContext.getContext()));
|
||||||
}
|
}
|
||||||
cx.logger.info("Testable processor initialized");
|
cx.logger.info("Testable processor initialized");
|
||||||
}
|
}
|
||||||
@ -67,10 +66,9 @@ public class EnablePrivateAccessProcessor extends AbstractProcessor {
|
|||||||
return SourceVersion.values()[SourceVersion.values().length - 1];
|
return SourceVersion.values()[SourceVersion.values().length - 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
private Context getJavacProcessingContext(ProcessingEnvironment processingEnv) {
|
private JavacProcessingEnvironment getJavacProcessingEnvironment(ProcessingEnvironment processingEnv) {
|
||||||
try {
|
try {
|
||||||
JavacProcessingEnvironment javacProcessingEnv = JavacUtil.getJavacProcessingEnvironment(processingEnv);
|
return JavacUtil.getJavacProcessingEnvironment(processingEnv);
|
||||||
return javacProcessingEnv.getContext();
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -71,8 +71,20 @@ public class JavacUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Field getField(Class<?> clazz, String field) {
|
private static Field getField(Class<?> c, String fName) throws NoSuchFieldException {
|
||||||
return null;
|
Field f = null;
|
||||||
|
Class<?> oc = c;
|
||||||
|
while (c != null) {
|
||||||
|
try {
|
||||||
|
f = c.getDeclaredField(fName);
|
||||||
|
break;
|
||||||
|
} catch (NoSuchFieldException e) {}
|
||||||
|
c = c.getSuperclass();
|
||||||
|
}
|
||||||
|
if (f == null) {
|
||||||
|
throw new NoSuchFieldException(oc.getName() + " :: " + fName);
|
||||||
|
}
|
||||||
|
f.setAccessible(true);
|
||||||
|
return f;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user