From e57f7a82e2c644f0a0934801cc5cd3a739d4a096 Mon Sep 17 00:00:00 2001 From: satr Date: Fri, 9 Mar 2018 14:49:03 +0100 Subject: [PATCH] Supported artifacts from Maven projects. --- sources/resources/META-INF/plugin.xml | 8 ++--- .../connector/la/entities/ArtifactEntity.java | 31 ++++++++++++------- .../connector/la/models/ProjectModelImpl.java | 26 ++++++++++++++-- .../connector/la/ui/ConnectorViewFactory.java | 24 +++++++++++--- 4 files changed, 68 insertions(+), 21 deletions(-) diff --git a/sources/resources/META-INF/plugin.xml b/sources/resources/META-INF/plugin.xml index df77838..8b39a62 100644 --- a/sources/resources/META-INF/plugin.xml +++ b/sources/resources/META-INF/plugin.xml @@ -1,7 +1,7 @@ io.github.satr.idea.plugin.connector.la Connector for AWS Lambda - 1.5.RC3 + 1.5.RC4 github.com/satr -
  • 1.5.RC3
  • +
  • 1.5.RC4
  • +
  • Maven project artifacts supported.
  • Artifact list is automatically refreshed after a project or artifact build.
  • Show and update selected function configuration.
  • 1.4
  • @@ -49,13 +50,12 @@ com.intellij.modules.java + org.jetbrains.idea.maven - diff --git a/sources/src/io/github/satr/idea/plugin/connector/la/entities/ArtifactEntity.java b/sources/src/io/github/satr/idea/plugin/connector/la/entities/ArtifactEntity.java index 67b6ae7..d0b73f3 100644 --- a/sources/src/io/github/satr/idea/plugin/connector/la/entities/ArtifactEntity.java +++ b/sources/src/io/github/satr/idea/plugin/connector/la/entities/ArtifactEntity.java @@ -2,34 +2,43 @@ // Copyright © 2018, github.com/satr, MIT License import com.intellij.packaging.artifacts.Artifact; -import com.intellij.packaging.artifacts.ArtifactType; + +import java.nio.file.Path; +import java.nio.file.Paths; public class ArtifactEntity { private final String name; private final String outputFilePath; - private final ArtifactType artifactType; + private boolean isMavenized; public ArtifactEntity(Artifact artifact) { - name = artifact.getName(); - outputFilePath = artifact.getOutputFilePath(); - artifactType = artifact.getArtifactType(); + this(artifact.getName(), artifact.getOutputFilePath(), false); + } + + public ArtifactEntity(String artifactName, String artifactFilePath, boolean isMavenized) { + name = artifactName; + this.outputFilePath = artifactFilePath; + this.isMavenized = isMavenized; + } + + public ArtifactEntity(String artifactName, String artifactPath, String artifactPackage, boolean isMavenized) { + this(artifactName, Paths.get(artifactPath, artifactName).toAbsolutePath().toString(), isMavenized); } public String getName() { return name; } - public String getOutputFilePath() { return outputFilePath; } - public ArtifactType getArtifactType() { - return artifactType; - } - @Override public String toString() { - return String.format("%s", getName(), getArtifactType().toString()); + return String.format("%s%s", getName(), getTypeDescription()); + } + + public String getTypeDescription() { + return isMavenized ? " (Maven)" : ""; } } diff --git a/sources/src/io/github/satr/idea/plugin/connector/la/models/ProjectModelImpl.java b/sources/src/io/github/satr/idea/plugin/connector/la/models/ProjectModelImpl.java index 8e64a10..44a7812 100644 --- a/sources/src/io/github/satr/idea/plugin/connector/la/models/ProjectModelImpl.java +++ b/sources/src/io/github/satr/idea/plugin/connector/la/models/ProjectModelImpl.java @@ -6,6 +6,8 @@ import com.intellij.packaging.artifacts.ArtifactManager; import com.intellij.packaging.artifacts.ArtifactType; import io.github.satr.idea.plugin.connector.la.entities.ArtifactEntity; +import org.jetbrains.idea.maven.project.MavenProject; +import org.jetbrains.idea.maven.project.MavenProjectsManager; import java.util.ArrayList; import java.util.Collection; @@ -14,9 +16,11 @@ public class ProjectModelImpl implements ProjectModel { private final String JAR_ARTIFACT_TYPE = "jar"; private final Project project; + private final MavenProjectsManager mavenProjectsManager; public ProjectModelImpl(Project project) { this.project = project; + mavenProjectsManager = MavenProjectsManager.getInstance(project); } @Override @@ -24,12 +28,30 @@ public Collection getJarArtifacts() { if(project == null) { return Collections.emptyList(); } + final ArrayList artifactEntries = new ArrayList<>(); + addProjectArtifacts(artifactEntries); + addMavenProjectArtifacts(artifactEntries); + return artifactEntries; + } + + private void addMavenProjectArtifacts(ArrayList artifactEntries) { + if (mavenProjectsManager == null || !mavenProjectsManager.isMavenizedProject()) { + return; + } + for(MavenProject mavenProject : mavenProjectsManager.getProjects()) { + if(!JAR_ARTIFACT_TYPE.equals(mavenProject.getPackaging())){ + continue; + } + String artifactName = String.format("%s.%s", mavenProject.getFinalName(), mavenProject.getPackaging()); + artifactEntries.add(new ArtifactEntity(artifactName, mavenProject.getBuildDirectory(), artifactName, true)); + } + } + + private void addProjectArtifacts(ArrayList artifactEntries) { final ArtifactManager artifactManager = ArtifactManager.getInstance(this.project); final Collection jarArtifacts = artifactManager.getArtifactsByType(ArtifactType.findById(JAR_ARTIFACT_TYPE)); - final ArrayList artifactEntries = new ArrayList<>(); for(Artifact artifact : jarArtifacts) { artifactEntries.add(new ArtifactEntity(artifact)); } - return artifactEntries; } } diff --git a/sources/src/io/github/satr/idea/plugin/connector/la/ui/ConnectorViewFactory.java b/sources/src/io/github/satr/idea/plugin/connector/la/ui/ConnectorViewFactory.java index d617dba..7f4170b 100644 --- a/sources/src/io/github/satr/idea/plugin/connector/la/ui/ConnectorViewFactory.java +++ b/sources/src/io/github/satr/idea/plugin/connector/la/ui/ConnectorViewFactory.java @@ -14,8 +14,13 @@ import com.intellij.openapi.progress.Task; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.IconLoader; +import com.intellij.openapi.util.Pair; +import com.intellij.openapi.vfs.LocalFileSystem; +import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.wm.ToolWindow; import com.intellij.openapi.wm.ToolWindowFactory; +import com.intellij.psi.PsiFile; +import com.intellij.psi.PsiManager; import com.intellij.ui.content.ContentFactory; import com.intellij.util.messages.MessageBusConnection; import io.github.satr.common.MessageHelper; @@ -31,6 +36,20 @@ import org.apache.log4j.LogManager; import org.apache.log4j.spi.LoggingEvent; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.idea.maven.execution.MavenRunner; +import org.jetbrains.idea.maven.execution.MavenRunnerParameters; +import org.jetbrains.idea.maven.execution.MavenRunnerSettings; +import org.jetbrains.idea.maven.indices.MavenArtifactSearchResult; +import org.jetbrains.idea.maven.indices.MavenArtifactSearcher; +import org.jetbrains.idea.maven.model.MavenId; +import org.jetbrains.idea.maven.model.MavenPlugin; +import org.jetbrains.idea.maven.project.MavenProject; +import org.jetbrains.idea.maven.project.MavenProjectChanges; +import org.jetbrains.idea.maven.project.MavenProjectsManager; +import org.jetbrains.idea.maven.project.MavenProjectsTree; +import org.jetbrains.idea.maven.server.NativeMavenProjectHolder; +import org.jetbrains.idea.maven.utils.MavenArtifactUtil; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; @@ -40,10 +59,7 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.format.FormatStyle; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.UUID; +import java.util.*; import static io.github.satr.common.StringUtil.getNotEmptyString; import static org.apache.http.util.TextUtils.isEmpty;