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

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


The following commit(s) were added to refs/heads/delivery by this push:
     new 145f06a  NETBEANS-5906: treat custom actions as enabled (#3105)
145f06a is described below

commit 145f06ae1dcd6cedc91d0ce12f515eb91712c319
Author: Svatopluk Dedic <svatopluk.de...@oracle.com>
AuthorDate: Sun Aug 22 21:38:26 2021 +0200

    NETBEANS-5906: treat custom actions as enabled (#3105)
    
    * [NETBEANS-5918] listener for gradle.properties creation was weak-refed 
and GCed
    
    * [NETBEANS-5919] [NETBEANS-5906] Custom actions are always on. Report 
custom actions as supported.
---
 .../modules/gradle/ActionProviderImpl.java         | 10 ++---
 .../modules/gradle/actions/ActionToTaskUtils.java  | 41 ++++++++++++++++--
 .../actions/ConfigurableActionsProviderImpl.java   |  7 +--
 .../ConfigurableActionsProviderImplTest.java       | 50 ++++++++++++++++++++++
 4 files changed, 92 insertions(+), 16 deletions(-)

diff --git 
a/extide/gradle/src/org/netbeans/modules/gradle/ActionProviderImpl.java 
b/extide/gradle/src/org/netbeans/modules/gradle/ActionProviderImpl.java
index 3bf4d48..d11d1ed 100644
--- a/extide/gradle/src/org/netbeans/modules/gradle/ActionProviderImpl.java
+++ b/extide/gradle/src/org/netbeans/modules/gradle/ActionProviderImpl.java
@@ -121,11 +121,7 @@ public class ActionProviderImpl implements ActionProvider {
 
     @Override
     public String[] getSupportedActions() {
-        List<? extends GradleActionsProvider> providers = 
ActionToTaskUtils.actionProviders(project);
-        Set<String> actions = new HashSet<>();
-        for (GradleActionsProvider provider : providers) {
-            actions.addAll(provider.getSupportedActions());
-        }
+        Set<String> actions = new 
HashSet<>(ActionToTaskUtils.getAllSupportedActions(project));
         // add a fixed 'prime build' action
         actions.add(ActionProvider.COMMAND_PRIME);
         actions.add(COMMAND_DL_SOURCES);
@@ -184,7 +180,7 @@ public class ActionProviderImpl implements ActionProvider {
             LOG.log(Level.FINEST, "Priming build action for {0} is: {1}", new 
Object[] { project, enabled });
             return enabled;
         }
-        return ActionToTaskUtils.isActionEnabled(command, project, context);
+        return ActionToTaskUtils.isActionEnabled(command, null, project, 
context);
     }
 
     @NbBundle.Messages({
@@ -259,7 +255,7 @@ public class ActionProviderImpl implements ActionProvider {
             LOG.log(Level.FINE, "Attempt to run a config-disabled action: 
{0}", action);
             return false;
         }
-        if (!ActionToTaskUtils.isActionEnabled(action, project, context)) {
+        if (!ActionToTaskUtils.isActionEnabled(action, mapping, project, 
context)) {
             LOG.log(Level.FINE, "Attempt to run action that is not enabled: 
{0}", action);
             return false;
         }
diff --git 
a/extide/gradle/src/org/netbeans/modules/gradle/actions/ActionToTaskUtils.java 
b/extide/gradle/src/org/netbeans/modules/gradle/actions/ActionToTaskUtils.java
index 98c55c6..5c2939d 100644
--- 
a/extide/gradle/src/org/netbeans/modules/gradle/actions/ActionToTaskUtils.java
+++ 
b/extide/gradle/src/org/netbeans/modules/gradle/actions/ActionToTaskUtils.java
@@ -23,7 +23,9 @@ import 
org.netbeans.modules.gradle.spi.actions.ProjectActionMappingProvider;
 import org.netbeans.modules.gradle.api.execute.ActionMapping;
 import org.netbeans.modules.gradle.spi.actions.GradleActionsProvider;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 import org.netbeans.api.annotations.common.NonNull;
 import org.netbeans.api.project.Project;
 import org.netbeans.modules.gradle.api.execute.GradleExecConfiguration;
@@ -47,10 +49,43 @@ public final class ActionToTaskUtils {
         
providers.addAll(Lookup.getDefault().lookupAll(GradleActionsProvider.class));
         return providers;
     }
-
-    public static boolean isActionEnabled(String action, Project project, 
Lookup lookup) {
-        ActionMapping mapping = getActiveMapping(action, project, lookup);
+    
+    public static Set<String> getAllSupportedActions(@NonNull Project project) 
{
+        Set<String> actions = new HashSet<>();
+        for (GradleActionsProvider provider : actionProviders(project)) {
+            actions.addAll(provider.getSupportedActions());
+        }
+        ProjectActionMappingProvider projectProvider = 
project.getLookup().lookup(ProjectActionMappingProvider.class);
+        ConfigurableActionProvider contextProvider = 
project.getLookup().lookup(ConfigurableActionProvider.class);
+        ProjectConfigurationProvider<GradleExecConfiguration> pcp = 
project.getLookup().lookup(ProjectConfigurationProvider.class);
+        if (contextProvider == null || projectProvider == null) {
+            return actions;
+        }
+        if (pcp == null || contextProvider == null) {
+            actions.addAll(projectProvider.customizedActions());
+        } else {
+            for (GradleExecConfiguration gec : pcp.getConfigurations()) {
+                projectProvider = 
contextProvider.findActionProvider(gec.getId());
+                if (projectProvider != null) {
+                    actions.addAll(projectProvider.customizedActions());
+                }
+            }
+        }
+        return actions;
+    }
+    
+    public static boolean isCustomMapping(ActionMapping am) {
+        return am.getName().startsWith(ActionMapping.CUSTOM_PREFIX);
+    }
+    
+    public static boolean isActionEnabled(String action, ActionMapping 
mapping, Project project, Lookup lookup) {
+        if (mapping == null) {
+            mapping = getActiveMapping(action, project, lookup);
+        }
         if (!ActionMapping.isDisabled(mapping)) {
+            if (isCustomMapping(mapping)) {
+                return true;
+            }
             List<? extends GradleActionsProvider> providers = 
actionProviders(project);
             for (GradleActionsProvider provider : providers) {
                 if (provider.isActionEnabled(action, project, lookup)) {
diff --git 
a/extide/gradle/src/org/netbeans/modules/gradle/actions/ConfigurableActionsProviderImpl.java
 
b/extide/gradle/src/org/netbeans/modules/gradle/actions/ConfigurableActionsProviderImpl.java
index a488d79..3cdee9e 100644
--- 
a/extide/gradle/src/org/netbeans/modules/gradle/actions/ConfigurableActionsProviderImpl.java
+++ 
b/extide/gradle/src/org/netbeans/modules/gradle/actions/ConfigurableActionsProviderImpl.java
@@ -157,12 +157,7 @@ public class ConfigurableActionsProviderImpl implements 
ProjectActionMappingProv
         this.project = project;
         this.projectDirectory = project.getProjectDirectory();
         
-        FileChangeListener wl =  
WeakListeners.create(FileChangeListener.class, new FileChangeAdapter() {
-            @Override
-            public void fileDataCreated(FileEvent fe) {
-                actionFileChanged(fe.getFile(), null, false);
-            }
-        }, this.projectDirectory);
+        FileChangeListener wl =  
WeakListeners.create(FileChangeListener.class, fcl, this.projectDirectory);
         projectDirectory.addFileChangeListener(wl);
         
         LOG.log(Level.FINER, "Initializing ConfigurableAP for {0}", project);
diff --git 
a/extide/gradle/test/unit/src/org/netbeans/modules/gradle/actions/ConfigurableActionsProviderImplTest.java
 
b/extide/gradle/test/unit/src/org/netbeans/modules/gradle/actions/ConfigurableActionsProviderImplTest.java
index d63ecd7..5152e08 100644
--- 
a/extide/gradle/test/unit/src/org/netbeans/modules/gradle/actions/ConfigurableActionsProviderImplTest.java
+++ 
b/extide/gradle/test/unit/src/org/netbeans/modules/gradle/actions/ConfigurableActionsProviderImplTest.java
@@ -38,10 +38,12 @@ import org.junit.rules.TemporaryFolder;
 import org.netbeans.api.project.Project;
 import org.netbeans.api.project.ProjectManager;
 import org.netbeans.api.project.ui.OpenProjects;
+import org.netbeans.modules.gradle.api.execute.ActionMapping;
 import org.netbeans.modules.gradle.api.execute.GradleCommandLine;
 import org.netbeans.modules.gradle.api.execute.GradleExecConfiguration;
 import org.netbeans.modules.gradle.api.execute.RunConfig;
 import org.netbeans.modules.gradle.api.execute.RunUtilsTest;
+import org.netbeans.modules.gradle.customizer.CustomActionMapping;
 import org.netbeans.modules.gradle.execute.ConfigPersistenceUtilsTest;
 import org.netbeans.modules.gradle.execute.GradleExecAccessor;
 import org.netbeans.modules.gradle.execute.GradleExecutor;
@@ -349,4 +351,52 @@ public class ConfigurableActionsProviderImplTest {
         assertTrue("debug.single is supported for java.distribution / 
default", Arrays.asList(ap.getSupportedActions()).contains("debug.single"));
         assertTrue("debug.single is enabled for java.distribution / default", 
ap.isActionEnabled("debug.single", Lookups.singleton(def)));
     }
+    
+    /**
+     * Checks that if a custom action is made/paersisted, it will be visible in
+     * action provider.
+     * @throws IOException 
+     */
+    @Test
+    public void testSaveCustomizedActionVisible() throws Exception {
+        createGradleProject2();
+        
+        CustomActionRegistrationSupport supp = new 
CustomActionRegistrationSupport(project);
+        CustomActionMapping cam = new 
CustomActionMapping(ActionMapping.CUSTOM_PREFIX + "1");
+        cam.setArgs("build");
+        
+        ActionProvider ap = project.getLookup().lookup(ActionProvider.class);
+        
assertFalse(Arrays.asList(ap.getSupportedActions()).contains(cam.getName()));
+        
+        supp.registerCustomAction(cam);
+        supp.save();
+        
+        
assertTrue(Arrays.asList(ap.getSupportedActions()).contains(cam.getName()));
+    }
+    
+    /**
+     * Checks that custom created action is enabled.
+     */
+    @Test
+    public void testCustomizedActionEnabled() throws Exception {
+        createGradleProject2();
+        
+        CustomActionRegistrationSupport supp = new 
CustomActionRegistrationSupport(project);
+        CustomActionMapping cam = new 
CustomActionMapping(ActionMapping.CUSTOM_PREFIX + "1");
+        cam.setArgs("build");
+        
+        ActionProvider ap = project.getLookup().lookup(ActionProvider.class);
+        
+        assertFalse("Nonexistent ation must not be enabled", 
ap.isActionEnabled(cam.getName(), Lookup.EMPTY));
+
+        supp.registerCustomAction(cam);
+        supp.save();
+        
+        assertTrue("Custom actions are always enabled", 
ap.isActionEnabled(cam.getName(), Lookup.EMPTY));
+        
+        supp.unregisterCustomAction(cam.getName());
+        supp.save();
+        
+        assertFalse("Deleted actions must not be enabled", 
ap.isActionEnabled(cam.getName(), Lookup.EMPTY));
+    }
 }

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

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

Reply via email to