You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@htrace.apache.org by cm...@apache.org on 2016/04/01 21:17:31 UTC

incubator-htrace git commit: HTRACE-351. Add JavaPropertyConfiguration (cmccabe)

Repository: incubator-htrace
Updated Branches:
  refs/heads/master 51cfa3a11 -> ab94ce6f1


HTRACE-351. Add JavaPropertyConfiguration (cmccabe)


Project: http://git-wip-us.apache.org/repos/asf/incubator-htrace/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-htrace/commit/ab94ce6f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-htrace/tree/ab94ce6f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-htrace/diff/ab94ce6f

Branch: refs/heads/master
Commit: ab94ce6f1def76f05ccbba4494da71c4746a23a7
Parents: 51cfa3a
Author: Colin P. Mccabe <cm...@apache.org>
Authored: Thu Mar 31 17:35:17 2016 -0700
Committer: Colin P. Mccabe <cm...@apache.org>
Committed: Fri Apr 1 12:17:13 2016 -0700

----------------------------------------------------------------------
 .../htrace/core/JavaPropertyConfiguration.java  | 82 ++++++++++++++++++++
 .../htrace/core/TestHTraceConfiguration.java    | 18 +++++
 2 files changed, 100 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/ab94ce6f/htrace-core4/src/main/java/org/apache/htrace/core/JavaPropertyConfiguration.java
----------------------------------------------------------------------
diff --git a/htrace-core4/src/main/java/org/apache/htrace/core/JavaPropertyConfiguration.java b/htrace-core4/src/main/java/org/apache/htrace/core/JavaPropertyConfiguration.java
new file mode 100644
index 0000000..7af87e3
--- /dev/null
+++ b/htrace-core4/src/main/java/org/apache/htrace/core/JavaPropertyConfiguration.java
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.htrace.core;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+
+/**
+ * This is an implementation of HTraceConfiguration which draws its properties
+ * from global Java Properties.
+ */
+public final class JavaPropertyConfiguration extends HTraceConfiguration {
+  private static final Log LOG =
+      LogFactory.getLog(JavaPropertyConfiguration.class);
+
+  public static class Builder {
+    final LinkedList<String> prefixes;
+
+    public Builder() {
+      prefixes = new LinkedList<String>();
+      prefixes.add("htrace.");
+    }
+
+    public Builder clearPrefixes() {
+      prefixes.clear();
+      return this;
+    }
+
+    public Builder addPrefix(String prefix) {
+      prefixes.add(prefix);
+      return this;
+    }
+
+    JavaPropertyConfiguration build() {
+      return new JavaPropertyConfiguration(prefixes);
+    }
+  }
+
+  private final String[] prefixes;
+
+  private JavaPropertyConfiguration(LinkedList<String> prefixes) {
+    this.prefixes = new String[prefixes.size()];
+    int i = 0;
+    for (Iterator<String> it = prefixes.descendingIterator(); it.hasNext(); ) {
+      this.prefixes[i++] = it.next();
+    }
+  }
+
+  @Override
+  public String get(String key) {
+    for (String prefix : prefixes) {
+      String val = System.getProperty(prefix + key);
+      if (val != null) {
+        return val;
+      }
+    }
+    return null;
+  }
+
+  @Override
+  public String get(String key, String defaultValue) {
+    String val = get(key);
+    return (val != null) ? val : defaultValue;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/ab94ce6f/htrace-core4/src/test/java/org/apache/htrace/core/TestHTraceConfiguration.java
----------------------------------------------------------------------
diff --git a/htrace-core4/src/test/java/org/apache/htrace/core/TestHTraceConfiguration.java b/htrace-core4/src/test/java/org/apache/htrace/core/TestHTraceConfiguration.java
index 7ca897f..3b4ea53 100644
--- a/htrace-core4/src/test/java/org/apache/htrace/core/TestHTraceConfiguration.java
+++ b/htrace-core4/src/test/java/org/apache/htrace/core/TestHTraceConfiguration.java
@@ -59,4 +59,22 @@ public class TestHTraceConfiguration {
     assertEquals(5, configuration.getInt("d", -999));
     assertEquals(-999, configuration.getInt("absent", -999));
   }
+
+  @Test
+  public void testPropertyConfiguration() throws Exception {
+    System.setProperty("supercalifragilistic.property", "1");
+    System.setProperty("htrace.supercalifragilistic.property", "2");
+    System.setProperty("foo.htrace.supercalifragilistic.property", "3");
+    JavaPropertyConfiguration conf =
+      new JavaPropertyConfiguration.Builder().
+        addPrefix("foo.htrace.").
+        build();
+    assertEquals("3", conf.get("supercalifragilistic.property"));
+    JavaPropertyConfiguration conf2 =
+      new JavaPropertyConfiguration.Builder().
+        build();
+    assertEquals("2", conf2.get("supercalifragilistic.property"));
+    assertTrue(null == conf.get("superfly"));
+    assertTrue(null == conf2.get("superfly"));
+  }
 }