Skip to content

633: Fixed NoSuchElementException when creating new controller #844

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -249,12 +249,13 @@ private String getNamespace() {
);

return String.format(
"%s%s%s%s%s%s",
"%s%s%s%s%s%s%s",
parts[0],
Package.fqnSeparator,
parts[1],
Package.fqnSeparator,
directoryPart,
Package.fqnSeparator,
controllerPart
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import com.magento.idea.magento2plugin.magento.files.CLICommandTemplate;
import java.util.Properties;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

@SuppressWarnings({
"PMD.AvoidUncheckedExceptionsInSignatures",
Expand Down Expand Up @@ -69,11 +70,17 @@ public PsiFile generate(final String actionName) throws RuntimeException {
return cliCommandFile;
}

private PhpFile createCLICommandClass(final String actionName) {
private @Nullable PhpFile createCLICommandClass(final String actionName) {
final PsiDirectory parentDirectory = getParentDirectory();

if (parentDirectory == null) {
return null;
}

final PsiFile cliCommandFile = fileGenerator.generate(
this.getCLICommandTemplate(),
getAttributes(),
this.getParentDirectory(),
parentDirectory,
actionName
);

Expand All @@ -82,9 +89,14 @@ private PhpFile createCLICommandClass(final String actionName) {

private PsiDirectory getParentDirectory() {
final String moduleName = this.phpClassData.getModuleName();
final String[] subDirectories = this.phpClassData.getParentDirectory().split("/");
PsiDirectory parentDirectory = new ModuleIndex(project)
.getModuleDirectoryByModuleName(moduleName);

if (parentDirectory == null) {
return null;
}
final String[] subDirectories = this.phpClassData.getParentDirectory().split("/");

for (final String subDirectory : subDirectories) {
parentDirectory = dirGenerator.findOrCreateSubdirectory(parentDirectory, subDirectory);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,12 +89,16 @@ protected void fillAttributes(final Properties attributes) {
* @return PhpFile
*/
private PhpFile createCronjobClass(final String actionName) {
final String cronjobClassName = this.cronjobClassData.getClassName();
final String moduleName = this.cronjobClassData.getModuleName();
final String[] cronjobSubDirectories = this.cronjobClassData.getDirectory().split("/");
PsiDirectory parentDirectory = new ModuleIndex(project)
.getModuleDirectoryByModuleName(moduleName);

if (parentDirectory == null) {
return null;
}
final String cronjobClassName = this.cronjobClassData.getClassName();
final String[] cronjobSubDirectories = this.cronjobClassData.getDirectory().split("/");

for (final String cronjobSubDirectory: cronjobSubDirectories) {
parentDirectory = directoryGenerator
.findOrCreateSubdirectory(parentDirectory, cronjobSubDirectory);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,10 @@ protected void fillAttributes(final Properties attributes) {
private PhpClass createHandlerClass(final String actionName) {
PsiDirectory parentDirectory = new ModuleIndex(project)
.getModuleDirectoryByModuleName(this.moduleName);

if (parentDirectory == null) {
return null;
}
final PsiFile handlerFile;
final String[] handlerDirectories = messageQueueClassDataName.getPath().split(
File.separator
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ public ModuleBlockClassGenerator(
* @param actionName String
* @return PsiFile
*/
@Override
public PsiFile generate(final String actionName) {
final String errorTitle = commonBundle.message("common.error");
final PhpClass block = GetPhpClassByFQN.getInstance(project).execute(getBlockFqn());
Expand Down Expand Up @@ -106,7 +107,12 @@ private String getBlockFqn() {
private PhpFile createBlockClass(final String actionName) {
PsiDirectory parentDirectory = new ModuleIndex(project)
.getModuleDirectoryByModuleName(getBlockModule());

if (parentDirectory == null) {
return null;
}
final String[] blockDirectories = blockFileData.getBlockDirectory().split(File.separator);

for (final String blockDirectory: blockDirectories) {
parentDirectory = directoryGenerator.findOrCreateSubdirectory(
parentDirectory,
Expand All @@ -127,6 +133,7 @@ private PhpFile createBlockClass(final String actionName) {
return (PhpFile) blockFile;
}

@Override
protected void fillAttributes(final Properties attributes) {
final String blockClassName = blockFileData.getBlockClassName();
attributes.setProperty("NAME", blockClassName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiFile;
import com.magento.idea.magento2plugin.actions.generation.data.ModuleComposerJsonData;
import com.magento.idea.magento2plugin.actions.generation.generator.data.ModuleDirectoriesData;
Expand Down Expand Up @@ -120,8 +121,8 @@ private String getDependenciesString(final List dependenciesList) {
final Object[] dependencies = dependenciesList.toArray();
result = result.concat(ComposerJson.DEFAULT_DEPENDENCY);
final boolean noDependency =
dependencies.length == 1 && dependencies[0].equals(
ComposerJson.NO_DEPENDENCY_LABEL
dependencies.length == 1 && ComposerJson.NO_DEPENDENCY_LABEL.equals(
dependencies[0]
);
if (dependencies.length == 0 || noDependency) {
result = result.concat("\n");
Expand Down Expand Up @@ -161,8 +162,12 @@ private Pair<String, String> getDependencyData(
"_-", "/"
);
try {
final PsiFile virtualFile = moduleIndex.getModuleDirectoryByModuleName(dependency)
.findFile(ComposerJson.FILE_NAME);
final PsiDirectory moduleDir = moduleIndex.getModuleDirectoryByModuleName(dependency);

if (moduleDir == null) {
return Pair.create("", "");
}
final PsiFile virtualFile = moduleDir.findFile(ComposerJson.FILE_NAME);

if (virtualFile != null) { //NOPMD
final VirtualFile composerJsonFile = virtualFile.getVirtualFile();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,10 @@ private String getControllerFqn() {
private PhpClass createControllerClass(final String actionName) {
PsiDirectory parentDirectory = new ModuleIndex(project)
.getModuleDirectoryByModuleName(getControllerModule());

if (parentDirectory == null) {
return null;
}
final PsiFile controllerFile;
final String[] controllerDirectories = data.getActionDirectory().split(
File.separator
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ public ModuleEmailTemplateHtmlGenerator(
* @param actionName Action name
* @return PsiFile
*/
@Override
public PsiFile generate(final String actionName) {
final PsiFile templateFile = FileBasedIndexUtil.findModuleViewFile(
this.emailTemplateData.getFileName(),
Expand All @@ -67,6 +68,10 @@ public PsiFile generate(final String actionName) {
PsiDirectory parentDirectory = this.moduleIndex.getModuleDirectoryByModuleName(
this.emailTemplateData.getModule()
);

if (parentDirectory == null) {
return null;
}
final ArrayList<String> fileDirectories = new ArrayList<>();

fileDirectories.add(Package.moduleViewDir);
Expand Down Expand Up @@ -96,7 +101,7 @@ protected void fillAttributes(final Properties attributes) {
attributes.setProperty("SUBJECT", emailTemplateData.getSubject());
attributes.setProperty("TYPE", emailTemplateData.getType());

if (emailTemplateData.getType().equals(EmailTemplateHtml.HTML_TYPE)) {
if (EmailTemplateHtml.HTML_TYPE.equals(emailTemplateData.getType())) {
attributes.setProperty("HTML_TYPE", "true");
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ private int getInsertPos(final PhpClass graphQlResolverClass) {
LeafPsiElement.class
);
for (final LeafPsiElement leafPsiElement: leafElements) {
if (!leafPsiElement.getText().equals(MagentoPhpClass.CLOSING_TAG)) {
if (!MagentoPhpClass.CLOSING_TAG.equals(leafPsiElement.getText())) {
continue;
}
insertPos = leafPsiElement.getTextOffset();
Expand All @@ -128,6 +128,10 @@ private int getInsertPos(final PhpClass graphQlResolverClass) {
private PhpClass createGraphQlResolverClass(final String actionName) {
PsiDirectory parentDirectory = new ModuleIndex(project)
.getModuleDirectoryByModuleName(graphQlResolverFileData.getGraphQlResolverModule());

if (parentDirectory == null) {
return null;
}
final String[] graphQlResolverDirectories = graphQlResolverFileData
.getGraphQlResolverDirectory().split(File.separator);
for (final String graphQlResolverDirectory: graphQlResolverDirectories) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ public ModuleViewModelClassGenerator(
* @param actionName String
* @return PsiFile
*/
@Override
public PsiFile generate(final String actionName) {
final PhpClass block = GetPhpClassByFQN.getInstance(project).execute(getViewModelFqn());
final String errorTitle = commonBundle.message("common.error");
Expand Down Expand Up @@ -106,6 +107,10 @@ private String getViewModelFqn() {
private PhpFile createViewModelClass(final String actionName) {
PsiDirectory parentDirectory = new ModuleIndex(project)
.getModuleDirectoryByModuleName(getViewModelModule());

if (parentDirectory == null) {
return null;
}
final String[] viewModelDirectories = viewModelFileData.getViewModelDirectory()
.split(File.separator);
for (final String viewModelDirectory: viewModelDirectories) {
Expand All @@ -128,6 +133,7 @@ private PhpFile createViewModelClass(final String actionName) {
return (PhpFile) viewModelFile;
}

@Override
protected void fillAttributes(final Properties attributes) {
final String viewModelClassName = viewModelFileData.getViewModelClassName();
attributes.setProperty("NAME", viewModelClassName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,10 @@ public PsiFile generate(final @NotNull String actionName) {
final PsiDirectory moduleBaseDir = moduleIndex.getModuleDirectoryByModuleName(
data.getModuleName()
);

if (moduleBaseDir == null) {
return null;
}
final PsiDirectory layoutBaseDir = directoryGenerator.findOrCreateSubdirectories(
moduleBaseDir,
file.getDirectory()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ private int getInsertPos(final PhpClass observerClass) {
LeafPsiElement.class
);
for (final LeafPsiElement leafPsiElement: leafElements) {
if (!leafPsiElement.getText().equals(MagentoPhpClass.CLOSING_TAG)) {
if (!MagentoPhpClass.CLOSING_TAG.equals(leafPsiElement.getText())) {
continue;
}
insertPos = leafPsiElement.getTextOffset();
Expand All @@ -133,6 +133,10 @@ private int getInsertPos(final PhpClass observerClass) {
private PhpClass createObserverClass(final String actionName) {
PsiDirectory parentDirectory = new ModuleIndex(project)
.getModuleDirectoryByModuleName(observerFileData.getObserverModule());

if (parentDirectory == null) {
return null;
}
final String[] observerDirectories = observerFileData.getObserverDirectory()
.split(File.separator);
for (final String observerDirectory: observerDirectories) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,10 @@ public void execute(final PsiFile baseFile, final String themeName, final boolea

final ModuleIndex moduleIndex = new ModuleIndex(project);
PsiDirectory directory = moduleIndex.getModuleDirectoryByModuleName(themeName);

if (directory == null) {
return;
}
directory = getTargetDirectory(directory, pathComponents);

if (directory.findFile(baseFile.getName()) != null) {
Expand Down Expand Up @@ -134,11 +138,13 @@ private PsiDirectory getTargetDirectory(
PsiDirectory directory, //NOPMD
final List<String> pathComponents
) {
PsiDirectory result = directory;
final DirectoryGenerator generator = DirectoryGenerator.getInstance();

for (final String directoryName : pathComponents) {
directory = generator.findOrCreateSubdirectory(directory, directoryName);
result = generator.findOrCreateSubdirectory(directory, directoryName);
}

return directory;
return result;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,16 @@ public PsiFile generate(final @NotNull String actionName) {
return phpClass.getContainingFile();
}

final PsiDirectory moduleDirectory = moduleIndex.getModuleDirectoryByModuleName(
file.getModuleName()
);

if (moduleDirectory == null) {
onFileGenerated(null, actionName);
return null;
}
final PsiDirectory fileBaseDir = directoryGenerator.findOrCreateSubdirectories(
moduleIndex.getModuleDirectoryByModuleName(file.getModuleName()),
moduleDirectory,
file.getDirectory()
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ public PluginClassGenerator(
*
* @return PsiFile
*/
@SuppressWarnings("PMD.CognitiveComplexity")
@Override
public PsiFile generate(final String actionName) {
final PsiFile[] pluginFile = {null};
Expand Down Expand Up @@ -206,6 +207,10 @@ private boolean checkIfMethodExist(
private PhpClass createPluginClass(final String actionName) {
PsiDirectory parentDirectory = new ModuleIndex(project)
.getModuleDirectoryByModuleName(getPluginModule());

if (parentDirectory == null) {
return null;
}
final String[] pluginDirectories = pluginFileData.getPluginDirectory()
.split(File.separator);
for (final String pluginDirectory: pluginDirectories) {
Expand Down Expand Up @@ -262,7 +267,7 @@ private int getInsertPos(final PhpClass pluginClass) {
}

for (final LeafPsiElement leafPsiElement: leafElements) {
if (!leafPsiElement.getText().equals(MagentoPhpClass.CLOSING_TAG)) {
if (!MagentoPhpClass.CLOSING_TAG.equals(leafPsiElement.getText())) {
continue;
}
insertPos = leafPsiElement.getTextOffset();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,10 @@ public PsiFile generate(final String actionName) {
private PhpClass createPluginClass(final String actionName) {
PsiDirectory parentDirectory = new ModuleIndex(project)
.getModuleDirectoryByModuleName(getPreferenceModule());

if (parentDirectory == null) {
return null;
}
final String[] pluginDirectories = preferenceFileData.getPreferenceDirectory()
.split(File.separator);
for (final String pluginDirectory: pluginDirectories) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,10 @@ public PsiFile generate(final @NotNull String actionName) {
private PhpClass createDataProviderClass(final @NotNull String actionName) {
final PsiDirectory parentDirectory = new ModuleIndex(project)
.getModuleDirectoryByModuleName(this.moduleName);

if (parentDirectory == null) {
return null;
}
final PsiDirectory dataProviderDirectory =
directoryGenerator.findOrCreateSubdirectories(parentDirectory, data.getPath());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,10 @@ public PsiFile generate(final @NotNull String actionName) {
final PsiDirectory moduleBaseDir = moduleIndex.getModuleDirectoryByModuleName(
buttonData.getButtonModule()
);

if (moduleBaseDir == null) {
return null;
}
final PsiDirectory baseDirectory = directoryGenerator.findOrCreateSubdirectories(
moduleBaseDir,
buttonData.getButtonDirectory()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,14 +92,16 @@ protected void generateButtonClasses(final @NotNull String actionName) {
protected PsiFile createForm(
final String actionName
) {
final DirectoryGenerator directoryGenerator = DirectoryGenerator.getInstance();
final FileFromTemplateGenerator fileFromTemplateGenerator =
new FileFromTemplateGenerator(project);

final String moduleName = data.getModuleName();
final PsiDirectory parentDirectory = new ModuleIndex(project)
.getModuleDirectoryByModuleName(moduleName);

if (parentDirectory == null) {
return null;
}
final DirectoryGenerator directoryGenerator = DirectoryGenerator.getInstance();
final FileFromTemplateGenerator fileFromTemplateGenerator =
new FileFromTemplateGenerator(project);
final ArrayList<String> fileDirectories = new ArrayList<>();
fileDirectories.add(Package.moduleViewDir);
final String area = data.getFormArea();
Expand Down
Loading