in src/org/jetbrains/jps/builders/StandardBuilders.groovy [334:413]
def processModule(ModuleBuildState state, ModuleChunk moduleChunk, ProjectBuilder projectBuilder) {
if (state.loader == null) {
final StringBuilder cp = new StringBuilder()
cp.append(state.targetFolder)
cp.append(File.pathSeparator)
state.classpath.each {
cp.append(it)
cp.append(File.pathSeparator)
}
state.loader = InstrumentationUtil.createPseudoClassLoader(cp.toString())
final List<File> formFiles = new ArrayList<File>();
final ProjectWrapper pw = state.projectWrapper;
if (pw != null) {
for (Module m: moduleChunk.elements) {
final Set<S> names = state.tests ? pw.getModule(m.getName()).getTests() : pw.getModule(m.getName()).getSources();
for (S name: names) {
if (name.value.endsWith(".form")) {
formFiles.add(new File(pw.getAbsolutePath(name.value)));
}
}
}
}
final List<PrefixedPath> nestedFormDirs = new ArrayList<PrefixedPath>();
state.sourceRootsFromModuleWithDependencies.each {
nestedFormDirs << getPrefixedPath(projectBuilder, it, moduleChunk)
}
state.formInstrumenter = new CustomFormInstrumenter(new File(state.targetFolder), nestedFormDirs, formFiles, state);
if (!state.incremental) {
for (File formFile: formFiles) {
state.formInstrumenter.instrumentForm(formFile, state.loader);
}
}
}
if (state.incremental) {
for (String f: state.sourceFiles) {
if (f.endsWith(".form")) {
state.formInstrumenter.instrumentForm(new File(f), state.loader);
}
}
}
if (projectBuilder.useInProcessJavac)
return;
if (!state.incremental) {
new Object() {
public void traverse(final File root) {
final File[] files = root.listFiles();
for (File f: files) {
final String name = f.getName();
if (name.endsWith(".class")) {
InstrumentationUtil.instrumentNotNull(f, state.loader)
}
else if (f.isDirectory()) {
traverse(f)
}
}
}
}.traverse(new File(state.targetFolder))
}
else {
final Collection<StringCache.S> classes = state.callback.getClassFiles()
classes.each {
InstrumentationUtil.instrumentNotNull(new File(state.targetFolder + File.separator + it.value + ".class"), state.loader)
}
}
}