+ try {
+ boolean keyPresent =
+ isKeyExists(updateData.getTenant(), updateData.getNamespace(), updateData.getKey());
+ if (keyPresent) {
+ boolean isUpdated = false;
+ Object[] paramArray = new Object[]{
+ updateData.getTenant() + KEY_ELEMENTS_DELEMETER + updateData.getNamespace(),
+ new Long(System.currentTimeMillis()), updateData.getKey(),
+ getConfigurationValue(updateData), updateData.getValue()};
+ Configuration config = ConfigurationRepository.lookup()
+ .getConfigurationFor(updateData.getTenant(), updateData.getNamespace());
+ if (config instanceof AgglomerateConfiguration || config instanceof CombinedConfiguration) {
+ CompositeConfiguration cc = new CompositeConfiguration();
+ cc.addConfiguration(config);
+ config = cc;
+ }
+ CompositeConfiguration configuration = (CompositeConfiguration) config;
+ int overrideIndex = -1;
+ for (int i = 0; i < configuration.getNumberOfConfigurations(); i++) {
+ if (!updateData.isNodeOverride()
+ && (configuration.getConfiguration(i) instanceof AgglomerateConfiguration
+ || configuration.getConfiguration(i) instanceof CombinedConfiguration)) {
+ configuration.getConfiguration(i)
+ .setProperty(updateData.getKey(), updateData.getValue());
+ isUpdated = true;
+ break;
+ } else if (updateData.isNodeOverride()
+ && configuration.getConfiguration(i) instanceof FileBasedConfiguration) {
+ configuration.getConfiguration(i)
+ .setProperty(updateData.getKey(), updateData.getValue());
+ isUpdated = true;
+ overrideIndex = i;
+ break;
+ }
+ }
+ if (!isUpdated) {
+ if (updateData.isNodeOverride()) {
+ PropertiesConfiguration pc = new PropertiesConfiguration();
+ pc.setProperty(NAMESPACE_KEY,
+ updateData.getTenant() + Constants.TENANT_NAMESPACE_SAPERATOR
+ + updateData.getNamespace());
+ pc.setProperty(MODE_KEY, "OVERRIDE");
+ pc.setProperty(updateData.getKey(), updateData.getValue());
+ if (System.getProperty("node.config.location") != null
+ && System.getProperty("node.config.location").trim().length() > 0) {
+ File file = new File(System.getProperty("node.config.location"),
+ updateData.getTenant() + File.separator + updateData.getNamespace()
+ + File.separator + "config.properties");
+ file.getParentFile().mkdirs();
+ PrintWriter out = new PrintWriter(file);
+ pc.write(out);
+ out.close();
+ ConfigurationRepository.lookup().populateOverrideConfigurtaion(
+ updateData.getTenant() + KEY_ELEMENTS_DELEMETER + updateData.getNamespace(),
+ file);
+ }
+ } else {
+ configuration.getConfiguration(0)
+ .setProperty(updateData.getKey(), updateData.getValue());
+ }
+ }
+ if (!updateData.isNodeOverride()) {
+ ConfigurationUtils.executeInsertSql(
+ ConfigurationRepository.lookup().getConfigurationFor(DEFAULT_TENANT, DB_NAMESPACE)
+ .getString("insertconfigurationchangecql"), paramArray);
+ } else {
+ ConfigurationRepository.lookup().refreshOverrideConfigurtaionFor(
+ updateData.getTenant() + KEY_ELEMENTS_DELEMETER + updateData.getNamespace(),
+ overrideIndex);
+ }
+ }
+ } catch (Exception exception) {
+ exception.printStackTrace();
+ }