private byte[] compileProxyClass( String source ) { long before = System.nanoTime(); try { DiagnosticCollector<JavaFileObject> errorHandler = new DiagnosticCollector<>(); StringJavaFileObject fileObj = new StringJavaFileObject( _javaFqn, source ); InMemoryClassJavaFileObject cls = RuntimeManifoldHost.get().getJavaParser().compile( fileObj, _javaFqn, Arrays.asList( "-source", "8", "-g", "-nowarn", "-Xlint:none", "-proc:none", "-parameters" ), errorHandler ); if( cls != null ) { return cls.getBytes(); } throw new JavaCompileIssuesException( _javaFqn, errorHandler ); } finally { PerfLogUtil.log( "compileProxyClass() " + _javaFqn, before ); } }
private byte[] compileJavaClass() { long before = System.nanoTime(); try { if( _javaSrcFile instanceof ISelfCompiledFile && ((ISelfCompiledFile)_javaSrcFile).isSelfCompile() ) { return ((ISelfCompiledFile)_javaSrcFile).compile(); } else { DiagnosticCollector<JavaFileObject> errorHandler = new DiagnosticCollector<>(); InMemoryClassJavaFileObject cls = RuntimeManifoldHost.get().getJavaParser().compile( _javaFqn, Arrays.asList( "-source", "8", "-g", "-nowarn", "-Xlint:none", "-proc:none", "-parameters" ), errorHandler ); if( cls != null ) { return cls.getBytes(); } throw new JavaCompileIssuesException( _javaFqn, errorHandler ); } } catch( Throwable t ) { t.printStackTrace(); throw t; } finally { PerfLogUtil.log( "compileJavaClass() " + _javaFqn, before ); } }
Pair<JavaFileObject, String> pair = RuntimeManifoldHost.get().getJavaParser().findJavaSource( strType, new DiagnosticCollector<>() ); if( pair != null )
private static boolean hasCallHandlerFromExtension( Class rootClass ) { Boolean isCallHandler = ICALL_HANDLER_MAP.get( rootClass ); if( isCallHandler != null ) { return isCallHandler; } String fqn = rootClass.getCanonicalName(); BasicJavacTask javacTask = RuntimeManifoldHost.get().getJavaParser().getJavacTask(); Pair<Symbol.ClassSymbol, JCTree.JCCompilationUnit> classSymbol = ClassSymbols.instance( RuntimeManifoldHost.get().getSingleModule() ).getClassSymbol( javacTask, fqn ); Pair<Symbol.ClassSymbol, JCTree.JCCompilationUnit> callHandlerSymbol = ClassSymbols.instance( RuntimeManifoldHost.get().getSingleModule() ).getClassSymbol( javacTask, ICallHandler.class.getCanonicalName() ); if( Types.instance( javacTask.getContext() ).isAssignable( classSymbol.getFirst().asType(), callHandlerSymbol.getFirst().asType() ) ) { // Nominally implements ICallHandler isCallHandler = true; } else { // Structurally implements ICallHandler isCallHandler = hasCallMethod( javacTask, classSymbol.getFirst() ); } ICALL_HANDLER_MAP.put( rootClass, isCallHandler ); return isCallHandler; }
private static boolean hasCallHandlerFromExtension( Class rootClass ) { Boolean isCallHandler = ICALL_HANDLER_MAP.get( rootClass ); if( isCallHandler != null ) { return isCallHandler; } String fqn = rootClass.getCanonicalName(); BasicJavacTask javacTask = RuntimeManifoldHost.get().getJavaParser().getJavacTask(); Pair<Symbol.ClassSymbol, JCTree.JCCompilationUnit> classSymbol = ClassSymbols.instance( RuntimeManifoldHost.get().getSingleModule() ).getClassSymbol( javacTask, fqn ); Pair<Symbol.ClassSymbol, JCTree.JCCompilationUnit> callHandlerSymbol = ClassSymbols.instance( RuntimeManifoldHost.get().getSingleModule() ).getClassSymbol( javacTask, ICallHandler.class.getCanonicalName() ); if( Types.instance( javacTask.getContext() ).isAssignable( classSymbol.getFirst().asType(), callHandlerSymbol.getFirst().asType() ) ) { // Nominally implements ICallHandler isCallHandler = true; } else { // Structurally implements ICallHandler isCallHandler = hasCallMethod( javacTask, classSymbol.getFirst() ); } ICALL_HANDLER_MAP.put( rootClass, isCallHandler ); return isCallHandler; }