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/03/16 20:48:10 UTC

[GitHub] matthiasblaesing closed pull request #456: Remove dependency on java.xml.bind module

matthiasblaesing closed pull request #456: Remove dependency on java.xml.bind module
URL: https://github.com/apache/incubator-netbeans/pull/456
 
 
   

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/db.core/src/org/netbeans/modules/db/sql/history/SQLHistory.java b/db.core/src/org/netbeans/modules/db/sql/history/SQLHistory.java
index b3a9c52eb..ada84db4e 100644
--- a/db.core/src/org/netbeans/modules/db/sql/history/SQLHistory.java
+++ b/db.core/src/org/netbeans/modules/db/sql/history/SQLHistory.java
@@ -20,20 +20,14 @@
 package org.netbeans.modules.db.sql.history;
 
 import java.util.*;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
 
-@XmlRootElement(name="history")
 public class SQLHistory implements Set<SQLHistoryEntry> {
     // Public methods are synchronized to protect the backing set from concurrent
     // modifications. The performance penality is considered acceptable, as this
     // history logs SQL execution, so execution time is considered far greater
     // than the overhead for synchronisation.
     
-    @XmlTransient
     private int historyLimit = 100;
-    @XmlElement(name="sql")
     private Set<SQLHistoryEntry> history;
 
     public SQLHistory() {
@@ -145,7 +139,6 @@ public int compare(SQLHistoryEntry o1, SQLHistoryEntry o2) {
         }
     }
     
-    @XmlTransient
     public synchronized int getHistoryLimit() {
         return historyLimit;
     }
diff --git a/db.core/src/org/netbeans/modules/db/sql/history/SQLHistoryEntry.java b/db.core/src/org/netbeans/modules/db/sql/history/SQLHistoryEntry.java
index 8dc394dd7..d3dc575f3 100644
--- a/db.core/src/org/netbeans/modules/db/sql/history/SQLHistoryEntry.java
+++ b/db.core/src/org/netbeans/modules/db/sql/history/SQLHistoryEntry.java
@@ -21,12 +21,7 @@
 import java.text.DateFormat;
 import java.text.ParseException;
 import java.util.Date;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.XmlValue;
 
-@XmlType(name = "sql")
 public class SQLHistoryEntry {
 
     private String url;
@@ -42,21 +37,19 @@ public SQLHistoryEntry(String url, String sql, Date date) {
         this.date = date;
     }
 
-    @XmlTransient
     public Date getDate() {
         return date;
     }
 
-    protected void setDate(Date date) {
+    void setDate(Date date) {
         this.date = date;
     }
 
-    @XmlValue
     public String getSql() {
         return sql;
     }
 
-    protected void setSql(String sql) {
+    void setSql(String sql) {
         if (sql != null) {
             this.sql = sql.trim();
         } else {
@@ -64,37 +57,38 @@ protected void setSql(String sql) {
         }
     }
 
-    @XmlAttribute
     public String getUrl() {
         return url;
     }
 
-    protected void setUrl(String url) {
+    void setUrl(String url) {
         this.url = url;
     }
 
-    @XmlAttribute(name = "date")
-    protected String getDateXMLVariant() {
+    String getDateXMLVariant() {
         if (this.date == null) {
-            return null;
+            return Long.toString(new Date().getTime());
         } else {
             return Long.toString(date.getTime());
         }
     }
 
-    protected void setDateXMLVariant(String value) {
-        try {
-            date = new Date(Long.parseLong(value));
-        } catch (NumberFormatException nfe) {
-            // #152486 - previously date stored in text format
+    void setDateXMLVariant(String value) {
+        if(value == null) {
+            date = new Date();
+        } else {
             try {
-                date = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT).parse(value);
-            } catch (ParseException pe) {
-                // # 152486; Date stored is not parsable, so reset the date to the current timestamp
-                date = new Date();
+                date = new Date(Long.parseLong(value));
+            } catch (NumberFormatException nfe) {
+                // #152486 - previously date stored in text format
+                try {
+                    date = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT).parse(value);
+                } catch (ParseException pe) {
+                    // # 152486; Date stored is not parsable, so reset the date to the current timestamp
+                    date = new Date();
+                }
             }
         }
-
     }
 
     @Override
diff --git a/db.core/src/org/netbeans/modules/db/sql/history/SQLHistoryManager.java b/db.core/src/org/netbeans/modules/db/sql/history/SQLHistoryManager.java
index 2d6eb69de..836a47a7a 100644
--- a/db.core/src/org/netbeans/modules/db/sql/history/SQLHistoryManager.java
+++ b/db.core/src/org/netbeans/modules/db/sql/history/SQLHistoryManager.java
@@ -21,20 +21,25 @@
 import java.beans.PropertyChangeListener;
 import java.beans.PropertyChangeSupport;
 import java.io.IOException;
-import java.io.InputStream;
 import java.io.OutputStream;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Marshaller;
-import javax.xml.bind.Unmarshaller;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
 import org.netbeans.modules.db.sql.execute.ui.SQLHistoryPanel;
 import org.openide.filesystems.FileObject;
 import org.openide.filesystems.FileSystem;
 import org.openide.filesystems.FileUtil;
 import org.openide.util.NbPreferences;
 import org.openide.util.RequestProcessor;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
 
 /**
  *
@@ -48,6 +53,11 @@
     
     private static final String SQL_HISTORY_DIRECTORY = "Databases/SQLHISTORY"; // NOI18N
     private static final String SQL_HISTORY_FILE = "sql_history.xml"; // NOI18N
+    private static final String TAG_HISTORY = "history"; // NOI18N
+    private static final String TAG_SQL = "sql"; // NOI18N
+    private static final String ATTR_DATE = "date"; // NOI18N
+    private static final String ATTR_URL = "url"; // NOI18N
+    private static final String CONTENT_NEWLINE = "\n"; // NOI18N
     private static final Logger LOGGER = Logger.getLogger(SQLHistoryEntry.class.getName());
     private static final RequestProcessor RP = new RequestProcessor(
             SQLHistoryManager.class.getName(), 1, false, false);
@@ -60,20 +70,10 @@
     private final PropertyChangeSupport PROPERTY_CHANGE_SUPPORT =
             new PropertyChangeSupport(this);
     
-    private JAXBContext context;
     private SQLHistory sqlHistory;
 
     protected SQLHistoryManager() {
-        ClassLoader orig = Thread.currentThread().getContextClassLoader();
-        Thread.currentThread().setContextClassLoader(SQLHistoryManager.class.getClassLoader());
-        try {
-            context = JAXBContext.newInstance("org.netbeans.modules.db.sql.history", SQLHistoryManager.class.getClassLoader());
-            loadHistory();
-        } catch (JAXBException ex) {
-            throw new RuntimeException(ex);
-        } finally {
-            Thread.currentThread().setContextClassLoader(orig);
-        }
+        loadHistory();
         Runtime.getRuntime().addShutdownHook(new Thread() {
             @Override
             public void run() {
@@ -103,15 +103,15 @@ protected FileObject getHistoryRoot(boolean create) throws IOException {
         if (historyRootDir != null || create) {
             if (historyRootDir == null) {
                 historyRootDir = FileUtil.createFolder(getConfigRoot(), getRelativeHistoryPath());
-    }
+            }
             FileObject historyRoot = historyRootDir.getFileObject(getHistoryFilename());
 
             if (historyRoot != null || create) {
-                if(historyRoot == null) {
+                if (historyRoot == null) {
                     historyRoot = historyRootDir.createData(getHistoryFilename());
-    }
+                }
                 result = historyRoot;
-    }
+            }
         }
         return result;
     }
@@ -138,15 +138,32 @@ public void saveSQL(SQLHistoryEntry sqlStored) {
     }
 
     private void loadHistory() {
-        try (InputStream is = getHistoryRoot(false).getInputStream()) {
-            Unmarshaller unmarshaller = context.createUnmarshaller();
-            sqlHistory = (SQLHistory) unmarshaller.unmarshal(is);
-            sqlHistory.setHistoryLimit(getListSize());
-        } catch (JAXBException | IOException | RuntimeException ex) {
+        try {
+            sqlHistory = new SQLHistory();
+            FileObject historyFile = getHistoryRoot(false);
+            if(historyFile != null) {
+                DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+                Document doc = db.parse(historyFile.getInputStream());
+                Element rootElement = doc.getDocumentElement();
+                if(TAG_HISTORY.equals(rootElement.getTagName())) {
+                    NodeList sqlNodes = rootElement.getElementsByTagName(TAG_SQL);
+                    for(int i = 0; i < sqlNodes.getLength(); i++) {
+                        Element sql = (Element) sqlNodes.item(i);
+                        SQLHistoryEntry sqe = new SQLHistoryEntry();
+                        sqe.setDateXMLVariant(sql.getAttribute(ATTR_DATE));
+                        sqe.setUrl(sql.getAttribute(ATTR_URL));
+                        sqe.setSql(sql.getTextContent());
+                        sqlHistory.add(sqe);
+                    }
+                }
+            } else {
+                
+            }
+        } catch (IOException | ParserConfigurationException | SAXException ex) {
             sqlHistory = new SQLHistory();
-            sqlHistory.setHistoryLimit(getListSize());
             LOGGER.log(Level.INFO, ex.getMessage());
         }
+        sqlHistory.setHistoryLimit(getListSize());
     }
     
     public void save() {
@@ -193,23 +210,32 @@ public void run() {
                         runAtomicAction(new FileSystem.AtomicAction() {
                     @Override
                     public void run() throws IOException {
-                        OutputStream os = null;
-                        try {
-                            Marshaller marshaller = context.createMarshaller();
-                            os = targetFile.getOutputStream();
-                            marshaller.marshal(sqlHistory, os);
-                        } catch (JAXBException | IOException | RuntimeException ex) {
+                        ;
+                        try (OutputStream os = targetFile.getOutputStream()) {
+                            XMLStreamWriter xsw = XMLOutputFactory
+                                    .newInstance()
+                                    .createXMLStreamWriter(os);
+                            
+                            xsw.writeStartDocument();
+                            xsw.writeCharacters(CONTENT_NEWLINE);
+                            xsw.writeStartElement(TAG_HISTORY);
+                            xsw.writeCharacters(CONTENT_NEWLINE);
+                            for(SQLHistoryEntry sqe: sqlHistory) {
+                                xsw.writeStartElement(TAG_SQL);
+                                xsw.writeAttribute(ATTR_DATE, sqe.getDateXMLVariant());
+                                xsw.writeAttribute(ATTR_URL, sqe.getUrl());
+                                xsw.writeCharacters(sqe.getSql());
+                                xsw.writeEndElement();
+                                xsw.writeCharacters(CONTENT_NEWLINE);
+                            }
+                            xsw.writeEndElement();
+                            xsw.flush();
+                            xsw.close();
+                        } catch (IOException | XMLStreamException ex) {
                             LOGGER.log(Level.INFO, ex.getMessage(), ex);
                         } finally {
-                            try {
-                                if (os != null) {
-                                    os.close();
-                                }
-                                PROPERTY_CHANGE_SUPPORT.firePropertyChange(
-                                        PROP_SAVED, null, null);
-                            } catch (IOException ex) {
-                                LOGGER.log(Level.INFO, null, ex);
-                            }
+                            PROPERTY_CHANGE_SUPPORT.firePropertyChange(
+                                    PROP_SAVED, null, null);
                         }
                     }
                 });
diff --git a/db.core/src/org/netbeans/modules/db/sql/history/jaxb.index b/db.core/src/org/netbeans/modules/db/sql/history/jaxb.index
deleted file mode 100644
index 9e4b7bfee..000000000
--- a/db.core/src/org/netbeans/modules/db/sql/history/jaxb.index
+++ /dev/null
@@ -1,18 +0,0 @@
-# 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.
-SQLHistory
-SQLHistoryEntry
\ No newline at end of file
diff --git a/db.core/test/unit/src/org/netbeans/modules/db/sql/history/SQLHistoryPersistenceManagerTest.java b/db.core/test/unit/src/org/netbeans/modules/db/sql/history/SQLHistoryPersistenceManagerTest.java
index 53a5b26c7..b75ac2cd2 100644
--- a/db.core/test/unit/src/org/netbeans/modules/db/sql/history/SQLHistoryPersistenceManagerTest.java
+++ b/db.core/test/unit/src/org/netbeans/modules/db/sql/history/SQLHistoryPersistenceManagerTest.java
@@ -24,7 +24,7 @@
 import java.io.IOException;
 import java.net.URL;
 import java.util.ArrayList;
-import java.util.Calendar;
+import java.util.Date;
 import java.util.List;
 import java.util.concurrent.Semaphore;
 import java.util.concurrent.TimeUnit;
@@ -49,10 +49,10 @@ public SQLHistoryPersistenceManagerTest(String testName) {
     public void tearDown() throws IOException {
         clearWorkDir();
     }
-
+    
     /** Test testExecuteStatements passes if no exceptions occur. */
     public void testExecuteStatements() throws Exception {
-        SQLHistoryManager testableManager = new SQLHistoryManager() {
+        class TestSQLHistoryManager extends SQLHistoryManager {
 
             @Override
             protected FileObject getConfigRoot() {
@@ -67,15 +67,17 @@ protected FileObject getConfigRoot() {
             protected String getRelativeHistoryPath() {
                 return "";
             }
-            
         };
+        
+        Date refDate = new Date();
+        SQLHistoryManager testableManager = new TestSQLHistoryManager();
         // History does not yet exists as file
         assertNull(testableManager.getHistoryRoot(false));
-        testableManager.getSQLHistory().add(new SQLHistoryEntry("jdbc:// mysql", "select * from TRAVEL.PERSON", Calendar.getInstance().getTime()));
+        testableManager.getSQLHistory().add(new SQLHistoryEntry("jdbc:// mysql", "select * from TRAVEL.PERSON", refDate));
         // History does not yet exists as file
         testableManager.save();
         assertNull(testableManager.getHistoryRoot(false));
-        testableManager.getSQLHistory().add(new SQLHistoryEntry("jdbc:// oracle", "select * from PERSON", Calendar.getInstance().getTime()));
+        testableManager.getSQLHistory().add(new SQLHistoryEntry("jdbc:// oracle", "select * from PERSON", refDate));
         final Semaphore s = new Semaphore(0);
         PropertyChangeListener releasingListener =
                 new PropertyChangeListener() {
@@ -97,6 +99,24 @@ public void propertyChange(PropertyChangeEvent evt) {
         // History file need to exist now!
         assertNotNull(testableManager.getHistoryRoot(false));
         assertTrue(testableManager.getHistoryRoot(false).isData());
+        
+        // Create a second SQLHistoryManager and ensure the content survived
+        // the serialization/deserialization cycle
+        SQLHistoryManager testableManager2 = new TestSQLHistoryManager();
+        assertEquals(2, testableManager2.getSQLHistory().size());
+        List<String> expectedURLs = new ArrayList<>();
+        expectedURLs.add("jdbc:// mysql");
+        expectedURLs.add("jdbc:// oracle");
+        List<String> expectedSQLs = new ArrayList<>();
+        expectedSQLs.add("select * from TRAVEL.PERSON");
+        expectedSQLs.add("select * from PERSON");
+        for(SQLHistoryEntry she: testableManager2.getSQLHistory()) {
+            expectedSQLs.remove(she.getSql());
+            expectedURLs.remove(she.getUrl());
+            assertEquals(refDate, she.getDate());
+        }
+        assertTrue(expectedSQLs.isEmpty());
+        assertTrue(expectedURLs.isEmpty());
     }
 
     /** Tests parsing of date format. */
diff --git a/editor.settings.lib/src/org/netbeans/modules/editor/settings/storage/preferences/ProxyPreferencesImpl.java b/editor.settings.lib/src/org/netbeans/modules/editor/settings/storage/preferences/ProxyPreferencesImpl.java
index 9bc6d22eb..32ca19ca1 100644
--- a/editor.settings.lib/src/org/netbeans/modules/editor/settings/storage/preferences/ProxyPreferencesImpl.java
+++ b/editor.settings.lib/src/org/netbeans/modules/editor/settings/storage/preferences/ProxyPreferencesImpl.java
@@ -25,6 +25,7 @@
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Base64;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.EventObject;
@@ -43,7 +44,6 @@
 import java.util.prefs.PreferenceChangeEvent;
 import java.util.prefs.PreferenceChangeListener;
 import java.util.prefs.Preferences;
-import javax.xml.bind.DatatypeConverter;
 import org.netbeans.modules.editor.settings.storage.api.OverridePreferences;
 import org.netbeans.modules.editor.settings.storage.spi.TypedValue;
 import org.openide.util.WeakListeners;
@@ -282,14 +282,14 @@ public double getDouble(String key, double def) {
 
     @Override
     public void putByteArray(String key, byte[] value) {
-        _put(key, DatatypeConverter.printBase64Binary(value), value.getClass().getName());
+        _put(key, Base64.getEncoder().encodeToString(value), value.getClass().getName());
     }
 
     @Override
     public byte[] getByteArray(String key, byte[] def) {
         String value = get(key, null);
         if (value != null) {
-            byte [] decoded = DatatypeConverter.parseBase64Binary(value);
+            byte [] decoded = Base64.getDecoder().decode(value);
             if (decoded != null) {
                 return decoded;
             }
@@ -476,7 +476,7 @@ public void flush() throws BackingStoreException {
                             delegate.putDouble(key, Double.parseDouble(typedValue.getValue()));
 
                         } else {
-                            delegate.putByteArray(key, DatatypeConverter.parseBase64Binary(typedValue.getValue()));
+                            delegate.putByteArray(key, Base64.getDecoder().decode(typedValue.getValue()));
                         }
                     }
                 }
diff --git a/editor.settings.lib/test/unit/src/org/netbeans/modules/editor/settings/storage/preferences/ProxyPreferencesImplTest.java b/editor.settings.lib/test/unit/src/org/netbeans/modules/editor/settings/storage/preferences/ProxyPreferencesImplTest.java
index 5b862ba8f..5c3d4d02c 100644
--- a/editor.settings.lib/test/unit/src/org/netbeans/modules/editor/settings/storage/preferences/ProxyPreferencesImplTest.java
+++ b/editor.settings.lib/test/unit/src/org/netbeans/modules/editor/settings/storage/preferences/ProxyPreferencesImplTest.java
@@ -32,7 +32,6 @@
 import java.util.prefs.PreferenceChangeEvent;
 import java.util.prefs.PreferenceChangeListener;
 import java.util.prefs.Preferences;
-import static junit.framework.Assert.assertEquals;
 import org.netbeans.junit.NbTestCase;
 import org.netbeans.modules.editor.settings.storage.api.OverridePreferences;
 import org.netbeans.modules.editor.settings.storage.api.MemoryPreferences;
diff --git a/ide/launcher/netbeans.conf b/ide/launcher/netbeans.conf
index 877ea18b0..168ddd92c 100644
--- a/ide/launcher/netbeans.conf
+++ b/ide/launcher/netbeans.conf
@@ -60,7 +60,7 @@ netbeans_default_cachedir="${DEFAULT_CACHEDIR_ROOT}/dev"
 # Concurrent Mark & Sweep garbage collector.
 # (see http://wiki.netbeans.org/FaqGCPauses)
 #
-netbeans_default_options="-J-client -J-Xss2m -J-Xms32m -J-Dnetbeans.logger.console=true -J-ea -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true -J-Dsun.java2d.dpiaware=true -J-Dsun.zip.disableMemoryMapping=true -J-Dplugin.manager.check.updates=false -J-Dnetbeans.extbrowser.manual_chrome_plugin_install=yes -J--add-opens=java.base/java.net=ALL-UNNAMED -J--add-opens=java.base/java.lang.ref=ALL-UNNAMED -J--add-opens=java.base/java.lang=ALL-UNNAMED -J--add-opens=java.base/java.security=ALL-UNNAMED -J--add-opens=java.base/java.util=ALL-UNNAMED -J--add-opens=java.desktop/javax.swing.plaf.basic=ALL-UNNAMED -J--add-opens=java.desktop/javax.swing.text=ALL-UNNAMED -J--add-opens=java.desktop/javax.swing=ALL-UNNAMED -J--add-opens=java.desktop/java.awt=ALL-UNNAMED -J--add-opens=java.desktop/java.awt.event=ALL-UNNAMED -J--add-opens=java.prefs/java.util.prefs=ALL-UNNAMED -J--add-opens=jdk.jshell/jdk.jshell=ALL-UNNAMED -J--add-modules=java.activation,jdk.jshell,java.xml.bind -J--add-exports=java.desktop/sun.awt=ALL-UNNAMED -J--add-exports=java.desktop/java.awt.peer=ALL-UNNAMED -J--add-exports=java.desktop/com.sun.beans.editors=ALL-UNNAMED -J--add-exports=java.desktop/sun.swing=ALL-UNNAMED -J--add-exports=java.desktop/sun.awt.im=ALL-UNNAMED -J--add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED -J--add-exports=java.management/sun.management=ALL-UNNAMED -J--add-exports=java.base/sun.reflect.annotation=ALL-UNNAMED -J--add-exports=jdk.javadoc/com.sun.tools.javadoc.main=ALL-UNNAMED -J-XX:+IgnoreUnrecognizedVMOptions"
+netbeans_default_options="-J-client -J-Xss2m -J-Xms32m -J-Dnetbeans.logger.console=true -J-ea -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true -J-Dsun.java2d.dpiaware=true -J-Dsun.zip.disableMemoryMapping=true -J-Dplugin.manager.check.updates=false -J-Dnetbeans.extbrowser.manual_chrome_plugin_install=yes -J--add-opens=java.base/java.net=ALL-UNNAMED -J--add-opens=java.base/java.lang.ref=ALL-UNNAMED -J--add-opens=java.base/java.lang=ALL-UNNAMED -J--add-opens=java.base/java.security=ALL-UNNAMED -J--add-opens=java.base/java.util=ALL-UNNAMED -J--add-opens=java.desktop/javax.swing.plaf.basic=ALL-UNNAMED -J--add-opens=java.desktop/javax.swing.text=ALL-UNNAMED -J--add-opens=java.desktop/javax.swing=ALL-UNNAMED -J--add-opens=java.desktop/java.awt=ALL-UNNAMED -J--add-opens=java.desktop/java.awt.event=ALL-UNNAMED -J--add-opens=java.prefs/java.util.prefs=ALL-UNNAMED -J--add-opens=jdk.jshell/jdk.jshell=ALL-UNNAMED -J--add-modules=java.activation,jdk.jshell -J--add-exports=java.desktop/sun.awt=ALL-UNNAMED -J--add-exports=java.desktop/java.awt.peer=ALL-UNNAMED -J--add-exports=java.desktop/com.sun.beans.editors=ALL-UNNAMED -J--add-exports=java.desktop/sun.swing=ALL-UNNAMED -J--add-exports=java.desktop/sun.awt.im=ALL-UNNAMED -J--add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED -J--add-exports=java.management/sun.management=ALL-UNNAMED -J--add-exports=java.base/sun.reflect.annotation=ALL-UNNAMED -J--add-exports=jdk.javadoc/com.sun.tools.javadoc.main=ALL-UNNAMED -J-XX:+IgnoreUnrecognizedVMOptions"
 
 # Default location of JDK:
 # (set by installer or commented out if launcher should decide)


 

----------------------------------------------------------------
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