aboutsummaryrefslogtreecommitdiffstats
path: root/common/onap-common-configuration-management/onap-configuration-management-cli
diff options
context:
space:
mode:
Diffstat (limited to 'common/onap-common-configuration-management/onap-configuration-management-cli')
-rw-r--r--common/onap-common-configuration-management/onap-configuration-management-cli/pom.xml55
-rw-r--r--common/onap-common-configuration-management/onap-configuration-management-cli/src/main/java/org/onap/config/cli/app/Configuration.java119
-rw-r--r--common/onap-common-configuration-management/onap-configuration-management-cli/src/main/java/org/onap/config/gui/app/Configuration.java623
3 files changed, 797 insertions, 0 deletions
diff --git a/common/onap-common-configuration-management/onap-configuration-management-cli/pom.xml b/common/onap-common-configuration-management/onap-configuration-management-cli/pom.xml
new file mode 100644
index 0000000000..f242fcc5d9
--- /dev/null
+++ b/common/onap-common-configuration-management/onap-configuration-management-cli/pom.xml
@@ -0,0 +1,55 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.onap.sdc.common</groupId>
+ <name>onap-configuration-management-cli</name>
+ <artifactId>onap-configuration-management-cli</artifactId>
+
+ <parent>
+ <artifactId>onap-common-configuration-management</artifactId>
+ <groupId>org.onap.sdc.common</groupId>
+ <version>1.2.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.onap.sdc.common</groupId>
+ <artifactId>onap-configuration-management-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>tools</groupId>
+ <artifactId>tools</artifactId>
+ <version>1.8</version>
+ <optional>true</optional>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-shade-plugin</artifactId>
+ <version>1.5</version>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>shade</goal>
+ </goals>
+ <configuration>
+ <transformers>
+ <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+ <mainClass>org.onap.config.gui.app.Configuration</mainClass>
+ </transformer>
+ </transformers>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/common/onap-common-configuration-management/onap-configuration-management-cli/src/main/java/org/onap/config/cli/app/Configuration.java b/common/onap-common-configuration-management/onap-configuration-management-cli/src/main/java/org/onap/config/cli/app/Configuration.java
new file mode 100644
index 0000000000..d1a93f0041
--- /dev/null
+++ b/common/onap-common-configuration-management/onap-configuration-management-cli/src/main/java/org/onap/config/cli/app/Configuration.java
@@ -0,0 +1,119 @@
+package org.onap.config.cli.app;
+
+import org.onap.config.api.ConfigurationChangeListener;
+import org.onap.config.api.ConfigurationManager;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.management.JMX;
+import javax.management.MBeanServerConnection;
+import javax.management.ObjectName;
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXConnectorFactory;
+import javax.management.remote.JMXServiceURL;
+
+/**
+ * The type Configuration.
+ */
+public class Configuration {
+
+ /**
+ * The entry point of application.
+ *
+ * @param args the input arguments
+ * @throws Exception the exception
+ */
+ public static void main(String[] args) throws Exception {
+
+ String host = getValueFor("host", args);
+ String port = getValueFor("port", args);
+
+ if (host == null) {
+ host = "127.0.0.1";
+ }
+ if (port == null) {
+ port = "9999";
+ }
+ JMXServiceURL url =
+ new JMXServiceURL("service:jmx:rmi:///jndi/rmi://" + host + ":" + port + "/jmxrmi");
+ Map<String, String[]> env = new HashMap<>();
+ //populate dummy value. need to be changed as per impl.
+ String[] credentials = {"principal", "password"};
+ env.put(JMXConnector.CREDENTIALS, credentials);
+
+ try (JMXConnector jmxc = JMXConnectorFactory.connect(url, env)) {
+
+ boolean isUpdate = isKeyPresent("update", args);
+
+ Map<String, Object> input = new HashMap<>();
+ input.put("ImplClass", isUpdate ? "org.onap.config.type.ConfigurationUpdate"
+ : "org.onap.config.type.ConfigurationQuery");
+ input.put("externalLookup", isKeyPresent("lookup", args));
+ input.put("nodeOverride", isKeyPresent("nodeOverride", args));
+ input.put("nodeSpecific", isKeyPresent("nodeSpecific", args));
+ input.put("fallback", isKeyPresent("fallback", args));
+ input.put("latest", isKeyPresent("latest", args));
+ input.put("tenant", getValueFor("tenant", args));
+ input.put("namespace", getValueFor("namespace", args));
+ input.put("key", getValueFor("key", args));
+ input.put("value", getValueFor("value", args));
+
+
+ if (!isKeyPresent("list", args) && getValueFor("key", args) == null) {
+ throw new RuntimeException("Key is missing.");
+ }
+ if (isKeyPresent("update", args) && getValueFor("value", args) == null) {
+ throw new RuntimeException("Value is missing.");
+ }
+
+
+ MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();
+ ObjectName mbeanName = new ObjectName("org.openecomp.jmx:name=SystemConfig");
+ org.onap.config.api.ConfigurationManager conf =
+ JMX.newMBeanProxy(mbsc, mbeanName, org.onap.config.api.ConfigurationManager.class,
+ true);
+
+ boolean isGet = isKeyPresent("get", args);
+ boolean isList = isKeyPresent("list", args);
+ if (isGet) {
+ System.out.println(conf.getConfigurationValue(input));
+ } else if (isList) {
+ Map<String, String> map = conf.listConfiguration(input);
+ for (Map.Entry<String, String> entry : map.entrySet()) {
+ System.out.println(entry.getKey() + " : " + entry.getValue());
+ }
+ } else if (isUpdate) {
+ conf.updateConfigurationValue(input);
+ }
+ }
+ }
+
+ private static boolean isSwitch(String key) {
+ return key.startsWith("-");
+ }
+
+ private static String getValueFor(String key, String[] args) {
+ for (int i = 0; i < args.length; i++) {
+ if (isSwitch(args[i])) {
+ String node = args[i].substring(1);
+ if (node.equalsIgnoreCase(key) && i < args.length - 1) {
+ return args[i + 1].trim().length() == 0 ? null : args[i + 1].trim();
+ }
+ }
+ }
+ return null;
+ }
+
+ private static boolean isKeyPresent(String key, String[] args) {
+ for (int i = 0; i < args.length; i++) {
+ if (isSwitch(args[i])) {
+ String node = args[i].substring(1);
+ if (node.equalsIgnoreCase(key)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+}
diff --git a/common/onap-common-configuration-management/onap-configuration-management-cli/src/main/java/org/onap/config/gui/app/Configuration.java b/common/onap-common-configuration-management/onap-configuration-management-cli/src/main/java/org/onap/config/gui/app/Configuration.java
new file mode 100644
index 0000000000..fa7cf5b77a
--- /dev/null
+++ b/common/onap-common-configuration-management/onap-configuration-management-cli/src/main/java/org/onap/config/gui/app/Configuration.java
@@ -0,0 +1,623 @@
+package org.onap.config.gui.app;
+
+
+import com.sun.tools.attach.VirtualMachine;
+import com.sun.tools.attach.VirtualMachineDescriptor;
+import org.onap.config.api.ConfigurationManager;
+
+import java.awt.BorderLayout;
+import java.awt.Button;
+import java.awt.CardLayout;
+import java.awt.Checkbox;
+import java.awt.CheckboxGroup;
+import java.awt.Choice;
+import java.awt.Dialog;
+import java.awt.Dimension;
+import java.awt.Frame;
+import java.awt.GraphicsDevice;
+import java.awt.GraphicsEnvironment;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.GridLayout;
+import java.awt.Label;
+import java.awt.Panel;
+import java.awt.ScrollPane;
+import java.awt.TextArea;
+import java.awt.TextField;
+import java.awt.Toolkit;
+import java.awt.event.ItemEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+import javax.management.JMX;
+import javax.management.MBeanServerConnection;
+import javax.management.ObjectName;
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXConnectorFactory;
+import javax.management.remote.JMXServiceURL;
+
+
+/**
+ * The type Configuration.
+ */
+public class Configuration extends Frame {
+
+ /**
+ * The Vm.
+ */
+ VirtualMachine vm = null;
+ private TextField host;
+ private TextField port;
+ private TextField user;
+ private Choice pid;
+ private TextField password;
+ private CheckboxGroup getUpdateList;
+ private CheckboxGroup localRemote;
+ private Choice tenantChoice;
+ private Choice namespaceChoice;
+ private Choice keyChoice;
+ private Checkbox latest;
+ private Checkbox lookup;
+ private Checkbox fallback;
+ private Checkbox nodeSpecific;
+ private Checkbox nodeSpecificForList;
+ private Checkbox latestForList;
+ private Checkbox lookupForList;
+ private Checkbox fallbackForList;
+ private Checkbox nodeOverride;
+ private TextArea getValue = new TextArea(1, 50);
+ private TextArea updateValue = new TextArea(1, 50);
+ private Panel table;
+ private CardLayout cards;
+ private Panel cardPanel;
+ private JMXConnector connector;
+ private ConfigurationManager manager;
+ private Frame container;
+ private Button getKeysButton;
+
+ /**
+ * Instantiates a new Configuration.
+ *
+ * @param title the title
+ */
+ public Configuration(String title) {
+ super(title);
+ setSize(300, 300);
+ setLayout(new GridLayout(2, 1));
+ Panel firstRowPanel = new Panel();
+ firstRowPanel.setLayout(new GridLayout(0, 1));
+ firstRowPanel.add(
+ buildHostPortPanel(host = new TextField("127.0.0.1"), port = new TextField("9999"),
+ pid = new Choice(), localRemote = new CheckboxGroup()));
+ firstRowPanel
+ .add(buildUserPasswordPanel(user = new TextField(""), password = new TextField("")));
+ firstRowPanel.add(buildGetUpdatelistPanel(getUpdateList = new CheckboxGroup()));
+ firstRowPanel.add(
+ buildTenantNamespacePanel(tenantChoice = new Choice(), namespaceChoice = new Choice()));
+ firstRowPanel.add(buildKeyPanel(keyChoice = new Choice()));
+ add(firstRowPanel);
+ add(cardPanel = buildCards(cards = new CardLayout()));
+ addWindowListener(new WindowAdapter() {
+ public void windowClosing(WindowEvent windowEvent) {
+ close();
+ System.exit(0);
+ }
+ });
+ pack();
+ setVisible(true);
+ container = this;
+ centreWindow(this);
+ Executors.newSingleThreadScheduledExecutor().scheduleWithFixedDelay(() -> {
+ this.populateAvailablePids();
+ validate();
+ }, 30, 30, TimeUnit.SECONDS);
+ }
+
+ /**
+ * The entry point of application.
+ *
+ * @param args the input arguments
+ */
+ public static void main(String[] args) {
+ Configuration configuration = new Configuration("Configuration Management App");
+
+ }
+
+ private void toggleLocalRemote(ItemEvent ie) {
+ if (ie.getStateChange() == ItemEvent.SELECTED) {
+ String usecase = (ie.getSource() instanceof Checkbox) ? ((Checkbox) ie.getSource()).getLabel()
+ : ((Checkbox) ie.getItem()).getLabel();
+ pid.setEnabled(usecase.equals("Local"));
+ host.setEnabled(!usecase.equals("Local"));
+ port.setEnabled(!usecase.equals("Local"));
+ }
+ }
+
+ private Panel buildHostPortPanel(TextField host, TextField port, Choice pid,
+ CheckboxGroup group) {
+ populateAvailablePids();
+ Panel panel = new Panel();
+ panel.setLayout(new GridBagLayout());
+ GridBagConstraints gbc = new GridBagConstraints();
+ gbc.fill = gbc.HORIZONTAL;
+ gbc.weightx = 0;
+ Checkbox checkbox = null;
+ panel.add(checkbox = new Checkbox("Local", group, pid.getItemCount() > 0), gbc);
+ checkbox.addItemListener(this::toggleLocalRemote);
+ gbc.weightx = 0;
+ panel.add(checkbox = new Checkbox("Remote", group, pid.getItemCount() == 0), gbc);
+ checkbox.addItemListener(this::toggleLocalRemote);
+ gbc.weightx = 0;
+ panel.add(new Label("PID:"), gbc);
+ gbc.weightx = 1;
+ panel.add(pid, gbc);
+ gbc.weightx = 0;
+ panel.add(new Label("Host:"), gbc);
+ gbc.weightx = 1;
+ panel.add(host, gbc);
+ gbc.weightx = 0;
+ panel.add(new Label("Port:"), gbc);
+ gbc.weightx = 1;
+ panel.add(port, gbc);
+ host.setEnabled(pid.getItemCount() == 0);
+ port.setEnabled(pid.getItemCount() == 0);
+ pid.setEnabled(pid.getItemCount() > 0);
+ return panel;
+ }
+
+ private Panel buildUserPasswordPanel(TextField user, TextField password) {
+ Panel panel = new Panel();
+ password.setEchoChar('*');
+ panel.setLayout(new GridBagLayout());
+ GridBagConstraints gbc = new GridBagConstraints();
+ gbc.fill = gbc.HORIZONTAL;
+ gbc.weightx = 0;
+ panel.add(new Label("User : "), gbc);
+ gbc.weightx = 1;
+ panel.add(user, gbc);
+ gbc.weightx = 0;
+ panel.add(new Label("Password : "), gbc);
+ gbc.weightx = 1;
+ panel.add(password, gbc);
+ gbc.weightx = 0;
+ Button button = null;
+ panel.add(button = new Button("Connect"), gbc);
+ button.addActionListener((actionListener) -> connect());
+ return panel;
+ }
+
+ /**
+ * Build get updatelist panel panel.
+ *
+ * @param getUpdtaeList the get updtae list
+ * @return the panel
+ */
+ public Panel buildGetUpdatelistPanel(CheckboxGroup getUpdtaeList) {
+ Panel panel = new Panel();
+ Checkbox checkbox = null;
+ panel.setLayout(new GridLayout(1, 3));
+ panel.add(checkbox = new Checkbox("Get", getUpdtaeList, true));
+ checkbox.addItemListener(this::showCard);
+ panel.add(checkbox = new Checkbox("List", getUpdtaeList, false));
+ checkbox.addItemListener(this::showCard);
+ panel.add(checkbox = new Checkbox("Update", getUpdtaeList, false));
+ checkbox.addItemListener(this::showCard);
+ return panel;
+ }
+
+ /**
+ * Build tenant namespace panel panel.
+ *
+ * @param tenant the tenant
+ * @param namespace the namespace
+ * @return the panel
+ */
+ public Panel buildTenantNamespacePanel(Choice tenant, Choice namespace) {
+ Panel panel = new Panel();
+ panel.setLayout(new GridBagLayout());
+ GridBagConstraints gbc = new GridBagConstraints();
+ gbc.fill = gbc.HORIZONTAL;
+ gbc.weightx = 0;
+ panel.add(new Label("Tenant"), gbc);
+ gbc.weightx = 1;
+ panel.add(tenant, gbc);
+ gbc.weightx = 0;
+ panel.add(new Label("Namespace"), gbc);
+ gbc.weightx = 1;
+ panel.add(namespace, gbc);
+ gbc.weightx = 0;
+ panel.add(getKeysButton = new Button("Get Keys"), gbc);
+ getKeysButton.addActionListener((actionListener) -> populateKeys(
+ manager.getKeys(tenantChoice.getSelectedItem(), namespaceChoice.getSelectedItem())));
+ tenantChoice.addItemListener((itemListener) -> keyChoice.removeAll());
+ namespaceChoice.addItemListener((itemListener) -> keyChoice.removeAll());
+ return panel;
+ }
+
+ private Panel buildConnectPanel() {
+ Button button = null;
+ Panel panel = new Panel();
+ panel.setLayout(new GridLayout(1, 3));
+ panel.add(new Label());
+ panel.add(button = new Button("Connect"));
+ panel.add(new Label());
+ button.addActionListener((actionListener) -> connect());
+ return panel;
+ }
+
+ /**
+ * Build key panel panel.
+ *
+ * @param keyChoice the key choice
+ * @return the panel
+ */
+ public Panel buildKeyPanel(Choice keyChoice) {
+ Panel panel = new Panel();
+ panel.setLayout(new GridBagLayout());
+ GridBagConstraints gbc = new GridBagConstraints();
+ gbc.fill = gbc.HORIZONTAL;
+ gbc.weightx = 0;
+ panel.add(new Label("Keys : "), gbc);
+ gbc.weightx = 1;
+ panel.add(keyChoice, gbc);
+ return panel;
+ }
+
+ /**
+ * Build cards panel.
+ *
+ * @param cards the cards
+ * @return the panel
+ */
+ public Panel buildCards(CardLayout cards) {
+ Panel panel = new Panel();
+ panel.setLayout(cards);
+ panel.add(buildCardGetPanel(latest = new Checkbox("Latest"),
+ fallback = new Checkbox("Fallback"),
+ lookup = new Checkbox("External Lookup"), nodeSpecific = new Checkbox("Node Specific"),
+ getValue), "Get");
+ panel.add(buildCardUpdatePanel(nodeOverride = new Checkbox("NodeOverride"),
+ updateValue), "Update");
+ panel.add(buildCardListPanel(table = new Panel(), latestForList = new Checkbox("Latest"),
+ fallbackForList = new Checkbox("Fallback"), lookupForList = new Checkbox("External Lookup"),
+ nodeSpecificForList = new Checkbox("Node Specific")), "List");
+ return panel;
+ }
+
+ /**
+ * Build card get panel panel.
+ *
+ * @param latest the latest
+ * @param fallback the fallback
+ * @param lookup the lookup
+ * @param nodeSpecific the node specific
+ * @param value the value
+ * @return the panel
+ */
+ public Panel buildCardGetPanel(Checkbox latest, Checkbox fallback, Checkbox lookup,
+ Checkbox nodeSpecific, TextArea value) {
+ Panel panel = new Panel();
+
+ panel.setLayout(new BorderLayout());
+ Panel p1 = new Panel();
+ p1.setLayout(new GridLayout(1, 4));
+ p1.add(latest);
+ p1.add(fallback);
+ p1.add(nodeSpecific);
+ p1.add(lookup);
+ panel.add(p1, BorderLayout.NORTH);
+ panel.add(value, BorderLayout.CENTER);
+ Panel bottom = new Panel();
+ bottom.setLayout(new GridLayout(1, 5));
+ bottom.add(new Label());
+ Button button = null;
+ bottom.add(button = new Button("GET"));
+ button.addActionListener((actionListener) -> value.setText(manager
+ .getConfigurationValue(buildMap("org.onap.config.type.ConfigurationQuery", value))));
+ bottom.add(new Label());
+ bottom.add(button = new Button("CLOSE"));
+ bottom.add(new Label());
+ panel.add(bottom, BorderLayout.SOUTH);
+ button.addActionListener((actionListener) -> {
+ close();
+ System.exit(0);
+ });
+ return panel;
+ }
+
+ private Map<String, Object> buildMap(String implClass, TextArea value) {
+ Map<String, Object> input = new HashMap<>();
+ input.put("ImplClass", implClass);//:);
+ input.put("externalLookup", value != null ? lookup.getState() : lookupForList.getState());
+ input.put("nodeOverride", nodeOverride.getState());
+ input.put("latest", value != null ? latest.getState() : latestForList.getState());
+ input.put("fallback", value != null ? fallback.getState() : fallbackForList.getState());
+ input.put("nodeSpecific",
+ value != null ? nodeSpecific.getState() : nodeSpecificForList.getState());
+ input.put("tenant", tenantChoice.getSelectedItem());
+ input.put("namespace", namespaceChoice.getSelectedItem());
+ if (keyChoice.getItemCount() == 0) {
+ message("Error", "Key is missing.");
+ throw new RuntimeException("Error");
+ }
+ input.put("key", keyChoice.getSelectedItem());
+ input.put("value", value == null ? "" : value.getText());
+ return input;
+ }
+
+ /**
+ * Build card update panel panel.
+ *
+ * @param nodeOverride the node override
+ * @param value the value
+ * @return the panel
+ */
+ public Panel buildCardUpdatePanel(Checkbox nodeOverride, TextArea value) {
+ Panel panel = new Panel();
+ panel.setLayout(new BorderLayout());
+ Panel p1 = new Panel();
+ p1.setLayout(new GridLayout(1, 1));
+ p1.add(nodeOverride);
+ panel.add(p1, BorderLayout.NORTH);
+ panel.add(value, BorderLayout.CENTER);
+ Panel bottom = new Panel();
+ bottom.setLayout(new GridLayout(1, 5));
+ bottom.add(new Label());
+ Button button = null;
+ bottom.add(button = new Button("UPDATE"));
+ button.addActionListener((actionListener) -> {
+ manager
+ .updateConfigurationValue(buildMap("org.onap.config.type.ConfigurationUpdate", value));
+ message("Info", "Success");
+ });
+ bottom.add(new Label());
+ bottom.add(button = new Button("CLOSE"));
+ bottom.add(new Label());
+ panel.add(bottom, BorderLayout.SOUTH);
+ button.addActionListener((actionListener) -> {
+ close();
+ System.exit(0);
+ });
+ return panel;
+ }
+
+ /**
+ * Build card list panel panel.
+ *
+ * @param table the table
+ * @param latest the latest
+ * @param fallback the fallback
+ * @param nodeSpecific the node specific
+ * @param lookup the lookup
+ * @return the panel
+ */
+ public Panel buildCardListPanel(Panel table, Checkbox latest, Checkbox fallback,
+ Checkbox nodeSpecific, Checkbox lookup) {
+ Panel panel = new Panel();
+ panel.setLayout(new BorderLayout());
+ table.setLayout(new GridLayout(0, 2));
+ ScrollPane sp = new ScrollPane();
+ sp.add(table);
+ panel.add(sp, BorderLayout.CENTER);
+ Panel p1 = new Panel();
+ p1.setLayout(new GridLayout(1, 4));
+ p1.add(latest);
+ p1.add(fallback);
+ p1.add(lookup);
+ p1.add(nodeSpecific);
+ panel.add(p1, BorderLayout.NORTH);
+ Panel bottom = new Panel();
+ bottom.setLayout(new GridLayout(1, 5));
+ bottom.add(new Label());
+ Button button = null;
+ bottom.add(button = new Button("List"));
+ button.addActionListener((actionListener) -> populateKeyValue(
+ manager.listConfiguration(buildMap("org.onap.config.type.ConfigurationQuery", null))));
+ bottom.add(new Label());
+ bottom.add(button = new Button("CLOSE"));
+ bottom.add(new Label());
+ panel.add(bottom, BorderLayout.SOUTH);
+ button.addActionListener((actionListener) -> {
+ close();
+ System.exit(0);
+ });
+ return panel;
+ }
+
+ private void populateKeyValue(Map<String, String> collection) {
+ table.removeAll();
+ Set<String> keys = collection.keySet();
+ for (String key : keys) {
+ table.add(new Label(key));
+ table.add(new Label(collection.get(key)));
+ }
+ table.validate();
+ }
+
+ private void showCard(ItemEvent ie) {
+ if (ie.getStateChange() == ItemEvent.SELECTED) {
+ String usecase = (ie.getSource() instanceof Checkbox) ? ((Checkbox) ie.getSource()).getLabel()
+ : ((Checkbox) ie.getItem()).getLabel();
+ cards.show(cardPanel, usecase);
+ if (usecase.equals("List")) {
+ keyChoice.removeAll();
+ }
+ keyChoice.setEnabled(!usecase.equals("List"));
+ getKeysButton.setEnabled(!usecase.equals("List"));
+ }
+ }
+
+ private void close() {
+ try {
+ if (connector != null) {
+ connector.close();
+ connector = null;
+ vm.detach();
+ }
+ } catch (Exception exception) {
+ //Do nothing
+ }
+ }
+
+ private void connect() {
+ try {
+ close();
+ if (!validateHostPort()) {
+ return;
+ }
+ JMXServiceURL url = null;
+ if (localRemote.getSelectedCheckbox().getLabel().equals("Local")) {
+ url = new JMXServiceURL(
+ (vm = VirtualMachine.attach(pid.getSelectedItem())).getAgentProperties()
+ .getProperty("com.sun.management.jmxremote.localConnectorAddress"));
+ } else {
+ url = new JMXServiceURL(
+ "service:jmx:rmi:///jndi/rmi://" + host.getText() + ":" + port.getText() + "/jmxrmi");
+ }
+ Map<String, String[]> env = new HashMap<>();
+ String[] credentials = {user.getText(), password.getText()};
+ env.put(JMXConnector.CREDENTIALS, credentials);
+ connector = JMXConnectorFactory.connect(url, env);
+ MBeanServerConnection mbsc = connector.getMBeanServerConnection();
+ ObjectName mbeanName = new ObjectName("org.openecomp.jmx:name=SystemConfig");
+ manager = JMX.newMBeanProxy(mbsc, mbeanName, ConfigurationManager.class, true);
+ message("Message", "Success!!!");
+ populateTenants(manager.getTenants());
+ populateNamespaces(manager.getNamespaces());
+ } catch (Exception exception) {
+ message("Error", exception.getMessage());
+ }
+ }
+
+ private boolean validateHostPort() {
+ if (localRemote.getSelectedCheckbox().getLabel().equals("Local")) {
+ if (pid.getSelectedItem() == null || pid.getSelectedItem().trim().length() == 0
+ || !pid.getSelectedItem().matches("^[1-9][0-9]*$")) {
+ message("Error", "pid is mandatory numeric value greater than 0.");
+ return false;
+ }
+ } else {
+ if (host.getText() == null || host.getText().trim().length() == 0) {
+ message("Error", "Host is mandatory.");
+ return false;
+ }
+ if (port.getText() == null || port.getText().trim().length() == 0
+ || !port.getText().matches("^[1-9][0-9]*$")) {
+ message("Error", "Port is mandatory numeric value greater than 0.");
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private void populateTenants(Collection<String> collection) {
+ tenantChoice.removeAll();
+ for (String item : collection) {
+ tenantChoice.add(item);
+ }
+ }
+
+ private void populateNamespaces(Collection<String> collection) {
+ namespaceChoice.removeAll();
+ keyChoice.removeAll();
+ for (String item : collection) {
+ namespaceChoice.add(item);
+ }
+ }
+
+ private void populateKeys(Collection<String> collection) {
+ keyChoice.removeAll();
+ for (String item : collection) {
+ keyChoice.add(item);
+ }
+ }
+
+ private void message(String title, String text) {
+ Dialog dialog = new Dialog(container, title, true);
+ dialog.setLayout(new BorderLayout());
+ dialog.add(new Label(text), BorderLayout.CENTER);
+ Button ok = new Button("OK");
+ Panel panel = new Panel();
+ panel.setLayout(new GridLayout(1, 3));
+ panel.add(new Label());
+ panel.add(ok);
+ panel.add(new Label());
+ ok.addActionListener((actionListener) -> dialog.setVisible(false));
+ dialog.add(panel, BorderLayout.SOUTH);
+ dialog.pack();
+ centerDialog(dialog);
+ dialog.setVisible(true);
+ }
+
+ private void centreWindow(Frame frame) {
+ Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
+ int x1 = (int) ((dimension.getWidth() - frame.getWidth()) / 2);
+ int y1 = (int) ((dimension.getHeight() - frame.getHeight()) / 2);
+ frame.setLocation(x1, y1);
+ }
+
+ private void centerDialog(Dialog dialog) {
+ Dimension dimension = container.getSize();
+ container.getLocationOnScreen();
+ int x1 =
+ container.getLocationOnScreen().x + (int) ((dimension.getWidth() - dialog.getWidth()) / 2);
+ int y1 = container.getLocationOnScreen().y
+ + (int) ((dimension.getHeight() - dialog.getHeight()) / 2);
+ dialog.setLocation(x1, y1);
+ }
+
+ private void setWindowPosition(Frame window, int screen) {
+ GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
+ GraphicsDevice[] allDevices = env.getScreenDevices();
+ int topLeftX;
+ int topLeftY;
+ int screenX;
+ int screenY;
+ int windowPosX;
+ int windowPosY;
+
+ if (screen < allDevices.length && screen > -1) {
+ topLeftX = allDevices[screen].getDefaultConfiguration().getBounds().x;
+ topLeftY = allDevices[screen].getDefaultConfiguration().getBounds().y;
+
+ screenX = allDevices[screen].getDefaultConfiguration().getBounds().width;
+ screenY = allDevices[screen].getDefaultConfiguration().getBounds().height;
+ } else {
+ topLeftX = allDevices[0].getDefaultConfiguration().getBounds().x;
+ topLeftY = allDevices[0].getDefaultConfiguration().getBounds().y;
+
+ screenX = allDevices[0].getDefaultConfiguration().getBounds().width;
+ screenY = allDevices[0].getDefaultConfiguration().getBounds().height;
+ }
+
+ windowPosX = ((screenX - window.getWidth()) / 2) + topLeftX;
+ windowPosY = ((screenY - window.getHeight()) / 2) + topLeftY;
+
+ window.setLocation(windowPosX, windowPosY);
+ }
+
+ private void populateAvailablePids() {
+ pid.removeAll();
+ for (VirtualMachineDescriptor desc : VirtualMachine.list()) {
+ try {
+ VirtualMachine vm = null;
+ JMXServiceURL url = new JMXServiceURL(
+ (vm = VirtualMachine.attach(desc.id())).getAgentProperties()
+ .getProperty("com.sun.management.jmxremote.localConnectorAddress"));
+ Set set = JMXConnectorFactory.connect(url, null).getMBeanServerConnection()
+ .queryMBeans(new ObjectName("org.openecomp.jmx:name=SystemConfig"), null);
+ if (!set.isEmpty()) {
+ pid.add(desc.id());
+ }
+ vm.detach();
+ } catch (Exception exception) {
+ //do nothing
+ }
+ }
+ }
+}