You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@netbeans.apache.org by GitBox <gi...@apache.org> on 2018/04/25 13:25:13 UTC

[GitHub] JaroslavTulach closed pull request #505: [NETBEANS-615] When nb-javac is not installed, don't let CoS run, but…

JaroslavTulach closed pull request #505: [NETBEANS-615] When nb-javac is not installed, don't let CoS run, but…
URL: https://github.com/apache/incubator-netbeans/pull/505
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/java.api.common/nbproject/project.xml b/java.api.common/nbproject/project.xml
index fe0820e2e..094c5fe8f 100644
--- a/java.api.common/nbproject/project.xml
+++ b/java.api.common/nbproject/project.xml
@@ -177,7 +177,7 @@
                     <build-prerequisite/>
                     <compile-dependency/>
                     <run-dependency>
-                        <specification-version>2.30</specification-version>
+                        <specification-version>2.32</specification-version>
                     </run-dependency>
                 </dependency>
                 <dependency>
diff --git a/java.api.common/src/org/netbeans/modules/java/api/common/project/BaseActionProvider.java b/java.api.common/src/org/netbeans/modules/java/api/common/project/BaseActionProvider.java
index 82a63d83c..5603835b4 100644
--- a/java.api.common/src/org/netbeans/modules/java/api/common/project/BaseActionProvider.java
+++ b/java.api.common/src/org/netbeans/modules/java/api/common/project/BaseActionProvider.java
@@ -47,6 +47,7 @@
 import org.netbeans.api.java.platform.JavaPlatform;
 import org.netbeans.api.java.project.JavaProjectConstants;
 import org.netbeans.api.java.project.runner.JavaRunner;
+import org.netbeans.api.java.source.BuildArtifactMapper;
 import org.netbeans.api.project.Project;
 import org.netbeans.api.project.ProjectManager;
 import org.netbeans.modules.java.api.common.SourceRoots;
