TAMAYA-63: Bugfixes and alignment with latest Java 8 version.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/commit/a8c1a9c0 Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/tree/a8c1a9c0 Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/diff/a8c1a9c0 Branch: refs/heads/master Commit: a8c1a9c0840c928a5fe74fcfb8d8bbb89a748e4b Parents: bc62f71 Author: anatole <[email protected]> Authored: Sat Jan 24 19:40:32 2015 +0100 Committer: anatole <[email protected]> Committed: Sat Jan 24 21:06:17 2015 +0100 ---------------------------------------------------------------------- .../apache/tamaya/ConfigurationProvider.java | 31 +++++++++++++- .../tamaya/spi/ConfigurationProviderSpi.java | 45 ++++++++++++++++++++ .../tamaya/TestConfigurationProvider.java | 41 ++++++++++++++++++ .../services/org.apache.tamaya.Configuration | 19 --------- ...g.apache.tamaya.spi.ConfigurationProviderSpi | 19 +++++++++ .../core/internal/DefaultConfiguration.java | 11 ++++- .../internal/DefaultConfigurationProvider.java | 45 ++++++++++++++++++++ .../org.apache.tamaya.spi.ConfigurationContext | 19 --------- ...g.apache.tamaya.spi.ConfigurationProviderSpi | 19 +++++++++ .../apache/tamaya/core/ConfigurationTest.java | 3 +- .../internal/DefaultServiceContextTest.java | 8 ++-- 11 files changed, 215 insertions(+), 45 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a8c1a9c0/java7/api/src/main/java/org/apache/tamaya/ConfigurationProvider.java ---------------------------------------------------------------------- diff --git a/java7/api/src/main/java/org/apache/tamaya/ConfigurationProvider.java b/java7/api/src/main/java/org/apache/tamaya/ConfigurationProvider.java index 1293f49..69045b5 100644 --- a/java7/api/src/main/java/org/apache/tamaya/ConfigurationProvider.java +++ b/java7/api/src/main/java/org/apache/tamaya/ConfigurationProvider.java @@ -16,17 +16,46 @@ */ package org.apache.tamaya; +import org.apache.tamaya.spi.ConfigurationContext; +import org.apache.tamaya.spi.ConfigurationProviderSpi; import org.apache.tamaya.spi.ServiceContextManager; /** * Static access to the {@link Configuration} for the very application. */ public final class ConfigurationProvider { + + private static final ConfigurationProviderSpi PROVIDER_SPI = loadSpi(); + + private static ConfigurationProviderSpi loadSpi() { + ConfigurationProviderSpi spi = ServiceContextManager.getServiceContext() + .getService(ConfigurationProviderSpi.class); + if(spi==null){ + throw new IllegalStateException("ConfigurationProviderSpi not available."); + } + return spi; + } + private ConfigurationProvider() { // just to prevent initialisation } + /** + * Access the current configuration. + * + * @return the corresponding Configuration instance, never null. + */ public static Configuration getConfiguration() { - return ServiceContextManager.getServiceContext().getService(Configuration.class); + return PROVIDER_SPI.getConfiguration(); } + + /** + * Get access to the current ConfigurationContext. + * + * @return the current ConfigurationContext, never null. + */ + public static ConfigurationContext getConfigurationContext(){ + return PROVIDER_SPI.getConfigurationContext(); + } + } http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a8c1a9c0/java7/api/src/main/java/org/apache/tamaya/spi/ConfigurationProviderSpi.java ---------------------------------------------------------------------- diff --git a/java7/api/src/main/java/org/apache/tamaya/spi/ConfigurationProviderSpi.java b/java7/api/src/main/java/org/apache/tamaya/spi/ConfigurationProviderSpi.java new file mode 100644 index 0000000..3e96abd --- /dev/null +++ b/java7/api/src/main/java/org/apache/tamaya/spi/ConfigurationProviderSpi.java @@ -0,0 +1,45 @@ +/* + * 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.spi; + +import org.apache.tamaya.Configuration; + +/** + * SPI that must be implemented to provide the component that manages all {@link org.apache.tamaya.Configuration} + * instances in a system. In SE this may be a true singleton containing exact one {@link org.apache.tamaya.Configuration} + * instance, whereas in Java EE and other more complex environments instances may be returned depending the current + * runtime context. + */ +public interface ConfigurationProviderSpi { + + /** + * Access the current {@link org.apache.tamaya.Configuration}. + * + * @return the current {@link org.apache.tamaya.Configuration} instance, never null. + */ + Configuration getConfiguration(); + + /** + * Get access to the current {@link ConfigurationContext}. + * + * @return the current {@link ConfigurationContext}, never null. + */ + ConfigurationContext getConfigurationContext(); + +} http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a8c1a9c0/java7/api/src/test/java/org/apache/tamaya/TestConfigurationProvider.java ---------------------------------------------------------------------- diff --git a/java7/api/src/test/java/org/apache/tamaya/TestConfigurationProvider.java b/java7/api/src/test/java/org/apache/tamaya/TestConfigurationProvider.java new file mode 100644 index 0000000..7c356c8 --- /dev/null +++ b/java7/api/src/test/java/org/apache/tamaya/TestConfigurationProvider.java @@ -0,0 +1,41 @@ +/* + * 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.apache.tamaya.spi.ConfigurationContext; +import org.apache.tamaya.spi.ConfigurationProviderSpi; + +/** + * Test Configuration class, that is used to testdata the default methods provided by the API. + */ +public class TestConfigurationProvider implements ConfigurationProviderSpi { + + private static final Configuration config = new TestConfiguration(); + + + @Override + public Configuration getConfiguration() { + return config; + } + + @Override + public ConfigurationContext getConfigurationContext() { + return null; + } +} http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a8c1a9c0/java7/api/src/test/resources/META-INF/services/org.apache.tamaya.Configuration ---------------------------------------------------------------------- diff --git a/java7/api/src/test/resources/META-INF/services/org.apache.tamaya.Configuration b/java7/api/src/test/resources/META-INF/services/org.apache.tamaya.Configuration deleted file mode 100644 index 1f42438..0000000 --- a/java7/api/src/test/resources/META-INF/services/org.apache.tamaya.Configuration +++ /dev/null @@ -1,19 +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 current 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. -# -org.apache.tamaya.TestConfiguration \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a8c1a9c0/java7/api/src/test/resources/META-INF/services/org.apache.tamaya.spi.ConfigurationProviderSpi ---------------------------------------------------------------------- diff --git a/java7/api/src/test/resources/META-INF/services/org.apache.tamaya.spi.ConfigurationProviderSpi b/java7/api/src/test/resources/META-INF/services/org.apache.tamaya.spi.ConfigurationProviderSpi new file mode 100644 index 0000000..b9c5ba5 --- /dev/null +++ b/java7/api/src/test/resources/META-INF/services/org.apache.tamaya.spi.ConfigurationProviderSpi @@ -0,0 +1,19 @@ +# +# 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 current 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. +# +org.apache.tamaya.TestConfigurationProvider http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a8c1a9c0/java7/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfiguration.java ---------------------------------------------------------------------- diff --git a/java7/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfiguration.java b/java7/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfiguration.java index 720efe0..4215a73 100644 --- a/java7/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfiguration.java +++ b/java7/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfiguration.java @@ -33,6 +33,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.concurrent.atomic.AtomicInteger; import java.util.logging.Level; import java.util.logging.Logger; @@ -55,7 +56,15 @@ public class DefaultConfiguration implements Configuration { /** * The current {@link org.apache.tamaya.spi.ConfigurationContext} of the current instance. */ - private final ConfigurationContext configurationContext = ServiceContextManager.getServiceContext().getService(ConfigurationContext.class); + private final ConfigurationContext configurationContext; + + /** + * Constructor. + * @param configurationContext The configuration Context to be used. + */ + public DefaultConfiguration(ConfigurationContext configurationContext){ + this.configurationContext = Objects.requireNonNull(configurationContext); + } /** * This method evaluates the given configuration key. Hereby if goes down the chain or PropertySource instances http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a8c1a9c0/java7/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationProvider.java ---------------------------------------------------------------------- diff --git a/java7/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationProvider.java b/java7/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationProvider.java new file mode 100644 index 0000000..c06755d --- /dev/null +++ b/java7/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationProvider.java @@ -0,0 +1,45 @@ +/* + * 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.Configuration; +import org.apache.tamaya.spi.ConfigurationContext; +import org.apache.tamaya.spi.ConfigurationProviderSpi; + +/** + * Implementation of the Configuration API. This class uses the current {@link org.apache.tamaya.spi.ConfigurationContext} to evaluate the + * chain of {@link org.apache.tamaya.spi.PropertySource} and {@link org.apache.tamaya.spi.PropertyFilter} + * instance to evaluate the current Configuration. + */ +public class DefaultConfigurationProvider implements ConfigurationProviderSpi { + + private ConfigurationContext context = new DefaultConfigurationContext(); + private Configuration config = new DefaultConfiguration(context); + + @Override + public Configuration getConfiguration() { + return config; + } + + @Override + public ConfigurationContext getConfigurationContext() { + return context; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a8c1a9c0/java7/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.ConfigurationContext ---------------------------------------------------------------------- diff --git a/java7/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.ConfigurationContext b/java7/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.ConfigurationContext deleted file mode 100644 index 2f0f44e..0000000 --- a/java7/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.ConfigurationContext +++ /dev/null @@ -1,19 +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 current 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. -# -org.apache.tamaya.core.internal.DefaultConfigurationContext http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a8c1a9c0/java7/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.ConfigurationProviderSpi ---------------------------------------------------------------------- diff --git a/java7/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.ConfigurationProviderSpi b/java7/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.ConfigurationProviderSpi new file mode 100644 index 0000000..7c0e249 --- /dev/null +++ b/java7/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.ConfigurationProviderSpi @@ -0,0 +1,19 @@ +# +# 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 current 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. +# +org.apache.tamaya.core.internal.DefaultConfigurationProvider http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a8c1a9c0/java7/core/src/test/java/org/apache/tamaya/core/ConfigurationTest.java ---------------------------------------------------------------------- diff --git a/java7/core/src/test/java/org/apache/tamaya/core/ConfigurationTest.java b/java7/core/src/test/java/org/apache/tamaya/core/ConfigurationTest.java index 4c0e813..0eb2181 100644 --- a/java7/core/src/test/java/org/apache/tamaya/core/ConfigurationTest.java +++ b/java7/core/src/test/java/org/apache/tamaya/core/ConfigurationTest.java @@ -19,6 +19,7 @@ package org.apache.tamaya.core; import org.apache.tamaya.Configuration; +import org.apache.tamaya.ConfigurationProvider; import org.apache.tamaya.core.internal.DefaultConfiguration; import org.apache.tamaya.spi.ServiceContext; import org.apache.tamaya.spi.ServiceContextManager; @@ -42,7 +43,7 @@ public class ConfigurationTest { } private Configuration current() { - return ServiceContextManager.getServiceContext().getService(Configuration.class); + return ConfigurationProvider.getConfiguration(); } @Test http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a8c1a9c0/java7/core/src/test/java/org/apache/tamaya/core/internal/DefaultServiceContextTest.java ---------------------------------------------------------------------- diff --git a/java7/core/src/test/java/org/apache/tamaya/core/internal/DefaultServiceContextTest.java b/java7/core/src/test/java/org/apache/tamaya/core/internal/DefaultServiceContextTest.java index 4f4079a..795c80f 100644 --- a/java7/core/src/test/java/org/apache/tamaya/core/internal/DefaultServiceContextTest.java +++ b/java7/core/src/test/java/org/apache/tamaya/core/internal/DefaultServiceContextTest.java @@ -20,6 +20,7 @@ package org.apache.tamaya.core.internal; import org.apache.tamaya.ConfigException; import org.apache.tamaya.spi.ConfigurationContext; +import org.apache.tamaya.spi.ConfigurationProviderSpi; import org.junit.Assert; import org.junit.Test; @@ -37,10 +38,9 @@ public class DefaultServiceContextTest { @Test public void testGetService() { - ConfigurationContext configurationContext = context.getService(ConfigurationContext.class); - - Assert.assertNotNull(configurationContext); - Assert.assertTrue(configurationContext instanceof DefaultConfigurationContext); + ConfigurationProviderSpi providerSpi = context.getService(ConfigurationProviderSpi.class); + Assert.assertNotNull(providerSpi); + Assert.assertTrue(providerSpi instanceof DefaultConfigurationProvider); } @Test(expected = ConfigException.class)
