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

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

add getPropertyNames interfact to Config
......@@ -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)
*/
public interface Config {
/**
* 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
* @return the property value
*/
......@@ -16,11 +18,10 @@ public interface Config {
/**
* Return the integer 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
* @return the property value as integer
*
* @throws NumberFormatException if the property value is invalid
*/
public Integer getIntProperty(String key, Integer defaultValue);
......@@ -28,11 +29,10 @@ public interface Config {
/**
* Return the long 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
* @return the property value as long
*
* @throws NumberFormatException if the property value is invalid
*/
public Long getLongProperty(String key, Long defaultValue);
......@@ -40,11 +40,10 @@ public interface Config {
/**
* Return the short 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
* @return the property value as short
*
* @throws NumberFormatException if the property value is invalid
*/
public Short getShortProperty(String key, Short defaultValue);
......@@ -52,11 +51,10 @@ public interface Config {
/**
* Return the float 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
* @return the property value as float
*
* @throws NumberFormatException if the property value is invalid
*/
public Float getFloatProperty(String key, Float defaultValue);
......@@ -64,11 +62,10 @@ public interface Config {
/**
* Return the double 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
* @return the property value as double
*
* @throws NumberFormatException if the property value is invalid
*/
public Double getDoubleProperty(String key, Double defaultValue);
......@@ -76,11 +73,10 @@ public interface Config {
/**
* Return the byte 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
* @return the property value as byte
*
* @throws NumberFormatException if the property value is invalid
*/
public Byte getByteProperty(String key, Byte defaultValue);
......@@ -88,8 +84,8 @@ public interface Config {
/**
* Return the boolean 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
* @return the property value as boolean
*/
......@@ -98,18 +94,24 @@ public interface Config {
/**
* Return the array property value with the given key, or {@code defaultValue} if the key doesn't
* exist.
*
* @param key the property name
* @param delimiter the delimiter regex
*
* @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);
/**
* Add change listener to this config instance.
*
*
* @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;
......@@ -90,6 +92,16 @@ public class DefaultConfig extends AbstractConfig implements RepositoryChangeLis
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
public synchronized void onRepositoryChange(String namespace, Properties newProperties) {
if (newProperties.equals(m_configProperties.get())) {
......
......@@ -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)
......@@ -59,6 +61,15 @@ public class SimpleConfig extends AbstractConfig implements RepositoryChangeList
return this.m_configProperties.getProperty(key, defaultValue);
}
@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)) {
......
......@@ -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% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册