提交 872839c6 编写于 作者: 张乐 提交者: GitHub

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

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