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 @@ ...@@ -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)
*/ */
public interface Config { public interface Config {
/** /**
* Return the property value with the given key, or {@code defaultValue} if the key doesn't exist. * Return the property value with the given key, or {@code defaultValue} if the key doesn't exist.
* *
* @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 * @return the property value
*/ */
...@@ -16,11 +18,10 @@ public interface Config { ...@@ -16,11 +18,10 @@ public interface Config {
/** /**
* Return the integer property value with the given key, or {@code defaultValue} if the key * Return the integer property value with the given key, or {@code defaultValue} if the key
* doesn't exist. * doesn't exist.
* *
* @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);
...@@ -28,11 +29,10 @@ public interface Config { ...@@ -28,11 +29,10 @@ public interface Config {
/** /**
* Return the long property value with the given key, or {@code defaultValue} if the key doesn't * Return the long property value with the given key, or {@code defaultValue} if the key doesn't
* exist. * exist.
* *
* @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);
...@@ -40,11 +40,10 @@ public interface Config { ...@@ -40,11 +40,10 @@ public interface Config {
/** /**
* Return the short property value with the given key, or {@code defaultValue} if the key doesn't * Return the short property value with the given key, or {@code defaultValue} if the key doesn't
* exist. * exist.
* *
* @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);
...@@ -52,11 +51,10 @@ public interface Config { ...@@ -52,11 +51,10 @@ public interface Config {
/** /**
* Return the float property value with the given key, or {@code defaultValue} if the key doesn't * Return the float property value with the given key, or {@code defaultValue} if the key doesn't
* exist. * exist.
* *
* @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);
...@@ -64,11 +62,10 @@ public interface Config { ...@@ -64,11 +62,10 @@ public interface Config {
/** /**
* Return the double property value with the given key, or {@code defaultValue} if the key doesn't * Return the double property value with the given key, or {@code defaultValue} if the key doesn't
* exist. * exist.
* *
* @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);
...@@ -76,11 +73,10 @@ public interface Config { ...@@ -76,11 +73,10 @@ public interface Config {
/** /**
* Return the byte property value with the given key, or {@code defaultValue} if the key doesn't * Return the byte property value with the given key, or {@code defaultValue} if the key doesn't
* exist. * exist.
* *
* @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);
...@@ -88,8 +84,8 @@ public interface Config { ...@@ -88,8 +84,8 @@ public interface Config {
/** /**
* Return the boolean property value with the given key, or {@code defaultValue} if the key * Return the boolean property value with the given key, or {@code defaultValue} if the key
* doesn't exist. * doesn't exist.
* *
* @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 boolean * @return the property value as boolean
*/ */
...@@ -98,18 +94,24 @@ public interface Config { ...@@ -98,18 +94,24 @@ public interface Config {
/** /**
* Return the array property value with the given key, or {@code defaultValue} if the key doesn't * Return the array property value with the given key, or {@code defaultValue} if the key doesn't
* exist. * exist.
* *
* @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);
/** /**
* Add change listener to this config instance. * Add change listener to this config instance.
* *
* @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;
...@@ -91,6 +93,16 @@ public class DefaultConfig extends AbstractConfig implements RepositoryChangeLis ...@@ -91,6 +93,16 @@ public class DefaultConfig extends AbstractConfig implements RepositoryChangeLis
} }
@Override @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) { public synchronized void onRepositoryChange(String namespace, Properties newProperties) {
if (newProperties.equals(m_configProperties.get())) { if (newProperties.equals(m_configProperties.get())) {
return; return;
......
...@@ -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)
...@@ -60,6 +62,15 @@ public class SimpleConfig extends AbstractConfig implements RepositoryChangeList ...@@ -60,6 +62,15 @@ public class SimpleConfig extends AbstractConfig implements RepositoryChangeList
} }
@Override @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) { public synchronized void onRepositoryChange(String namespace, Properties newProperties) {
if (newProperties.equals(m_configProperties)) { if (newProperties.equals(m_configProperties)) {
return; return;
......
...@@ -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% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment