ConfigManager { public void updateConfiguration(Configuration config, boolean createBackup) throws Exception { if (config == null) { throw new IllegalArgumentException("config must not be null"); } Lock lock = this.configurationLock.writeLock(); lock.lock(); try { save(this.configFile, config, createBackup); this.configuration = new Configuration(config); } finally { lock.unlock(); } } ConfigManager(File file); File getConfigFile(); boolean hasConfiguration(); Configuration getConfiguration(); Configuration getConfiguration(boolean forceLoad); void updateConfiguration(Configuration config, boolean createBackup); void overlayConfiguration(InputStream configStream, boolean save, boolean createBackup);  }
@Test public void testWrite() throws Exception { Configuration config = new Configuration(); config.setSubsystem(new Subsystem()); config.setDiagnostics(new Diagnostics()); config.setStorageAdapter(new StorageAdapter()); config.setPlatform(new Platform()); SecurityRealm[] securityRealms = new SecurityRealm[1]; config.setSecurityRealms(securityRealms); securityRealms[0] = new SecurityRealm(); securityRealms[0].setName("first security realm"); securityRealms[0].setKeystorePath("/first/security/realm.truststore"); securityRealms[0].setKeystorePassword("first password"); DMRMetricSet[] dmrMetricSets = new DMRMetricSet[2]; config.setDmrMetricSets(dmrMetricSets); dmrMetricSets[0] = new DMRMetricSet(); dmrMetricSets[0].setName("dmr metric set 0"); dmrMetricSets[0].setDmrMetrics(new DMRMetric[2]); dmrMetricSets[0].getDmrMetrics()[0] = new DMRMetric(); dmrMetricSets[0].getDmrMetrics()[0].setName("dmr metric 0"); dmrMetricSets[0].getDmrMetrics()[1] = new DMRMetric(); dmrMetricSets[0].getDmrMetrics()[1].setName("dmr metric 1"); dmrMetricSets[1] = new DMRMetricSet(); dmrMetricSets[1].setName("dmr metric set 1"); dmrMetricSets[1].setDmrMetrics(new DMRMetric[2]); dmrMetricSets[1].getDmrMetrics()[0] = new DMRMetric(); dmrMetricSets[1].getDmrMetrics()[0].setName("dmr metric 2"); dmrMetricSets[1].getDmrMetrics()[1] = new DMRMetric(); dmrMetricSets[1].getDmrMetrics()[1].setName("dmr metric 3"); DMRResourceTypeSet[] dmrResourceTypeSets = new DMRResourceTypeSet[2]; config.setDmrResourceTypeSets(dmrResourceTypeSets); dmrResourceTypeSets[0] = new DMRResourceTypeSet(); dmrResourceTypeSets[0].setName("dmr resource type set 0"); dmrResourceTypeSets[0].setDmrResourceTypes(new DMRResourceType[2]); dmrResourceTypeSets[0].getDmrResourceTypes()[0] = new DMRResourceType(); dmrResourceTypeSets[0].getDmrResourceTypes()[0].setName("dmr resource type 0"); dmrResourceTypeSets[0].getDmrResourceTypes()[0].setDmrResourceConfigs(new DMRResourceConfig[1]); dmrResourceTypeSets[0].getDmrResourceTypes()[0].getDmrResourceConfigs()[0] = new DMRResourceConfig(); dmrResourceTypeSets[0].getDmrResourceTypes()[0].getDmrResourceConfigs()[0].setName("dmr res config 0"); dmrResourceTypeSets[0].getDmrResourceTypes()[1] = new DMRResourceType(); dmrResourceTypeSets[0].getDmrResourceTypes()[1].setName("dmr resource type 1"); dmrResourceTypeSets[0].getDmrResourceTypes()[1].setDmrResourceConfigs(new DMRResourceConfig[1]); dmrResourceTypeSets[0].getDmrResourceTypes()[1].getDmrResourceConfigs()[0] = new DMRResourceConfig(); dmrResourceTypeSets[0].getDmrResourceTypes()[1].getDmrResourceConfigs()[0].setName("dmr res config 1"); dmrResourceTypeSets[1] = new DMRResourceTypeSet(); dmrResourceTypeSets[1].setName("dmr resource type set 1"); dmrResourceTypeSets[1].setDmrResourceTypes(new DMRResourceType[2]); dmrResourceTypeSets[1].getDmrResourceTypes()[0] = new DMRResourceType(); dmrResourceTypeSets[1].getDmrResourceTypes()[0].setName("dmr resource type 2"); dmrResourceTypeSets[1].getDmrResourceTypes()[1] = new DMRResourceType(); dmrResourceTypeSets[1].getDmrResourceTypes()[1].setName("dmr resource type 3"); JMXMetricSet[] jmxMetricSets = new JMXMetricSet[2]; config.setJmxMetricSets(jmxMetricSets); jmxMetricSets[0] = new JMXMetricSet(); jmxMetricSets[0].setName("jmx metric set 0"); jmxMetricSets[0].setJmxMetrics(new JMXMetric[2]); jmxMetricSets[0].getJmxMetrics()[0] = new JMXMetric(); jmxMetricSets[0].getJmxMetrics()[0].setName("jmx metric 0"); jmxMetricSets[0].getJmxMetrics()[1] = new JMXMetric(); jmxMetricSets[0].getJmxMetrics()[1].setName("jmx metric 1"); jmxMetricSets[1] = new JMXMetricSet(); jmxMetricSets[1].setName("jmx metric set 1"); jmxMetricSets[1].setJmxMetrics(new JMXMetric[2]); jmxMetricSets[1].getJmxMetrics()[0] = new JMXMetric(); jmxMetricSets[1].getJmxMetrics()[0].setName("jmx metric 2"); jmxMetricSets[1].getJmxMetrics()[1] = new JMXMetric(); jmxMetricSets[1].getJmxMetrics()[1].setName("jmx metric 3"); JMXResourceTypeSet[] jmxResourceTypeSets = new JMXResourceTypeSet[2]; config.setJmxResourceTypeSets(jmxResourceTypeSets); jmxResourceTypeSets[0] = new JMXResourceTypeSet(); jmxResourceTypeSets[0].setName("jmx resource type set 0"); jmxResourceTypeSets[0].setJmxResourceTypes(new JMXResourceType[2]); jmxResourceTypeSets[0].getJmxResourceTypes()[0] = new JMXResourceType(); jmxResourceTypeSets[0].getJmxResourceTypes()[0].setName("jmx resource type 0"); jmxResourceTypeSets[0].getJmxResourceTypes()[0].setJmxResourceConfigs(new JMXResourceConfig[1]); jmxResourceTypeSets[0].getJmxResourceTypes()[0].getJmxResourceConfigs()[0] = new JMXResourceConfig(); jmxResourceTypeSets[0].getJmxResourceTypes()[0].getJmxResourceConfigs()[0].setName("jmx res config 0"); jmxResourceTypeSets[0].getJmxResourceTypes()[1] = new JMXResourceType(); jmxResourceTypeSets[0].getJmxResourceTypes()[1].setName("jmx resource type 1"); jmxResourceTypeSets[0].getJmxResourceTypes()[1].setJmxResourceConfigs(new JMXResourceConfig[1]); jmxResourceTypeSets[0].getJmxResourceTypes()[1].getJmxResourceConfigs()[0] = new JMXResourceConfig(); jmxResourceTypeSets[0].getJmxResourceTypes()[1].getJmxResourceConfigs()[0].setName("jmx res config 1"); jmxResourceTypeSets[1] = new JMXResourceTypeSet(); jmxResourceTypeSets[1].setName("jmx resource type set 1"); jmxResourceTypeSets[1].setJmxResourceTypes(new JMXResourceType[2]); jmxResourceTypeSets[1].getJmxResourceTypes()[0] = new JMXResourceType(); jmxResourceTypeSets[1].getJmxResourceTypes()[0].setName("jmx resource type 2"); jmxResourceTypeSets[1].getJmxResourceTypes()[1] = new JMXResourceType(); jmxResourceTypeSets[1].getJmxResourceTypes()[1].setName("jmx resource type 3"); config.setManagedServers(new ManagedServers()); config.getManagedServers().setLocalDmr(new LocalDMR()); config.getManagedServers().getLocalDmr().setName("Local DMR"); config.getManagedServers().getLocalDmr().setResourceTypeSets(new String[] { "dmr resource type set 0", "dmr resource type set 1" }); config.getManagedServers().setLocalJmx(new LocalJMX()); config.getManagedServers().getLocalJmx().setName("Local JMX"); config.getManagedServers().getLocalJmx().setResourceTypeSets(new String[] { "jmx resource type set 0", "jmx resource type set 1" }); config.getManagedServers().setRemoteDmrs(new RemoteDMR[1]); config.getManagedServers().getRemoteDmrs()[0] = new RemoteDMR(); config.getManagedServers().getRemoteDmrs()[0].setName("Remote DMR"); config.getManagedServers().getRemoteDmrs()[0].setResourceTypeSets(new String[] { "dmr resource type set 0", "dmr resource type set 1" }); config.getManagedServers().setRemoteJmxs(new RemoteJMX[1]); config.getManagedServers().getRemoteJmxs()[0] = new RemoteJMX(); config.getManagedServers().getRemoteJmxs()[0].setName("Remote JMX"); config.getManagedServers().getRemoteJmxs()[0].setResourceTypeSets(new String[] { "jmx resource type set 0", "jmx resource type set 1" }); File file = new File("/tmp/org.hawkular.agent.javaagent.config.ConfigManagerTest.yaml"); ConfigManager configManager = new ConfigManager(file); configManager.updateConfiguration(config, false); }