@@ -521,6 +522,8 @@ private boolean overridesGetTargetNames() {
 
     @NonNull
     private Set<? extends JavaActionProvider.CompileOnSaveOperation> getCompileOnSaveOperations() {
+        if (!BuildArtifactMapper.isCompileOnSaveSupported())
+            return Collections.emptySet();
         final Set<JavaActionProvider.CompileOnSaveOperation> ops = EnumSet.noneOf(JavaActionProvider.CompileOnSaveOperation.class);
         if (isCompileOnSaveEnabled()) {
             ops.add(JavaActionProvider.CompileOnSaveOperation.EXECUTE);
diff --git a/java.j2seproject/nbproject/project.xml b/java.j2seproject/nbproject/project.xml
index bda3c75f9..2ff68fb68 100644
--- a/java.j2seproject/nbproject/project.xml
+++ b/java.j2seproject/nbproject/project.xml
@@ -169,7 +169,7 @@
                     <build-prerequisite/>
                     <compile-dependency/>
                     <run-dependency>
-                        <specification-version>2.23</specification-version>
+                        <specification-version>2.32</specification-version>
                     </run-dependency>
                 </dependency>
                 <dependency>
diff --git a/java.j2seproject/src/org/netbeans/modules/java/j2seproject/J2SEProjectUtil.java b/java.j2seproject/src/org/netbeans/modules/java/j2seproject/J2SEProjectUtil.java
index 7e78a6147..50572662e 100644
--- a/java.j2seproject/src/org/netbeans/modules/java/j2seproject/J2SEProjectUtil.java
+++ b/java.j2seproject/src/org/netbeans/modules/java/j2seproject/J2SEProjectUtil.java
@@ -28,6 +28,7 @@
 import org.netbeans.api.annotations.common.CheckForNull;
 import org.netbeans.api.annotations.common.NonNull;
 import org.netbeans.api.java.classpath.ClassPath;
+import org.netbeans.api.java.source.BuildArtifactMapper;
 import org.netbeans.api.project.Project;
 import org.netbeans.modules.java.api.common.SourceRoots;
 import org.netbeans.modules.java.api.common.project.ProjectProperties;
@@ -136,7 +137,7 @@ public static boolean isCompileOnSaveSupported(final J2SEProject project) {
                 }
             }                    
         }
-        return true;
+        return BuildArtifactMapper.isCompileOnSaveSupported();
     }
 
     public static boolean isCompileOnSaveEnabled(final J2SEProject project) {
diff --git a/java.source.ant/src/org/netbeans/modules/java/source/ant/ProjectRunnerImpl.java b/java.source.ant/src/org/netbeans/modules/java/source/ant/ProjectRunnerImpl.java
index afd505d35..e512f3b44 100644
--- a/java.source.ant/src/org/netbeans/modules/java/source/ant/ProjectRunnerImpl.java
+++ b/java.source.ant/src/org/netbeans/modules/java/source/ant/ProjectRunnerImpl.java
@@ -89,6 +89,7 @@
 import org.netbeans.api.java.queries.BinaryForSourceQuery;
 import org.netbeans.api.java.queries.SourceLevelQuery;
 import org.netbeans.api.java.queries.UnitTestForSourceQuery;
+import org.netbeans.api.java.source.BuildArtifactMapper;
 import org.netbeans.api.java.source.SourceUtils;
 import org.netbeans.api.project.ProjectManager;
 import org.netbeans.modules.java.source.indexing.JavaIndex;
@@ -121,7 +122,8 @@
     private static final RequestProcessor RP = new RequestProcessor(ProjectRunnerImpl.class);
     
     public boolean isSupported(String command, Map<String, ?> properties) {
-        return locateScript(command) != null;
+        return BuildArtifactMapper.isCompileOnSaveSupported() &&
+               locateScript(command) != null;
     }
 
     @Override
diff --git a/java.source.base/apichanges.xml b/java.source.base/apichanges.xml
index 6c3399692..74d704635 100644
--- a/java.source.base/apichanges.xml
+++ b/java.source.base/apichanges.xml
@@ -25,6 +25,19 @@
     <apidef name="javasource_base">Java Source API</apidef>
 </apidefs>
 <changes>
+    <change id="BuildArtifactMapper.isCompileOnSaveSupported">
+        <api name="javasource_base"/>
+        <summary>Check the var type variable in given tree path.</summary>
+        <version major="1" minor="2.32"/>
+        <date day="20" month="4" year="2018"/>
+        <author login="jlahoda"/>
+        <compatibility addition="yes" binary="compatible" source="compatible"/>
+        <description>
+            Added BuildArtifactMapper.isCompileOnSaveSupported method, which
+            checks if compile on save is suported in the current configuration.
+        </description>
+        <class name="TreeUtilities" package="org.netbeans.api.java.source"/>
+    </change>
     <change id="TreeUtilities.isVarType">
         <api name="javasource_base"/>
         <summary>Check the var type variable in given tree path.</summary>
diff --git a/java.source.base/manifest.mf b/java.source.base/manifest.mf
index 09331a82a..2f062f8d7 100644
--- a/java.source.base/manifest.mf
+++ b/java.source.base/manifest.mf
@@ -1,5 +1,5 @@
 Manifest-Version: 1.0
 OpenIDE-Module: org.netbeans.modules.java.source.base
-OpenIDE-Module-Implementation-Version: 2
+OpenIDE-Module-Implementation-Version: 4
 OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/java/source/base/Bundle.properties
 OpenIDE-Module-Layer: org/netbeans/modules/java/source/base/layer.xml
diff --git a/java.source.base/nbproject/project.properties b/java.source.base/nbproject/project.properties
index 406c43054..4204ad420 100644
--- a/java.source.base/nbproject/project.properties
+++ b/java.source.base/nbproject/project.properties
@@ -23,7 +23,7 @@ javadoc.name=Java Source Base
 javadoc.title=Java Source Base
 javadoc.arch=${basedir}/arch.xml
 javadoc.apichanges=${basedir}/apichanges.xml
-spec.version.base=2.31.0
+spec.version.base=2.32.0
 test.qa-functional.cp.extra=${refactoring.java.dir}/modules/ext/nb-javac-api.jar
 test.unit.run.cp.extra=${o.n.core.dir}/core/core.jar:\
     ${o.n.core.dir}/lib/boot.jar:\
diff --git a/java.source.base/src/org/netbeans/api/java/source/BuildArtifactMapper.java b/java.source.base/src/org/netbeans/api/java/source/BuildArtifactMapper.java
index b0f791ca9..e29b5c844 100644
--- a/java.source.base/src/org/netbeans/api/java/source/BuildArtifactMapper.java
+++ b/java.source.base/src/org/netbeans/api/java/source/BuildArtifactMapper.java
@@ -71,5 +71,14 @@ public static void removeArtifactsUpdatedListener(@NonNull URL sourceRoot, @NonN
          */
         public void artifactsUpdated(@NonNull Iterable<File> artifacts);
     }
-    
+
+    /**
+     * Checks if compile on save is supported in the current configuration.
+     *
+     * @return true iff compile on save is supported in this run.
+     * @since 2.32
+     */
+    public static boolean isCompileOnSaveSupported() {
+        return BuildArtifactMapperImpl.isCompileOnSaveSupported();
+    }
 }
