Repository: incubator-tamaya
Updated Branches:
  refs/heads/master ac0c08380 -> 7c98c75e3


[TAMAYA-164] Moved the banner from API to core. The banner is now handled by 
the DefaultConfigurationProvider.


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

Branch: refs/heads/master
Commit: 09fda837cb447f4796d4daf2c1b8f2809a930d42
Parents: e0a51f6
Author: Oliver B. Fischer <[email protected]>
Authored: Wed Nov 30 23:21:32 2016 +0100
Committer: Oliver B. Fischer <[email protected]>
Committed: Wed Nov 30 23:23:45 2016 +0100

----------------------------------------------------------------------
 .../java/org/apache/tamaya/BannerManager.java   | 136 ------------------
 .../apache/tamaya/ConfigurationProvider.java    |   7 -
 .../org/apache/tamaya/BannerManagerTest.java    |  74 ----------
 .../tamaya/core/internal/BannerManager.java     | 138 +++++++++++++++++++
 .../internal/DefaultConfigurationProvider.java  |   9 +-
 .../tamaya/core/internal/BannerManagerTest.java |  76 ++++++++++
 6 files changed, 221 insertions(+), 219 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/09fda837/code/api/src/main/java/org/apache/tamaya/BannerManager.java
----------------------------------------------------------------------
diff --git a/code/api/src/main/java/org/apache/tamaya/BannerManager.java 
b/code/api/src/main/java/org/apache/tamaya/BannerManager.java
deleted file mode 100644
index 9ae81bc..0000000
--- a/code/api/src/main/java/org/apache/tamaya/BannerManager.java
+++ /dev/null
@@ -1,136 +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;
-
-import java.net.URL;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.List;
-import java.util.Locale;
-import java.util.Objects;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-class BannerManager {
-    enum BannerTarget {
-        OFF, CONSOLE, LOGGER
-    }
-
-    private BannerTarget bannerTarget;
-
-    public BannerManager(String value) {
-        value = Objects.requireNonNull(value).toUpperCase(Locale.getDefault());
-
-        try {
-            bannerTarget = BannerTarget.valueOf(value);
-        } catch (NullPointerException | IllegalArgumentException e) {
-            bannerTarget = BannerTarget.OFF;
-        }
-    }
-
-    public void outputBanner() {
-        BannerPrinter bp = new SilentBannerPrinter();
-
-        switch (bannerTarget) {
-            case CONSOLE:
-                bp = new ConsoleBannerPrinter();
-                break;
-            case LOGGER:
-                bp = new LoggingBannerPrinter();
-                break;
-            case OFF:
-            default:
-                break;
-        }
-
-        bp.outputBanner();
-    }
-}
-
-abstract class AbstractBannerPrinter implements BannerPrinter {
-    private static final Logger log = 
Logger.getLogger(AbstractBannerPrinter.class.getName());
-
-    @Override
-    public void outputBanner() {
-        try {
-            URL url = 
ConfigurationProvider.class.getResource("/tamaya-banner.txt");
-
-            if (url != null) {
-                Path path = Paths.get(url.toURI());
-                List<String> content = Files.readAllLines(path, 
StandardCharsets.UTF_8);
-
-                for (String line : content) {
-                    outputSingleLine(line);
-                }
-            }
-        } catch (Exception e) {
-            log.log(Level.FINE, "Failed to output the banner of tamaya.", e);
-        }
-    }
-
-    abstract void outputSingleLine(String line);
-}
-
-
-/**
- * Outputs the Tamaya banner to an implementation specific output channel
- * as STDOUT or the logging system.
- */
-interface BannerPrinter {
-    /**
-     * Outputs the banner to the output channel
-     * used by the implementation.
-     */
-    void outputBanner();
-}
-
-/**
- * Silent implementation of a {@link BannerPrinter}.
- */
-class SilentBannerPrinter implements BannerPrinter {
-    @Override
-    public void outputBanner() {
-    }
-}
-
-/**
- * Logs the banner via JUL at level {@link java.util.logging.Level#INFO}.
- */
-class LoggingBannerPrinter extends AbstractBannerPrinter {
-    private static final Logger log = 
Logger.getLogger(LoggingBannerPrinter.class.getName());
-
-    @Override
-    void outputSingleLine(String line) {
-        log.log(Level.INFO, line);
-    }
-}
-
-/**
- * Prints the banner to the console.
- */
-class ConsoleBannerPrinter extends AbstractBannerPrinter {
-    @Override
-    void outputSingleLine(String line) {
-        System.out.println(line);
-    }
-}
-
-

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/09fda837/code/api/src/main/java/org/apache/tamaya/ConfigurationProvider.java
----------------------------------------------------------------------
diff --git 
a/code/api/src/main/java/org/apache/tamaya/ConfigurationProvider.java 
b/code/api/src/main/java/org/apache/tamaya/ConfigurationProvider.java
index 0c5d9b1..e4bbb9a 100644
--- a/code/api/src/main/java/org/apache/tamaya/ConfigurationProvider.java
+++ b/code/api/src/main/java/org/apache/tamaya/ConfigurationProvider.java
@@ -30,13 +30,6 @@ public final class ConfigurationProvider {
 
     private static final ConfigurationProviderSpi PROVIDER_SPI = loadSpi();
 
-    static {
-        String bannerConfig = 
PROVIDER_SPI.getConfiguration().getOrDefault("tamaya.banner", "OFF");
-
-        BannerManager bm = new BannerManager(bannerConfig);
-        bm.outputBanner();
-    }
-
     private static ConfigurationProviderSpi loadSpi() {
         ConfigurationProviderSpi spi = 
ServiceContextManager.getServiceContext()
                 .getService(ConfigurationProviderSpi.class);

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/09fda837/code/api/src/test/java/org/apache/tamaya/BannerManagerTest.java
----------------------------------------------------------------------
diff --git a/code/api/src/test/java/org/apache/tamaya/BannerManagerTest.java 
b/code/api/src/test/java/org/apache/tamaya/BannerManagerTest.java
deleted file mode 100644
index 3bec943..0000000
--- a/code/api/src/test/java/org/apache/tamaya/BannerManagerTest.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;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.mockito.runners.MockitoJUnitRunner;
-
-import java.io.PrintStream;
-import java.util.logging.Logger;
-
-@RunWith(MockitoJUnitRunner.class)
-public class BannerManagerTest {
-
-    @Mock
-    private PrintStream printStream;
-
-    @Mock
-    private Logger logger;
-
-    @Test
-    public void valueConsoleSendsBannerToSystemOut() {
-        PrintStream standard = System.out;
-
-        System.setOut(printStream);
-
-        try {
-            BannerManager bm = new BannerManager("console");
-            bm.outputBanner();
-
-        } finally {
-            System.setOut(standard);
-        }
-
-        Mockito.verify(printStream, 
Mockito.atLeastOnce()).println(Mockito.anyString());
-    }
-
-    @Test
-    public void invalidValueAvoidsLoggingToConsonle() {
-
-        PrintStream standard = System.out;
-
-        System.setOut(printStream);
-
-        try {
-            BannerManager bm = new BannerManager("snafu");
-            bm.outputBanner();
-
-        } finally {
-            System.setOut(standard);
-        }
-
-        Mockito.verify(printStream, 
Mockito.never()).println(Mockito.anyString());
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/09fda837/code/core/src/main/java/org/apache/tamaya/core/internal/BannerManager.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/BannerManager.java 
b/code/core/src/main/java/org/apache/tamaya/core/internal/BannerManager.java
new file mode 100644
index 0000000..36906f7
--- /dev/null
+++ b/code/core/src/main/java/org/apache/tamaya/core/internal/BannerManager.java
@@ -0,0 +1,138 @@
+/*
+ * 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.core.internal;
+
+import org.apache.tamaya.ConfigurationProvider;
+
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+import java.util.Locale;
+import java.util.Objects;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+class BannerManager {
+    enum BannerTarget {
+        OFF, CONSOLE, LOGGER
+    }
+
+    private BannerTarget bannerTarget;
+
+    public BannerManager(String value) {
+        value = Objects.requireNonNull(value).toUpperCase(Locale.getDefault());
+
+        try {
+            bannerTarget = BannerTarget.valueOf(value);
+        } catch (NullPointerException | IllegalArgumentException e) {
+            bannerTarget = BannerTarget.OFF;
+        }
+    }
+
+    public void outputBanner() {
+        BannerPrinter bp = new SilentBannerPrinter();
+
+        switch (bannerTarget) {
+            case CONSOLE:
+                bp = new ConsoleBannerPrinter();
+                break;
+            case LOGGER:
+                bp = new LoggingBannerPrinter();
+                break;
+            case OFF:
+            default:
+                break;
+        }
+
+        bp.outputBanner();
+    }
+}
+
+abstract class AbstractBannerPrinter implements BannerPrinter {
+    private static final Logger log = 
Logger.getLogger(AbstractBannerPrinter.class.getName());
+
+    @Override
+    public void outputBanner() {
+        try {
+            URL url = 
ConfigurationProvider.class.getResource("/tamaya-banner.txt");
+
+            if (url != null) {
+                Path path = Paths.get(url.toURI());
+                List<String> content = Files.readAllLines(path, 
StandardCharsets.UTF_8);
+
+                for (String line : content) {
+                    outputSingleLine(line);
+                }
+            }
+        } catch (Exception e) {
+            log.log(Level.FINE, "Failed to output the banner of tamaya.", e);
+        }
+    }
+
+    abstract void outputSingleLine(String line);
+}
+
+
+/**
+ * Outputs the Tamaya banner to an implementation specific output channel
+ * as STDOUT or the logging system.
+ */
+interface BannerPrinter {
+    /**
+     * Outputs the banner to the output channel
+     * used by the implementation.
+     */
+    void outputBanner();
+}
+
+/**
+ * Silent implementation of a {@link BannerPrinter}.
+ */
+class SilentBannerPrinter implements BannerPrinter {
+    @Override
+    public void outputBanner() {
+    }
+}
+
+/**
+ * Logs the banner via JUL at level {@link java.util.logging.Level#INFO}.
+ */
+class LoggingBannerPrinter extends AbstractBannerPrinter {
+    private static final Logger log = 
Logger.getLogger(LoggingBannerPrinter.class.getName());
+
+    @Override
+    void outputSingleLine(String line) {
+        log.log(Level.INFO, line);
+    }
+}
+
+/**
+ * Prints the banner to the console.
+ */
+class ConsoleBannerPrinter extends AbstractBannerPrinter {
+    @Override
+    void outputSingleLine(String line) {
+        System.out.println(line);
+    }
+}
+
+

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/09fda837/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationProvider.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationProvider.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationProvider.java
index c0e173c..bcc9eae 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationProvider.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationProvider.java
@@ -22,9 +22,7 @@ import org.apache.tamaya.Configuration;
 import org.apache.tamaya.spi.ConfigurationContext;
 import org.apache.tamaya.spi.ConfigurationContextBuilder;
 import org.apache.tamaya.spi.ConfigurationProviderSpi;
-import org.apache.tamaya.spi.ServiceContextManager;
 
-import javax.annotation.Priority;
 import java.util.Objects;
 
 /**
@@ -41,6 +39,13 @@ public class DefaultConfigurationProvider implements 
ConfigurationProviderSpi {
 
     private Configuration config = new DefaultConfiguration(context);
 
+    {
+        String bannerConfig = config.getOrDefault("tamaya.banner", "OFF");
+
+        BannerManager bm = new BannerManager(bannerConfig);
+        bm.outputBanner();
+    }
+
     @Override
     public Configuration getConfiguration() {
         return config;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/09fda837/code/core/src/test/java/org/apache/tamaya/core/internal/BannerManagerTest.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/test/java/org/apache/tamaya/core/internal/BannerManagerTest.java
 
b/code/core/src/test/java/org/apache/tamaya/core/internal/BannerManagerTest.java
new file mode 100644
index 0000000..7e3c3bc
--- /dev/null
+++ 
b/code/core/src/test/java/org/apache/tamaya/core/internal/BannerManagerTest.java
@@ -0,0 +1,76 @@
+/*
+ * 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.core.internal;
+
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.runners.MockitoJUnitRunner;
+
+import java.io.PrintStream;
+import java.util.logging.Logger;
+
+@RunWith(MockitoJUnitRunner.class)
+public class BannerManagerTest {
+
+    @Mock
+    private PrintStream printStream;
+
+    @Mock
+    private Logger logger;
+
+    @Ignore
+    @Test
+    public void valueConsoleSendsBannerToSystemOut() {
+        PrintStream standard = System.out;
+
+        System.setOut(printStream);
+
+        try {
+            BannerManager bm = new BannerManager("console");
+            bm.outputBanner();
+
+        } finally {
+            System.setOut(standard);
+        }
+
+        Mockito.verify(printStream, 
Mockito.atLeastOnce()).println(Mockito.anyString());
+    }
+
+    @Test
+    public void invalidValueAvoidsLoggingToConsonle() {
+
+        PrintStream standard = System.out;
+
+        System.setOut(printStream);
+
+        try {
+            BannerManager bm = new BannerManager("snafu");
+            bm.outputBanner();
+
+        } finally {
+            System.setOut(standard);
+        }
+
+        Mockito.verify(printStream, 
Mockito.never()).println(Mockito.anyString());
+    }
+
+}

Reply via email to