TAMAYA-156: Added feature to enable and clear usage stats.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/commit/89196100 Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/tree/89196100 Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/diff/89196100 Branch: refs/heads/master Commit: 89196100847d6d1faf5ae1a192c66a21b8778550 Parents: 58647a4 Author: anatole <anat...@apache.org> Authored: Sat Apr 30 21:49:15 2016 +0200 Committer: anatole <anat...@apache.org> Committed: Sat Apr 30 21:49:15 2016 +0200 ---------------------------------------------------------------------- .../apache/tamaya/model/ConfigModelManager.java | 10 ++++++- .../model/internal/DefaultUsageTracker.java | 20 ++++++++++++- .../tamaya/model/spi/UsageTrackerSpi.java | 4 +++ .../tamaya/model/TestConfigModelProvider.java | 30 ++++++++++++++++++-- 4 files changed, 60 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/89196100/model/src/main/java/org/apache/tamaya/model/ConfigModelManager.java ---------------------------------------------------------------------- diff --git a/model/src/main/java/org/apache/tamaya/model/ConfigModelManager.java b/model/src/main/java/org/apache/tamaya/model/ConfigModelManager.java index 8139310..b066366 100644 --- a/model/src/main/java/org/apache/tamaya/model/ConfigModelManager.java +++ b/model/src/main/java/org/apache/tamaya/model/ConfigModelManager.java @@ -291,6 +291,14 @@ public final class ConfigModelManager { * @return the recorded usge references, never null. */ public static Collection<Usage> getUsages() { - return usageTracker.getUsages(); + return Objects.requireNonNull(usageTracker, "No UsageTrackerSpi component available.").getUsages(); + } + + /** + * Clears all collected usage statistics. + */ + public static void clearUsageStats() { + Objects.requireNonNull(usageTracker, "No UsageTrackerSpi component available.") + .clearUsageStats(); } } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/89196100/model/src/main/java/org/apache/tamaya/model/internal/DefaultUsageTracker.java ---------------------------------------------------------------------- diff --git a/model/src/main/java/org/apache/tamaya/model/internal/DefaultUsageTracker.java b/model/src/main/java/org/apache/tamaya/model/internal/DefaultUsageTracker.java index b9575a2..03b5bd5 100644 --- a/model/src/main/java/org/apache/tamaya/model/internal/DefaultUsageTracker.java +++ b/model/src/main/java/org/apache/tamaya/model/internal/DefaultUsageTracker.java @@ -42,7 +42,20 @@ public class DefaultUsageTracker implements UsageTrackerSpi{ private Map<String, Usage> usages = new ConcurrentHashMap<>(); /** By default usage tracking is not enabled. */ - private boolean usageTrackingEnabled = false; + private boolean usageTrackingEnabled = initEnabled(); + + /** + * Method that checks the 'tamaya.usage-report' system property for + * enabling tamaya usage reporting initially. + * @return + */ + private boolean initEnabled() { + String val = System.getProperty("tamaya.usage-report"); + if(Boolean.parseBoolean(val)){ + return true; + } + return false; + } public DefaultUsageTracker(){ ignoredPackages.add("com.intellij"); @@ -145,4 +158,9 @@ public class DefaultUsageTracker implements UsageTrackerSpi{ return b.toString(); } + @Override + public void clearUsageStats() { + this.usages.clear(); + } + } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/89196100/model/src/main/java/org/apache/tamaya/model/spi/UsageTrackerSpi.java ---------------------------------------------------------------------- diff --git a/model/src/main/java/org/apache/tamaya/model/spi/UsageTrackerSpi.java b/model/src/main/java/org/apache/tamaya/model/spi/UsageTrackerSpi.java index ed6e12b..d84b636 100644 --- a/model/src/main/java/org/apache/tamaya/model/spi/UsageTrackerSpi.java +++ b/model/src/main/java/org/apache/tamaya/model/spi/UsageTrackerSpi.java @@ -76,4 +76,8 @@ public interface UsageTrackerSpi { */ String getUsageInfo(); + /** + * Clears all collected usage statistics. + */ + void clearUsageStats(); } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/89196100/model/src/test/java/org/apache/tamaya/model/TestConfigModelProvider.java ---------------------------------------------------------------------- diff --git a/model/src/test/java/org/apache/tamaya/model/TestConfigModelProvider.java b/model/src/test/java/org/apache/tamaya/model/TestConfigModelProvider.java index 2c7e753..70ca611 100644 --- a/model/src/test/java/org/apache/tamaya/model/TestConfigModelProvider.java +++ b/model/src/test/java/org/apache/tamaya/model/TestConfigModelProvider.java @@ -32,7 +32,9 @@ import java.util.Collection; import java.util.Collections; import java.util.List; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; /** * Created by Anatole on 09.08.2015. @@ -70,12 +72,13 @@ public class TestConfigModelProvider implements ModelProviderSpi { } @Test - public void testUsage(){ + public void testUsageWhenEnabled(){ + ConfigModelManager.enableUsageTracking(true); TestConfigAccessor.readConfiguration(); Configuration config = ConfigurationProvider.getConfiguration(); String info = ConfigModelManager.getUsageInfo(); + assertFalse(info.contains("java.version")); assertNotNull(info); - System.out.println(info); config = TestConfigAccessor.readConfiguration(); config.getProperties(); TestConfigAccessor.readProperty(config, "java.locale"); @@ -84,6 +87,29 @@ public class TestConfigModelProvider implements ModelProviderSpi { config.get("java.version"); info = ConfigModelManager.getUsageInfo(); System.out.println(info); + assertTrue(info.contains("java.version")); + assertNotNull(info); + ConfigModelManager.enableUsageTracking(false); + } + + @Test + public void testUsageWhenDisabled(){ + ConfigModelManager.enableUsageTracking(false); + ConfigModelManager.clearUsageStats(); + TestConfigAccessor.readConfiguration(); + Configuration config = ConfigurationProvider.getConfiguration(); + String info = ConfigModelManager.getUsageInfo(); + assertNotNull(info); + assertFalse(info.contains("java.version")); + config = TestConfigAccessor.readConfiguration(); + config.getProperties(); + TestConfigAccessor.readProperty(config, "java.locale"); + TestConfigAccessor.readProperty(config, "java.version"); + TestConfigAccessor.readProperty(config, "java.version"); + config.get("java.version"); + info = ConfigModelManager.getUsageInfo(); + assertFalse(info.contains("java.version")); assertNotNull(info); + ConfigModelManager.enableUsageTracking(false); } }