瀏覽代碼

add getPropertyNames interfact to Config

Jason Song 8 年之前
父節點
當前提交
a87984d331

+ 1 - 1
apollo-adminservice/pom.xml

@@ -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>

+ 1 - 1
apollo-assembly/pom.xml

@@ -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>

+ 1 - 1
apollo-biz/pom.xml

@@ -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>

+ 1 - 1
apollo-buildtools/pom.xml

@@ -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>

+ 1 - 1
apollo-client/pom.xml

@@ -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>

+ 29 - 27
apollo-client/src/main/java/com/ctrip/framework/apollo/Config.java

@@ -1,13 +1,15 @@
 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();
 }

+ 12 - 0
apollo-client/src/main/java/com/ctrip/framework/apollo/internals/DefaultConfig.java

@@ -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 - 0
apollo-client/src/main/java/com/ctrip/framework/apollo/internals/SimpleConfig.java

@@ -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)) {

+ 7 - 0
apollo-client/src/test/java/com/ctrip/framework/apollo/ConfigServiceTest.java

@@ -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 {

+ 7 - 0
apollo-client/src/test/java/com/ctrip/framework/apollo/internals/DefaultConfigManagerTest.java

@@ -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;
+            }
           };
         }
 

+ 1 - 1
apollo-common/pom.xml

@@ -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>

+ 1 - 1
apollo-configservice/pom.xml

@@ -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>

+ 1 - 1
apollo-core/pom.xml

@@ -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>

+ 1 - 1
apollo-demo/pom.xml

@@ -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>

+ 1 - 1
apollo-portal/pom.xml

@@ -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>

+ 1 - 1
pom.xml

@@ -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>