Skip to content

Commit d80aba1

Browse files
committed
633: Fixed NoSuchElementException when creating new controller
1 parent bf6dd12 commit d80aba1

File tree

4 files changed

+27
-6
lines changed

4 files changed

+27
-6
lines changed

src/com/magento/idea/magento2plugin/actions/generation/dialog/NewControllerDialog.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,12 +249,13 @@ private String getNamespace() {
249249
);
250250

251251
return String.format(
252-
"%s%s%s%s%s%s",
252+
"%s%s%s%s%s%s%s",
253253
parts[0],
254254
Package.fqnSeparator,
255255
parts[1],
256256
Package.fqnSeparator,
257257
directoryPart,
258+
Package.fqnSeparator,
258259
controllerPart
259260
);
260261
}

src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleControllerClassGenerator.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,10 @@ private String getControllerFqn() {
148148
private PhpClass createControllerClass(final String actionName) {
149149
PsiDirectory parentDirectory = new ModuleIndex(project)
150150
.getModuleDirectoryByModuleName(getControllerModule());
151+
152+
if (parentDirectory == null) {
153+
return null;
154+
}
151155
final PsiFile controllerFile;
152156
final String[] controllerDirectories = data.getActionDirectory().split(
153157
File.separator

src/com/magento/idea/magento2plugin/actions/groups/NewModuleFileGroup.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.intellij.psi.PsiElement;
1515
import com.magento.idea.magento2plugin.MagentoIcons;
1616
import com.magento.idea.magento2plugin.actions.generation.util.IsClickedDirectoryInsideProject;
17+
import com.magento.idea.magento2plugin.indexes.ModuleIndex;
1718
import com.magento.idea.magento2plugin.project.Settings;
1819
import com.magento.idea.magento2plugin.util.magento.GetModuleNameByDirectoryUtil;
1920
import javax.swing.Icon;
@@ -45,18 +46,28 @@ public void update(final AnActionEvent event) {
4546
}
4647

4748
final Project project = event.getData(PlatformDataKeys.PROJECT);
48-
if (!IsClickedDirectoryInsideProject.getInstance()
49+
50+
if (project == null
51+
|| !Settings.isEnabled(project)
52+
|| !IsClickedDirectoryInsideProject.getInstance()
4953
.execute(project, (PsiDirectory) psiElement)) {
5054
event.getPresentation().setVisible(false);
5155
return;
5256
}
5357

5458
final String moduleName = GetModuleNameByDirectoryUtil
5559
.execute((PsiDirectory) psiElement, project);
56-
if (Settings.isEnabled(project) && moduleName != null) {
57-
event.getPresentation().setVisible(true);
58-
return;
60+
61+
if (moduleName != null) {
62+
final PsiDirectory moduleDirectory = new ModuleIndex(project)
63+
.getModuleDirectoryByModuleName(moduleName);
64+
65+
if (moduleDirectory != null) {
66+
event.getPresentation().setVisible(true);
67+
return;
68+
}
5969
}
70+
6071
event.getPresentation().setVisible(false);
6172
}
6273
}

src/com/magento/idea/magento2plugin/indexes/ModuleIndex.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.util.List;
2424
import java.util.regex.Matcher;
2525
import java.util.regex.Pattern;
26+
import org.jetbrains.annotations.Nullable;
2627

2728
public final class ModuleIndex {
2829

@@ -116,7 +117,7 @@ private List<String> getNames(
116117
* @param moduleName String
117118
* @return PsiDirectory
118119
*/
119-
public PsiDirectory getModuleDirectoryByModuleName(final String moduleName) {
120+
public @Nullable PsiDirectory getModuleDirectoryByModuleName(final String moduleName) {
120121
final FileBasedIndex index = FileBasedIndex
121122
.getInstance();
122123
final Collection<VirtualFile> files = index.getContainingFiles(
@@ -126,6 +127,10 @@ public PsiDirectory getModuleDirectoryByModuleName(final String moduleName) {
126127
GlobalSearchScope.allScope(project),
127128
PhpFileType.INSTANCE
128129
));
130+
131+
if (files.isEmpty()) {
132+
return null;
133+
}
129134
final VirtualFile virtualFile = files.iterator().next();
130135

131136
return PsiManager.getInstance(project).findDirectory(virtualFile.getParent());

0 commit comments

Comments
 (0)