diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleComposerJsonGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleComposerJsonGenerator.java index a6fd7c07a..85e867ec6 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleComposerJsonGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleComposerJsonGenerator.java @@ -5,13 +5,13 @@ package com.magento.idea.magento2plugin.actions.generation.generator; -import com.google.gson.JsonElement; -import com.google.gson.JsonParser; +import com.intellij.json.psi.JsonFile; 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.intellij.psi.PsiManager; import com.magento.idea.magento2plugin.actions.generation.data.ModuleComposerJsonData; import com.magento.idea.magento2plugin.actions.generation.generator.data.ModuleDirectoriesData; import com.magento.idea.magento2plugin.actions.generation.generator.util.DirectoryGenerator; @@ -19,11 +19,12 @@ import com.magento.idea.magento2plugin.indexes.ModuleIndex; import com.magento.idea.magento2plugin.magento.files.ComposerJson; import com.magento.idea.magento2plugin.util.CamelCaseToHyphen; -import java.io.FileNotFoundException; -import java.io.FileReader; import java.util.List; import java.util.Properties; import org.jetbrains.annotations.NotNull; +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; +import org.json.simple.parser.ParseException; public class ModuleComposerJsonGenerator extends FileGenerator { @@ -170,30 +171,38 @@ private Pair getDependencyData( final PsiFile virtualFile = moduleDir.findFile(ComposerJson.FILE_NAME); if (virtualFile != null) { //NOPMD - final VirtualFile composerJsonFile = virtualFile.getVirtualFile(); - if (composerJsonFile.exists()) { - final JsonElement jsonElement = - new JsonParser().parse( - new FileReader(composerJsonFile.getPath())//NOPMD - ); - final JsonElement versionJsonElement = - jsonElement.getAsJsonObject().get("version"); - final JsonElement nameJsonElement = jsonElement.getAsJsonObject().get("name"); + final VirtualFile composerJsonVirtualFile = virtualFile.getVirtualFile(); + + if (composerJsonVirtualFile.exists()) { + final PsiFile composerJsonFile = PsiManager.getInstance(project) + .findFile(composerJsonVirtualFile); + if (!(composerJsonFile instanceof JsonFile)) { + return Pair.create("", ""); + } + final JSONParser parser = new JSONParser(); + final Object obj = parser.parse( + composerJsonFile.getText() + ); + final JSONObject jsonObject = (JSONObject) obj; + final String versionJsonElement = jsonObject.get("version").toString(); + final String nameJsonElement = jsonObject.get("name").toString(); + if (versionJsonElement != null) { - version = versionJsonElement.getAsString(); + version = versionJsonElement; final int minorVersionSeparator = version.lastIndexOf('.'); version = new StringBuilder(version) .replace(minorVersionSeparator + 1, version.length(),"*") .toString(); } + if (nameJsonElement != null) { - moduleName = nameJsonElement.getAsString(); + moduleName = nameJsonElement; } } } else { return Pair.create("", ""); } - } catch (FileNotFoundException e) { //NOPMD + } catch (ParseException exception) { //NOPMD // It's fine } diff --git a/testData/actions/generation/generator/ModuleComposerJsonGenerator/generateFileInRoot/composer.json b/testData/actions/generation/generator/ModuleComposerJsonGenerator/generateFileInRoot/composer.json index fd8914d3b..70fc28282 100644 --- a/testData/actions/generation/generator/ModuleComposerJsonGenerator/generateFileInRoot/composer.json +++ b/testData/actions/generation/generator/ModuleComposerJsonGenerator/generateFileInRoot/composer.json @@ -5,8 +5,8 @@ "type": "magento2-module", "require": { "magento/framework": "*", - "foo/bar": "*", - "magento/backend": "*" + "foo/bar": "1.0.*", + "magento/module-backend": "103.0.*" }, "license": [ "Test License 1", diff --git a/testData/actions/generation/generator/ModuleComposerJsonGenerator/generateModuleFile/composer.json b/testData/actions/generation/generator/ModuleComposerJsonGenerator/generateModuleFile/composer.json index fd8914d3b..70fc28282 100644 --- a/testData/actions/generation/generator/ModuleComposerJsonGenerator/generateModuleFile/composer.json +++ b/testData/actions/generation/generator/ModuleComposerJsonGenerator/generateModuleFile/composer.json @@ -5,8 +5,8 @@ "type": "magento2-module", "require": { "magento/framework": "*", - "foo/bar": "*", - "magento/backend": "*" + "foo/bar": "1.0.*", + "magento/module-backend": "103.0.*" }, "license": [ "Test License 1",