in tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/action/rib/GenerateAction.java [109:151]
protected void generate(
final List<Generator> mainSourceGenerators, final List<Generator> testSourceGenerators) {
/** Preconditions have been validated by {@link GenerateRibAction#isAvailable(DataContext)}. */
final Project project = Preconditions.checkNotNull(CommonDataKeys.PROJECT.getData(dataContext));
final IdeView view = Preconditions.checkNotNull(LangDataKeys.IDE_VIEW.getData(dataContext));
final PsiDirectory directory = Preconditions.checkNotNull(view.getOrChooseDirectory());
final Module currentModule =
Preconditions.checkNotNull(ModuleUtilCore.findModuleForPsiElement(directory));
final SourceFolder testSourceFolder = suitableTestSourceFolders(project, currentModule);
final PackageWrapper targetPackage =
new PackageWrapper(PsiManager.getInstance(project), getPackageName());
ApplicationManager.getApplication()
.runWriteAction(
new Runnable() {
@Override
public void run() {
CommandProcessor.getInstance()
.executeCommand(
project,
new Runnable() {
@Override
public void run() {
for (Generator generator : mainSourceGenerators) {
createSourceFile(project, generator, directory);
}
if (testSourceFolder != null) {
PsiDirectory testDirectory =
RefactoringUtil.createPackageDirectoryInSourceRoot(
targetPackage, testSourceFolder.getFile());
for (Generator generator : testSourceGenerators) {
createSourceFile(project, generator, testDirectory);
}
}
}
},
"Generate new RIB",
null);
}
});
}