Commit 872839c6 by 张乐 Committed by GitHub

Merge pull request #371 from nobodyiam/config-property-names

add getPropertyNames interfact to Config
parents 15c5d41b a87984d3
......@@ -4,7 +4,7 @@
<parent>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo</artifactId>
<version>0.0.9</version>
<version>0.0.10-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -4,7 +4,7 @@
<parent>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo</artifactId>
<version>0.0.9</version>
<version>0.0.10-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -4,7 +4,7 @@
<parent>
<artifactId>apollo</artifactId>
<groupId>com.ctrip.framework.apollo</groupId>
<version>0.0.9</version>
<version>0.0.10-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>apollo-biz</artifactId>
......
......@@ -4,7 +4,7 @@
<parent>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo</artifactId>
<version>0.0.9</version>
<version>0.0.10-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -4,7 +4,7 @@
<parent>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo</artifactId>
<version>0.0.9</version>
<version>0.0.10-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
......
package com.ctrip.framework.apollo;
import java.util.Set;
/**
* @author Jason Song(song_s@ctrip.com)
*/
......@@ -20,7 +22,6 @@ public interface Config {
* @param key the property name
* @param defaultValue the default value when key is not found
* @return the property value as integer
*
* @throws NumberFormatException if the property value is invalid
*/
public Integer getIntProperty(String key, Integer defaultValue);
......@@ -32,7 +33,6 @@ public interface Config {
* @param key the property name
* @param defaultValue the default value when key is not found
* @return the property value as long
*
* @throws NumberFormatException if the property value is invalid
*/
public Long getLongProperty(String key, Long defaultValue);
......@@ -44,7 +44,6 @@ public interface Config {
* @param key the property name
* @param defaultValue the default value when key is not found
* @return the property value as short
*
* @throws NumberFormatException if the property value is invalid
*/
public Short getShortProperty(String key, Short defaultValue);
......@@ -56,7 +55,6 @@ public interface Config {
* @param key the property name
* @param defaultValue the default value when key is not found
* @return the property value as float
*
* @throws NumberFormatException if the property value is invalid
*/
public Float getFloatProperty(String key, Float defaultValue);
......@@ -68,7 +66,6 @@ public interface Config {
* @param key the property name
* @param defaultValue the default value when key is not found
* @return the property value as double
*
* @throws NumberFormatException if the property value is invalid
*/
public Double getDoubleProperty(String key, Double defaultValue);
......@@ -80,7 +77,6 @@ public interface Config {
* @param key the property name
* @param defaultValue the default value when key is not found
* @return the property value as byte
*
* @throws NumberFormatException if the property value is invalid
*/
public Byte getByteProperty(String key, Byte defaultValue);
......@@ -102,7 +98,6 @@ public interface Config {
* @param key the property name
* @param delimiter the delimiter regex
* @param defaultValue the default value when key is not found
* @return
*/
public String[] getArrayProperty(String key, String delimiter, String[] defaultValue);
......@@ -112,4 +107,11 @@ public interface Config {
* @param listener the config change listener
*/
public void addChangeListener(ConfigChangeListener listener);
/**
* Return a set of the property names
*
* @return the property names
*/
public Set<String> getPropertyNames();
}
......@@ -14,10 +14,12 @@ import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.InputStream;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Properties;
import java.util.Set;
import java.util.concurrent.atomic.AtomicReference;
......@@ -91,6 +93,16 @@ public class DefaultConfig extends AbstractConfig implements RepositoryChangeLis
}
@Override
public Set<String> getPropertyNames() {
Properties properties = m_configProperties.get();
if (properties == null) {
return Collections.emptySet();
}
return properties.stringPropertyNames();
}
@Override
public synchronized void onRepositoryChange(String namespace, Properties newProperties) {
if (newProperties.equals(m_configProperties.get())) {
return;
......
......@@ -11,9 +11,11 @@ import com.dianping.cat.Cat;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
/**
* @author Jason Song(song_s@ctrip.com)
......@@ -60,6 +62,15 @@ public class SimpleConfig extends AbstractConfig implements RepositoryChangeList
}
@Override
public Set<String> getPropertyNames() {
if (m_configProperties == null) {
return Collections.emptySet();
}
return m_configProperties.stringPropertyNames();
}
@Override
public synchronized void onRepositoryChange(String namespace, Properties newProperties) {
if (newProperties.equals(m_configProperties)) {
return;
......
......@@ -10,6 +10,8 @@ import org.junit.Before;
import org.junit.Test;
import org.unidal.lookup.ComponentTestCase;
import java.util.Set;
import static org.junit.Assert.assertEquals;
/**
......@@ -92,6 +94,11 @@ public class ConfigServiceTest extends ComponentTestCase {
return m_namespace + ":" + key;
}
@Override
public Set<String> getPropertyNames() {
return null;
}
}
private static class MockConfigFile implements ConfigFile {
......
......@@ -11,6 +11,8 @@ import org.junit.Before;
import org.junit.Test;
import org.unidal.lookup.ComponentTestCase;
import java.util.Set;
import static org.hamcrest.core.IsEqual.equalTo;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
......@@ -94,6 +96,11 @@ public class DefaultConfigManagerTest extends ComponentTestCase {
public String getProperty(String key, String defaultValue) {
return namespace + ":" + key;
}
@Override
public Set<String> getPropertyNames() {
return null;
}
};
}
......
......@@ -4,7 +4,7 @@
<parent>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo</artifactId>
<version>0.0.9</version>
<version>0.0.10-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -4,7 +4,7 @@
<parent>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo</artifactId>
<version>0.0.9</version>
<version>0.0.10-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -4,7 +4,7 @@
<parent>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo</artifactId>
<version>0.0.9</version>
<version>0.0.10-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -4,7 +4,7 @@
<parent>
<artifactId>apollo</artifactId>
<groupId>com.ctrip.framework.apollo</groupId>
<version>0.0.9</version>
<version>0.0.10-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>apollo-demo</artifactId>
......
......@@ -4,7 +4,7 @@
<parent>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo</artifactId>
<version>0.0.9</version>
<version>0.0.10-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo</artifactId>
<version>0.0.9</version>
<version>0.0.10-SNAPSHOT</version>
<name>Apollo</name>
<packaging>pom</packaging>
<description>Ctrip Configuration Center</description>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment