private void compile( @NotNull ClassDescriptorSourceUnit sourceFile, @NotNull JProxyCompilerContext context) { if (sourceFile.getClassBytes() != null) { return; // Ya ha sido compilado seguramente por dependencia de un archivo compilado // inmediatamente antes, } // recuerda que el atributo classBytes se pone a null antes de compilar los archivos // cambiados/nuevos compiler.compileSourceFile(sourceFile, context, customClassLoader, sourceRegistry); }
private void saveClasses(@NotNull ClassDescriptorSourceUnit sourceFile) { // Salvamos la clase principal { File classFilePath = ClassDescriptor.getAbsoluteClassFilePathFromClassNameAndClassPath( sourceFile.getClassName(), folderClasses); JProxyUtil.saveFile(classFilePath, sourceFile.getClassBytes()); } // Salvamos las innerclasses si hay, no hay problema de clases inner no detectadas pues lo están // todas pues // sólo se salva tras una compilación LinkedList<ClassDescriptorInner> innerClassDescList = sourceFile.getInnerClassDescriptors(); if (innerClassDescList != null && !innerClassDescList.isEmpty()) { for (ClassDescriptorInner innerClassDesc : innerClassDescList) { File classFilePath = ClassDescriptor.getAbsoluteClassFilePathFromClassNameAndClassPath( innerClassDesc.getClassName(), folderClasses); JProxyUtil.saveFile(classFilePath, innerClassDesc.getClassBytes()); } } }