[NETBEANS-4535] Better way to detect sources and javadocs in Gradle Projects
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProjectBuilder.java b/extide/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProjectBuilder.java index 2ee96da..738ec1f 100644 --- a/extide/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProjectBuilder.java +++ b/extide/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProjectBuilder.java
@@ -156,11 +156,19 @@ unresolvedProblems = unresolvedProblems != null ? unresolvedProblems : Collections.<String, String>emptyMap(); Map<String, ModuleDependency> components = new HashMap<>(); for (Map.Entry<String, Set<File>> entry : arts.entrySet()) { - ModuleDependency dep = new ModuleDependency(entry.getKey(), entry.getValue()); - - components.put(entry.getKey(), dep); - dep.sources = sources.get(entry.getKey()); - dep.javadoc = javadocs.get(entry.getKey()); + String componentId = entry.getKey(); + // Looking at cache first as we might have the chance to find Sources and Javadocs + ModuleDependency dep = resolveModuleDependency(gradleUserHome, componentId); + if (!dep.getArtifacts().equals(entry.getValue())) { + dep = new ModuleDependency(componentId, entry.getValue()); + } + components.put(componentId, dep); + if (sources.containsKey(componentId)) { + dep.sources = sources.get(entry.getKey()); + } + if (javadocs.containsKey(componentId)) { + dep.javadoc = javadocs.get(entry.getKey()); + } } Map<String, ProjectDependency> projects = new HashMap<>(); for (Map.Entry<String, File> entry : prjs.entrySet()) {
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/api/GradleProjects.java b/extide/gradle/src/org/netbeans/modules/gradle/api/GradleProjects.java index d19a882..85b8515 100644 --- a/extide/gradle/src/org/netbeans/modules/gradle/api/GradleProjects.java +++ b/extide/gradle/src/org/netbeans/modules/gradle/api/GradleProjects.java
@@ -26,6 +26,7 @@ import java.util.Map; import org.netbeans.api.project.Project; import org.netbeans.api.project.ui.OpenProjects; +import org.netbeans.modules.gradle.GradleModuleFileCache21; import org.netbeans.modules.gradle.spi.GradleFiles; /** @@ -45,7 +46,10 @@ * not available. */ public static File getSources(File binary) { - return GradleArtifactStore.getDefault().getSources(binary); + GradleModuleFileCache21 cache = GradleModuleFileCache21.getGradleFileCache(); + GradleModuleFileCache21.CachedArtifactVersion av = cache.resolveCachedArtifactVersion(binary.toPath()); + GradleModuleFileCache21.CachedArtifactVersion.Entry sources = av != null ? av.getSources() : null; + return sources != null ? sources.getPath().toFile() : GradleArtifactStore.getDefault().getSources(binary); } /** @@ -55,7 +59,10 @@ * not available. */ public static File getJavadoc(File binary) { - return GradleArtifactStore.getDefault().getJavadoc(binary); + GradleModuleFileCache21 cache = GradleModuleFileCache21.getGradleFileCache(); + GradleModuleFileCache21.CachedArtifactVersion av = cache.resolveCachedArtifactVersion(binary.toPath()); + GradleModuleFileCache21.CachedArtifactVersion.Entry javadoc = av != null ? av.getJavaDoc() : null; + return javadoc != null ? javadoc.getPath().toFile() : GradleArtifactStore.getDefault().getJavadoc(binary); } /** @@ -146,4 +153,5 @@ } } } + }
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/nodes/ConfigurationsNode.java b/extide/gradle/src/org/netbeans/modules/gradle/nodes/ConfigurationsNode.java index 4b20eb7..89fb4b9 100644 --- a/extide/gradle/src/org/netbeans/modules/gradle/nodes/ConfigurationsNode.java +++ b/extide/gradle/src/org/netbeans/modules/gradle/nodes/ConfigurationsNode.java
@@ -223,7 +223,6 @@ }) @Override protected Node[] createNodesForKey(GradleDependency key) { - GradleProject gp = project.getGradleProject(); ArrayList<Node> ret = new ArrayList<>(1); switch (key.getType()) { case MODULE: { @@ -234,7 +233,7 @@ if (fo != null) { try { DataObject dataObject = DataObject.find(fo); - ret.add(new ModuleFilterNode(project, dep, artifact, dataObject.getNodeDelegate().cloneNode())); + ret.add(new ModuleFilterNode(project, dep, dataObject)); } catch (DataObjectNotFoundException ex) { // Should not happen here } @@ -328,10 +327,10 @@ private final NbGradleProjectImpl project; private final GradleDependency.ModuleDependency module; - private final File mainJar; + private final DataObject mainJar; - public ModuleFilterNode(NbGradleProjectImpl project, GradleDependency.ModuleDependency module, File mainJar, Node original) { - super(original); + public ModuleFilterNode(NbGradleProjectImpl project, GradleDependency.ModuleDependency module, DataObject mainJar) { + super(mainJar.getNodeDelegate().cloneNode()); this.project = project; this.module = module; this.mainJar = mainJar; @@ -340,15 +339,14 @@ @Override public Action[] getActions(boolean context) { - GradleArtifactStore store = GradleArtifactStore.getDefault(); List<Action> actions = new ArrayList<>(3); - actions.add(new OpenJavadocAction(FileUtil.toFileObject(mainJar))); - if (store.getSources(mainJar) == null) { + actions.add(new OpenJavadocAction(mainJar.getPrimaryFile())); + if (module.getSources().isEmpty()) { Action download = ActionProviderImpl.createCustomGradleAction(project, "Download Sources", ActionProviderImpl.COMMAND_DL_SOURCES, Lookups.singleton(RunUtils.simpleReplaceTokenProvider(REQUESTED_COMPONENT, module.getId()))); actions.add(download); } - if (store.getJavadoc(mainJar) == null) { + if (module.getJavadoc().isEmpty()) { Action download = ActionProviderImpl.createCustomGradleAction(project, "Download Javadoc", ActionProviderImpl.COMMAND_DL_JAVADOC, Lookups.singleton(RunUtils.simpleReplaceTokenProvider(REQUESTED_COMPONENT, module.getId()))); actions.add(download); @@ -365,24 +363,27 @@ public String getShortDescription() { StringBuilder sb = new StringBuilder("<html>"); sb.append("Artifact Id: <b>").append(module.getId()).append("</b><br/>"); - sb.append("File: ").append(mainJar.getAbsolutePath()); + sb.append("File: ").append(mainJar.getPrimaryFile().getPath()); return sb.toString(); } @Override public String getDisplayName() { - return module.getVersion().isEmpty() ? module.getName() : module.getName() + ":" + module.getVersion(); + String prefix = module.getName() + "-" + module.getVersion() + "-"; //NOI18N + String mainJarName = mainJar.getPrimaryFile().getName(); + String postfix = mainJarName.startsWith(prefix) ? mainJarName.substring(prefix.length()) : null; + String moduleName = module.getVersion().isEmpty() ? module.getName() : module.getName() + ":" + module.getVersion(); //NOI18N + return postfix != null ? moduleName + " [" + postfix + "]" : moduleName; //NOI18N } @Override public Image getIcon(int type) { - GradleArtifactStore store = GradleArtifactStore.getDefault(); Image ret = ImageUtilities.loadImage(ARTIFACT_ICON); - if (store.getJavadoc(mainJar) != null) { + if (!module.getSources().isEmpty()) { Image javadoc = ImageUtilities.loadImage(JAVADOC_BADGE); ret = ImageUtilities.mergeImages(ret, javadoc, 0, 8); } - if (store.getSources(mainJar) != null) { + if (!module.getJavadoc().isEmpty()) { Image sources = ImageUtilities.loadImage(SOURCES_BADGE); ret = ImageUtilities.mergeImages(ret, sources, 8, 8); }