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