You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by sd...@apache.org on 2023/01/09 12:18:38 UTC
[netbeans] branch master updated: Autoload default config profiles into ServerInstances.
This is an automated email from the ASF dual-hosted git repository.
sdedic 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 6976f80799 Autoload default config profiles into ServerInstances.
new 0401cc1220 Merge pull request #5226 from sdedic/oci/load-defconfig-profiles2
6976f80799 is described below
commit 6976f80799d225d32c896cf2cea5424e3424978a
Author: Svata Dedic <sv...@oracle.com>
AuthorDate: Fri Jan 6 14:39:17 2023 +0100
Autoload default config profiles into ServerInstances.
---
enterprise/cloud.oracle/manifest.mf | 2 +-
.../modules/cloud/oracle/Bundle.properties | 3 +
.../netbeans/modules/cloud/oracle/OCIManager.java | 198 +++++++++++++++++----
.../modules/cloud/oracle/OCITenancyProvider.java | 13 +-
.../cloud/oracle/OracleCloudWizardProvider.java | 61 ++++++-
.../modules/cloud/oracle/TenancyInstance.java | 11 +-
.../netbeans/modules/cloud/oracle/TenancyNode.java | 2 +-
.../cloud/oracle/actions/RemoveProfileAction.java | 5 +-
.../oracle/actions/SetDefaultProfileAction.java | 2 +-
.../modules/cloud/oracle/Bundle.properties | 9 +-
10 files changed, 257 insertions(+), 49 deletions(-)
diff --git a/enterprise/cloud.oracle/manifest.mf b/enterprise/cloud.oracle/manifest.mf
index 5015a16bc0..2fb6b79a42 100644
--- a/enterprise/cloud.oracle/manifest.mf
+++ b/enterprise/cloud.oracle/manifest.mf
@@ -4,6 +4,6 @@ OpenIDE-Module: org.netbeans.modules.cloud.oracle
OpenIDE-Module-Layer: org/netbeans/modules/cloud/oracle/resources/layer.xml
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/cloud/oracle/Bundle.properties
OpenIDE-Module-Provides: org.netbeans.modules.serverplugins.javaee
-OpenIDE-Module-Specification-Version: 1.4
+OpenIDE-Module-Specification-Version: 1.5
OpenIDE-Module-Display-Category: Cloud
diff --git a/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/Bundle.properties b/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/Bundle.properties
index 1f937b4264..f5a54ab165 100644
--- a/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/Bundle.properties
+++ b/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/Bundle.properties
@@ -22,3 +22,6 @@ ConnectProfilePanel.lblConfig.text=Configuration file:
ConnectProfilePanel.txConfigPath.text=(default configuration)
ConnectProfilePanel.lblMessageIcon.text=\
ConnectProfilePanel.textMessage.text=Checking Oracle Cloud setup...
+
+# Branding API
+OCIManager_Autoload_DefaultConfig=false
diff --git a/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/OCIManager.java b/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/OCIManager.java
index 47a9d4ba46..834cc2de2d 100644
--- a/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/OCIManager.java
+++ b/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/OCIManager.java
@@ -20,6 +20,7 @@ package org.netbeans.modules.cloud.oracle;
import org.netbeans.modules.cloud.oracle.items.OCIItem;
import com.oracle.bmc.ConfigFileReader;
+import com.oracle.bmc.auth.BasicAuthenticationDetailsProvider;
import com.oracle.bmc.auth.ConfigFileAuthenticationDetailsProvider;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
@@ -34,10 +35,13 @@ import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
+import java.util.Set;
import java.util.concurrent.Callable;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -47,9 +51,13 @@ import java.util.stream.Collectors;
import org.netbeans.api.server.properties.InstanceProperties;
import org.netbeans.api.server.properties.InstancePropertiesManager;
import org.netbeans.modules.cloud.oracle.items.TenancyItem;
+import org.openide.filesystems.FileChangeAdapter;
+import org.openide.filesystems.FileChangeListener;
+import org.openide.filesystems.FileEvent;
+import org.openide.filesystems.FileUtil;
import org.openide.util.Exceptions;
-import org.openide.util.NbBundle;
import org.openide.util.Lookup;
+import org.openide.util.NbBundle;
import org.openide.util.NbPreferences;
import org.openide.util.lookup.Lookups;
import org.openide.util.lookup.ProxyLookup;
@@ -62,11 +70,27 @@ import org.openide.util.lookup.ProxyLookup;
public final class OCIManager {
private static final Logger LOG = Logger.getLogger(OCIManager.class.getName());
- private static final Map<OCIConfig, OCIProfile> profiles = new HashMap<>();
-
public static final String PROP_ACTIVE_PROFILE = "activeProfile"; // NOI18N
public static final String PROP_CONNECTED_PROFILES = "connectedProfiles"; // NOI18N
+ /**
+ * Maps all created profiles.
+ */
+ private static final Map<OCIConfig, OCIProfile> profiles = new HashMap<>();
+
+ // @GuardedBy(this)
+ /**
+ * Implicit profiles inferred at runtime. Unitialized initially, will auto-populate
+ * to the default config on first reference, if OCIManager_Autoload_DefaultConfig=true.
+ */
+ private Map<String, List<OCIProfile>> implicitProfiles = new HashMap<>();
+
+ // @GuardedBy(this)
+ /**
+ * Not read, but used to keep the listern from GC.
+ */
+ private FileChangeListener defaultProfileListener;
+
/**
* Configuration for the OCI manager
*/
@@ -216,6 +240,9 @@ public final class OCIManager {
if (configPath == null) {
configPath = getDefaultConfigPath();
}
+ if (profile == null) {
+ profile = OCIProfile.DEFAULT_ID;
+ }
OCIConfig c = new OCIConfig(configPath, profile);
synchronized (profiles) {
prof = profiles.get(c);
@@ -223,10 +250,19 @@ public final class OCIManager {
return prof;
}
}
- prof = new OCIProfile(getDefaultConfigPath(), c.getProfile());
+ OCIProfile newProf = new OCIProfile(getDefaultConfigPath(), c.getProfile());
synchronized (profiles) {
- OCIProfile check = profiles.putIfAbsent(c, prof);
- return check != null ? check : prof;
+ OCIProfile check;
+ if (prof == null) {
+ check = profiles.putIfAbsent(c, newProf);
+ return check != null ? check : newProf;
+ } else {
+ check = profiles.get(c);
+ if (check == null || !check.isValid()) {
+ profiles.put(c, newProf);
+ }
+ return newProf;
+ }
}
}
@@ -241,6 +277,88 @@ public final class OCIManager {
private static final String KEY_CONFIG_PATH = "configPath";
private static final String KEY_PROFILE_ID = "profile";
+ public void setImplicitProfiles(String key, List<OCIProfile> profiles) {
+
+ List<OCIProfile> current = getConnectedProfiles();
+
+ boolean changes = false;
+ OCIProfile active;
+ synchronized (this) {
+ current = new ArrayList<>(implicitProfiles.getOrDefault(key, Collections.emptyList()));
+ for (Iterator<OCIProfile> it = current.iterator(); it.hasNext(); ) {
+ OCIProfile p = it.next();
+ if (!p.isValid()) {
+ it.remove();
+ changes = true;
+ }
+ }
+ changes |= !(current.size() == profiles.size() && current.containsAll(profiles));
+ if (!changes) {
+ return;
+ }
+ current.addAll(profiles);
+ implicitProfiles.put(key, profiles);
+ active = activeProfile;
+ }
+ listeners.firePropertyChange(PROP_CONNECTED_PROFILES, null, null);
+ synchronized (this) {
+ if ((active != null || profiles.isEmpty()) && !current.contains(active)) {
+ return;
+ }
+ activeProfile = null;
+ }
+ listeners.firePropertyChange(PROP_ACTIVE_PROFILE, null, null);
+ }
+
+ static boolean loadDefaultConfigProfiles() {
+ return Boolean.valueOf(NbBundle.getMessage(OCIManager.class, "OCIManager_Autoload_DefaultConfig"));
+ }
+
+ private Map<String, List<OCIProfile>> initImplicitProfiles() {
+ if (!loadDefaultConfigProfiles()) {
+ return implicitProfiles;
+ }
+ Path path = getDefaultConfigPath();
+ String s = path.toString();
+ synchronized (this) {
+ if (implicitProfiles.get(s) != null) {
+ return implicitProfiles;
+ }
+ try {
+ implicitProfiles.put(s, listProfiles(null));
+ } catch (IOException ex) {
+ // TODO: report inability to load profiles.
+ Exceptions.printStackTrace(ex);
+ }
+ FileUtil.addFileChangeListener(defaultProfileListener = new FileChangeAdapter() {
+ @Override
+ public void fileDeleted(FileEvent fe) {
+ refresh();
+ }
+
+ @Override
+ public void fileChanged(FileEvent fe) {
+ refresh();
+ }
+
+ @Override
+ public void fileDataCreated(FileEvent fe) {
+ refresh();
+ }
+
+ private void refresh() {
+ try {
+ setImplicitProfiles(s, listProfiles(null));
+ } catch (IOException ex) {
+ // TODO: display some lightweight unobtrusive message, or status line item
+ Exceptions.printStackTrace(ex);
+ }
+ }
+
+ }, path.toFile());
+ }
+ return implicitProfiles;
+ }
public void addConnectedProfile(OCIProfile profile) {
if (profile.getTenantId() == null) {
@@ -267,7 +385,11 @@ public final class OCIManager {
listeners.firePropertyChange(PROP_ACTIVE_PROFILE, null, null);
}
- public void removeConnectedProfile(OCIProfile profile) {
+ public boolean isConfiguredProfile(OCIProfile profile) {
+ return findProfileProperties(profile) != null;
+ }
+
+ private InstanceProperties findProfileProperties(OCIProfile profile) {
List<InstanceProperties> props = InstancePropertiesManager.getInstance().getProperties("cloud.oracle.com.ociprofiles");
for (InstanceProperties p : props) {
String cfgPath = p.getString(KEY_CONFIG_PATH, null);
@@ -282,30 +404,39 @@ public final class OCIManager {
profName = OCIProfile.DEFAULT_ID;
}
if (profName.equals(profile.getId())) {
- OCIProfile resetToProfile = null;
-
- synchronized (this) {
- OCIConfig cfg = new OCIConfig(profile.getConfigPath(), OCIProfile.DEFAULT_ID.equals(profile.getId()) ? null : profile.getId());
- if (profiles.remove(cfg) == null) {
- return;
- }
- if (profile == getActiveProfile()) {
- OCIProfile def = forConfig(defaultConfigPath, profName);
- if (profiles.values().contains(def) || profiles.isEmpty()) {
- resetToProfile = def;
- } else {
- resetToProfile = profiles.values().iterator().next();
- }
- }
- }
- p.remove();
- if (resetToProfile != null) {
- setActiveProfile(resetToProfile);
- }
- listeners.firePropertyChange("connectedProfiles", null, null);
+ return p;
+ }
+ }
+ return null;
+ }
+
+ public void removeConnectedProfile(OCIProfile profile) {
+ String profName = profile.getId();
+ InstanceProperties p = findProfileProperties(profile);
+ if (p == null) {
+ return;
+ }
+ OCIProfile resetToProfile = null;
+
+ synchronized (this) {
+ OCIConfig cfg = new OCIConfig(profile.getConfigPath(), OCIProfile.DEFAULT_ID.equals(profile.getId()) ? null : profile.getId());
+ if (profiles.remove(cfg) == null) {
return;
}
+ if (profile == getActiveProfile()) {
+ OCIProfile def = forConfig(defaultConfigPath, profName);
+ if (profiles.values().contains(def) || profiles.isEmpty()) {
+ resetToProfile = def;
+ } else {
+ resetToProfile = profiles.values().iterator().next();
+ }
+ }
+ }
+ p.remove();
+ if (resetToProfile != null) {
+ setActiveProfile(resetToProfile);
}
+ listeners.firePropertyChange("connectedProfiles", null, null);
}
/**
@@ -313,7 +444,7 @@ public final class OCIManager {
* @return list of OCI profiles.
*/
public List<OCIProfile> getConnectedProfiles() {
- List<OCIProfile> toReturn = new ArrayList<>();
+ Set<OCIProfile> toReturn = new LinkedHashSet<>();
Path defConfigPath = getDefaultConfigPath();
List<InstanceProperties> props = InstancePropertiesManager.getInstance().getProperties("cloud.oracle.com.ociprofiles");
@@ -335,7 +466,10 @@ public final class OCIManager {
}
toReturn.add(forConfig(defConfigPath, profName));
}
- return toReturn;
+
+ initImplicitProfiles().values().stream().flatMap(l -> l.stream()).forEach(toReturn::add);
+
+ return new ArrayList<>(toReturn);
}
/**
@@ -347,6 +481,10 @@ public final class OCIManager {
if (p != null) {
return p;
}
+ OCIProfile active;
+ synchronized (this) {
+ active = activeProfile;
+ }
if (activeProfile == null) {
Preferences prefs = NbPreferences.forModule(OCIManager.class);
String confPath = prefs.get("activeProfilePath", null);
diff --git a/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/OCITenancyProvider.java b/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/OCITenancyProvider.java
index ea0839618c..2451634c9b 100644
--- a/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/OCITenancyProvider.java
+++ b/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/OCITenancyProvider.java
@@ -129,11 +129,16 @@ public class OCITenancyProvider implements ServerInstanceProvider, ChangeListene
List<ProfileKey> currentKeys = new ArrayList<>();
for (OCIProfile p : OCIManager.getDefault().getConnectedProfiles()) {
ProfileKey k = new ProfileKey(p.getConfigPath(), p.getId(), p.getTenantId());
- if (!newInstances.containsKey(k)) {
- ServerInstance si = ServerInstanceFactory.createServerInstance(new TenancyInstance(
- p.getTenancy().orElse(null), p));
- newInstances.put(k, si);
+ ServerInstance prev = newInstances.get(k);
+ if (prev != null) {
+ OCIProfile prevProf = prev.getLookup().lookup(OCIProfile.class);
+ if (prevProf == null || (prevProf.isValid() != p.isValid())) {
+ continue;
+ }
}
+ ServerInstance si = ServerInstanceFactory.createServerInstance(new TenancyInstance(
+ p.getTenancy().orElse(null), p));
+ newInstances.put(k, si);
currentKeys.add(k);
}
newInstances.keySet().retainAll(currentKeys);
diff --git a/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/OracleCloudWizardProvider.java b/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/OracleCloudWizardProvider.java
index 3c9bef3f35..c35e870524 100644
--- a/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/OracleCloudWizardProvider.java
+++ b/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/OracleCloudWizardProvider.java
@@ -18,6 +18,10 @@
*/
package org.netbeans.modules.cloud.oracle;
+import java.io.IOException;
+import java.util.Collections;
+import java.util.Set;
+import javax.swing.event.ChangeListener;
import org.netbeans.spi.server.ServerWizardProvider;
import org.openide.WizardDescriptor;
import org.openide.util.NbBundle;
@@ -38,7 +42,62 @@ public class OracleCloudWizardProvider implements ServerWizardProvider {
@Override
public WizardDescriptor.InstantiatingIterator getInstantiatingIterator() {
- return new OracleCloudWizardIterator();
+ return OCIManager.loadDefaultConfigProfiles() ?
+ new SimpleIterator() :
+ new OracleCloudWizardIterator();
}
+ private static class SimpleIterator implements WizardDescriptor.InstantiatingIterator {
+
+ @Override
+ public Set instantiate() throws IOException {
+ // force profiles collection
+ OCIManager.getDefault().getConnectedProfiles();
+ return Collections.emptySet();
+ }
+
+ @Override
+ public void initialize(WizardDescriptor wizard) {
+ }
+
+ @Override
+ public void uninitialize(WizardDescriptor wizard) {
+ }
+
+ @Override
+ public WizardDescriptor.Panel current() {
+ return null;
+ }
+
+ @Override
+ public String name() {
+ return Bundle.LBL_OC();
+ }
+
+ @Override
+ public boolean hasNext() {
+ return false;
+ }
+
+ @Override
+ public boolean hasPrevious() {
+ return false;
+ }
+
+ @Override
+ public void nextPanel() {
+ }
+
+ @Override
+ public void previousPanel() {
+ }
+
+ @Override
+ public void addChangeListener(ChangeListener l) {
+ }
+
+ @Override
+ public void removeChangeListener(ChangeListener l) {
+ }
+ }
}
diff --git a/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/TenancyInstance.java b/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/TenancyInstance.java
index 377ef6d7b1..50d05657e1 100644
--- a/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/TenancyInstance.java
+++ b/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/TenancyInstance.java
@@ -22,20 +22,24 @@ import org.netbeans.modules.cloud.oracle.items.OCIItem;
import javax.swing.JComponent;
import org.netbeans.spi.server.ServerInstanceImplementation;
import org.openide.nodes.Node;
+import org.openide.util.Lookup;
import org.openide.util.NbBundle;
+import org.openide.util.lookup.Lookups;
/**
*
* @author Jan Horvath
*/
-public class TenancyInstance implements ServerInstanceImplementation {
+public class TenancyInstance implements ServerInstanceImplementation, Lookup.Provider {
private final OCIItem tenancy;
+ private final Lookup lkp;
final OCIProfile profile;
public TenancyInstance(OCIItem tenancy, OCIProfile profile) {
this.tenancy = tenancy;
this.profile = profile;
+ lkp = tenancy != null ? Lookups.fixed(profile, tenancy) : Lookups.fixed(profile);
}
@NbBundle.Messages({
@@ -59,6 +63,11 @@ public class TenancyInstance implements ServerInstanceImplementation {
}
}
+ @Override
+ public Lookup getLookup() {
+ return lkp;
+ }
+
@Override
public String getServerDisplayName() {
return profile.getTenantId() != null ? profile.getTenantId() : Bundle.MSG_BrokenProfile(profile);
diff --git a/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/TenancyNode.java b/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/TenancyNode.java
index 815e0b81ea..5742b0581b 100644
--- a/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/TenancyNode.java
+++ b/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/TenancyNode.java
@@ -82,7 +82,7 @@ public class TenancyNode extends OCINode implements PropertyChangeListener {
@Override
public boolean canDestroy() {
- return OCIManager.getDefault().getConnectedProfiles().contains(session);
+ return OCIManager.getDefault().isConfiguredProfile((OCIProfile)session);
}
@Override
diff --git a/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/actions/RemoveProfileAction.java b/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/actions/RemoveProfileAction.java
index 0422ab144b..91db6bfc73 100644
--- a/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/actions/RemoveProfileAction.java
+++ b/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/actions/RemoveProfileAction.java
@@ -22,7 +22,6 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import org.netbeans.modules.cloud.oracle.OCIManager;
import org.netbeans.modules.cloud.oracle.OCIProfile;
-import org.netbeans.modules.cloud.oracle.items.OCIItem;
import org.openide.awt.ActionID;
import org.openide.awt.ActionReference;
import org.openide.awt.ActionReferences;
@@ -43,8 +42,8 @@ import org.openide.util.NbBundle;
)
@ActionReferences(value = {
- @ActionReference(path = "Cloud/Oracle/Tenancy/Actions", position = 250),
- @ActionReference(path = "Cloud/Oracle/BrokenProfile/Actions", position = 250)
+ @ActionReference(path = "Cloud/Oracle/Tenancy/Actions", position = 230),
+ @ActionReference(path = "Cloud/Oracle/BrokenProfile/Actions", position = 230)
})
@NbBundle.Messages({
"RemoveProfileAction=Remove Profile"
diff --git a/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/actions/SetDefaultProfileAction.java b/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/actions/SetDefaultProfileAction.java
index e54ff0a790..53bc7c70a4 100644
--- a/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/actions/SetDefaultProfileAction.java
+++ b/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/actions/SetDefaultProfileAction.java
@@ -44,7 +44,7 @@ import org.openide.util.NbBundle;
)
@ActionReferences(value = {
- @ActionReference(path = "Cloud/Oracle/Tenancy/Actions", position = 250)
+ @ActionReference(path = "Cloud/Oracle/Tenancy/Actions", position = 200)
})
@NbBundle.Messages({
"CTL_SetDefaultProfileAction=Set As Default",
diff --git a/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/Bundle.properties b/java/java.lsp.server/nbcode/branding/modules/org-netbeans-modules-cloud-oracle.jar/org/netbeans/modules/cloud/oracle/Bundle.properties
similarity index 50%
copy from enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/Bundle.properties
copy to java/java.lsp.server/nbcode/branding/modules/org-netbeans-modules-cloud-oracle.jar/org/netbeans/modules/cloud/oracle/Bundle.properties
index 1f937b4264..46995e91d7 100644
--- a/enterprise/cloud.oracle/src/org/netbeans/modules/cloud/oracle/Bundle.properties
+++ b/java/java.lsp.server/nbcode/branding/modules/org-netbeans-modules-cloud-oracle.jar/org/netbeans/modules/cloud/oracle/Bundle.properties
@@ -15,10 +15,5 @@
# specific language governing permissions and limitations
# under the License.
-OpenIDE-Module-Name=Oracle Cloud Infrastructure
-DownloadWalletDialog.jLabelInfo.text=Database connections to your Autonomous Database use a secure connection. The wallet file will be required to configure your database clients and tools to access Autonomous Database.\nPlease create a password for this wallet. Some database clients will require that you provide both the wallet and password to connect to your database (other clients will auto-login using the wallet without a password).
-ConnectProfilePanel.lblProfiles.text=Profiles:
-ConnectProfilePanel.lblConfig.text=Configuration file:
-ConnectProfilePanel.txConfigPath.text=(default configuration)
-ConnectProfilePanel.lblMessageIcon.text=\
-ConnectProfilePanel.textMessage.text=Checking Oracle Cloud setup...
+# Autoload default OCI config profiles.
+OCIManager_Autoload_DefaultConfig=true
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists