TAMAYA-274 Some minor additions. TAMAYA-353 Some minor additions.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/commit/a4bfdb4a Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/tree/a4bfdb4a Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/diff/a4bfdb4a Branch: refs/heads/master Commit: a4bfdb4a6df6be1602d6fc31fb68465114c1feac Parents: 19ba2a4 Author: Anatole Tresch <[email protected]> Authored: Mon Nov 5 00:21:40 2018 +0100 Committer: Anatole Tresch <[email protected]> Committed: Mon Nov 5 00:21:40 2018 +0100 ---------------------------------------------------------------------- .../apache/tamaya/usagetracker/ConfigUsage.java | 53 ++++++++------ .../apache/tamaya/usagetracker/UsageStat.java | 2 +- .../tamaya/model/ConfigUsageStatsTest.java | 74 -------------------- .../apache/tamaya/model/ConfigUsageTest.java | 74 ++++++++++++++++++++ 4 files changed, 108 insertions(+), 95 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/a4bfdb4a/usagetracker/src/main/java/org/apache/tamaya/usagetracker/ConfigUsage.java ---------------------------------------------------------------------- diff --git a/usagetracker/src/main/java/org/apache/tamaya/usagetracker/ConfigUsage.java b/usagetracker/src/main/java/org/apache/tamaya/usagetracker/ConfigUsage.java index 1bfacb4..13536ba 100644 --- a/usagetracker/src/main/java/org/apache/tamaya/usagetracker/ConfigUsage.java +++ b/usagetracker/src/main/java/org/apache/tamaya/usagetracker/ConfigUsage.java @@ -23,6 +23,7 @@ import org.apache.tamaya.spi.ServiceContextManager; import org.apache.tamaya.usagetracker.spi.ConfigUsageSpi; import java.util.Collection; +import java.util.Objects; import java.util.Set; import java.util.logging.Logger; @@ -36,8 +37,10 @@ public final class ConfigUsage { private static final String NO_USAGE_TRACKER_SPI_COMPONENT_MESSAGE = "No UsageTrackerSpi component available."; + private ConfigUsageSpi spi; + /** The loaded usage tracking SPI. */ - private static ConfigUsageSpi spi(){ + private static ConfigUsageSpi spi(ClassLoader classLoader){ ConfigUsageSpi spi = ServiceContextManager .getServiceContext().getService(ConfigUsageSpi.class); if(spi==null){ @@ -49,31 +52,41 @@ public final class ConfigUsage { /** * Singleton constructor. */ - private ConfigUsage() { + private ConfigUsage(ConfigUsageSpi spi) { + this.spi = Objects.requireNonNull(spi); + } + + public static ConfigUsage getInstance(){ + return getInstance(ServiceContextManager.getDefaultClassLoader()); + } + + public static ConfigUsage getInstance(ClassLoader classLoader){ + return ServiceContextManager.getServiceContext(classLoader).getService(ConfigUsage.class, + () -> new ConfigUsage(spi(classLoader))); } /** * Returns a setCurrent of package names that are to be ignored when collecting usage data. * @return the ignored package names, not null. */ - public static Set<String> getIgnoredPackages(){ - return spi().getIgnoredPackages(); + public Set<String> getIgnoredPackages(){ + return spi.getIgnoredPackages(); } /** * Adds the given packageNames to the createList of packages to be ignored when collecting usage data. * @param packageName the package names to be added, not null. */ - public static void addIgnoredPackages(String... packageName){ - spi().addIgnoredPackages(packageName); + public void addIgnoredPackages(String... packageName){ + spi.addIgnoredPackages(packageName); } /** * Enables/disables usage tracking. * @param enabled setCurrent to true to enable usage tracking. */ - public static void enableUsageTracking(boolean enabled){ - spi().enableUsageTracking(enabled); + public void enableUsageTracking(boolean enabled){ + spi.enableUsageTracking(enabled); } /** @@ -82,23 +95,23 @@ public final class ConfigUsage { * @param key the fully qualified configuration key, not null. * @return the stats collected, or null. */ - public static UsageStat getSinglePropertyStats(String key){ - return spi().getSinglePropertyStats(key); + public UsageStat getSinglePropertyStats(String key){ + return spi.getSinglePropertyStats(key); } /** * Get the recorded usage references of configuration. * @return the recorded usge references, never null. */ - public static Collection<UsageStat> getUsageStats() { - return spi().getUsageStats(); + public Collection<UsageStat> getUsageStats() { + return spi.getUsageStats(); } /** * Clears all collected usage statistics. */ - public static void clearStats() { - spi().clearStats(); + public void clearStats() { + spi.clearStats(); } /** @@ -106,24 +119,24 @@ public final class ConfigUsage { * If usage stats collection is not activated (default), this method returns null. * @return the stats collected, or null. */ - public static UsageStat getAllPropertiesStats(){ - return spi().getAllPropertiesStats(); + public UsageStat getAllPropertiesStats(){ + return spi.getAllPropertiesStats(); } /** * Allows to check if usage tracking is enabled (should be disbled by default). * @return true, if usage tracking is enabled. */ - public static boolean isTrackingEnabled(){ - return spi().isTrackingEnabled(); + public boolean isTrackingEnabled(){ + return spi.isTrackingEnabled(); } /** * Access the usage statistics for the recorded uses of configuration. * @return usage info or default message. */ - public static String getInfo(){ - return spi().getInfo(); + public String getInfo(){ + return spi.getInfo(); } } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/a4bfdb4a/usagetracker/src/main/java/org/apache/tamaya/usagetracker/UsageStat.java ---------------------------------------------------------------------- diff --git a/usagetracker/src/main/java/org/apache/tamaya/usagetracker/UsageStat.java b/usagetracker/src/main/java/org/apache/tamaya/usagetracker/UsageStat.java index bab6312..43e88f6 100644 --- a/usagetracker/src/main/java/org/apache/tamaya/usagetracker/UsageStat.java +++ b/usagetracker/src/main/java/org/apache/tamaya/usagetracker/UsageStat.java @@ -188,7 +188,7 @@ public final class UsageStat { List<String> trace = new ArrayList<>(); stack: for (StackTraceElement ste : e.getStackTrace()) { - for (String ignored : ConfigUsage.getIgnoredPackages()) { + for (String ignored : ConfigUsage.getInstance().getIgnoredPackages()) { if (ste.getClassName().startsWith(ignored)) { continue stack; } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/a4bfdb4a/usagetracker/src/test/java/org/apache/tamaya/model/ConfigUsageStatsTest.java ---------------------------------------------------------------------- diff --git a/usagetracker/src/test/java/org/apache/tamaya/model/ConfigUsageStatsTest.java b/usagetracker/src/test/java/org/apache/tamaya/model/ConfigUsageStatsTest.java deleted file mode 100644 index 04a3cbf..0000000 --- a/usagetracker/src/test/java/org/apache/tamaya/model/ConfigUsageStatsTest.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * 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.tamaya.model; - -import org.apache.tamaya.Configuration; -import org.apache.tamaya.usagetracker.ConfigUsage; -import org.junit.Test; -import test.model.TestConfigAccessor; - -import static org.junit.Assert.*; - -/** - * Created by Anatole on 09.08.2015. - */ -public class ConfigUsageStatsTest { - - @Test - public void testUsageWhenEnabled(){ - ConfigUsage.enableUsageTracking(true); - TestConfigAccessor.readConfiguration(); - Configuration config = Configuration.current(); - String info = ConfigUsage.getInfo(); - assertFalse(info.contains("java.version")); - assertNotNull(info); - 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 = ConfigUsage.getInfo(); - System.out.println(info); - assertTrue(info.contains("java.version")); - assertNotNull(info); - ConfigUsage.enableUsageTracking(false); - } - - @Test - public void testUsageWhenDisabled(){ - ConfigUsage.enableUsageTracking(false); - ConfigUsage.clearStats(); - TestConfigAccessor.readConfiguration(); - Configuration config = Configuration.current(); - String info = ConfigUsage.getInfo(); - 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 = ConfigUsage.getInfo(); - assertFalse(info.contains("java.version")); - assertNotNull(info); - ConfigUsage.enableUsageTracking(false); - } -} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/a4bfdb4a/usagetracker/src/test/java/org/apache/tamaya/model/ConfigUsageTest.java ---------------------------------------------------------------------- diff --git a/usagetracker/src/test/java/org/apache/tamaya/model/ConfigUsageTest.java b/usagetracker/src/test/java/org/apache/tamaya/model/ConfigUsageTest.java new file mode 100644 index 0000000..d424ab7 --- /dev/null +++ b/usagetracker/src/test/java/org/apache/tamaya/model/ConfigUsageTest.java @@ -0,0 +1,74 @@ +/* + * 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.tamaya.model; + +import org.apache.tamaya.Configuration; +import org.apache.tamaya.usagetracker.ConfigUsage; +import org.junit.Test; +import test.model.TestConfigAccessor; + +import static org.junit.Assert.*; + +/** + * Created by Anatole on 09.08.2015. + */ +public class ConfigUsageTest { + + @Test + public void testUsageWhenEnabled(){ + ConfigUsage.getInstance().enableUsageTracking(true); + TestConfigAccessor.readConfiguration(); + Configuration config = Configuration.current(); + String info = ConfigUsage.getInstance().getInfo(); + assertFalse(info.contains("java.version")); + assertNotNull(info); + 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 = ConfigUsage.getInstance().getInfo(); + System.out.println(info); + assertTrue(info.contains("java.version")); + assertNotNull(info); + ConfigUsage.getInstance().enableUsageTracking(false); + } + + @Test + public void testUsageWhenDisabled(){ + ConfigUsage.getInstance().enableUsageTracking(false); + ConfigUsage.getInstance().clearStats(); + TestConfigAccessor.readConfiguration(); + Configuration config = Configuration.current(); + String info = ConfigUsage.getInstance().getInfo(); + 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 = ConfigUsage.getInstance().getInfo(); + assertFalse(info.contains("java.version")); + assertNotNull(info); + ConfigUsage.getInstance().enableUsageTracking(false); + } +}
