You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by lk...@apache.org on 2019/05/24 05:24:46 UTC

[netbeans] branch release110 updated (7079e88 -> 67a590c)

This is an automated email from the ASF dual-hosted git repository.

lkishalmi pushed a change to branch release110
in repository https://gitbox.apache.org/repos/asf/netbeans.git.


    from 7079e88  Add Jenkinsfile
     new 2e0f5ad  Ensuring important DTDs are used locally when running java.completion… (#1206)
     new f6e0148  [NETBEANS-2346] Fixed index out of bound exception in GAV parsing.
     new 9c96f21  [NETBEANS-2378] Tighten the Groovy more to the Gralde plugin
     new ab050e8  [NETBEANS-2348] Added support for 'Test Package'.
     new c03c53a  [NETBEANS-2348] Less intrustive support for Test Package.
     new 303ffe5  [NETBEANS-2293] Fix possible NPE on selected method detection.
     new 192bd99  [NETBEANS-2399] Make sub Project node as a Tree based on the paths on the Gradle projects
     new 8a8e472  [NETBEANS-2035] Enable Always show Gradle Build output by default.
     new 559a472  [NETBEANS-2527] Update TestSuites in a Gradle Test Run upon completion.
     new 8b3ae0d  [NETBEANS-2560] Fixing revression that disables all major actions on a Java Project
     new 562a736  [NETBEANS-2288] Fixed Auxialiary properties to use 'netbeans.' prefix as other part of the plugin expects.
     new 67a590c  Upgraded the patched modules and the readme with building instructions.

The 12 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 README.md                                          | 11 +++
 groovy/gradle.java/manifest.mf                     |  2 +-
 .../gradle/java/GradleJavaTokenProvider.java       | 92 ++++++++--------------
 .../modules/gradle/java/JavaActionProvider.java    | 80 ++++++++++---------
 .../modules/gradle/java/action-mapping.xml         |  4 +-
 .../gradle/java/api/output/LocationOpener.java     | 58 ++++++--------
 groovy/gradle.test/manifest.mf                     |  2 +-
 .../gradle/test/GradleTestProgressListener.java    | 52 ++++++------
 .../modules/gradle/test/GradleTestSuite.java       | 45 +++++++++--
 groovy/gradle/manifest.mf                          |  3 +-
 .../gradle/GradleAuxiliaryPropertiesImpl.java      | 16 +++-
 .../modules/gradle/api/GradleBaseProject.java      |  2 +-
 .../modules/gradle/api/GradleConfiguration.java    |  2 +-
 .../modules/gradle/api/GradleDependency.java       | 15 +++-
 .../gradle/execute/GradleDaemonExecutor.java       |  4 +-
 .../modules/gradle/nodes/ConfigurationsNode.java   |  4 +-
 .../modules/gradle/nodes/SubProjectsNode.java      | 79 ++++++++++++++-----
 .../modules/gradle/spi/GradleSettings.java         |  2 +-
 .../actions/ActionMappingPropertyReaderTest.java   | 22 +++---
 .../modules/gradle/api/GradleDepandencyTest.java   | 78 ++++++++++++++++++
 .../java/completion/CompletionTestBase.java        | 20 +++++
 21 files changed, 381 insertions(+), 212 deletions(-)
 create mode 100644 groovy/gradle/test/unit/src/org/netbeans/modules/gradle/api/GradleDepandencyTest.java


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


[netbeans] 04/12: [NETBEANS-2348] Added support for 'Test Package'.

Posted by lk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

lkishalmi pushed a commit to branch release110
in repository https://gitbox.apache.org/repos/asf/netbeans.git

commit ab050e858d20ba6eb3f7567aab913eff41a12599
Author: Laszlo Kishalmi <la...@gmail.com>
AuthorDate: Sat Apr 6 10:55:46 2019 -0700

    [NETBEANS-2348] Added support for 'Test Package'.
---
 .../gradle/java/GradleJavaTokenProvider.java       | 32 ++++++++++++++--------
 .../modules/gradle/java/JavaActionProvider.java    | 30 +++++++++++++-------
 .../modules/gradle/java/action-mapping.xml         |  3 ++
 .../modules/gradle/ActionProviderImpl.java         | 19 +++++++++++--
 .../gradle/execute/GradleDaemonExecutor.java       |  4 +--
 5 files changed, 62 insertions(+), 26 deletions(-)

diff --git a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/GradleJavaTokenProvider.java b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/GradleJavaTokenProvider.java
index d396a45..980c122 100644
--- a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/GradleJavaTokenProvider.java
+++ b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/GradleJavaTokenProvider.java
@@ -57,11 +57,12 @@ import org.openide.util.Lookup;
 public class GradleJavaTokenProvider implements ReplaceTokenProvider {
 
     private static final Set<String> SUPPORTED = Collections.unmodifiableSet(new HashSet(Arrays.asList(
-            "selectedClass",
-            "selectedMethod",
-            "affectedBuildTasks"
+            "selectedClass",       //NOI18N
+            "selectedMethod",      //NOI18N
+            "selectedPackage",     //NOI18N
+            "affectedBuildTasks"   //NOI18N
     )));
-    
+
     final Project project;
 
     public GradleJavaTokenProvider(Project project) {
@@ -76,22 +77,29 @@ public class GradleJavaTokenProvider implements ReplaceTokenProvider {
     @Override
     public Map<String, String> createReplacements(String action, Lookup context) {
         Map<String, String> ret = new HashMap<>();
-        processSelectedClass(ret, context);
+        processSelectedPackageAndClass(ret, context);
         processSelectedMethod(ret, context);
         processSourceSets(ret, context);
         return ret;
     }
 
-    private void processSelectedClass(final Map<String, String> map, Lookup context) {
+    private void processSelectedPackageAndClass(final Map<String, String> map, Lookup context) {
         FileObject fo = RunUtils.extractFileObjectfromLookup(context);
         GradleJavaProject gjp = GradleJavaProject.get(project);
         if ((gjp != null) && (fo != null)) {
             File f = FileUtil.toFile(fo);
             GradleJavaSourceSet sourceSet = gjp.containingSourceSet(f);
-            if (sourceSet != null) {
-                String relPath = sourceSet.relativePath(f);
-                String className = relPath.substring(0, relPath.lastIndexOf('.')).replace('/', '.');
-                map.put("selectedClass", className);
+            if (sourceSet != null)  {
+                if (f.isFile()) {
+                    String relPath = sourceSet.relativePath(f);
+                    String className = (relPath.lastIndexOf('.') > 0 ?
+                            relPath.substring(0, relPath.lastIndexOf('.')) :
+                            relPath).replace('/', '.');
+                    map.put("selectedClass", className);  //NOI18N
+                    f = f.getParentFile();
+                }
+                String pkg = sourceSet.relativePath(f).replace('/', '.');
+                map.put("selectedPackage", pkg); //NOI18N
             }
         }
     }
@@ -102,7 +110,7 @@ public class GradleJavaTokenProvider implements ReplaceTokenProvider {
         String methodName = method != null ? method.getMethodName() : null;
         if (fo != null) {
              String selectedMethod = evaluateSingleMethod(fo, methodName);
-             map.put("selectedMethod", selectedMethod);
+             map.put("selectedMethod", selectedMethod); //NOI18N
         }
     }
 
@@ -125,7 +133,7 @@ public class GradleJavaTokenProvider implements ReplaceTokenProvider {
             for (String task : buildTasks) {
                 tasks.append(task).append(' ');
             }
-            map.put("affectedBuildTasks", tasks.toString());
+            map.put("affectedBuildTasks", tasks.toString()); //NOI18N
         }
     }
 
diff --git a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/JavaActionProvider.java b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/JavaActionProvider.java
index 305c786..3add6f2 100644
--- a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/JavaActionProvider.java
+++ b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/JavaActionProvider.java
@@ -25,6 +25,7 @@ import org.netbeans.modules.gradle.java.api.GradleJavaProject;
 import org.netbeans.modules.gradle.java.api.GradleJavaSourceSet;
 import org.netbeans.modules.gradle.spi.actions.DefaultGradleActionsProvider;
 import org.netbeans.modules.gradle.spi.actions.GradleActionsProvider;
+import static org.netbeans.modules.gradle.java.api.GradleJavaSourceSet.SourceType.*;
 import java.io.File;
 import static org.netbeans.spi.project.ActionProvider.*;
 import static org.netbeans.api.java.project.JavaProjectConstants.*;
@@ -46,8 +47,9 @@ import org.openide.util.lookup.ServiceProvider;
 @ServiceProvider(service = GradleActionsProvider.class)
 public class JavaActionProvider extends DefaultGradleActionsProvider {
 
-    private static final String GATLING_PLUGIN = "com.github.lkishalmi.gatling";
-    private static final String SIMULATION_POSTFIX = "Simulation.scala";
+    public static final String COMMAND_TEST_SINGLE_PACKAGE = "test.single.package"; //NOI18N
+    private static final String GATLING_PLUGIN = "com.github.lkishalmi.gatling"; //NOI18N
+    private static final String SIMULATION_POSTFIX = "Simulation.scala"; //NOI18N
 
     private static final String[] SUPPORTED = new String[]{
         COMMAND_BUILD,
@@ -64,7 +66,8 @@ public class JavaActionProvider extends DefaultGradleActionsProvider {
         COMMAND_DEBUG_FIX,
         COMMAND_RUN_SINGLE,
         COMMAND_DEBUG_SINGLE,
-        COMMAND_COMPILE_SINGLE
+        COMMAND_COMPILE_SINGLE,
+        COMMAND_TEST_SINGLE_PACKAGE
     };
 
     public JavaActionProvider() {
@@ -81,6 +84,8 @@ public class JavaActionProvider extends DefaultGradleActionsProvider {
                 if (gbp.hasPlugins(GATLING_PLUGIN) && COMMAND_RUN_SINGLE.equals(action)) {
                     ret = fo.getNameExt().endsWith(SIMULATION_POSTFIX);
                 } else {
+                    ret = false;
+                    GradleJavaProject gjp = GradleJavaProject.get(project);
                     switch (action) {
                         case COMMAND_COMPILE_SINGLE:
                             FileBuiltQuery.Status status = FileBuiltQuery.getStatus(fo);
@@ -88,8 +93,6 @@ public class JavaActionProvider extends DefaultGradleActionsProvider {
                             break;
                         case COMMAND_DEBUG_SINGLE:
                         case COMMAND_RUN_SINGLE: {
-                            ret = false;
-                            GradleJavaProject gjp = GradleJavaProject.get(project);
                             if (RunUtils.isAugmentedBuildEnabled(project) && (gjp != null)) {
                                 File f = FileUtil.toFile(fo);
                                 GradleJavaSourceSet sourceSet = gjp.containingSourceSet(f);
@@ -98,7 +101,7 @@ public class JavaActionProvider extends DefaultGradleActionsProvider {
                                     if (relPath != null) {
                                         relPath = relPath.substring(0, relPath.lastIndexOf('.')).replace('/', '.');
                                         ret = SourceUtils.isMainClass(relPath, ClasspathInfo.create(fo), true);
-                                    } 
+                                    }
                                 }
                             }
 
@@ -109,14 +112,21 @@ public class JavaActionProvider extends DefaultGradleActionsProvider {
                         case COMMAND_RUN_SINGLE_METHOD:
                         case COMMAND_DEBUG_SINGLE_METHOD: {
                             if ("text/x-java".equals(fo.getMIMEType())) { //NOI18N
-                                GradleJavaProject gjp = GradleJavaProject.get(project);
-                                if (gjp != null) {
-                                    GradleJavaSourceSet sourceSet = gjp.containingSourceSet(FileUtil.toFile(fo));
-                                    ret = sourceSet != null && sourceSet.isTestSourceSet();
+                                if ( gjp != null ) {
+                                    File f = FileUtil.toFile(fo);
+                                    GradleJavaSourceSet sourceSet = gjp.containingSourceSet(f);
+                                    ret = sourceSet != null && sourceSet.isTestSourceSet() && sourceSet.getSourceType(f) != RESOURCES;
                                 }
                             }
                             break;
                         }
+                        case COMMAND_TEST_SINGLE_PACKAGE:
+                            if ( (gjp != null) && fo.isFolder() ) {
+                                File dir = FileUtil.toFile(fo);
+                                GradleJavaSourceSet sourceSet = gjp.containingSourceSet(dir);
+                                ret = sourceSet != null && sourceSet.getSourceType(dir) != RESOURCES;
+                            }
+                            break;
                     }
                 }
             }
diff --git a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/action-mapping.xml b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/action-mapping.xml
index 32d303a..26b9f26 100644
--- a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/action-mapping.xml
+++ b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/action-mapping.xml
@@ -25,6 +25,9 @@
         <action name="test.single">
             <args>--rerun-tasks test --tests ${selectedClass}</args>
         </action>
+        <action name="test.single.package">
+            <args>--rerun-tasks test --tests ${selectedPackage}*</args>
+        </action>
         <action name="run.single.method">
             <args>--rerun-tasks test --tests ${selectedMethod}</args>
         </action>
diff --git a/groovy/gradle/src/org/netbeans/modules/gradle/ActionProviderImpl.java b/groovy/gradle/src/org/netbeans/modules/gradle/ActionProviderImpl.java
index 7626954..7527dc9 100644
--- a/groovy/gradle/src/org/netbeans/modules/gradle/ActionProviderImpl.java
+++ b/groovy/gradle/src/org/netbeans/modules/gradle/ActionProviderImpl.java
@@ -124,13 +124,28 @@ public class ActionProviderImpl implements ActionProvider {
 
     @Override
     public void invokeAction(String command, Lookup context) throws IllegalArgumentException {
-        ActionMapping mapping = ActionToTaskUtils.getActiveMapping(command, project);
+        String cmd = translateCommand(command, context);
+        ActionMapping mapping = ActionToTaskUtils.getActiveMapping(cmd, project);
         invokeProjectAction(project, mapping, context, false);
     }
 
     @Override
     public boolean isActionEnabled(String command, Lookup context) throws IllegalArgumentException {
-        return ActionToTaskUtils.isActionEnabled(command, project, context);
+        String cmd = translateCommand(command, context);
+        return ActionToTaskUtils.isActionEnabled(cmd, project, context);
+    }
+
+    // TODO: Create an SPI for these kind of translations. Maven projects do something similar
+    // Fix for: NETBEANS-2348
+    private String translateCommand(String command, Lookup context) {
+        String ret = command;
+        if ("test.single".equals(command)) { //NOI18N
+            FileObject fo = RunUtils.extractFileObjectfromLookup(context);
+            if (fo.isFolder()) {
+                ret = "test.single.package"; //NOI18N
+            }
+        }
+        return ret;
     }
 
     @NbBundle.Messages({
diff --git a/groovy/gradle/src/org/netbeans/modules/gradle/execute/GradleDaemonExecutor.java b/groovy/gradle/src/org/netbeans/modules/gradle/execute/GradleDaemonExecutor.java
index 84a75de..d5067a0 100644
--- a/groovy/gradle/src/org/netbeans/modules/gradle/execute/GradleDaemonExecutor.java
+++ b/groovy/gradle/src/org/netbeans/modules/gradle/execute/GradleDaemonExecutor.java
@@ -231,8 +231,8 @@ public final class GradleDaemonExecutor extends AbstractGradleExecutor {
 
         for (String arg : config.getCommandLine().getSupportedCommandLine()) {
             commandLine.append(' ');
-            if (arg.contains(" ")) { //NOI18N
-                commandLine.append('"').append(arg).append('"');
+            if (arg.contains(" ") || arg.contains("*")) { //NOI18N
+                commandLine.append('\'').append(arg).append('\'');
             } else {
                 commandLine.append(arg);
             }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


[netbeans] 11/12: [NETBEANS-2288] Fixed Auxialiary properties to use 'netbeans.' prefix as other part of the plugin expects.

Posted by lk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

lkishalmi pushed a commit to branch release110
in repository https://gitbox.apache.org/repos/asf/netbeans.git

commit 562a736bf026d9d56594b981a85b01418c8b94ba
Author: Laszlo Kishalmi <la...@gmail.com>
AuthorDate: Sun May 19 07:13:41 2019 -0700

    [NETBEANS-2288] Fixed Auxialiary properties to use 'netbeans.' prefix as other part of the plugin expects.
---
 .../modules/gradle/GradleAuxiliaryPropertiesImpl.java    | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/groovy/gradle/src/org/netbeans/modules/gradle/GradleAuxiliaryPropertiesImpl.java b/groovy/gradle/src/org/netbeans/modules/gradle/GradleAuxiliaryPropertiesImpl.java
index aa70c21..8aa974e 100644
--- a/groovy/gradle/src/org/netbeans/modules/gradle/GradleAuxiliaryPropertiesImpl.java
+++ b/groovy/gradle/src/org/netbeans/modules/gradle/GradleAuxiliaryPropertiesImpl.java
@@ -26,8 +26,10 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Set;
 import org.netbeans.api.project.ProjectManager;
 import org.netbeans.spi.project.AuxiliaryProperties;
 import org.openide.util.EditableProperties;
@@ -39,7 +41,10 @@ import org.openide.util.Mutex.Action;
  */
 public class GradleAuxiliaryPropertiesImpl implements AuxiliaryProperties {
 
-    private static final String PROP_PREFIX = "nb-config."; //NOI18N
+    private static final String WRONG_PREFIX = "nb-config."; //NOI18N
+    // USE THIS PREFIX [NETBEANS-2288], AS IT CAN BE OVERWRITTEN IN
+    // GRADLE PROPERTY FILES
+    private static final String PROP_PREFIX = "netbeans."; //NOI18N
 
     final NbGradleProjectImpl project;
 
@@ -52,7 +57,8 @@ public class GradleAuxiliaryPropertiesImpl implements AuxiliaryProperties {
         return ProjectManager.mutex().readAccess(new Action<String>() {
             @Override
             public String run() {
-                return getProperties(shared).get(PROP_PREFIX + key);
+                EditableProperties props = getProperties(shared);
+                return props.getOrDefault(PROP_PREFIX + key, props.get(WRONG_PREFIX + key));
             }
         });
     }
@@ -65,6 +71,7 @@ public class GradleAuxiliaryPropertiesImpl implements AuxiliaryProperties {
                 props.put(PROP_PREFIX + key, value);
             } else {
                 props.remove(PROP_PREFIX + key);
+                props.remove(WRONG_PREFIX + key);
             }
 
             putProperties(props, shared);
@@ -73,12 +80,15 @@ public class GradleAuxiliaryPropertiesImpl implements AuxiliaryProperties {
 
     @Override
     public Iterable<String> listKeys(boolean shared) {
-        List<String> ret = new LinkedList<>();
+        Set<String> ret = new HashSet<>();
         EditableProperties props = getProperties(shared);
         for (String key : props.keySet()) {
             if (key.startsWith(PROP_PREFIX)) {
                 ret.add(key.substring(PROP_PREFIX.length()));
             }
+            if (key.startsWith(WRONG_PREFIX)) {
+                ret.add(key.substring(WRONG_PREFIX.length()));
+            }
         }
         return ret;
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


[netbeans] 08/12: [NETBEANS-2035] Enable Always show Gradle Build output by default.

Posted by lk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

lkishalmi pushed a commit to branch release110
in repository https://gitbox.apache.org/repos/asf/netbeans.git

commit 8a8e4728ab2fe0b378f677f154c1eadd1c6ec1f5
Author: Laszlo Kishalmi <la...@gmail.com>
AuthorDate: Fri Apr 26 11:34:46 2019 -0700

    [NETBEANS-2035] Enable Always show Gradle Build output by default.
---
 groovy/gradle/src/org/netbeans/modules/gradle/spi/GradleSettings.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/groovy/gradle/src/org/netbeans/modules/gradle/spi/GradleSettings.java b/groovy/gradle/src/org/netbeans/modules/gradle/spi/GradleSettings.java
index 20bb104..6a0102d 100644
--- a/groovy/gradle/src/org/netbeans/modules/gradle/spi/GradleSettings.java
+++ b/groovy/gradle/src/org/netbeans/modules/gradle/spi/GradleSettings.java
@@ -170,7 +170,7 @@ public final class GradleSettings {
     }
 
     public boolean isAlwaysShowOutput() {
-        return getPreferences().getBoolean(PROP_ALWAYS_SHOW_OUTPUT, false);
+        return getPreferences().getBoolean(PROP_ALWAYS_SHOW_OUTPUT, true);
     }
 
     public void setStartDaemonOnStart(boolean b) {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


[netbeans] 05/12: [NETBEANS-2348] Less intrustive support for Test Package.

Posted by lk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

lkishalmi pushed a commit to branch release110
in repository https://gitbox.apache.org/repos/asf/netbeans.git

commit c03c53a90e46638da9d3756d9d7e249e22d588fc
Author: Laszlo Kishalmi <la...@gmail.com>
AuthorDate: Fri Apr 12 20:00:58 2019 -0700

    [NETBEANS-2348] Less intrustive support for Test Package.
---
 .../gradle/java/GradleJavaTokenProvider.java       |  6 +-
 .../modules/gradle/java/JavaActionProvider.java    | 65 ++++++++++------------
 .../modules/gradle/java/action-mapping.xml         |  3 -
 .../modules/gradle/ActionProviderImpl.java         | 19 +------
 4 files changed, 34 insertions(+), 59 deletions(-)

diff --git a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/GradleJavaTokenProvider.java b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/GradleJavaTokenProvider.java
index 980c122..87018fb 100644
--- a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/GradleJavaTokenProvider.java
+++ b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/GradleJavaTokenProvider.java
@@ -59,7 +59,6 @@ public class GradleJavaTokenProvider implements ReplaceTokenProvider {
     private static final Set<String> SUPPORTED = Collections.unmodifiableSet(new HashSet(Arrays.asList(
             "selectedClass",       //NOI18N
             "selectedMethod",      //NOI18N
-            "selectedPackage",     //NOI18N
             "affectedBuildTasks"   //NOI18N
     )));
 
@@ -97,9 +96,10 @@ public class GradleJavaTokenProvider implements ReplaceTokenProvider {
                             relPath).replace('/', '.');
                     map.put("selectedClass", className);  //NOI18N
                     f = f.getParentFile();
+                } else {
+                    String pkg = sourceSet.relativePath(f).replace('/', '.');
+                    map.put("selectedClass", pkg + "*"); //NOI18N
                 }
-                String pkg = sourceSet.relativePath(f).replace('/', '.');
-                map.put("selectedPackage", pkg); //NOI18N
             }
         }
     }
diff --git a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/JavaActionProvider.java b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/JavaActionProvider.java
index 3add6f2..4aab8cb 100644
--- a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/JavaActionProvider.java
+++ b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/JavaActionProvider.java
@@ -47,7 +47,6 @@ import org.openide.util.lookup.ServiceProvider;
 @ServiceProvider(service = GradleActionsProvider.class)
 public class JavaActionProvider extends DefaultGradleActionsProvider {
 
-    public static final String COMMAND_TEST_SINGLE_PACKAGE = "test.single.package"; //NOI18N
     private static final String GATLING_PLUGIN = "com.github.lkishalmi.gatling"; //NOI18N
     private static final String SIMULATION_POSTFIX = "Simulation.scala"; //NOI18N
 
@@ -67,7 +66,6 @@ public class JavaActionProvider extends DefaultGradleActionsProvider {
         COMMAND_RUN_SINGLE,
         COMMAND_DEBUG_SINGLE,
         COMMAND_COMPILE_SINGLE,
-        COMMAND_TEST_SINGLE_PACKAGE
     };
 
     public JavaActionProvider() {
@@ -86,47 +84,42 @@ public class JavaActionProvider extends DefaultGradleActionsProvider {
                 } else {
                     ret = false;
                     GradleJavaProject gjp = GradleJavaProject.get(project);
-                    switch (action) {
-                        case COMMAND_COMPILE_SINGLE:
-                            FileBuiltQuery.Status status = FileBuiltQuery.getStatus(fo);
-                            ret = status == null || !status.isBuilt();
-                            break;
-                        case COMMAND_DEBUG_SINGLE:
-                        case COMMAND_RUN_SINGLE: {
-                            if (RunUtils.isAugmentedBuildEnabled(project) && (gjp != null)) {
-                                File f = FileUtil.toFile(fo);
-                                GradleJavaSourceSet sourceSet = gjp.containingSourceSet(f);
-                                if ((sourceSet != null) && fo.isData()) {
-                                    String relPath = sourceSet.relativePath(f);
-                                    if (relPath != null) {
-                                        relPath = relPath.substring(0, relPath.lastIndexOf('.')).replace('/', '.');
-                                        ret = SourceUtils.isMainClass(relPath, ClasspathInfo.create(fo), true);
+                    if ( gjp != null ) {
+                        switch (action) {
+                            case COMMAND_COMPILE_SINGLE:
+                                FileBuiltQuery.Status status = FileBuiltQuery.getStatus(fo);
+                                ret = status == null || !status.isBuilt();
+                                break;
+                            case COMMAND_DEBUG_SINGLE:
+                            case COMMAND_RUN_SINGLE:
+                                if (RunUtils.isAugmentedBuildEnabled(project)) {
+                                    File f = FileUtil.toFile(fo);
+                                    GradleJavaSourceSet sourceSet = gjp.containingSourceSet(f);
+                                    if ((sourceSet != null) && fo.isData()) {
+                                        String relPath = sourceSet.relativePath(f);
+                                        if (relPath != null) {
+                                            relPath = relPath.substring(0, relPath.lastIndexOf('.')).replace('/', '.');
+                                            ret = SourceUtils.isMainClass(relPath, ClasspathInfo.create(fo), true);
+                                        }
                                     }
                                 }
-                            }
-
-                            break;
-                        }
-                        case COMMAND_TEST_SINGLE:
-                        case COMMAND_DEBUG_TEST_SINGLE:
-                        case COMMAND_RUN_SINGLE_METHOD:
-                        case COMMAND_DEBUG_SINGLE_METHOD: {
-                            if ("text/x-java".equals(fo.getMIMEType())) { //NOI18N
-                                if ( gjp != null ) {
+                                break;
+                            case COMMAND_TEST_SINGLE:
+                            case COMMAND_DEBUG_TEST_SINGLE:
+                            case COMMAND_RUN_SINGLE_METHOD:
+                            case COMMAND_DEBUG_SINGLE_METHOD:
+                                if ("text/x-java".equals(fo.getMIMEType())) { //NOI18N
                                     File f = FileUtil.toFile(fo);
                                     GradleJavaSourceSet sourceSet = gjp.containingSourceSet(f);
                                     ret = sourceSet != null && sourceSet.isTestSourceSet() && sourceSet.getSourceType(f) != RESOURCES;
                                 }
-                            }
-                            break;
+                                if ( fo.isFolder() ) {
+                                    File dir = FileUtil.toFile(fo);
+                                    GradleJavaSourceSet sourceSet = gjp.containingSourceSet(dir);
+                                    ret = sourceSet != null && sourceSet.getSourceType(dir) != RESOURCES;
+                                }
+                                break;
                         }
-                        case COMMAND_TEST_SINGLE_PACKAGE:
-                            if ( (gjp != null) && fo.isFolder() ) {
-                                File dir = FileUtil.toFile(fo);
-                                GradleJavaSourceSet sourceSet = gjp.containingSourceSet(dir);
-                                ret = sourceSet != null && sourceSet.getSourceType(dir) != RESOURCES;
-                            }
-                            break;
                     }
                 }
             }
diff --git a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/action-mapping.xml b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/action-mapping.xml
index 26b9f26..32d303a 100644
--- a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/action-mapping.xml
+++ b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/action-mapping.xml
@@ -25,9 +25,6 @@
         <action name="test.single">
             <args>--rerun-tasks test --tests ${selectedClass}</args>
         </action>
-        <action name="test.single.package">
-            <args>--rerun-tasks test --tests ${selectedPackage}*</args>
-        </action>
         <action name="run.single.method">
             <args>--rerun-tasks test --tests ${selectedMethod}</args>
         </action>
diff --git a/groovy/gradle/src/org/netbeans/modules/gradle/ActionProviderImpl.java b/groovy/gradle/src/org/netbeans/modules/gradle/ActionProviderImpl.java
index 7527dc9..7626954 100644
--- a/groovy/gradle/src/org/netbeans/modules/gradle/ActionProviderImpl.java
+++ b/groovy/gradle/src/org/netbeans/modules/gradle/ActionProviderImpl.java
@@ -124,28 +124,13 @@ public class ActionProviderImpl implements ActionProvider {
 
     @Override
     public void invokeAction(String command, Lookup context) throws IllegalArgumentException {
-        String cmd = translateCommand(command, context);
-        ActionMapping mapping = ActionToTaskUtils.getActiveMapping(cmd, project);
+        ActionMapping mapping = ActionToTaskUtils.getActiveMapping(command, project);
         invokeProjectAction(project, mapping, context, false);
     }
 
     @Override
     public boolean isActionEnabled(String command, Lookup context) throws IllegalArgumentException {
-        String cmd = translateCommand(command, context);
-        return ActionToTaskUtils.isActionEnabled(cmd, project, context);
-    }
-
-    // TODO: Create an SPI for these kind of translations. Maven projects do something similar
-    // Fix for: NETBEANS-2348
-    private String translateCommand(String command, Lookup context) {
-        String ret = command;
-        if ("test.single".equals(command)) { //NOI18N
-            FileObject fo = RunUtils.extractFileObjectfromLookup(context);
-            if (fo.isFolder()) {
-                ret = "test.single.package"; //NOI18N
-            }
-        }
-        return ret;
+        return ActionToTaskUtils.isActionEnabled(command, project, context);
     }
 
     @NbBundle.Messages({


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


[netbeans] 01/12: Ensuring important DTDs are used locally when running java.completion… (#1206)

Posted by lk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

lkishalmi pushed a commit to branch release110
in repository https://gitbox.apache.org/repos/asf/netbeans.git

commit 2e0f5ad850ba9aecd1650c9332aaee23cc145b63
Author: Jan Lahoda <la...@gmail.com>
AuthorDate: Sat Apr 20 20:34:14 2019 +0200

    Ensuring important DTDs are used locally when running java.completion… (#1206)
    
    * Ensuring important DTDs are used locally when running java.completion tests.
    
    * Removing debug output.
---
 .../modules/java/completion/CompletionTestBase.java  | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/java/java.completion/test/unit/src/org/netbeans/modules/java/completion/CompletionTestBase.java b/java/java.completion/test/unit/src/org/netbeans/modules/java/completion/CompletionTestBase.java
index 9ba6021..744b831 100644
--- a/java/java.completion/test/unit/src/org/netbeans/modules/java/completion/CompletionTestBase.java
+++ b/java/java.completion/test/unit/src/org/netbeans/modules/java/completion/CompletionTestBase.java
@@ -45,6 +45,10 @@ import org.openide.cookies.EditorCookie;
 import org.openide.filesystems.FileObject;
 import org.openide.filesystems.FileUtil;
 import org.openide.loaders.DataObject;
+import org.openide.util.lookup.ServiceProvider;
+import org.openide.xml.EntityCatalog;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
 
 /**
  *
@@ -710,4 +714,20 @@ public class CompletionTestBase extends CompletionTestBaseBase {
             return text1.length() - text2.length();
         }
     }
+
+    @ServiceProvider(service=EntityCatalog.class)
+    public static final class TestEntityCatalogImpl extends EntityCatalog {
+
+        @Override
+        public InputSource resolveEntity(String publicID, String systemID) throws SAXException, IOException {
+            switch (publicID) {
+                case "-//NetBeans//DTD Editor KeyBindings settings 1.1//EN":
+                    return new InputSource(TestEntityCatalogImpl.class.getResourceAsStream("/org/netbeans/modules/editor/settings/storage/keybindings/EditorKeyBindings-1_1.dtd"));
+                case "-//NetBeans//DTD Editor Preferences 1.0//EN":
+                    return new InputSource(TestEntityCatalogImpl.class.getResourceAsStream("/org/netbeans/modules/editor/settings/storage/preferences/EditorPreferences-1_0.dtd"));
+            }
+            return null;
+        }
+
+    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


[netbeans] 06/12: [NETBEANS-2293] Fix possible NPE on selected method detection.

Posted by lk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

lkishalmi pushed a commit to branch release110
in repository https://gitbox.apache.org/repos/asf/netbeans.git

commit 303ffe5b5c1177079539fda06b9e97a2e0ab804c
Author: Laszlo Kishalmi <la...@gmail.com>
AuthorDate: Sat Apr 6 15:23:06 2019 -0700

    [NETBEANS-2293] Fix possible NPE on selected method detection.
---
 .../gradle/java/GradleJavaTokenProvider.java       | 86 ++++++----------------
 .../modules/gradle/java/action-mapping.xml         |  4 +-
 .../gradle/java/api/output/LocationOpener.java     | 58 +++++++--------
 3 files changed, 52 insertions(+), 96 deletions(-)

diff --git a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/GradleJavaTokenProvider.java b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/GradleJavaTokenProvider.java
index 87018fb..8e79ed4 100644
--- a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/GradleJavaTokenProvider.java
+++ b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/GradleJavaTokenProvider.java
@@ -24,24 +24,13 @@ import org.netbeans.modules.gradle.api.execute.RunUtils;
 import org.netbeans.modules.gradle.java.api.GradleJavaProject;
 import org.netbeans.modules.gradle.java.api.GradleJavaSourceSet;
 import org.netbeans.modules.gradle.spi.actions.ReplaceTokenProvider;
-import com.sun.source.tree.CompilationUnitTree;
-import com.sun.source.tree.Tree;
-import com.sun.source.util.Trees;
 import java.io.File;
-import java.io.IOException;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import javax.lang.model.element.Element;
-import javax.lang.model.element.ElementKind;
-import javax.lang.model.element.TypeElement;
-import org.netbeans.api.java.source.CompilationController;
-import org.netbeans.api.java.source.JavaSource;
-import org.netbeans.api.java.source.Task;
 import org.netbeans.api.project.Project;
 import org.netbeans.spi.project.ProjectServiceProvider;
 import org.netbeans.spi.project.SingleMethod;
@@ -85,32 +74,20 @@ public class GradleJavaTokenProvider implements ReplaceTokenProvider {
     private void processSelectedPackageAndClass(final Map<String, String> map, Lookup context) {
         FileObject fo = RunUtils.extractFileObjectfromLookup(context);
         GradleJavaProject gjp = GradleJavaProject.get(project);
-        if ((gjp != null) && (fo != null)) {
-            File f = FileUtil.toFile(fo);
-            GradleJavaSourceSet sourceSet = gjp.containingSourceSet(f);
-            if (sourceSet != null)  {
-                if (f.isFile()) {
-                    String relPath = sourceSet.relativePath(f);
-                    String className = (relPath.lastIndexOf('.') > 0 ?
-                            relPath.substring(0, relPath.lastIndexOf('.')) :
-                            relPath).replace('/', '.');
-                    map.put("selectedClass", className);  //NOI18N
-                    f = f.getParentFile();
-                } else {
-                    String pkg = sourceSet.relativePath(f).replace('/', '.');
-                    map.put("selectedClass", pkg + "*"); //NOI18N
-                }
-            }
+        String className = evaluateClassName(gjp, fo);
+        if (className != null) {
+            map.put("selectedClass", className);
         }
     }
 
-    private static void processSelectedMethod(final Map<String, String> map, Lookup context) {
+    private void processSelectedMethod(final Map<String, String> map, Lookup context) {
         SingleMethod method = context.lookup(SingleMethod.class);
         FileObject fo = method != null ? method.getFile() : RunUtils.extractFileObjectfromLookup(context);
-        String methodName = method != null ? method.getMethodName() : null;
-        if (fo != null) {
-             String selectedMethod = evaluateSingleMethod(fo, methodName);
-             map.put("selectedMethod", selectedMethod); //NOI18N
+        if ((fo != null) && fo.isData()) {
+            GradleJavaProject gjp = GradleJavaProject.get(project);
+            String className = evaluateClassName(gjp, fo);
+            String selectedMethod = method != null ? className + '.' + method.getMethodName() : className;
+            map.put("selectedMethod", selectedMethod);
         }
     }
 
@@ -137,37 +114,22 @@ public class GradleJavaTokenProvider implements ReplaceTokenProvider {
         }
     }
 
-    private static String evaluateSingleMethod(final FileObject fo, final String method) {
-        final Object[] ret = new Object[1];
-        JavaSource javaSource = JavaSource.forFileObject(fo);
-        if (javaSource != null) {
-            try {
-                javaSource.runUserActionTask(new Task<CompilationController>() {
-                    @Override
-                    public void run(CompilationController compilationController) throws Exception {
-                        compilationController.toPhase(JavaSource.Phase.ELEMENTS_RESOLVED);
-                        Trees trees = compilationController.getTrees();
-                        CompilationUnitTree compilationUnitTree = compilationController.getCompilationUnit();
-                        List<? extends Tree> typeDecls = compilationUnitTree.getTypeDecls();
-                        for (Tree tree : typeDecls) {
-                            Element element = trees.getElement(trees.getPath(compilationUnitTree, tree));
-                            if (element != null && element.getKind() == ElementKind.CLASS && element.getSimpleName().contentEquals(fo.getName())) {
-                                TypeElement type = (TypeElement) element;
-                                StringBuilder sb = new StringBuilder(type.getQualifiedName());
-                                if (method != null) {
-                                    sb.append('.').append(method);
-                                }
-                                ret[0] = sb.toString();
-                                break;
-                            }
-                        }
-                    }
-                }, true);
-                return ret[0].toString();
-            } catch (IOException ioe) {
-                //TODO: Do nothing?
+    private String evaluateClassName(GradleJavaProject gjp, FileObject fo) {
+        String ret = null;
+        if ((gjp != null) && (fo != null)) {
+            File f = FileUtil.toFile(fo);
+            GradleJavaSourceSet sourceSet = gjp.containingSourceSet(f);
+            if (sourceSet != null) {
+                String relPath = sourceSet.relativePath(f);
+                ret = (relPath.lastIndexOf('.') > 0 ?
+                        relPath.substring(0, relPath.lastIndexOf('.')) :
+                        relPath).replace('/', '.');
+                if (fo.isFolder()) {
+                    ret = ret + '*';
+                }
             }
         }
-        return null;
+        return ret;
     }
+
 }
diff --git a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/action-mapping.xml b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/action-mapping.xml
index 32d303a..3a616bd 100644
--- a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/action-mapping.xml
+++ b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/action-mapping.xml
@@ -40,12 +40,12 @@
         </action>
 
         <action name="debug.fix" repeatable="false">
-            <args>--offline --no-rebuild ${affectedBuildTasks}</args>
+            <args>--offline ${affectedBuildTasks}</args>
             <reload rule="NEVER"/>
         </action>
 
         <action name="compile.single" repetable="false">
-            <args>--offline --no-rebuild ${affectedBuildTasks}</args>
+            <args>--offline ${affectedBuildTasks}</args>
             <reload rule="NEVER"/>
         </action>
 
diff --git a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/api/output/LocationOpener.java b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/api/output/LocationOpener.java
index 7cfc359..0974c80 100644
--- a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/api/output/LocationOpener.java
+++ b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/api/output/LocationOpener.java
@@ -85,23 +85,20 @@ public final class LocationOpener {
         JavaSource javaSource = JavaSource.forFileObject(fo);
         if (javaSource != null) {
             try {
-                javaSource.runUserActionTask(new Task<CompilationController>() {
-                    @Override
-                    public void run(CompilationController compilationController) throws Exception {
-                        compilationController.toPhase(JavaSource.Phase.ELEMENTS_RESOLVED);
-                        Trees trees = compilationController.getTrees();
-                        CompilationUnitTree compilationUnitTree = compilationController.getCompilationUnit();
-                        List<? extends Tree> typeDecls = compilationUnitTree.getTypeDecls();
-                        for (Tree tree : typeDecls) {
-                            Element element = trees.getElement(trees.getPath(compilationUnitTree, tree));
-                            if (element != null && element.getKind() == ElementKind.CLASS && element.getSimpleName().contentEquals(fo.getName())) {
-                                List<? extends ExecutableElement> methodElements = ElementFilter.methodsIn(element.getEnclosedElements());
-                                for (Element child : methodElements) {
-                                    if (child.getSimpleName().contentEquals(methodName)) {
-                                        long pos = trees.getSourcePositions().getStartPosition(compilationUnitTree, trees.getTree(child));
-                                        line[0] = (int) compilationUnitTree.getLineMap().getLineNumber(pos);
-                                        break;
-                                    }
+                javaSource.runUserActionTask((CompilationController compilationController) -> {
+                    compilationController.toPhase(JavaSource.Phase.ELEMENTS_RESOLVED);
+                    Trees trees = compilationController.getTrees();
+                    CompilationUnitTree compilationUnitTree = compilationController.getCompilationUnit();
+                    List<? extends Tree> typeDecls = compilationUnitTree.getTypeDecls();
+                    for (Tree tree : typeDecls) {
+                        Element element = trees.getElement(trees.getPath(compilationUnitTree, tree));
+                        if (element != null && element.getKind() == ElementKind.CLASS && element.getSimpleName().contentEquals(fo.getName())) {
+                            List<? extends ExecutableElement> methodElements = ElementFilter.methodsIn(element.getEnclosedElements());
+                            for (Element child : methodElements) {
+                                if (child.getSimpleName().contentEquals(methodName)) {
+                                    long pos = trees.getSourcePositions().getStartPosition(compilationUnitTree, trees.getTree(child));
+                                    line[0] = (int) compilationUnitTree.getLineMap().getLineNumber(pos);
+                                    break;
                                 }
                             }
                         }
@@ -120,20 +117,17 @@ public final class LocationOpener {
         JavaSource javaSource = JavaSource.forFileObject(fo);
         if (javaSource != null) {
             try {
-                javaSource.runUserActionTask(new Task<CompilationController>() {
-                    @Override
-                    public void run(CompilationController compilationController) throws Exception {
-                        compilationController.toPhase(JavaSource.Phase.ELEMENTS_RESOLVED);
-                        Trees trees = compilationController.getTrees();
-                        CompilationUnitTree compilationUnitTree = compilationController.getCompilationUnit();
-                        List<? extends Tree> typeDecls = compilationUnitTree.getTypeDecls();
-                        for (Tree tree : typeDecls) {
-                            Element element = trees.getElement(trees.getPath(compilationUnitTree, tree));
-                            if (element != null && element.getKind() == ElementKind.CLASS && element.getSimpleName().contentEquals(fo.getName())) {
-                                long pos = trees.getSourcePositions().getStartPosition(compilationUnitTree, tree);
-                                line[0] = (int) compilationUnitTree.getLineMap().getLineNumber(pos);
-                                break;
-                            }
+                javaSource.runUserActionTask((CompilationController compilationController) -> {
+                    compilationController.toPhase(JavaSource.Phase.ELEMENTS_RESOLVED);
+                    Trees trees = compilationController.getTrees();
+                    CompilationUnitTree compilationUnitTree = compilationController.getCompilationUnit();
+                    List<? extends Tree> typeDecls = compilationUnitTree.getTypeDecls();
+                    for (Tree tree : typeDecls) {
+                        Element element = trees.getElement(trees.getPath(compilationUnitTree, tree));
+                        if (element != null && element.getKind() == ElementKind.CLASS && element.getSimpleName().contentEquals(fo.getName())) {
+                            long pos = trees.getSourcePositions().getStartPosition(compilationUnitTree, tree);
+                            line[0] = (int) compilationUnitTree.getLineMap().getLineNumber(pos);
+                            break;
                         }
                     }
                 }, true);
@@ -147,7 +141,7 @@ public final class LocationOpener {
     public static void openAtLine(FileObject file, final int line) {
         openAtLine(file, line, false);
     }
-    
+
     public static void openAtLine(FileObject file, final int line, final boolean reuse) {
         try {
             DataObject data = DataObject.find(file);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


[netbeans] 02/12: [NETBEANS-2346] Fixed index out of bound exception in GAV parsing.

Posted by lk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

lkishalmi pushed a commit to branch release110
in repository https://gitbox.apache.org/repos/asf/netbeans.git

commit f6e014819a75ae9a8e35d01cf2eefc9cbaa50f7d
Author: Laszlo Kishalmi <la...@gmail.com>
AuthorDate: Sat Apr 6 05:35:25 2019 -0700

    [NETBEANS-2346] Fixed index out of bound exception in GAV parsing.
---
 .../modules/gradle/api/GradleBaseProject.java      |  2 +-
 .../modules/gradle/api/GradleConfiguration.java    |  2 +-
 .../modules/gradle/api/GradleDependency.java       | 15 ++++-
 .../modules/gradle/nodes/ConfigurationsNode.java   |  4 +-
 .../actions/ActionMappingPropertyReaderTest.java   | 22 +++---
 .../modules/gradle/api/GradleDepandencyTest.java   | 78 ++++++++++++++++++++++
 6 files changed, 105 insertions(+), 18 deletions(-)

diff --git a/groovy/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProject.java b/groovy/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProject.java
index 8c16759..49a4f14 100644
--- a/groovy/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProject.java
+++ b/groovy/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProject.java
@@ -256,7 +256,7 @@ public final class GradleBaseProject implements Serializable, ModuleSearchSuppor
 
     @Override
     public Set<GradleDependency.ModuleDependency> findModules(String gav) {
-        String parts[] = gav.split(":");
+        String parts[] = GradleDependency.gavSplit(gav);
         if (parts.length != 3) {
             throw new IllegalArgumentException("Invalid gav filter: "  + gav);
         }
diff --git a/groovy/gradle/src/org/netbeans/modules/gradle/api/GradleConfiguration.java b/groovy/gradle/src/org/netbeans/modules/gradle/api/GradleConfiguration.java
index f269b5e..fe6b233 100644
--- a/groovy/gradle/src/org/netbeans/modules/gradle/api/GradleConfiguration.java
+++ b/groovy/gradle/src/org/netbeans/modules/gradle/api/GradleConfiguration.java
@@ -86,7 +86,7 @@ public final class GradleConfiguration implements Serializable, ModuleSearchSupp
 
     @Override
     public Set<GradleDependency.ModuleDependency> findModules(String gav) {
-        String parts[] = gav.split(":");
+        String parts[] = GradleDependency.gavSplit(gav);
         if (parts.length != 3) {
             throw new IllegalArgumentException("Invalid gav filter: "  + gav);
         }
diff --git a/groovy/gradle/src/org/netbeans/modules/gradle/api/GradleDependency.java b/groovy/gradle/src/org/netbeans/modules/gradle/api/GradleDependency.java
index 7d1decb..ab2b588 100644
--- a/groovy/gradle/src/org/netbeans/modules/gradle/api/GradleDependency.java
+++ b/groovy/gradle/src/org/netbeans/modules/gradle/api/GradleDependency.java
@@ -63,6 +63,19 @@ public abstract class GradleDependency implements Serializable, Comparable<Gradl
 
     public abstract Type getType();
 
+    static final String[] gavSplit(String gav) {
+        int firstColon = gav.indexOf(':');
+        int lastColon = gav.lastIndexOf(':');
+        if (firstColon == -1 || firstColon == lastColon) {
+            throw new IllegalArgumentException("Invalig GAV format: " + gav);
+        }
+        return new String[] {
+            gav.substring(0, firstColon),
+            gav.substring(firstColon + 1, lastColon),
+            gav.substring(lastColon + 1)
+        };
+    }
+
     /**
      * Dependency for modules usually downloaded from a remote repository.
      * @since 1.0
@@ -79,7 +92,7 @@ public abstract class GradleDependency implements Serializable, Comparable<Gradl
         ModuleDependency(String id, Set<File> artifacts) {
             super(id);
             this.artifacts = artifacts;
-            String[] parts = id.split(":");
+            String[] parts = gavSplit(id);
             group = parts[0];
             name = parts[1];
             version = parts[2];
diff --git a/groovy/gradle/src/org/netbeans/modules/gradle/nodes/ConfigurationsNode.java b/groovy/gradle/src/org/netbeans/modules/gradle/nodes/ConfigurationsNode.java
index e57077e..4300195 100644
--- a/groovy/gradle/src/org/netbeans/modules/gradle/nodes/ConfigurationsNode.java
+++ b/groovy/gradle/src/org/netbeans/modules/gradle/nodes/ConfigurationsNode.java
@@ -290,7 +290,7 @@ public class ConfigurationsNode extends AbstractNode {
             GradleProject gp = project.getGradleProject();
             ArrayList<GradleDependency> ret = new ArrayList<>();
             GradleConfiguration conf = gp.getBaseProject().getConfigurations().get(configuration);
-            // We can get null here ins ome extreme cases, e.g. when the project is being deleted
+            // We can get null here in some extreme cases, e.g. when the project is being deleted
             if (conf != null) {
                 ret.addAll(conf.getUnresolved());
                 ret.addAll(conf.getProjects());
@@ -370,7 +370,7 @@ public class ConfigurationsNode extends AbstractNode {
 
         @Override
         public String getDisplayName() {
-            return module.getName() + ":" + module.getVersion();
+            return module.getVersion().isEmpty() ? module.getName() : module.getName() + ":" + module.getVersion();
         }
 
         @Override
diff --git a/groovy/gradle/test/unit/src/org/netbeans/modules/gradle/actions/ActionMappingPropertyReaderTest.java b/groovy/gradle/test/unit/src/org/netbeans/modules/gradle/actions/ActionMappingPropertyReaderTest.java
index 99a7dfd..d6ad668 100644
--- a/groovy/gradle/test/unit/src/org/netbeans/modules/gradle/actions/ActionMappingPropertyReaderTest.java
+++ b/groovy/gradle/test/unit/src/org/netbeans/modules/gradle/actions/ActionMappingPropertyReaderTest.java
@@ -22,10 +22,6 @@ import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Properties;
 import java.util.Set;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
 import org.junit.Test;
 import static org.junit.Assert.*;
 import org.netbeans.modules.gradle.api.execute.ActionMapping;
@@ -49,7 +45,7 @@ public class ActionMappingPropertyReaderTest {
     @Test
     public void testLoadMappings2() {
         Properties props = new Properties();
-        props.put("nb-action.run.args", "runArgs");
+        props.put("action.run.args", "runArgs");
         Set<ActionMapping> result = ActionMappingPropertyReader.loadMappings(props);
         assertEquals(result.size(), 1);
         ActionMapping mapping = result.iterator().next();
@@ -63,11 +59,11 @@ public class ActionMappingPropertyReaderTest {
     @Test
     public void testLoadMappings3() {
         Properties props = new Properties();
-        props.put("nb-action.custom-1", "Build with Arguments");
-        props.put("nb-action.custom-1.args", "runArgs ${test}");
-        props.put("nb-action.custom-1.reload.args", "runArgs");
-        props.put("nb-action.custom-1.reload.rule", "NEVER");
-        props.put("nb-action.custom-1.repeatable", "false");
+        props.put("action.custom-1", "Build with Arguments");
+        props.put("action.custom-1.args", "runArgs ${test}");
+        props.put("action.custom-1.reload.args", "runArgs");
+        props.put("action.custom-1.reload.rule", "NEVER");
+        props.put("action.custom-1.repeatable", "false");
         Set<ActionMapping> result = ActionMappingPropertyReader.loadMappings(props);
         assertEquals(result.size(), 1);
         ActionMapping mapping = result.iterator().next();
@@ -82,9 +78,9 @@ public class ActionMappingPropertyReaderTest {
     @Test
     public void testLoadMappings4() {
         Properties props = new Properties();
-        props.put("nb-action.build.args", "build");
-        props.put("nb-action.build.priority", "100");
-        props.put("nb-action.build.plugins", "groovy, war");
+        props.put("action.build.args", "build");
+        props.put("action.build.priority", "100");
+        props.put("action.build.plugins", "groovy, war");
         Set<ActionMapping> result = ActionMappingPropertyReader.loadMappings(props);
         assertEquals(result.size(), 1);
         DefaultActionMapping mapping = (DefaultActionMapping) result.iterator().next();
diff --git a/groovy/gradle/test/unit/src/org/netbeans/modules/gradle/api/GradleDepandencyTest.java b/groovy/gradle/test/unit/src/org/netbeans/modules/gradle/api/GradleDepandencyTest.java
new file mode 100644
index 0000000..43c1881
--- /dev/null
+++ b/groovy/gradle/test/unit/src/org/netbeans/modules/gradle/api/GradleDepandencyTest.java
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.netbeans.modules.gradle.api;
+
+import java.util.Collections;
+import static org.junit.Assert.assertEquals;
+import org.junit.Test;
+
+/**
+ *
+ * @author lkishalmi
+ */
+public class GradleDepandencyTest {
+
+    @Test
+    public void testGetGroup1() {
+        GradleDependency.ModuleDependency instance = new GradleDependency.ModuleDependency(":hamcrest-core-1.3:", Collections.emptySet());
+        String expResult = "";
+        String result = instance.getGroup();
+        assertEquals(expResult, result);
+    }
+
+    @Test
+    public void testGetGroup2() {
+        GradleDependency.ModuleDependency instance = new GradleDependency.ModuleDependency("org.hamcrest:hamcrest-core:1.3", Collections.emptySet());
+        String expResult = "org.hamcrest";
+        String result = instance.getGroup();
+        assertEquals(expResult, result);
+    }
+
+    @Test
+    public void testGetName1() {
+        GradleDependency.ModuleDependency instance = new GradleDependency.ModuleDependency(":hamcrest-core-1.3:", Collections.emptySet());
+        String expResult = "hamcrest-core-1.3";
+        String result = instance.getName();
+        assertEquals(expResult, result);
+    }
+
+    @Test
+    public void testGetName2() {
+        GradleDependency.ModuleDependency instance = new GradleDependency.ModuleDependency("org.hamcrest:hamcrest-core:1.3", Collections.emptySet());
+        String expResult = "hamcrest-core";
+        String result = instance.getName();
+        assertEquals(expResult, result);
+    }
+
+    @Test
+    public void testGetVersion1() {
+        GradleDependency.ModuleDependency instance = new GradleDependency.ModuleDependency(":hamcrest-core-1.3:", Collections.emptySet());
+        String expResult = "";
+        String result = instance.getVersion();
+        assertEquals(expResult, result);
+    }
+
+    @Test
+    public void testGetVersion2() {
+        GradleDependency.ModuleDependency instance = new GradleDependency.ModuleDependency("org.hamcrest:hamcrest-core:1.3", Collections.emptySet());
+        String expResult = "1.3";
+        String result = instance.getVersion();
+        assertEquals(expResult, result);
+    }
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


[netbeans] 10/12: [NETBEANS-2560] Fixing revression that disables all major actions on a Java Project

Posted by lk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

lkishalmi pushed a commit to branch release110
in repository https://gitbox.apache.org/repos/asf/netbeans.git

commit 8b3ae0d7224413166924f4cb2f5691c10c7903c5
Author: Laszlo Kishalmi <la...@gmail.com>
AuthorDate: Sun May 19 06:14:02 2019 -0700

    [NETBEANS-2560] Fixing revression that disables all major actions on a Java Project
---
 .../src/org/netbeans/modules/gradle/java/JavaActionProvider.java   | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/JavaActionProvider.java b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/JavaActionProvider.java
index 4aab8cb..7c680e5 100644
--- a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/JavaActionProvider.java
+++ b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/JavaActionProvider.java
@@ -27,6 +27,9 @@ import org.netbeans.modules.gradle.spi.actions.DefaultGradleActionsProvider;
 import org.netbeans.modules.gradle.spi.actions.GradleActionsProvider;
 import static org.netbeans.modules.gradle.java.api.GradleJavaSourceSet.SourceType.*;
 import java.io.File;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
 import static org.netbeans.spi.project.ActionProvider.*;
 import static org.netbeans.api.java.project.JavaProjectConstants.*;
 import org.netbeans.api.java.source.ClasspathInfo;
@@ -82,9 +85,9 @@ public class JavaActionProvider extends DefaultGradleActionsProvider {
                 if (gbp.hasPlugins(GATLING_PLUGIN) && COMMAND_RUN_SINGLE.equals(action)) {
                     ret = fo.getNameExt().endsWith(SIMULATION_POSTFIX);
                 } else {
-                    ret = false;
                     GradleJavaProject gjp = GradleJavaProject.get(project);
                     if ( gjp != null ) {
+                        ret = false;
                         switch (action) {
                             case COMMAND_COMPILE_SINGLE:
                                 FileBuiltQuery.Status status = FileBuiltQuery.getStatus(fo);
@@ -119,6 +122,8 @@ public class JavaActionProvider extends DefaultGradleActionsProvider {
                                     ret = sourceSet != null && sourceSet.getSourceType(dir) != RESOURCES;
                                 }
                                 break;
+                            default:
+                                ret = true;
                         }
                     }
                 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


[netbeans] 03/12: [NETBEANS-2378] Tighten the Groovy more to the Gralde plugin

Posted by lk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

lkishalmi pushed a commit to branch release110
in repository https://gitbox.apache.org/repos/asf/netbeans.git

commit 9c96f216e71a29c935032cc03ef658ca3932bf52
Author: Laszlo Kishalmi <la...@gmail.com>
AuthorDate: Tue Apr 9 06:38:06 2019 -0700

    [NETBEANS-2378] Tighten the Groovy more to the Gralde plugin
---
 groovy/gradle/manifest.mf | 1 +
 1 file changed, 1 insertion(+)

diff --git a/groovy/gradle/manifest.mf b/groovy/gradle/manifest.mf
index b80a5f9..fedf0d3 100644
--- a/groovy/gradle/manifest.mf
+++ b/groovy/gradle/manifest.mf
@@ -4,3 +4,4 @@ OpenIDE-Module: org.netbeans.modules.gradle
 OpenIDE-Module-Layer: org/netbeans/modules/gradle/layer.xml
 OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/gradle/Bundle.properties
 OpenIDE-Module-Specification-Version: 1.0.1
+


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


[netbeans] 12/12: Upgraded the patched modules and the readme with building instructions.

Posted by lk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

lkishalmi pushed a commit to branch release110
in repository https://gitbox.apache.org/repos/asf/netbeans.git

commit 67a590ca78f4ecf5483c8f67ed73052ce1e67473
Author: Laszlo Kishalmi <la...@gmail.com>
AuthorDate: Sun May 19 14:08:03 2019 -0700

    Upgraded the patched modules and the readme with building instructions.
---
 README.md                      | 11 +++++++++++
 groovy/gradle.java/manifest.mf |  2 +-
 groovy/gradle.test/manifest.mf |  2 +-
 groovy/gradle/manifest.mf      |  2 +-
 4 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/README.md b/README.md
index d09de65..dd39ad8 100644
--- a/README.md
+++ b/README.md
@@ -63,6 +63,17 @@ $ ant -Dcluster.config=platform
 
 **Note:** You can also use `php`, `enterprise`, etc. See the [cluster.properties](https://github.com/apache/incubator-netbeans/blob/master/nbbuild/cluster.properties) file.
 
+#### Building Patch from Sources
+
+Patch source releases does not contain all the code sufficient to build a patch release. In oder to build a patch release, it is required to download the source code of a previous full release. The steps would be the following:
+
+1. Create a directory for the sources: ```mkdir netbeans-patch-src```
+2. Download the full release zip required for the patch.
+3. Download the patch sources zip.
+4. Unzip the release sources into ```netbeans-patch-src```
+5. Unzip the patch sources into ```netbeans-patch-src``` overwrite the existing ones.
+6. Go to the ```netbeans-patch-src``` and follow the build instructions above.
+
 #### Building Windows Launchers
 Windows launchers can be build using [MinGW](http://www.mingw.org/) both on Windows and Linux.
 
diff --git a/groovy/gradle.java/manifest.mf b/groovy/gradle.java/manifest.mf
index 4d4d451..42f31be 100644
--- a/groovy/gradle.java/manifest.mf
+++ b/groovy/gradle.java/manifest.mf
@@ -3,4 +3,4 @@ AutoUpdate-Show-In-Client: false
 OpenIDE-Module: org.netbeans.modules.gradle.java
 OpenIDE-Module-Layer: org/netbeans/modules/gradle/java/layer.xml
 OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/gradle/java/Bundle.properties
-OpenIDE-Module-Specification-Version: 1.0.1
+OpenIDE-Module-Specification-Version: 1.0.2
diff --git a/groovy/gradle.test/manifest.mf b/groovy/gradle.test/manifest.mf
index 11d2208..7ff88d6 100644
--- a/groovy/gradle.test/manifest.mf
+++ b/groovy/gradle.test/manifest.mf
@@ -2,4 +2,4 @@ Manifest-Version: 1.0
 AutoUpdate-Show-In-Client: false
 OpenIDE-Module: org.netbeans.modules.gradle.test
 OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/gradle/test/Bundle.properties
-OpenIDE-Module-Specification-Version: 1.0.1
+OpenIDE-Module-Specification-Version: 1.0.2
diff --git a/groovy/gradle/manifest.mf b/groovy/gradle/manifest.mf
index fedf0d3..bc77264 100644
--- a/groovy/gradle/manifest.mf
+++ b/groovy/gradle/manifest.mf
@@ -3,5 +3,5 @@ AutoUpdate-Show-In-Client: false
 OpenIDE-Module: org.netbeans.modules.gradle
 OpenIDE-Module-Layer: org/netbeans/modules/gradle/layer.xml
 OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/gradle/Bundle.properties
-OpenIDE-Module-Specification-Version: 1.0.1
+OpenIDE-Module-Specification-Version: 1.0.2
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


[netbeans] 07/12: [NETBEANS-2399] Make sub Project node as a Tree based on the paths on the Gradle projects

Posted by lk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

lkishalmi pushed a commit to branch release110
in repository https://gitbox.apache.org/repos/asf/netbeans.git

commit 192bd9909d3389a544c6679028e6661481958dce
Author: Laszlo Kishalmi <la...@gmail.com>
AuthorDate: Sat Apr 20 08:01:36 2019 -0700

    [NETBEANS-2399] Make sub Project node as a Tree based on the paths on
    the Gradle projects
---
 .../modules/gradle/nodes/SubProjectsNode.java      | 79 ++++++++++++++++------
 1 file changed, 58 insertions(+), 21 deletions(-)

diff --git a/groovy/gradle/src/org/netbeans/modules/gradle/nodes/SubProjectsNode.java b/groovy/gradle/src/org/netbeans/modules/gradle/nodes/SubProjectsNode.java
index 3b25ef5..0114cb0 100644
--- a/groovy/gradle/src/org/netbeans/modules/gradle/nodes/SubProjectsNode.java
+++ b/groovy/gradle/src/org/netbeans/modules/gradle/nodes/SubProjectsNode.java
@@ -30,6 +30,7 @@ import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.List;
 import javax.swing.AbstractAction;
 import javax.swing.Action;
@@ -53,6 +54,11 @@ import org.openide.util.WeakListeners;
 
 import static org.netbeans.modules.gradle.nodes.Bundle.*;
 import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+import org.netbeans.modules.gradle.spi.Utils;
+import org.openide.ErrorManager;
+import org.openide.nodes.Children;
 
 /**
  *
@@ -63,14 +69,23 @@ public class SubProjectsNode extends AbstractNode {
     @StaticResource
     private static final String SP_BADGE
             = "org/netbeans/modules/gradle/resources/gradle-badge.png";
-    private final NbGradleProjectImpl proj;
 
     @NbBundle.Messages("LBL_SubProjects=Sub Projects")
+    public SubProjectsNode(NbGradleProjectImpl proj, String path) {
+        super(FilterNode.Children.create(new SubProjectsChildFactory(proj, path), true));
+        if (":".equals(path)) {     //NOI18N
+            setName("SubProjects"); //NOI18N
+            setDisplayName(LBL_SubProjects());
+        } else {
+            int colon = path.lastIndexOf(':', path.length() - 2);
+            String partName = path.substring(colon + 1, path.length() - 1);
+            setDisplayName(Utils.capitalize(partName));
+            setName(path);
+        }
+    }
+
     public SubProjectsNode(NbGradleProjectImpl proj) {
-        super(FilterNode.Children.create(new SubProjectsChildFactory(proj), true));
-        this.proj = proj;
-        setName("SubProjects"); //NOI18N
-        setDisplayName(LBL_SubProjects());
+        this(proj, ":"); //NOI18N
     }
 
     @Override
@@ -78,7 +93,7 @@ public class SubProjectsNode extends AbstractNode {
         return new Action[]{};
     }
 
-    private Image getIcon(boolean opened) {
+    private static Image getIcon(boolean opened) {
         Image badge = ImageUtilities.loadImage(SP_BADGE, true); //NOI18N
         return ImageUtilities.mergeImages(NodeUtils.getTreeFolderIcon(opened), badge, 8, 8);
     }
@@ -93,13 +108,15 @@ public class SubProjectsNode extends AbstractNode {
         return getIcon(true);
     }
 
-    private static class SubProjectsChildFactory extends ChildFactory<NbGradleProjectImpl> {
+    private static class SubProjectsChildFactory extends ChildFactory<String> {
 
         private final NbGradleProjectImpl project;
         private final PropertyChangeListener listener;
+        private final String rootPath;
 
-        SubProjectsChildFactory(NbGradleProjectImpl proj) {
+        SubProjectsChildFactory(NbGradleProjectImpl proj, String rootPath) {
             project = proj;
+            this.rootPath = rootPath;
             NbGradleProject watcher = project.getProjectWatcher();
             listener = new PropertyChangeListener() {
                 @Override
@@ -115,34 +132,54 @@ public class SubProjectsNode extends AbstractNode {
         }
 
         @Override
-        protected boolean createKeys(final List<NbGradleProjectImpl> modules) {
+        protected boolean createKeys(final List<String> paths) {
             Map<String, File> subProjects = project.getGradleProject().getBaseProject().getSubProjects();
+            Set<String> components = new TreeSet<String>();
+            Set<String> projects = new TreeSet<>();
             for (String path : subProjects.keySet()) {
-                File projDir = subProjects.get(path);
-                FileObject fo = FileUtil.toFileObject(projDir);
+                if (path.startsWith(rootPath)) {
+                    String relPath = path.substring(rootPath.length());
+                    int firstColon = relPath.indexOf(':');
+                    int lastColon = relPath.lastIndexOf(':');
+                    if ((firstColon >= 0) && (firstColon == lastColon)) {
+                        components.add(path.substring(0, rootPath.length() + firstColon + 1));
+                    }
+                    if (firstColon < 0 ) {
+                        projects.add(path);
+                    }
+                }
+            }
+            paths.addAll(components);
+            paths.addAll(projects);
+            return true;
+        }
+
+        @Override
+        protected Node createNodeForKey(String path) {
+            Node ret = null;
+            Map<String, File> subProjects = project.getGradleProject().getBaseProject().getSubProjects();
+            File projectDir = subProjects.get(path);
+            if (projectDir != null) {
+                FileObject fo = FileUtil.toFileObject(projectDir);
                 if (fo != null) {
                     try {
                         Project prj = ProjectManager.getDefault().findProject(fo);
                         if (prj != null && prj.getLookup().lookup(NbGradleProjectImpl.class) != null) {
                             NbGradleProjectImpl proj = (NbGradleProjectImpl) prj;
                             assert prj.getLookup().lookup(LogicalViewProvider.class) != null;
-                            modules.add(proj);
+                            Node original = proj.getLookup().lookup(LogicalViewProvider.class).createLogicalView();
+                            ret = new ProjectFilterNode(proj, original);
                         }
                     } catch (IllegalArgumentException | IOException ex) {
-                        ex.printStackTrace();//TODO log ?
+                        ErrorManager.getDefault().notify(ex);
                     }
                 } else {
                     //TODO broken module reference.. show as such..
                 }
-
+            } else {
+                ret = new SubProjectsNode(project, path);
             }
-            return true;
-        }
-
-        @Override
-        protected Node createNodeForKey(NbGradleProjectImpl proj) {
-            Node original = proj.getLookup().lookup(LogicalViewProvider.class).createLogicalView();
-            return new ProjectFilterNode(proj, original);
+            return ret;
         }
 
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


[netbeans] 09/12: [NETBEANS-2527] Update TestSuites in a Gradle Test Run upon completion.

Posted by lk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

lkishalmi pushed a commit to branch release110
in repository https://gitbox.apache.org/repos/asf/netbeans.git

commit 559a4722a6816c91299db127db490f4bd98a41e2
Author: Laszlo Kishalmi <la...@gmail.com>
AuthorDate: Sat May 18 09:25:32 2019 -0700

    [NETBEANS-2527] Update TestSuites in a Gradle Test Run upon completion.
---
 .../gradle/test/GradleTestProgressListener.java    | 52 ++++++++++------------
 .../modules/gradle/test/GradleTestSuite.java       | 45 ++++++++++++++++---
 2 files changed, 64 insertions(+), 33 deletions(-)

diff --git a/groovy/gradle.test/src/org/netbeans/modules/gradle/test/GradleTestProgressListener.java b/groovy/gradle.test/src/org/netbeans/modules/gradle/test/GradleTestProgressListener.java
index 383ba7c..ce2f76d 100644
--- a/groovy/gradle.test/src/org/netbeans/modules/gradle/test/GradleTestProgressListener.java
+++ b/groovy/gradle.test/src/org/netbeans/modules/gradle/test/GradleTestProgressListener.java
@@ -23,9 +23,9 @@ import org.netbeans.modules.gradle.api.NbGradleProject;
 import java.util.Collection;
 import org.netbeans.modules.gradle.spi.GradleProgressListenerProvider;
 import java.util.EnumSet;
-import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import org.gradle.tooling.Failure;
@@ -57,11 +57,12 @@ import org.openide.util.Lookup;
  * @author Laszlo Kishalmi
  */
 @ProjectServiceProvider(service = GradleProgressListenerProvider.class, projectType = NbGradleProject.GRADLE_PLUGIN_TYPE + "/java")
-public class GradleTestProgressListener implements ProgressListener, GradleProgressListenerProvider {
+public final class GradleTestProgressListener implements ProgressListener, GradleProgressListenerProvider {
 
     final private Project project;
     TestSession session;
-    Map<String, Testcase> runningTests = new HashMap<>();
+
+    Map<String, Testcase> runningTests = new ConcurrentHashMap<>();
 
     public GradleTestProgressListener(Project project) {
         this.project = project;
@@ -125,47 +126,42 @@ public class GradleTestProgressListener implements ProgressListener, GradleProgr
     }
 
     private void sessionFinish(TestFinishEvent evt) {
-        TestOperationResult result = evt.getResult();
-        Report report = session.getReport(result.getEndTime() - result.getStartTime());
+        runningTests.clear();
         CoreManager manager = getManager();
         if (manager != null) {
             manager.sessionFinished(session);
-            manager.displayReport(session, report, true);
-            manager.sessionFinished(session);
         }
     }
 
     private void suiteStart(TestStartEvent evt, JvmTestOperationDescriptor op) {
-        if (op.getClassName() != null) {
-            TestSuite suite = new GradleTestSuite(op);
-            session.addSuite(suite);
+    }
+
+    private void suiteFinish(TestFinishEvent evt, JvmTestOperationDescriptor op) {
+        TestOperationResult result = evt.getResult();
+        TestSuite currentSuite = session.getCurrentSuite();
+        String suiteName = GradleTestSuite.suiteName(op);
+        if (suiteName.equals(currentSuite.getName())) {
+            Report report = session.getReport(result.getEndTime() - result.getStartTime());
             CoreManager manager = getManager();
             if (manager != null) {
-                manager.displaySuiteRunning(session, suite);
+                manager.displayReport(session, report, true);
             }
         }
     }
 
-    private void suiteFinish(TestFinishEvent evt, JvmTestOperationDescriptor op) {
-
-    }
-
     private void caseStart(TestStartEvent evt, JvmTestOperationDescriptor op) {
-        Testcase tc = new GradleTestcase(op, session);
-        if (op.getSuiteName() == null) {
-            // Sometimes it is possible to receive testcase execution events
-            // without suite. It is common with TestNG
-            TestSuite currentSuite = session.getCurrentSuite();
-            if ((currentSuite == null) || !currentSuite.getName().equals(op.getClassName())) {
-                TestSuite suite = new GradleTestSuite(op);
-                session.addSuite(suite);
-                CoreManager manager = getManager();
-                if (manager != null) {
-                    manager.displaySuiteRunning(session, suite);
-                }
+        assert session != null;
+        assert op.getParent() != null;
+        TestSuite currentSuite = session.getCurrentSuite();
+        TestSuite newSuite = new GradleTestSuite((JvmTestOperationDescriptor) op.getParent());
+        if ((currentSuite == null) || !currentSuite.equals(newSuite)) {
+            session.addSuite(newSuite);
+            CoreManager manager = getManager();
+            if (manager != null) {
+                manager.displaySuiteRunning(session, newSuite);
             }
         }
-        tc.setClassName(op.getClassName());
+        Testcase tc = new GradleTestcase(op, session);
         runningTests.put(getTestOpKey(op), tc);
         session.addTestCase(tc);
     }
diff --git a/groovy/gradle.test/src/org/netbeans/modules/gradle/test/GradleTestSuite.java b/groovy/gradle.test/src/org/netbeans/modules/gradle/test/GradleTestSuite.java
index 68e0144..4834d35 100644
--- a/groovy/gradle.test/src/org/netbeans/modules/gradle/test/GradleTestSuite.java
+++ b/groovy/gradle.test/src/org/netbeans/modules/gradle/test/GradleTestSuite.java
@@ -19,6 +19,8 @@
 
 package org.netbeans.modules.gradle.test;
 
+import java.util.Objects;
+import org.gradle.tooling.events.OperationDescriptor;
 import org.gradle.tooling.events.test.JvmTestOperationDescriptor;
 import org.netbeans.modules.gsf.testrunner.api.TestSuite;
 
@@ -26,17 +28,50 @@ import org.netbeans.modules.gsf.testrunner.api.TestSuite;
  *
  * @author Laszlo Kishalmi
  */
-public class GradleTestSuite extends TestSuite {
-    
+public final class GradleTestSuite extends TestSuite {
+
     private final JvmTestOperationDescriptor operation;
-    
+
     public GradleTestSuite(JvmTestOperationDescriptor op) {
-        super(op.getClassName());
+        super(suiteName(op));
         this.operation = op;
     }
 
     public JvmTestOperationDescriptor getOperation() {
         return operation;
     }
-    
+
+    @Override
+    public int hashCode() {
+        int hash = 3;
+        hash = 29 * hash + Objects.hashCode(this.operation);
+        return hash;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final GradleTestSuite other = (GradleTestSuite) obj;
+        return Objects.equals(this.getName(), other.getName());
+    }
+
+    static String suiteName(OperationDescriptor op) {
+        assert op != null;
+
+        if (op instanceof JvmTestOperationDescriptor) {
+            JvmTestOperationDescriptor desc = (JvmTestOperationDescriptor)op;
+            return desc.getSuiteName() != null ? desc.getSuiteName() : desc.getClassName();
+        } else {
+            return op.getDisplayName() != null ? op.getDisplayName() : op.getName();
+        }
+    }
+
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists