This is an automated email from the ASF dual-hosted git repository.
entl pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push:
new 0dfe95f Do not persist breakpoints and watches when debugging through
LSP server.
0dfe95f is described below
commit 0dfe95f624fa6f054441f324d698a6d499d52544
Author: Martin Entlicher <[email protected]>
AuthorDate: Tue Sep 21 14:25:42 2021 +0200
Do not persist breakpoints and watches when debugging through LSP server.
---
.../debugger/breakpoints/PersistenceManager.java | 15 +++++++
.../debug/breakpoints/io/PersistenceManager.java | 15 +++++++
ide/spi.debugger.ui/apichanges.xml | 17 +++++++
ide/spi.debugger.ui/arch.xml | 9 ++++
ide/spi.debugger.ui/manifest.mf | 2 +-
.../modules/debugger/ui/PersistenceManager.java | 15 +++++++
.../jpda/breakpoints/PersistenceManager.java | 15 +++++++
.../nbcode/integration/nbproject/project.xml | 9 ++++
.../nbcode/integration/LspDebuggerOptions.java | 52 ++++++++++++++++++++++
.../integration/VerifyDebuggerPersistence.java | 43 ++++++++++++++++++
java/java.lsp.server/nbproject/project.xml | 2 +-
11 files changed, 192 insertions(+), 2 deletions(-)
diff --git
a/cpplite/cpplite.debugger/src/org/netbeans/modules/cpplite/debugger/breakpoints/PersistenceManager.java
b/cpplite/cpplite.debugger/src/org/netbeans/modules/cpplite/debugger/breakpoints/PersistenceManager.java
index d77c8f2..895e08c 100644
---
a/cpplite/cpplite.debugger/src/org/netbeans/modules/cpplite/debugger/breakpoints/PersistenceManager.java
+++
b/cpplite/cpplite.debugger/src/org/netbeans/modules/cpplite/debugger/breakpoints/PersistenceManager.java
@@ -43,8 +43,17 @@ import org.netbeans.spi.debugger.DebuggerServiceRegistration;
@DebuggerServiceRegistration(types={LazyDebuggerManagerListener.class})
public class PersistenceManager implements LazyDebuggerManagerListener {
+ private boolean areBreakpointsPersisted() {
+ Properties p = Properties.getDefault ().getProperties ("debugger");
+ p = p.getProperties("persistence");
+ return p.getBoolean("breakpoints", true);
+ }
+
@Override
public Breakpoint[] initBreakpoints () {
+ if (!areBreakpointsPersisted()) {
+ return new Breakpoint[]{};
+ }
Properties p = Properties.getDefault ().getProperties ("debugger").
getProperties (DebuggerManager.PROP_BREAKPOINTS);
Breakpoint[] breakpoints = (Breakpoint[]) p.getArray (
@@ -81,6 +90,9 @@ public class PersistenceManager implements
LazyDebuggerManagerListener {
@Override
public void breakpointAdded (Breakpoint breakpoint) {
+ if (!areBreakpointsPersisted()) {
+ return ;
+ }
if (breakpoint instanceof CPPLiteBreakpoint) {
Properties p = Properties.getDefault ().getProperties ("debugger").
getProperties (DebuggerManager.PROP_BREAKPOINTS);
@@ -94,6 +106,9 @@ public class PersistenceManager implements
LazyDebuggerManagerListener {
@Override
public void breakpointRemoved (Breakpoint breakpoint) {
+ if (!areBreakpointsPersisted()) {
+ return ;
+ }
if (breakpoint instanceof CPPLiteBreakpoint) {
Properties p = Properties.getDefault ().getProperties ("debugger").
getProperties (DebuggerManager.PROP_BREAKPOINTS);
diff --git
a/ide/javascript2.debug/src/org/netbeans/modules/javascript2/debug/breakpoints/io/PersistenceManager.java
b/ide/javascript2.debug/src/org/netbeans/modules/javascript2/debug/breakpoints/io/PersistenceManager.java
index 828595a..c8034fe 100644
---
a/ide/javascript2.debug/src/org/netbeans/modules/javascript2/debug/breakpoints/io/PersistenceManager.java
+++
b/ide/javascript2.debug/src/org/netbeans/modules/javascript2/debug/breakpoints/io/PersistenceManager.java
@@ -50,6 +50,12 @@ public class PersistenceManager implements
LazyDebuggerManagerListener {
private static final String JS_PROPERTY = "JS";
+ private boolean areBreakpointsPersisted() {
+ Properties p = Properties.getDefault ().getProperties ("debugger");
+ p = p.getProperties("persistence");
+ return p.getBoolean("breakpoints", true);
+ }
+
@Override
public String[] getProperties() {
return new String [] {
@@ -60,6 +66,9 @@ public class PersistenceManager implements
LazyDebuggerManagerListener {
@Override
public Breakpoint[] initBreakpoints() {
+ if (!areBreakpointsPersisted()) {
+ return new Breakpoint[]{};
+ }
Properties p = Properties.getDefault ().getProperties ("debugger").
getProperties (DebuggerManager.PROP_BREAKPOINTS);
Breakpoint[] breakpoints = (Breakpoint[]) p.getArray (
@@ -85,6 +94,9 @@ public class PersistenceManager implements
LazyDebuggerManagerListener {
@Override
public void breakpointAdded(Breakpoint breakpoint) {
+ if (!areBreakpointsPersisted()) {
+ return ;
+ }
if (breakpoint instanceof JSLineBreakpoint) {
Properties p = Properties.getDefault ().getProperties ("debugger").
getProperties (DebuggerManager.PROP_BREAKPOINTS);
@@ -98,6 +110,9 @@ public class PersistenceManager implements
LazyDebuggerManagerListener {
@Override
public void breakpointRemoved(Breakpoint breakpoint) {
+ if (!areBreakpointsPersisted()) {
+ return ;
+ }
if (breakpoint instanceof JSLineBreakpoint) {
Properties p = Properties.getDefault ().getProperties ("debugger").
getProperties (DebuggerManager.PROP_BREAKPOINTS);
diff --git a/ide/spi.debugger.ui/apichanges.xml
b/ide/spi.debugger.ui/apichanges.xml
index 90170b2..9c01659 100644
--- a/ide/spi.debugger.ui/apichanges.xml
+++ b/ide/spi.debugger.ui/apichanges.xml
@@ -276,6 +276,23 @@
<class package="org.netbeans.spi.debugger.ui" name="DebuggingView"/>
</change>
+ <change id="debugger.persistence">
+ <api name="DebuggerCoreSPI"/>
+ <summary>Add a way not to persist breakpoints and watches.</summary>
+ <version major="2" minor="72"/>
+ <date day="04" month="10" year="2021"/>
+ <author login="entlicher"/>
+ <compatibility binary="compatible" source="compatible" addition="yes"
semantic="compatible"/>
+ <description>
+ Class <code>org.netbeans.api.debugger.Properties</code> is used to
persistently store
+ debugger settings. In order to be able to decide which particular
settings should be
+ persistent and which not, <code>debugger.persistence</code>
properties namespace is
+ introduced. In particular,
<code>debugger.persistence.breakpoints</code> boolean property
+ determines the persistence of breakpoints and
<code>debugger.persistence.watches</code>
+ boolean property determines the persistence of watches.
+ </description>
+ </change>
+
</changes>
<!-- Now the surrounding HTML text and document structure: -->
diff --git a/ide/spi.debugger.ui/arch.xml b/ide/spi.debugger.ui/arch.xml
index 0d02f57..f4ae30a 100644
--- a/ide/spi.debugger.ui/arch.xml
+++ b/ide/spi.debugger.ui/arch.xml
@@ -110,6 +110,15 @@ Registrations in standard Lookup:
<li><api
name="org.netbeans.spi.debugger.ui.BreakpointType.ContextAware.createService"
group="lookup" type="import" category="official"
url="@org-netbeans-api-debugger@"/> Loads all breakpoint type providers.</li>
<li><api
name="org.netbeans.modules.debugger.ui.registry.ColumnModelContextAware.createService"
group="lookup" type="import" category="official"
url="@org-netbeans-api-debugger@"/> Loads all column models registered for
specific view (according to the path).</li>
</ul>
+Persistent properties stored through org.netbeans.api.debugger.Properties:
+<ul>
+<li><api name="debugger" group="property" type="export" category="official"
url="@org-netbeans-api-debugger@"/>The main namespace for debugger
properties.</li>
+<li><api name="debugger.persistence" group="property" type="import"
category="official" url="@org-netbeans-api-debugger@"/>The main namespace for
debugger persistence settings. Used for configuration of individual services to
determine what is to be stored persistently.</li>
+<li><api name="debugger.persistence.watches" group="property" type="import"
category="official" url="@org-netbeans-api-debugger@"/>This property may
contain a boolean value that determines whether a list of watches should be
stored persistently. True when undefined.</li>
+<li><api name="debugger.persistence.breakpoints" group="property"
type="import" category="official" url="@org-netbeans-api-debugger@"/>This
property may contain a boolean value that determines whether a list of
breakpoints should be stored persistently. True when undefined.</li>
+<li><api name="debugger.watches" group="property" type="import"
category="private"/>This property contains a list of watches.</li>
+<li><api name="debugger.breakpoints" group="property" type="import"
category="official"/>This property contains a list of breakpoints</li>
+</ul>
</answer>
diff --git a/ide/spi.debugger.ui/manifest.mf b/ide/spi.debugger.ui/manifest.mf
index 2918624..4671e0b 100644
--- a/ide/spi.debugger.ui/manifest.mf
+++ b/ide/spi.debugger.ui/manifest.mf
@@ -2,6 +2,6 @@ Manifest-Version: 1.0
OpenIDE-Module: org.netbeans.spi.debugger.ui/1
OpenIDE-Module-Localizing-Bundle:
org/netbeans/modules/debugger/ui/Bundle.properties
OpenIDE-Module-Layer: org/netbeans/modules/debugger/resources/mf-layer.xml
-OpenIDE-Module-Specification-Version: 2.71
+OpenIDE-Module-Specification-Version: 2.72
OpenIDE-Module-Provides: org.netbeans.spi.debugger.ui
OpenIDE-Module-Install: org/netbeans/modules/debugger/ui/DebuggerModule.class
diff --git
a/ide/spi.debugger.ui/src/org/netbeans/modules/debugger/ui/PersistenceManager.java
b/ide/spi.debugger.ui/src/org/netbeans/modules/debugger/ui/PersistenceManager.java
index bb5ed6b..ed3ab54 100644
---
a/ide/spi.debugger.ui/src/org/netbeans/modules/debugger/ui/PersistenceManager.java
+++
b/ide/spi.debugger.ui/src/org/netbeans/modules/debugger/ui/PersistenceManager.java
@@ -44,7 +44,16 @@ public class PersistenceManager implements
LazyDebuggerManagerListener {
return new Breakpoint [0];
}
+ private boolean areWatchesPersisted() {
+ Properties p = Properties.getDefault ().getProperties ("debugger");
+ p = p.getProperties("persistence");
+ return p.getBoolean("watches", true);
+ }
+
public void initWatches () {
+ if (!areWatchesPersisted()) {
+ return ;
+ }
// As a side-effect, creates the watches. WatchesReader is triggered.
Properties p = Properties.getDefault ().getProperties ("debugger");
Watch[] watches = (Watch[]) p.getArray (
@@ -74,6 +83,9 @@ public class PersistenceManager implements
LazyDebuggerManagerListener {
}
public void watchAdded (Watch watch) {
+ if (!areWatchesPersisted()) {
+ return ;
+ }
Properties p = Properties.getDefault ().getProperties ("debugger");
p.setArray (
DebuggerManager.PROP_WATCHES,
@@ -87,6 +99,9 @@ public class PersistenceManager implements
LazyDebuggerManagerListener {
}
public void watchRemoved (Watch watch) {
+ if (!areWatchesPersisted()) {
+ return ;
+ }
Properties p = Properties.getDefault ().getProperties ("debugger");
p.setArray (
DebuggerManager.PROP_WATCHES,
diff --git
a/java/debugger.jpda/src/org/netbeans/modules/debugger/jpda/breakpoints/PersistenceManager.java
b/java/debugger.jpda/src/org/netbeans/modules/debugger/jpda/breakpoints/PersistenceManager.java
index e662b1c..f4aaaa6 100644
---
a/java/debugger.jpda/src/org/netbeans/modules/debugger/jpda/breakpoints/PersistenceManager.java
+++
b/java/debugger.jpda/src/org/netbeans/modules/debugger/jpda/breakpoints/PersistenceManager.java
@@ -63,8 +63,17 @@ public class PersistenceManager implements
LazyDebuggerManagerListener {
instanceRef = new WeakReference<PersistenceManager>(this);
}
+ private boolean areBreakpointsPersisted() {
+ Properties p = Properties.getDefault ().getProperties ("debugger");
+ p = p.getProperties("persistence");
+ return p.getBoolean("breakpoints", true);
+ }
+
@Override
public synchronized Breakpoint[] initBreakpoints () {
+ if (!areBreakpointsPersisted()) {
+ return new Breakpoint[]{};
+ }
Properties p = Properties.getDefault ().getProperties ("debugger").
getProperties (DebuggerManager.PROP_BREAKPOINTS);
Breakpoint[] breakpoints = (Breakpoint[]) p.getArray (
@@ -126,6 +135,9 @@ public class PersistenceManager implements
LazyDebuggerManagerListener {
@Override
public void breakpointAdded (Breakpoint breakpoint) {
+ if (!areBreakpointsPersisted()) {
+ return ;
+ }
if (breakpoint instanceof JPDABreakpoint &&
!((JPDABreakpoint) breakpoint).isHidden ()) {
synchronized (this) {
@@ -145,6 +157,9 @@ public class PersistenceManager implements
LazyDebuggerManagerListener {
@Override
public void breakpointRemoved (Breakpoint breakpoint) {
+ if (!areBreakpointsPersisted()) {
+ return ;
+ }
if (breakpoint instanceof JPDABreakpoint &&
!((JPDABreakpoint) breakpoint).isHidden ()) {
synchronized (this) {
diff --git a/java/java.lsp.server/nbcode/integration/nbproject/project.xml
b/java/java.lsp.server/nbcode/integration/nbproject/project.xml
index 4c03c50..0d70dff 100644
--- a/java/java.lsp.server/nbcode/integration/nbproject/project.xml
+++ b/java/java.lsp.server/nbcode/integration/nbproject/project.xml
@@ -35,6 +35,15 @@
</run-dependency>
</dependency>
<dependency>
+ <code-name-base>org.netbeans.api.debugger</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <release-version>1</release-version>
+ <specification-version>1.64</specification-version>
+ </run-dependency>
+ </dependency>
+ <dependency>
<code-name-base>org.netbeans.api.progress</code-name-base>
<build-prerequisite/>
<compile-dependency/>
diff --git
a/java/java.lsp.server/nbcode/integration/src/org/netbeans/modules/nbcode/integration/LspDebuggerOptions.java
b/java/java.lsp.server/nbcode/integration/src/org/netbeans/modules/nbcode/integration/LspDebuggerOptions.java
new file mode 100644
index 0000000..acc8312
--- /dev/null
+++
b/java/java.lsp.server/nbcode/integration/src/org/netbeans/modules/nbcode/integration/LspDebuggerOptions.java
@@ -0,0 +1,52 @@
+/*
+ * 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.nbcode.integration;
+
+import org.netbeans.api.debugger.Properties;
+import org.netbeans.spi.debugger.DebuggerServiceRegistration;
+
+/**
+ * Set the default debugger persistence to false.
+ *
+ * @author Martin Entlicher
+ */
+@DebuggerServiceRegistration(types={org.netbeans.api.debugger.Properties.Initializer.class})
+public class LspDebuggerOptions implements Properties.Initializer {
+
+ private static final String PERSISTENCE_BREAKPOINTS =
"debugger.persistence.breakpoints"; // NOI18N
+ private static final String PERSISTENCE_WATCHES =
"debugger.persistence.watches"; // NOI18N
+
+ @Override
+ public String[] getSupportedPropertyNames() {
+ return new String[] {
+ PERSISTENCE_BREAKPOINTS,
+ PERSISTENCE_WATCHES,
+ };
+ }
+
+ @Override
+ public Object getDefaultPropertyValue(String propertyName) {
+ if (propertyName.startsWith("debugger.persistence")) { // NOI18N
+ return false;
+ } else {
+ return null;
+ }
+ }
+
+}
diff --git
a/java/java.lsp.server/nbcode/integration/test/unit/src/org/netbeans/modules/nbcode/integration/VerifyDebuggerPersistence.java
b/java/java.lsp.server/nbcode/integration/test/unit/src/org/netbeans/modules/nbcode/integration/VerifyDebuggerPersistence.java
new file mode 100644
index 0000000..ac2c637
--- /dev/null
+++
b/java/java.lsp.server/nbcode/integration/test/unit/src/org/netbeans/modules/nbcode/integration/VerifyDebuggerPersistence.java
@@ -0,0 +1,43 @@
+/*
+ * 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.nbcode.integration;
+
+import org.netbeans.api.debugger.Properties;
+import org.netbeans.junit.NbTestCase;
+
+/**
+ * Verify that debugger does not store persistently stuff that is set through
VSCode client.
+ */
+public class VerifyDebuggerPersistence extends NbTestCase {
+
+ public VerifyDebuggerPersistence(String name) {
+ super(name);
+ }
+
+ public void testBreakpointsPersistenceSetting() {
+ boolean p =
Properties.getDefault().getProperties("debugger").getProperties("persistence").getBoolean("breakpoints",
true);
+ assertFalse(p);
+ }
+
+ public void testWatchesPersistenceSetting() {
+ boolean p =
Properties.getDefault().getProperties("debugger").getProperties("persistence").getBoolean("watches",
true);
+ assertFalse(p);
+ }
+
+}
diff --git a/java/java.lsp.server/nbproject/project.xml
b/java/java.lsp.server/nbproject/project.xml
index 6e882ce..0fd387d 100644
--- a/java/java.lsp.server/nbproject/project.xml
+++ b/java/java.lsp.server/nbproject/project.xml
@@ -441,7 +441,7 @@
<compile-dependency/>
<run-dependency>
<release-version>1</release-version>
- <specification-version>2.70</specification-version>
+ <specification-version>2.72</specification-version>
</run-dependency>
</dependency>
<dependency>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists