diff --git a/addons/hbase-bridge/src/main/java/org/apache/atlas/hbase/bridge/HBaseBridge.java b/addons/hbase-bridge/src/main/java/org/apache/atlas/hbase/bridge/HBaseBridge.java index f01266445..f5a1d2ad5 100644 --- a/addons/hbase-bridge/src/main/java/org/apache/atlas/hbase/bridge/HBaseBridge.java +++ b/addons/hbase-bridge/src/main/java/org/apache/atlas/hbase/bridge/HBaseBridge.java @@ -28,6 +28,7 @@ import org.apache.atlas.model.instance.AtlasEntityHeader; import org.apache.atlas.model.instance.AtlasObjectId; import org.apache.atlas.model.instance.EntityMutationResponse; import org.apache.atlas.type.AtlasTypeUtil; +import org.apache.atlas.utils.AtlasConfigurationUtil; import org.apache.atlas.utils.AuthenticationUtil; import org.apache.commons.cli.BasicParser; import org.apache.commons.cli.CommandLine; @@ -222,7 +223,7 @@ public class HBaseBridge { } private String getMetadataNamespace(Configuration config) { - return config.getString(HBASE_METADATA_NAMESPACE, getClusterName(config)); + return AtlasConfigurationUtil.getRecentString(config, HBASE_METADATA_NAMESPACE, getClusterName(config)); } private String getClusterName(Configuration config) { diff --git a/addons/hive-bridge/src/main/java/org/apache/atlas/hive/bridge/HiveMetaStoreBridge.java b/addons/hive-bridge/src/main/java/org/apache/atlas/hive/bridge/HiveMetaStoreBridge.java index 1bdfa4fcb..08471b480 100755 --- a/addons/hive-bridge/src/main/java/org/apache/atlas/hive/bridge/HiveMetaStoreBridge.java +++ b/addons/hive-bridge/src/main/java/org/apache/atlas/hive/bridge/HiveMetaStoreBridge.java @@ -36,6 +36,7 @@ import org.apache.atlas.model.instance.EntityMutations; import org.apache.atlas.utils.AtlasPathExtractorUtil; import org.apache.atlas.utils.AuthenticationUtil; import org.apache.atlas.utils.HdfsNameServiceResolver; +import org.apache.atlas.utils.AtlasConfigurationUtil; import org.apache.atlas.model.instance.AtlasEntity; import org.apache.atlas.model.instance.AtlasEntity.AtlasEntityWithExtInfo; import org.apache.atlas.model.instance.AtlasEntity.AtlasEntitiesWithExtInfo; @@ -264,7 +265,7 @@ public class HiveMetaStoreBridge { } public String getMetadataNamespace(Configuration config) { - return config.getString(HIVE_METADATA_NAMESPACE, getClusterName(config)); + return AtlasConfigurationUtil.getRecentString(config, HIVE_METADATA_NAMESPACE, getClusterName(config)); } private String getClusterName(Configuration config) { diff --git a/addons/kafka-bridge/src/main/java/org/apache/atlas/kafka/bridge/KafkaBridge.java b/addons/kafka-bridge/src/main/java/org/apache/atlas/kafka/bridge/KafkaBridge.java index a13b029df..833a07749 100644 --- a/addons/kafka-bridge/src/main/java/org/apache/atlas/kafka/bridge/KafkaBridge.java +++ b/addons/kafka-bridge/src/main/java/org/apache/atlas/kafka/bridge/KafkaBridge.java @@ -26,6 +26,7 @@ import org.apache.atlas.model.instance.AtlasEntity; import org.apache.atlas.model.instance.AtlasEntity.AtlasEntityWithExtInfo; import org.apache.atlas.model.instance.AtlasEntityHeader; import org.apache.atlas.model.instance.EntityMutationResponse; +import org.apache.atlas.utils.AtlasConfigurationUtil; import org.apache.atlas.utils.AuthenticationUtil; import org.apache.atlas.utils.KafkaUtils; import org.apache.commons.cli.BasicParser; @@ -167,7 +168,7 @@ public class KafkaBridge { } private String getMetadataNamespace(Configuration config) { - return config.getString(KAFKA_METADATA_NAMESPACE, getClusterName(config)); + return AtlasConfigurationUtil.getRecentString(config, KAFKA_METADATA_NAMESPACE, getClusterName(config)); } private String getClusterName(Configuration config) { diff --git a/addons/sqoop-bridge/src/main/java/org/apache/atlas/sqoop/hook/SqoopHook.java b/addons/sqoop-bridge/src/main/java/org/apache/atlas/sqoop/hook/SqoopHook.java index 25ab7cb3c..4785960a7 100644 --- a/addons/sqoop-bridge/src/main/java/org/apache/atlas/sqoop/hook/SqoopHook.java +++ b/addons/sqoop-bridge/src/main/java/org/apache/atlas/sqoop/hook/SqoopHook.java @@ -33,6 +33,7 @@ import org.apache.atlas.model.notification.HookNotification.EntityCreateRequestV import org.apache.atlas.model.instance.AtlasObjectId; import org.apache.atlas.sqoop.model.SqoopDataTypes; import org.apache.atlas.type.AtlasTypeUtil; +import org.apache.atlas.utils.AtlasConfigurationUtil; import org.apache.commons.configuration.Configuration; import org.apache.commons.lang3.StringUtils; import org.apache.sqoop.SqoopJobDataPublisher; @@ -86,7 +87,8 @@ public class SqoopHook extends SqoopJobDataPublisher { public void publish(SqoopJobDataPublisher.Data data) throws AtlasHookException { try { Configuration atlasProperties = ApplicationProperties.get(); - String metadataNamespace = atlasProperties.getString(ATLAS_METADATA_NAMESPACE, getClusterName(atlasProperties)); + String metadataNamespace = + AtlasConfigurationUtil.getRecentString(atlasProperties, ATLAS_METADATA_NAMESPACE, getClusterName(atlasProperties)); AtlasEntity entDbStore = toSqoopDBStoreEntity(data); AtlasEntity entHiveDb = toHiveDatabaseEntity(metadataNamespace, data.getHiveDB()); diff --git a/intg/src/main/java/org/apache/atlas/utils/AtlasConfigurationUtil.java b/intg/src/main/java/org/apache/atlas/utils/AtlasConfigurationUtil.java new file mode 100644 index 000000000..97ca402f1 --- /dev/null +++ b/intg/src/main/java/org/apache/atlas/utils/AtlasConfigurationUtil.java @@ -0,0 +1,36 @@ +/** + * 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. + */ +package org.apache.atlas.utils; + +import org.apache.commons.configuration.Configuration; + +public class AtlasConfigurationUtil { + + public static String getRecentString(Configuration config, String key) { + return getRecentString(config, key, null); + } + + public static String getRecentString(Configuration config, String key, String defaultValue) { + String ret = defaultValue; + String[] arr = config.getStringArray(key); + if (arr.length > 0) { + ret = arr[arr.length-1]; + } + return ret; + } +} diff --git a/intg/src/test/java/org/apache/atlas/ApplicationPropertiesTest.java b/intg/src/test/java/org/apache/atlas/ApplicationPropertiesTest.java index a002a7a8a..4946cc7e4 100644 --- a/intg/src/test/java/org/apache/atlas/ApplicationPropertiesTest.java +++ b/intg/src/test/java/org/apache/atlas/ApplicationPropertiesTest.java @@ -18,14 +18,10 @@ package org.apache.atlas; import java.io.InputStream; -import java.net.MalformedURLException; -import java.net.URL; import java.util.AbstractMap; -import com.sun.jersey.json.impl.provider.entity.JSONArrayProvider; +import org.apache.atlas.utils.AtlasConfigurationUtil; import org.apache.commons.configuration.Configuration; -import org.apache.commons.configuration.ConfigurationException; -import org.springframework.cache.interceptor.SimpleKey; import org.testng.annotations.Test; import static org.testng.Assert.*; @@ -147,4 +143,13 @@ public class ApplicationPropertiesTest { aProps.setDefault(defaultKV, ""); assertEquals(props.getString(someKey), defaultValue); } + + @Test + public void verifyGetLatesttString () throws AtlasException { + String key="atlas.metadata.namespace", old_val = "nm-sp-1", new_val = "nm-sp-2"; + Configuration atlasConf = ApplicationProperties.get("test.properties"); + assertEquals(atlasConf.getString(key), old_val); + assertEquals(AtlasConfigurationUtil.getRecentString(atlasConf, key, old_val), new_val); + assertEquals(AtlasConfigurationUtil.getRecentString(atlasConf, "garbage", old_val), old_val); + } } diff --git a/intg/src/test/resources/test.properties b/intg/src/test/resources/test.properties index 395537f30..173444b5e 100644 --- a/intg/src/test/resources/test.properties +++ b/intg/src/test/resources/test.properties @@ -17,3 +17,6 @@ # jaas.properties.file=atlas-jaas.properties + +atlas.metadata.namespace=nm-sp-1 +atlas.metadata.namespace=nm-sp-2 diff --git a/notification/src/main/java/org/apache/atlas/hook/AtlasHook.java b/notification/src/main/java/org/apache/atlas/hook/AtlasHook.java index 26c2d8fc1..9162ac144 100644 --- a/notification/src/main/java/org/apache/atlas/hook/AtlasHook.java +++ b/notification/src/main/java/org/apache/atlas/hook/AtlasHook.java @@ -26,7 +26,7 @@ import org.apache.atlas.kafka.NotificationProvider; import org.apache.atlas.model.notification.HookNotification; import org.apache.atlas.notification.NotificationException; import org.apache.atlas.notification.NotificationInterface; -import org.apache.atlas.security.InMemoryJAASConfiguration; +import org.apache.atlas.utils.AtlasConfigurationUtil; import org.apache.commons.configuration.Configuration; import org.apache.commons.lang.StringUtils; import org.apache.hadoop.security.UserGroupInformation; @@ -292,7 +292,7 @@ public abstract class AtlasHook { } private static String getMetadataNamespace(Configuration config) { - return config.getString(CONF_METADATA_NAMESPACE, getClusterName(config)); + return AtlasConfigurationUtil.getRecentString(config, CONF_METADATA_NAMESPACE, getClusterName(config)); } private static String getClusterName(Configuration config) {