diff --git a/java.source.base/src/org/netbeans/modules/java/source/indexing/JavaCustomIndexer.java b/java.source.base/src/org/netbeans/modules/java/source/indexing/JavaCustomIndexer.java
index 8e5a3b0b5..74f296102 100644
--- a/java.source.base/src/org/netbeans/modules/java/source/indexing/JavaCustomIndexer.java
+++ b/java.source.base/src/org/netbeans/modules/java/source/indexing/JavaCustomIndexer.java
@@ -109,6 +109,7 @@
 import org.openide.filesystems.FileObject;
 import org.openide.filesystems.FileUtil;
 import org.openide.filesystems.URLMapper;
+import org.openide.modules.InstalledFileLocator;
 import org.openide.util.Exceptions;
 //import org.openide.util.NbBundle;
 import org.openide.util.Pair;
@@ -130,6 +131,7 @@
     private static final String APT_SOURCE_OUTPUT = "apSrcOut"; //NOI18N
     private static final Pattern ANONYMOUS = Pattern.compile("\\$[0-9]"); //NOI18N
     private static final ClassPath EMPTY = ClassPathSupport.createClassPath(new URL[0]);
+    private static final String PROP_JAVAC_VERSION = "javac.version"; //NOI18N
 
     @Override
     protected void index(final Iterable<? extends Indexable> files, final Context context) {
@@ -1306,6 +1308,18 @@ private static File dumpHeap(@NonNull final String path) {
 
     private static Pair<Object,Method> heapDumper;
 
+    private static String computeJavacVersion() {
+        if (NoJavacHelper.hasNbJavac()) {
+            File nbJavac = InstalledFileLocator.getDefault().locate("modules/ext/nb-javac-impl.jar", null, false);
+            if (nbJavac != null) {
+                return String.valueOf(nbJavac.lastModified());
+            }
+            return "-1";
+        } else {
+            return System.getProperty("java.vm.version", "unknown");
+        }
+    }
+
     private static class FilterOutJDK7AndLaterWarnings implements Comparable<Diagnostic<? extends JavaFileObject>> {
         @Override public int compareTo(Diagnostic<? extends JavaFileObject> o) {
             return JDK7AndLaterWarnings.contains(o.getCode()) ? 0 : -1;
@@ -1418,6 +1432,10 @@ public Boolean call() throws Exception {
                 JavaIndex.LOG.fine("forcing reindex due to dirty root"); //NOI18N
                 vote = false;
             }
+            if (JavaIndex.ensureAttributeValue(ctx.getRootURI(), PROP_JAVAC_VERSION, computeJavacVersion())) {
+                JavaIndex.LOG.fine("forcing reindex due to nb-javac status change"); //NOI18N
+                vote = false;
+            }
             if (!JavaFileFilterListener.getDefault().startListeningOn(ctx.getRoot())) {
                 JavaIndex.LOG.fine("Forcing reindex due to changed JavaFileFilter"); // NOI18N
                 vote = false;
diff --git a/java.source.base/src/org/netbeans/modules/java/source/usages/BuildArtifactMapperImpl.java b/java.source.base/src/org/netbeans/modules/java/source/usages/BuildArtifactMapperImpl.java
index c082cb963..728003c62 100644
--- a/java.source.base/src/org/netbeans/modules/java/source/usages/BuildArtifactMapperImpl.java
+++ b/java.source.base/src/org/netbeans/modules/java/source/usages/BuildArtifactMapperImpl.java
@@ -58,6 +58,7 @@
 import org.netbeans.api.queries.VisibilityQuery;
 import org.netbeans.modules.java.preprocessorbridge.api.CompileOnSaveActionQuery;
 import org.netbeans.modules.java.preprocessorbridge.spi.CompileOnSaveAction;
+import org.netbeans.modules.java.source.NoJavacHelper;
 import org.netbeans.modules.java.source.indexing.COSSynchronizingIndexer;
 import org.netbeans.modules.java.source.indexing.JavaIndex;
 import org.netbeans.modules.java.source.parsing.FileObjects;
@@ -475,6 +476,10 @@ private static String slashify(String path) {
         }
     }
 
+    public static boolean isCompileOnSaveSupported() {
+        return NoJavacHelper.hasNbJavac();
+    }
+
     @org.openide.util.lookup.ServiceProvider(service=org.netbeans.spi.queries.FileBuiltQueryImplementation.class, position=1000)
     public static final class FileBuildQueryImpl implements FileBuiltQueryImplementation {
 
diff --git a/java.source/src/org/netbeans/modules/java/source/JBrowseModule.java b/java.source/src/org/netbeans/modules/java/source/JBrowseModule.java
index ebc853a36..a1af8bd43 100644
--- a/java.source/src/org/netbeans/modules/java/source/JBrowseModule.java
+++ b/java.source/src/org/netbeans/modules/java/source/JBrowseModule.java
@@ -63,7 +63,8 @@ public JBrowseModule() {
                                  "<li>run NetBeans on JDK 9 or later</li>" +
                              "</ul>",
         "BN_Install=Install nb-javac",
-        "DN_nbjavac=nb-javac library"
+        "DN_nbjavac=nb-javac library",
+        "DESC_InstallNbJavac=It is recommended to install nb-javac Library to improve Java editing experience and enable compile on save."
     })
     public void restored() {
         WindowManager.getDefault().invokeWhenUIReady(() -> {
@@ -84,7 +85,7 @@ public void restored() {
                 }
 
                 if (!NoJavacHelper.hasNbJavac()) {
-                    NotificationDisplayer.getDefault().notify("Install nb-javac Library", ImageUtilities.loadImageIcon("/org/netbeans/modules/java/source/resources/icons/warning.png", false), "It is recommended to install nb-javac Library to improve Java editing experience.", evt -> {
+                    NotificationDisplayer.getDefault().notify("Install nb-javac Library", ImageUtilities.loadImageIcon("/org/netbeans/modules/java/source/resources/icons/warning.png", false), Bundle.DESC_InstallNbJavac(), evt -> {
                         PluginManager.installSingle("org.netbeans.modules.nbjavac", Bundle.DN_nbjavac());
                     }, prefs.getBoolean(KEY_WARNING_SHOWN, false) ? Priority.SILENT : Priority.HIGH);
                     prefs.putBoolean(KEY_WARNING_SHOWN, true);
diff --git a/maven/nbproject/project.xml b/maven/nbproject/project.xml
index e01d50661..8dfbd3398 100644
--- a/maven/nbproject/project.xml
+++ b/maven/nbproject/project.xml
@@ -201,7 +201,7 @@
                     <build-prerequisite/>
                     <compile-dependency/>
                     <run-dependency>
-                        <specification-version>1.0</specification-version>
+                        <specification-version>2.32</specification-version>
                     </run-dependency>
                 </dependency>
                 <dependency>
diff --git a/maven/src/org/netbeans/modules/maven/api/execute/RunUtils.java b/maven/src/org/netbeans/modules/maven/api/execute/RunUtils.java
index 8e5119a7f..4a35dfcff 100644
--- a/maven/src/org/netbeans/modules/maven/api/execute/RunUtils.java
+++ b/maven/src/org/netbeans/modules/maven/api/execute/RunUtils.java
@@ -25,6 +25,7 @@
 import javax.swing.JFrame;
 import javax.swing.SwingUtilities;
 import org.netbeans.api.annotations.common.CheckForNull;
+import org.netbeans.api.java.source.BuildArtifactMapper;
 import org.netbeans.api.project.Project;
 import org.netbeans.modules.maven.api.Constants;
 import org.netbeans.modules.maven.execute.BeanRunConfig;
@@ -128,7 +129,7 @@ public static boolean isCompileOnSaveEnabled(Project prj) {
         if (cos == null) {
             cos = "all";
         }
-        return !"none".equalsIgnoreCase(cos);    
+        return !"none".equalsIgnoreCase(cos) && BuildArtifactMapper.isCompileOnSaveSupported();
     }
     
     public static boolean isCompileOnSaveEnabled(RunConfig config) {
diff --git a/maven/src/org/netbeans/modules/maven/customizer/CompilePanel.java b/maven/src/org/netbeans/modules/maven/customizer/CompilePanel.java
index d0d7acaed..71948fa82 100644
--- a/maven/src/org/netbeans/modules/maven/customizer/CompilePanel.java
+++ b/maven/src/org/netbeans/modules/maven/customizer/CompilePanel.java
@@ -46,6 +46,7 @@
 import org.netbeans.api.java.platform.JavaPlatformManager;
 import org.netbeans.api.java.platform.PlatformsCustomizer;
 import org.netbeans.api.java.platform.Specification;
+import org.netbeans.api.java.source.BuildArtifactMapper;
 import org.netbeans.api.project.Project;
 import org.netbeans.modules.java.api.common.util.CommonProjectUtils;
 import org.netbeans.modules.maven.api.Constants;
@@ -114,6 +115,10 @@ public void actionPerformed(ActionEvent e) {
     }
 
     private void initValues() {
+        boolean cosSupported = BuildArtifactMapper.isCompileOnSaveSupported();
+        if (!cosSupported) {
+            cbCompileOnSave.setEnabled(false);
+        }
         new CheckBoxUpdater(cbCompileOnSave) {
             private String modifiedValue;
 
@@ -132,11 +137,14 @@ public void performOperation(POMModel model) {
 
             @Override
             public boolean getDefaultValue() {
-                return true;
+                return cosSupported;
             }
 
             @Override
             public Boolean getValue() {
+                if (!cosSupported) {
+                    return false;
+                }
                 String val = modifiedValue;
                 if (val == null) {
                     val = handle.getRawAuxiliaryProperty(Constants.HINT_COMPILE_ON_SAVE, true);
diff --git a/nashorn.execution/src/org/netbeans/modules/nashorn/execution/actions/ExecJSAction.java b/nashorn.execution/src/org/netbeans/modules/nashorn/execution/actions/ExecJSAction.java
index bc1157eb6..311586c99 100644
--- a/nashorn.execution/src/org/netbeans/modules/nashorn/execution/actions/ExecJSAction.java
+++ b/nashorn.execution/src/org/netbeans/modules/nashorn/execution/actions/ExecJSAction.java
@@ -24,6 +24,7 @@
 import java.beans.PropertyChangeListener;
 import java.io.IOException;
 import java.util.Arrays;
+import java.util.Collections;
 import javax.swing.AbstractAction;
 import javax.swing.Action;
 import javax.swing.JComponent;
@@ -32,6 +33,7 @@
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 import org.netbeans.api.java.platform.JavaPlatform;
+import org.netbeans.api.java.project.runner.JavaRunner;
 import org.netbeans.api.project.FileOwnerQuery;
 import org.netbeans.api.project.Project;
 import org.netbeans.modules.nashorn.execution.NashornPlatform;
@@ -62,7 +64,7 @@ protected ExecJSAction(String name) {
         js = null;
         NashornPlatform.getDefault().addChangeListener(WeakListeners.change(this, NashornPlatform.getDefault()));
         JavaPlatform platform = NashornPlatform.getDefault().getPlatform();
-        setEnabled(platform != null);
+        setEnabled(platform != null && JavaRunner.isSupported(JavaRunner.QUICK_RUN, Collections.<String, Object>emptyMap()));
     }
     
     protected ExecJSAction(String name, FileObject js, String command) {
@@ -70,7 +72,7 @@ protected ExecJSAction(String name, FileObject js, String command) {
         this.js = js;
         KeyStroke actionKeyStroke = getActionKeyStroke(command);
         putValue(Action.ACCELERATOR_KEY, actionKeyStroke);
-        setEnabled(true);
+        setEnabled(JavaRunner.isSupported(command, Collections.<String, Object>emptyMap()));
     }
     
     @Override


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

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

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