http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/eeab5ce0/microprofile/src/main/java/org/apache/tamaya/microprofile/converter/BooleanAsIntegerConverterFix.java ---------------------------------------------------------------------- diff --git a/microprofile/src/main/java/org/apache/tamaya/microprofile/converter/BooleanAsIntegerConverterFix.java b/microprofile/src/main/java/org/apache/tamaya/microprofile/converter/BooleanAsIntegerConverterFix.java deleted file mode 100644 index 1debc71..0000000 --- a/microprofile/src/main/java/org/apache/tamaya/microprofile/converter/BooleanAsIntegerConverterFix.java +++ /dev/null @@ -1,61 +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.microprofile.converter; - -import org.apache.tamaya.spi.ConversionContext; -import org.apache.tamaya.spi.PropertyConverter; - -import javax.annotation.Priority; -import java.util.Locale; -import java.util.Objects; -import java.util.logging.Logger; - -/** - * Converter, converting from String to Boolean for 1 = true, otherwise false. - */ -@Priority(-1) -public class BooleanAsIntegerConverterFix implements PropertyConverter<Boolean> { - - private final Logger LOG = Logger.getLogger(getClass().getName()); - - @Override - public Boolean convert(String value, ConversionContext context) { - context.addSupportedFormats(getClass(), "'1' (true), otherwise false."); - try{ - int val = Integer.parseInt(Objects.requireNonNull(value).trim()); - if(val==1) { - return Boolean.TRUE; - } - return Boolean.FALSE; - }catch(Exception e){ - // OK - return Boolean.FALSE; - } - } - - @Override - public boolean equals(Object o){ - return getClass().equals(o.getClass()); - } - - @Override - public int hashCode(){ - return getClass().hashCode(); - } -}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/eeab5ce0/microprofile/src/main/java/org/apache/tamaya/microprofile/converter/ProviderConverter.java ---------------------------------------------------------------------- diff --git a/microprofile/src/main/java/org/apache/tamaya/microprofile/converter/ProviderConverter.java b/microprofile/src/main/java/org/apache/tamaya/microprofile/converter/ProviderConverter.java deleted file mode 100644 index 163481d..0000000 --- a/microprofile/src/main/java/org/apache/tamaya/microprofile/converter/ProviderConverter.java +++ /dev/null @@ -1,98 +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.microprofile.converter; - -import org.apache.tamaya.ConfigException; -import org.apache.tamaya.ConfigQuery; -import org.apache.tamaya.Configuration; -import org.apache.tamaya.TypeLiteral; -import org.apache.tamaya.spi.ConversionContext; -import org.apache.tamaya.spi.PropertyConverter; - -import javax.annotation.Priority; -import javax.inject.Provider; -import java.lang.reflect.Type; -import java.util.List; -import java.util.Objects; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * Converter, converting from String to Boolean for 1 = true, otherwise false. - */ -@Priority(-1) -public class ProviderConverter implements PropertyConverter<Provider> { - - private static final Logger LOG = Logger.getLogger(ProviderConverter.class.getName()); - - @Override - public Provider convert(String value, ConversionContext context) { - return () -> { - try{ - Type targetType = context.getTargetType().getType(); - ConvertQuery converter = new ConvertQuery(value, TypeLiteral.of(targetType)); - return context.getConfiguration().query(converter); - }catch(Exception e){ - throw new ConfigException("Error evaluating config value.", e); - } - }; - } - - @Override - public boolean equals(Object o){ - return getClass().equals(o.getClass()); - } - - @Override - public int hashCode(){ - return getClass().hashCode(); - } - - private static final class ConvertQuery<T> implements ConfigQuery<T> { - - private String rawValue; - private TypeLiteral<T> type; - - public ConvertQuery(String rawValue, TypeLiteral<T> type) { - this.rawValue = Objects.requireNonNull(rawValue); - this.type = Objects.requireNonNull(type); - } - - @Override - public T query(Configuration config) { - List<PropertyConverter<T>> converters = config.getContext().getPropertyConverters(type); - ConversionContext context = new ConversionContext.Builder(type).setConfigurationContext(config.getContext()) - .setConfiguration(config).setKey(ConvertQuery.class.getName()).build(); - for(PropertyConverter<?> conv: converters) { - try{ - if(conv instanceof ProviderConverter){ - continue; - } - T result = (T)conv.convert(rawValue, context); - if(result!=null){ - return result; - } - }catch(Exception e){ - LOG.log(Level.FINEST, e, () -> "Converter "+ conv +" failed to convert to " + type); - } - } - return null; - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/eeab5ce0/microprofile/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension ---------------------------------------------------------------------- diff --git a/microprofile/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension b/microprofile/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension deleted file mode 100644 index 21ec9d5..0000000 --- a/microprofile/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension +++ /dev/null @@ -1,20 +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. -# - -org.apache.tamaya.microprofile.cdi.MicroprofileCDIExtension \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/eeab5ce0/microprofile/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter ---------------------------------------------------------------------- diff --git a/microprofile/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter b/microprofile/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter deleted file mode 100644 index 2205fa2..0000000 --- a/microprofile/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter +++ /dev/null @@ -1,21 +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. -# - -org.apache.tamaya.microprofile.converter.BooleanAsIntegerConverterFix -org.apache.tamaya.microprofile.converter.ProviderConverter \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/eeab5ce0/microprofile/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertySource ---------------------------------------------------------------------- diff --git a/microprofile/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertySource b/microprofile/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertySource deleted file mode 100644 index 585700b..0000000 --- a/microprofile/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertySource +++ /dev/null @@ -1,20 +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. -# - -org.apache.tamaya.microprofile.MicroprofileDefaultProperties \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/eeab5ce0/microprofile/src/main/resources/META-INF/services/org.eclipse.microprofile.config.spi.ConfigProviderResolver ---------------------------------------------------------------------- diff --git a/microprofile/src/main/resources/META-INF/services/org.eclipse.microprofile.config.spi.ConfigProviderResolver b/microprofile/src/main/resources/META-INF/services/org.eclipse.microprofile.config.spi.ConfigProviderResolver deleted file mode 100644 index 040f5fd..0000000 --- a/microprofile/src/main/resources/META-INF/services/org.eclipse.microprofile.config.spi.ConfigProviderResolver +++ /dev/null @@ -1,20 +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. -# - -org.apache.tamaya.microprofile.MicroprofileConfigProviderResolver \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/eeab5ce0/microprofile/src/main/resources/beans.xml ---------------------------------------------------------------------- diff --git a/microprofile/src/main/resources/beans.xml b/microprofile/src/main/resources/beans.xml deleted file mode 100644 index 9b07802..0000000 --- a/microprofile/src/main/resources/beans.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -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. ---> -<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://jboss.org/schema/cdi/beans_1_0.xsd"> - - -</beans> - http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/eeab5ce0/microprofile/src/test/java/org/apache/tamaya/microprofile/MicroprofileConfigBuilderTest.java ---------------------------------------------------------------------- diff --git a/microprofile/src/test/java/org/apache/tamaya/microprofile/MicroprofileConfigBuilderTest.java b/microprofile/src/test/java/org/apache/tamaya/microprofile/MicroprofileConfigBuilderTest.java deleted file mode 100644 index 3250102..0000000 --- a/microprofile/src/test/java/org/apache/tamaya/microprofile/MicroprofileConfigBuilderTest.java +++ /dev/null @@ -1,99 +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.microprofile; - -import org.eclipse.microprofile.config.Config; -import org.eclipse.microprofile.config.spi.ConfigBuilder; -import org.eclipse.microprofile.config.spi.ConfigProviderResolver; -import org.eclipse.microprofile.config.spi.ConfigSource; -import org.junit.Ignore; -import org.junit.Test; - -import java.util.HashMap; -import java.util.Map; - -import static org.junit.Assert.*; - -/** - * Created by atsticks on 24.03.17. - */ -public class MicroprofileConfigBuilderTest { - - private ConfigSource testSource = new ConfigSource() { - @Override - public Map<String, String> getProperties() { - Map<String,String> map = new HashMap<>(); - map.put("timestamp", String.valueOf(System.currentTimeMillis())); - return map; - } - - @Override - public String getValue(String propertyName) { - if("timestamp".equals(propertyName)){ - return String.valueOf(System.currentTimeMillis()); - } - return null; - } - - @Override - public String getName() { - return "test"; - } - }; - - @Test - public void testBuildEmptyConfig(){ - ConfigBuilder builder = ConfigProviderResolver.instance().getBuilder(); - assertNotNull(builder); - Config config = builder.build(); - assertNotNull(config); - assertFalse(config.getPropertyNames().iterator().hasNext()); - assertFalse(config.getConfigSources().iterator().hasNext()); - } - - @Test - public void testBuildConfig(){ - ConfigBuilder builder = ConfigProviderResolver.instance().getBuilder(); - assertNotNull(builder); - builder.withSources(testSource); - Config config = builder.build(); - assertNotNull(config); - assertTrue(config.getPropertyNames().iterator().hasNext()); - assertTrue(config.getConfigSources().iterator().hasNext()); - assertNotNull(config.getValue("timestamp", String.class)); - ConfigSource src = config.getConfigSources().iterator().next(); - assertNotNull(src); - assertEquals(src, testSource); - } - - @Test - public void testBuildDefaultConfig(){ - ConfigBuilder builder = ConfigProviderResolver.instance().getBuilder(); - assertNotNull(builder); - builder.addDefaultSources(); - Config config = builder.build(); - assertNotNull(config); - assertTrue(config.getPropertyNames().iterator().hasNext()); - assertTrue(config.getConfigSources().iterator().hasNext()); - assertNotNull(config.getValue("java.home", String.class)); - ConfigSource src = config.getConfigSources().iterator().next(); - assertNotNull(src); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/eeab5ce0/microprofile/src/test/java/org/apache/tamaya/microprofile/MicroprofileConfigProviderResolverTest.java ---------------------------------------------------------------------- diff --git a/microprofile/src/test/java/org/apache/tamaya/microprofile/MicroprofileConfigProviderResolverTest.java b/microprofile/src/test/java/org/apache/tamaya/microprofile/MicroprofileConfigProviderResolverTest.java deleted file mode 100644 index 9b6b554..0000000 --- a/microprofile/src/test/java/org/apache/tamaya/microprofile/MicroprofileConfigProviderResolverTest.java +++ /dev/null @@ -1,73 +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.microprofile; - -import org.eclipse.microprofile.config.Config; -import org.eclipse.microprofile.config.spi.ConfigBuilder; -import org.eclipse.microprofile.config.spi.ConfigProviderResolver; -import org.junit.Test; - -import java.net.URL; -import java.net.URLClassLoader; - -import static org.junit.Assert.*; - -/** - * Created by atsticks on 24.03.17. - */ -public class MicroprofileConfigProviderResolverTest { - - @Test - public void testInstance(){ - assertNotNull(ConfigProviderResolver.instance()); - } - - @Test - public void testGetBuilder(){ - assertNotNull(ConfigProviderResolver.instance().getBuilder()); - } - - @Test - public void testGetConfig(){ - assertNotNull(ConfigProviderResolver.instance().getConfig()); - } - - @Test - public void testGetConfig_CL(){ - assertNotNull(ConfigProviderResolver.instance().getConfig(ClassLoader.getSystemClassLoader())); - } - - @Test - public void testRegisterAndReleaseConfig(){ - ClassLoader cl = new URLClassLoader(new URL[]{}); - Config emptyConfig = ConfigProviderResolver.instance().getBuilder().build(); - assertNotNull(emptyConfig); - Config cfg = ConfigProviderResolver.instance().getConfig(cl); - assertNotNull(cfg); - ConfigProviderResolver.instance().registerConfig(emptyConfig, cl); - cfg = ConfigProviderResolver.instance().getConfig(cl); - assertNotNull(cfg); - assertEquals(cfg, emptyConfig); - ConfigProviderResolver.instance().releaseConfig(emptyConfig); - cfg = ConfigProviderResolver.instance().getConfig(cl); - assertNotNull(cfg); - assertNotSame(cfg, emptyConfig); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/eeab5ce0/microprofile/src/test/java/org/apache/tamaya/microprofile/MicroprofileConfigProviderTest.java ---------------------------------------------------------------------- diff --git a/microprofile/src/test/java/org/apache/tamaya/microprofile/MicroprofileConfigProviderTest.java b/microprofile/src/test/java/org/apache/tamaya/microprofile/MicroprofileConfigProviderTest.java deleted file mode 100644 index 039145d..0000000 --- a/microprofile/src/test/java/org/apache/tamaya/microprofile/MicroprofileConfigProviderTest.java +++ /dev/null @@ -1,62 +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.microprofile; - -import org.apache.tamaya.ConfigurationProvider; -import org.eclipse.microprofile.config.Config; -import org.eclipse.microprofile.config.ConfigProvider; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -/** - * Created by atsticks on 24.03.17. - */ -public class MicroprofileConfigProviderTest { - - @Test - public void testDefaultConfigAccess(){ - Config config = ConfigProvider.getConfig(); - assertNotNull(config); - Iterable<String> names = config.getPropertyNames(); - assertNotNull(names); - int count = 0; - for(String name:names){ - count++; - System.out.println(count + ": " +name); - } - assertTrue(ConfigurationProvider.getConfiguration().getProperties().size() <= count); - } - - @Test - public void testClassloaderAccess(){ - Config config = ConfigProvider.getConfig(Thread.currentThread().getContextClassLoader()); - assertNotNull(config); - Iterable<String> names = config.getPropertyNames(); - assertNotNull(names); - int count = 0; - for(String name:names){ - count++; - } - assertTrue(count>0); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/eeab5ce0/microprofile/src/test/java/org/apache/tamaya/microprofile/MicroprofileConfigTest.java ---------------------------------------------------------------------- diff --git a/microprofile/src/test/java/org/apache/tamaya/microprofile/MicroprofileConfigTest.java b/microprofile/src/test/java/org/apache/tamaya/microprofile/MicroprofileConfigTest.java deleted file mode 100644 index 1c5375a..0000000 --- a/microprofile/src/test/java/org/apache/tamaya/microprofile/MicroprofileConfigTest.java +++ /dev/null @@ -1,95 +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.microprofile; - -import org.eclipse.microprofile.config.Config; -import org.eclipse.microprofile.config.ConfigProvider; -import org.eclipse.microprofile.config.spi.ConfigSource; -import org.junit.Test; - -import java.util.NoSuchElementException; -import java.util.Optional; - -import static org.junit.Assert.*; - -/** - * Created by atsticks on 24.03.17. - */ -public class MicroprofileConfigTest { - - @Test - public void testDefaultConfigAccess() { - Config config = ConfigProvider.getConfig(); - Iterable<ConfigSource> sources = config.getConfigSources(); - int count = 0; - for (ConfigSource cs : sources) { - count++; - } - assertEquals(3, count); - } - - @Test - public void testOptionalAccess(){ - Config config = ConfigProvider.getConfig(); - int count = 0; - for(String key:config.getPropertyNames()){ - Optional<String> val = config.getOptionalValue(key, String.class); - assertNotNull(val); - val = config.getOptionalValue(key + System.currentTimeMillis(), String.class); - assertNotNull(val); - assertFalse(val.isPresent()); - } - } - - @Test - public void testGetValue(){ - Config config = ConfigProvider.getConfig(); - int count = 0; - for(String key:config.getPropertyNames()){ - String val = config.getValue(key, String.class); - assertNotNull(val); - } - } - - @Test(expected = NoSuchElementException.class) - public void testGetValue_NoValue(){ - Config config = ConfigProvider.getConfig(); - config.getValue("fooBar", String.class); - } - - @Test(expected = IllegalArgumentException.class) - public void testGetValue_InvalidType(){ - Config config = ConfigProvider.getConfig(); - config.getValue("java.version", Integer.class); - } - - @Test - public void testEmptySystemProperty(){ - System.setProperty("my.empty.property", ""); - Config config = ConfigProvider.getConfig(); - assertEquals("", config.getValue("my.empty.property", String.class)); - } - - @Test - public void testEmptyConfigProperty(){ - Config config = ConfigProvider.getConfig(); - assertEquals("", config.getValue("my.empty.property.in.config.file", String.class)); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/eeab5ce0/microprofile/src/test/java/org/apache/tamaya/microprofile/tck/TamayaConfigArchiveProcessor.java ---------------------------------------------------------------------- diff --git a/microprofile/src/test/java/org/apache/tamaya/microprofile/tck/TamayaConfigArchiveProcessor.java b/microprofile/src/test/java/org/apache/tamaya/microprofile/tck/TamayaConfigArchiveProcessor.java deleted file mode 100644 index 61cd11c..0000000 --- a/microprofile/src/test/java/org/apache/tamaya/microprofile/tck/TamayaConfigArchiveProcessor.java +++ /dev/null @@ -1,79 +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.microprofile.tck; - -import org.apache.tamaya.core.internal.converters.OptionalConverter; -import org.apache.tamaya.microprofile.MicroprofileAdapter; -import org.apache.tamaya.microprofile.MicroprofileConfigProviderResolver; -import org.apache.tamaya.microprofile.cdi.MicroprofileCDIExtension; -import org.apache.tamaya.microprofile.converter.BooleanAsIntegerConverterFix; -import org.apache.tamaya.spi.PropertyConverter; -import org.eclipse.microprofile.config.spi.ConfigProviderResolver; -import org.jboss.arquillian.container.test.spi.client.deployment.ApplicationArchiveProcessor; -import org.jboss.arquillian.test.spi.TestClass; -import org.jboss.shrinkwrap.api.Archive; -import org.jboss.shrinkwrap.api.ShrinkWrap; -import org.jboss.shrinkwrap.api.asset.EmptyAsset; -import org.jboss.shrinkwrap.api.spec.JavaArchive; -import org.jboss.shrinkwrap.api.spec.WebArchive; -import org.jboss.shrinkwrap.resolver.api.maven.Maven; - -import javax.enterprise.inject.spi.Extension; -import java.io.File; - -/** - * Adds the whole Config implementation classes and resources to the - * Arquillian deployment archive. This is needed to have the container - * pick up the beans from within the impl for the TCK tests. - * - * @author <a href="mailto:[email protected]">Mark Struberg</a> - */ -public class TamayaConfigArchiveProcessor implements ApplicationArchiveProcessor { - - @Override - public void process(Archive<?> applicationArchive, TestClass testClass) { - if (applicationArchive instanceof WebArchive) { - File[] coreLibs = Maven.resolver() - .loadPomFromFile("pom.xml").resolve("org.apache.tamaya:tamaya-core") - .withTransitivity().asFile(); - File[] apiLibs = Maven.resolver() - .loadPomFromFile("pom.xml").resolve("org.apache.tamaya:tamaya-api") - .withTransitivity().asFile(); - File[] functionsLib = Maven.resolver() - .loadPomFromFile("pom.xml").resolve("org.apache.tamaya.ext:tamaya-functions") - .withTransitivity().asFile(); - - JavaArchive configJar = ShrinkWrap - .create(JavaArchive.class, "tamaya-config-impl.jar") - .addPackage(MicroprofileAdapter.class.getPackage()) - .addPackage(MicroprofileCDIExtension.class.getPackage()) - .addPackage(BooleanAsIntegerConverterFix.class.getPackage()) - .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml") - .addAsServiceProvider(ConfigProviderResolver.class, MicroprofileConfigProviderResolver.class) - .addAsServiceProvider(PropertyConverter.class, BooleanAsIntegerConverterFix.class) - .addAsServiceProvider(PropertyConverter.class, OptionalConverter.class) - .addAsServiceProvider(Extension.class, MicroprofileCDIExtension.class); - ((WebArchive) applicationArchive).addAsLibraries( - configJar) - .addAsLibraries(apiLibs) - .addAsLibraries(coreLibs) - .addAsLibraries(functionsLib); - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/eeab5ce0/microprofile/src/test/java/org/apache/tamaya/microprofile/tck/TamayaConfigExtension.java ---------------------------------------------------------------------- diff --git a/microprofile/src/test/java/org/apache/tamaya/microprofile/tck/TamayaConfigExtension.java b/microprofile/src/test/java/org/apache/tamaya/microprofile/tck/TamayaConfigExtension.java deleted file mode 100644 index 9c0dfd3..0000000 --- a/microprofile/src/test/java/org/apache/tamaya/microprofile/tck/TamayaConfigExtension.java +++ /dev/null @@ -1,36 +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.microprofile.tck; - -import org.jboss.arquillian.container.test.spi.client.deployment.ApplicationArchiveProcessor; -import org.jboss.arquillian.core.spi.LoadableExtension; - -/** - * Arquillian extension to load Tamaya into Arquillian context. - * @author <a href="mailto:[email protected]">Anatole Tresch</a> - */ -public class TamayaConfigExtension implements LoadableExtension { - - @Override - public void register(ExtensionBuilder extensionBuilder) { - extensionBuilder.service( - ApplicationArchiveProcessor.class, - TamayaConfigArchiveProcessor.class); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/eeab5ce0/microprofile/src/test/resources/META-INF/beans.xml ---------------------------------------------------------------------- diff --git a/microprofile/src/test/resources/META-INF/beans.xml b/microprofile/src/test/resources/META-INF/beans.xml deleted file mode 100644 index adee378..0000000 --- a/microprofile/src/test/resources/META-INF/beans.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -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. ---> -<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://jboss.org/schema/cdi/beans_1_0.xsd"> - -</beans> - http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/eeab5ce0/microprofile/src/test/resources/META-INF/microprofile-config.properties ---------------------------------------------------------------------- diff --git a/microprofile/src/test/resources/META-INF/microprofile-config.properties b/microprofile/src/test/resources/META-INF/microprofile-config.properties deleted file mode 100644 index 2e63bf8..0000000 --- a/microprofile/src/test/resources/META-INF/microprofile-config.properties +++ /dev/null @@ -1,105 +0,0 @@ -# -# Copyright (c) 2016-2017 Contributors to the Eclipse Foundation -# -# See the NOTICES file(s) distributed with this work for additional -# information regarding copyright ownership. -# -# Licensed 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. -# - -my.optional.int.property=1234 -my.optional.string.property=hello - -tck.config.test.javaconfig.properties.key1=VALue1 - - -tck.config.test.overwritten.in.custompropertyfile.key1=value from microprofile-config.properties - - -tck.config.test.javaconfig.converter.integervalue = 1234 -tck.config.test.javaconfig.converter.integervalue.broken = xxx - -tck.config.test.javaconfig.converter.longvalue = 1234567890 -tck.config.test.javaconfig.converter.longvalue.broken = xxx - -tck.config.test.javaconfig.converter.floatvalue = 12.34 -tck.config.test.javaconfig.converter.floatvalue.broken = alfasdf - -tck.config.test.javaconfig.converter.doublevalue = 12.34 -tck.config.test.javaconfig.converter.doublevalue.broken = alfasdf - -tck.config.test.javaconfig.converter.durationvalue = PT15M -tck.config.test.javaconfig.converter.durationvalue.broken = alfasdf - -tck.config.test.javaconfig.converter.localtimevalue = 10:37 -tck.config.test.javaconfig.converter.localtimevalue.broken = alfasdf - -tck.config.test.javaconfig.converter.localdatevalue = 2017-12-24 -tck.config.test.javaconfig.converter.localdatevalue.broken = alfasdf - -tck.config.test.javaconfig.converter.localdatetimevalue = 2017-12-24T10:25:30 -tck.config.test.javaconfig.converter.localdatetimevalue.broken = alfasdf - -tck.config.test.javaconfig.converter.offsetdatetimevalue = 2007-12-03T10:15:30+01:00 -tck.config.test.javaconfig.converter.offsetdatetimevalue.broken = alfasdf - -tck.config.test.javaconfig.converter.offsettimevalue = 13:45:30.123456789+02:00 -tck.config.test.javaconfig.converter.offsettimevalue.broken = alfasdf - -tck.config.test.javaconfig.converter.instantvalue = 2015-06-02T21:34:33.616Z -tck.config.test.javaconfig.converter.instantvalue.broken = alfasdf - -tck.config.test.javaconfig.configvalue.key1=value1 - -# test BooleanConverter START -tck.config.test.javaconfig.configvalue.boolean.true=true -tck.config.test.javaconfig.configvalue.boolean.true_uppercase=TRUE -tck.config.test.javaconfig.configvalue.boolean.true_mixedcase=TruE -tck.config.test.javaconfig.configvalue.boolean.false=false - -tck.config.test.javaconfig.configvalue.boolean.one=1 -tck.config.test.javaconfig.configvalue.boolean.zero=0 -tck.config.test.javaconfig.configvalue.boolean.seventeen=17 - -tck.config.test.javaconfig.configvalue.boolean.yes=yes -tck.config.test.javaconfig.configvalue.boolean.yes_uppercase=YES -tck.config.test.javaconfig.configvalue.boolean.yes_mixedcase=Yes -tck.config.test.javaconfig.configvalue.boolean.no=no - -tck.config.test.javaconfig.configvalue.boolean.y=y -tck.config.test.javaconfig.configvalue.boolean.y_uppercase=Y -tck.config.test.javaconfig.configvalue.boolean.n=n - -tck.config.test.javaconfig.configvalue.boolean.on=on -tck.config.test.javaconfig.configvalue.boolean.on_uppercase=ON -tck.config.test.javaconfig.configvalue.boolean.on_mixedcase=oN -tck.config.test.javaconfig.configvalue.boolean.off=off - -# test BooleanConverter END - -# various other converter -tck.config.test.javaconfig.configvalue.integer=1234 -tck.config.test.javaconfig.configvalue.long=1234567890123456 -tck.config.test.javaconfig.configvalue.float=12.34 -tck.config.test.javaconfig.configvalue.double=12.34567890123456 - -# Custom Converter tests -tck.config.test.javaconfig.converter.duckname=Hannelore - -# URL Converter tests -tck.config.test.javaconfig.converter.urlvalue=http://microprofile.io -tck.config.test.javaconfig.converter.urlvalue.broken=tt:--location$ - -# Empty values -my.empty.property.in.config.file= \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/eeab5ce0/microprofile/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension ---------------------------------------------------------------------- diff --git a/microprofile/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension b/microprofile/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension deleted file mode 100644 index b2af25c..0000000 --- a/microprofile/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension +++ /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 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. -# -org.apache.tamaya.microprofile.tck.TamayaConfigExtension \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/eeab5ce0/microprofile/src/test/resources/sampleconfig.yaml ---------------------------------------------------------------------- diff --git a/microprofile/src/test/resources/sampleconfig.yaml b/microprofile/src/test/resources/sampleconfig.yaml deleted file mode 100644 index 27f2392..0000000 --- a/microprofile/src/test/resources/sampleconfig.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (c) 2016-2017 Mark Struberg and others -# -# Licensed 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. -# -# just needed as a trigger for the ConfigSource pickup. -# Content is hardcoded in SampleYamlConfigSource \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/eeab5ce0/microprofile/src/test/tck-suite.xml ---------------------------------------------------------------------- diff --git a/microprofile/src/test/tck-suite.xml b/microprofile/src/test/tck-suite.xml deleted file mode 100644 index 84d36ad..0000000 --- a/microprofile/src/test/tck-suite.xml +++ /dev/null @@ -1,27 +0,0 @@ -<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > -<!-- -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. ---> -<suite name="microprofile-config-TCK" verbose="2" configfailurepolicy="continue" > - <test name="microprofile-config 1.1 TCK"> - <packages> - <package name="org.eclipse.microprofile.config.tck.*"> - </package> - </packages> - </test> -</suite> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/eeab5ce0/osgi/common/bnd.bnd ---------------------------------------------------------------------- diff --git a/osgi/common/bnd.bnd b/osgi/common/bnd.bnd deleted file mode 100644 index e937379..0000000 --- a/osgi/common/bnd.bnd +++ /dev/null @@ -1,33 +0,0 @@ --buildpath: \ - osgi.annotation; version=6.0.0,\ - osgi.core; version=6.0,\ - osgi.cmpn; version=6.0 - --testpath: \ - ${junit} - -javac.source: 1.8 -javac.target: 1.8 - -Bundle-Version: ${version}.${tstamp} -Bundle-Name: Apache Tamaya - OSGI ConfigurationPlugin -Bundle-SymbolicName: org.apache.tamaya.osgi -Bundle-Description: Apacha Tamaya Configuration - OSGI ConfigurationPlugin -Bundle-Category: Implementation -Bundle-Copyright: (C) Apache Foundation -Bundle-License: Apache Licence version 2 -Bundle-Vendor: Apache Software Foundation -Bundle-ContactAddress: [email protected] -Bundle-DocURL: http://tamaya.apache.org -Bundle-Activator: org.apache.tamaya.osgi.Activator -Export-Package: \ - org.apache.tamaya.osgi,\ - org.apache.tamaya.osgi.commands -Import-Package: \ - org.osgi.framework,\ - org.osgi.service.cm,\ - org.apache.tamaya,\ - org.apache.tamaya.spi,\ - org.apache.tamaya.functions,\ - org.apache.tamaya.spisupport -Export-Service: org.apache.tamaya.osgi.commands.TamayaConfigService http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/eeab5ce0/osgi/common/pom.xml ---------------------------------------------------------------------- diff --git a/osgi/common/pom.xml b/osgi/common/pom.xml deleted file mode 100644 index a166929..0000000 --- a/osgi/common/pom.xml +++ /dev/null @@ -1,91 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - - <!-- - - 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. - --> - - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.apache.tamaya.ext</groupId> - <artifactId>tamaya-osgi-all</artifactId> - <version>0.4-incubating-SNAPSHOT</version> - </parent> - - <artifactId>tamaya-osgi</artifactId> - <packaging>jar</packaging> - <name>Apache Tamaya :: OSGi :: ConfigurationPlugin</name> - <description>Tamaya Based OSGI ConfigurationPlugin Implementation</description> - - <properties> - <osgi.config.version>1.5.0</osgi.config.version> - <osgi.tracker.version>1.5.1</osgi.tracker.version> - </properties> - - <dependencies> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.core</artifactId> - </dependency> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.compendium</artifactId> - </dependency> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.util.tracker</artifactId> - </dependency> - - <dependency> - <groupId>org.apache.tamaya</groupId> - <artifactId>tamaya-api</artifactId> - <version>${project.parent.version}</version> - </dependency> - <dependency> - <groupId>org.apache.tamaya</groupId> - <artifactId>tamaya-core</artifactId> - <version>${project.parent.version}</version> - </dependency> - <dependency> - <groupId>org.apache.tamaya.ext</groupId> - <artifactId>tamaya-functions</artifactId> - <version>${project.parent.version}</version> - </dependency> - <dependency> - <groupId>org.apache.tamaya.ext</groupId> - <artifactId>tamaya-spisupport</artifactId> - <version>${project.parent.version}</version> - </dependency> - - <!-- Testing --> - <dependency> - <groupId>org.hamcrest</groupId> - <artifactId>java-hamcrest</artifactId> - </dependency> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - </dependency> - - </dependencies> - -</project> http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/eeab5ce0/osgi/common/src/main/java/org/apache/tamaya/osgi/Activator.java ---------------------------------------------------------------------- diff --git a/osgi/common/src/main/java/org/apache/tamaya/osgi/Activator.java b/osgi/common/src/main/java/org/apache/tamaya/osgi/Activator.java deleted file mode 100644 index aef323d..0000000 --- a/osgi/common/src/main/java/org/apache/tamaya/osgi/Activator.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.osgi; - -import org.apache.tamaya.osgi.commands.TamayaConfigService; -import org.osgi.framework.*; -import org.osgi.service.cm.Configuration; -import org.osgi.service.cm.ConfigurationAdmin; -import org.osgi.service.cm.ConfigurationPlugin; -import org.osgi.service.component.annotations.Reference; - -import java.util.Dictionary; -import java.util.Hashtable; -import java.util.logging.Logger; - -/** - * Activator that registers the Tamaya based Service Class for {@link ConfigurationAdmin}, - * using a default service priority of {@code 0}. This behaviour is configurable based on OSGI properties: - * <ul> - * <li><p><b>org.tamaya.integration.osgi.cm.ranking, type: int</b> allows to configure the OSGI service ranking for - * Tamaya based ConfigurationAdmin instance. The default ranking used is 10.</p></li> - * <li><p><b>org.tamaya.integration.osgi.cm.override, type: boolean</b> allows to configure if Tamaya should - * register its ConfigAdmin service. Default is true.</p></li> - * </ul> - */ -public class Activator implements BundleActivator { - - private static final Integer DEFAULT_RANKING = 100000; - - private static final Logger LOG = Logger.getLogger(Activator.class.getName()); - - private ServiceRegistration<TamayaConfigService> registration; - - private TamayaConfigPlugin plugin; - - - @Override - public void start(BundleContext context) throws Exception { - ServiceReference<ConfigurationAdmin> cmRef = context.getServiceReference(ConfigurationAdmin.class); - ConfigurationAdmin cm = context.getService(cmRef); - Configuration configuration = cm.getConfiguration(TamayaConfigPlugin.COMPONENTID, null); - this.plugin = new TamayaConfigPlugin(context); - Dictionary<String, Object> props = new Hashtable<>(); - props.put(Constants.SERVICE_RANKING, DEFAULT_RANKING); - LOG.info("Registering Tamaya OSGI Config Service..."); - registration = context.registerService( - TamayaConfigService.class, - this.plugin, props); - } - - @Override - public void stop(BundleContext context) throws Exception { - if (registration != null) { - registration.unregister(); - } - } - -} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/eeab5ce0/osgi/common/src/main/java/org/apache/tamaya/osgi/Backups.java ---------------------------------------------------------------------- diff --git a/osgi/common/src/main/java/org/apache/tamaya/osgi/Backups.java b/osgi/common/src/main/java/org/apache/tamaya/osgi/Backups.java deleted file mode 100644 index 0ae1048..0000000 --- a/osgi/common/src/main/java/org/apache/tamaya/osgi/Backups.java +++ /dev/null @@ -1,157 +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.osgi; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.util.*; -import java.util.concurrent.ConcurrentHashMap; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * Singleton class to store OSGI configuration backups before change the OSGI - * Config with Tamaya settings. This allows to restore the configuration in - * case of issues. - */ -final class Backups { - - private static final Logger LOG = Logger.getLogger(Backups.class.getName()); - public static final String TAMAYA_BACKUP = "tamaya.backup"; - private static Map<String, Hashtable<String,?>> initialConfigState = new ConcurrentHashMap<>(); - - private Backups(){} - - /** - * Sets the given backup for a PID. - * @param pid the PID, not null. - * @param config the config to store. - */ - public static void set(String pid, Dictionary<String,?> config){ - initialConfigState.put(pid, toHashtable(config)); - } - - /** - * Converts the dictionary to a hash table to enabled serialization. - * @param dictionary he config, not null. - * @return the correspoinding Hashtable - */ - private static Hashtable<String, ?> toHashtable(Dictionary<String, ?> dictionary) { - if (dictionary == null) { - return null; - } - if(dictionary instanceof Hashtable){ - return (Hashtable) dictionary; - } - Hashtable<String, Object> map = new Hashtable<>(dictionary.size()); - Enumeration<String> keys = dictionary.keys(); - while (keys.hasMoreElements()) { - String key = keys.nextElement(); - map.put(key, dictionary.get(key)); - } - return map; - } - - /** - * Removes a backup. - * @param pid the PID, not null. - * @return - */ - public static Dictionary<String,?> remove(String pid){ - return initialConfigState.remove(pid); - } - - /** - * Removes all backups. - */ - public static void removeAll(){ - initialConfigState.clear(); - } - - /** - * Get a backup for a PID. - * @param pid the PID, not null. - * @return the backup found, or null. - */ - public static Dictionary<String,?> get(String pid){ - return initialConfigState.get(pid); - } - - /** - * Get all current stored backups. - * @return The backups stored, by PID. - */ - public static Map<String,Dictionary<String,?>> get(){ - return new HashMap<>(initialConfigState); - } - - /** - * Get all current kjnown PIDs. - * @return the PIDs, never null. - */ - public static Set<String> getPids(){ - return initialConfigState.keySet(); - } - - /** - * Checks if a backup exists for a given PID. - * @param pid the pid, not null. - * @return - */ - public static boolean contains(String pid){ - return initialConfigState.containsKey(pid); - } - - /** - * Saves the bachups into the given config. - * @param config the config, not nul. - */ - public static void save(Dictionary<String,Object> config){ - try{ - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - ObjectOutputStream oos = new ObjectOutputStream(bos); - oos.writeObject(initialConfigState); - oos.flush(); - Base64.getEncoder().encode(bos.toByteArray()); - config.put(TAMAYA_BACKUP, Base64.getEncoder().encodeToString(bos.toByteArray())); - }catch(Exception e){ - LOG.log(Level.SEVERE, "Failed to restore OSGI Backups.", e); - } - } - - /** - * Restores the backups ino the given config. - * @param config the config, not null. - */ - public static void restore(Dictionary<String,Object> config){ - try{ - String serialized = (String)config.get("tamaya.backup"); - if(serialized!=null) { - ByteArrayInputStream bis = new ByteArrayInputStream(Base64.getDecoder().decode(serialized)); - ObjectInputStream ois = new ObjectInputStream(bis); - initialConfigState = (Map<String, Hashtable<String,?>>) ois.readObject(); - ois.close(); - } - } catch (Exception e) { - LOG.log(Level.WARNING, "Failed to store getConfig change getHistory.", e); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/eeab5ce0/osgi/common/src/main/java/org/apache/tamaya/osgi/ConfigChanger.java ---------------------------------------------------------------------- diff --git a/osgi/common/src/main/java/org/apache/tamaya/osgi/ConfigChanger.java b/osgi/common/src/main/java/org/apache/tamaya/osgi/ConfigChanger.java deleted file mode 100644 index 0969a59..0000000 --- a/osgi/common/src/main/java/org/apache/tamaya/osgi/ConfigChanger.java +++ /dev/null @@ -1,215 +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.osgi; - -import org.apache.tamaya.ConfigurationProvider; -import org.apache.tamaya.functions.ConfigurationFunctions; -import org.osgi.framework.Bundle; -import org.osgi.framework.BundleContext; -import org.osgi.framework.ServiceReference; -import org.osgi.service.cm.Configuration; -import org.osgi.service.cm.ConfigurationAdmin; - -import java.io.IOException; -import java.util.Date; -import java.util.Dictionary; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.Hashtable; -import java.util.Map; -import java.util.Objects; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * Created by atsticks on 19.09.17. - */ -final class ConfigChanger { - - private static final Logger LOG = Logger.getLogger(TamayaConfigPlugin.class.getName()); - - private BundleContext context; - private ConfigurationAdmin cm; - - public ConfigChanger(BundleContext context){ - this.context = context; - ServiceReference<ConfigurationAdmin> cmRef = context.getServiceReference(ConfigurationAdmin.class); - this.cm = context.getService(cmRef); - } - - public BundleContext getContext(){ - return context; - } - - public ConfigurationAdmin getConfigurationAdmin(){ - return cm; - } - - public Dictionary<String, Object> configure(String pid, Bundle bundle, Policy policy, boolean opModeExplicit, boolean dryRun) { - try { - String root = '[' + pid + ']'; - // TODO Check for Bundle.getLocation() usage here... - Configuration osgiConfig = cm.getConfiguration(pid, bundle!=null?bundle.getLocation():null); - Policy opMode = Objects.requireNonNull(policy); - // Check manifest config - if(bundle!=null) { - if(!opModeExplicit) { - String opVal = bundle.getHeaders().get(TamayaConfigPlugin.TAMAYA_POLICY_MANIFEST); - if (opVal != null) { - opMode = Policy.valueOf(opVal.toUpperCase()); - } - } - String customRoot = bundle.getHeaders().get(TamayaConfigPlugin.TAMAYA_CUSTOM_ROOT_MANIFEST); - if(customRoot!=null){ - root = customRoot; - } - } - // Check for dynamic OSGI overrides - if(osgiConfig!=null){ - Dictionary<String,Object> props = osgiConfig.getProperties(); - if(props!=null){ - if(!opModeExplicit) { - String opVal = (String) props.get(TamayaConfigPlugin.TAMAYA_POLICY_PROP); - if (opVal != null) { - opMode = Policy.valueOf(opVal.toUpperCase()); - } - } - String customRoot = (String)props.get(TamayaConfigPlugin.TAMAYA_CUSTOM_ROOT_PROP); - if(customRoot!=null){ - root = customRoot; - } - }else{ - props = new Hashtable<>(); - } - if(!dryRun && !Backups.contains(pid)){ - Backups.set(pid, props); - LOG.finest("Stored OSGI configuration backup for PID: " + pid); - } - LOG.finest("Evaluating Tamaya Config for PID: " + pid); - org.apache.tamaya.Configuration tamayaConfig = getTamayaConfiguration(root); - if (tamayaConfig == null) { - LOG.finest("No Tamaya configuration for root: " + root); - }else { - if(dryRun){ - modifyConfiguration(pid, tamayaConfig, props, opMode); - }else { - try { - if (bundle != null) { - ConfigHistory.configuring(pid, "bundle=" + bundle.getSymbolicName() + ", opMode=" + opMode); - } else { - ConfigHistory.configuring(pid, "trigger=Tamaya, opMode=" + opMode); - } - modifyConfiguration(pid, tamayaConfig, props, opMode); - if (!props.isEmpty()) { - osgiConfig.update(props); - LOG.info("Updated configuration for PID: " + pid + ": " + props); - ConfigHistory.configured(pid, "SUCCESS"); - } - }catch(Exception e){ - LOG.log(Level.WARNING, "Failed to update configuration for PID: " + pid, e); - ConfigHistory.configured(pid, "FAILED: " + e); - } - } - } - return props; - } - return null; - } catch (Exception e) { - LOG.log(Level.WARNING, "Failed to initialize configuration for PID: " + pid, e); - return null; - } - } - - public void modifyConfiguration(String pid, org.apache.tamaya.Configuration config, Dictionary<String, Object> dictionary, Policy opMode) { - LOG.info(() -> "Updating configuration for PID: " + pid + "..."); - dictionary.put("tamaya.modified.at", new Date().toString()); - - Map<String, Object> dictionaryMap = new HashMap<>(); - Enumeration<String> keys = dictionary.keys(); - while (keys.hasMoreElements()) { - String key = keys.nextElement(); - Object value = dictionary.get(key); - dictionaryMap.put(key, value); - } - for (Map.Entry<String, Object> dictEntry : dictionaryMap.entrySet()) { - Object configuredValue = config.getOrDefault(dictEntry.getKey(), dictEntry.getValue().getClass(), null); - if (configuredValue != null) { - if(configuredValue.equals(dictEntry.getValue())){ - continue; - } - switch (opMode) { - case EXTEND: - break; - case OVERRIDE: - LOG.info(() -> "Setting key " + dictEntry.getKey() + " to " + configuredValue); - ConfigHistory.propertySet(pid,dictEntry.getKey(), configuredValue, dictEntry.getValue()); - dictionary.put(dictEntry.getKey(), configuredValue); - break; - case UPDATE_ONLY: - LOG.info(() -> "Setting key " + dictEntry.getKey() + " to " + configuredValue); - ConfigHistory.propertySet(pid,dictEntry.getKey(), configuredValue, dictEntry.getValue()); - dictionary.put(dictEntry.getKey(), configuredValue); - } - } - } - for (Map.Entry<String, String> configEntry : config.getProperties().entrySet()) { - Object dictValue = dictionary.get(configEntry.getKey()); - if(dictValue!=null && dictValue.equals(configEntry.getValue())){ - continue; - } - switch (opMode) { - case EXTEND: - if(dictValue==null){ - LOG.info(() -> "Setting key " + configEntry.getKey() + " to " + configEntry.getValue()); - ConfigHistory.propertySet(pid,configEntry.getKey(), configEntry.getValue(), null); - dictionary.put(configEntry.getKey(), configEntry.getValue()); - } - break; - case OVERRIDE: - LOG.info(() -> "Setting key " + configEntry.getKey() + " to " + configEntry.getValue()); - ConfigHistory.propertySet(pid,configEntry.getKey(), configEntry.getValue(), null); - dictionary.put(configEntry.getKey(), configEntry.getValue()); - break; - case UPDATE_ONLY: - if(dictValue!=null){ - LOG.info(() -> "Setting key " + configEntry.getKey() + " to " + configEntry.getValue()); - ConfigHistory.propertySet(pid,configEntry.getKey(), configEntry.getValue(), dictValue); - dictionary.put(configEntry.getKey(), configEntry.getValue()); - } - break; - } - } - } - - public org.apache.tamaya.Configuration getTamayaConfiguration(String root) { - if (root != null) { - return ConfigurationProvider.getConfiguration() - .with(ConfigurationFunctions.section(root, true)); - } - return null; - } - - public void restoreBackup(String pid, Dictionary<String, Object> config)throws IOException{ - Configuration osgiConfig = cm.getConfiguration(pid); - if(osgiConfig!=null){ - config.put(TamayaConfigPlugin.TAMAYA_ENABLED_PROP, "false"); - osgiConfig.update(Objects.requireNonNull(config)); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/eeab5ce0/osgi/common/src/main/java/org/apache/tamaya/osgi/ConfigHistory.java ---------------------------------------------------------------------- diff --git a/osgi/common/src/main/java/org/apache/tamaya/osgi/ConfigHistory.java b/osgi/common/src/main/java/org/apache/tamaya/osgi/ConfigHistory.java deleted file mode 100644 index dc41787..0000000 --- a/osgi/common/src/main/java/org/apache/tamaya/osgi/ConfigHistory.java +++ /dev/null @@ -1,268 +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.osgi; - -import java.io.*; -import java.util.*; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * Class storing the history of changers done to the OSGI configuration by Tamaya. - * This class can be used in the future to restore the previous state, if needed. - */ -public final class ConfigHistory implements Serializable{ - - private static final long serialVersionUID = 1L; - private static final Logger LOG = Logger.getLogger(ConfigHistory.class.getName()); - /** The key of the plugin OSGI configuration, where the history is stored/retrieved. */ - private static final String HISTORY_KEY = "tamaya.history"; - - public enum TaskType{ - PROPERTY, - BEGIN, - END, - } - /** The max number of changes tracked. */ - private static int maxHistory = 10000; - /** The overall history. */ - private static List<ConfigHistory> history = new LinkedList<ConfigHistory>(); - - /** The entry timestamp. */ - private long timestamp = System.currentTimeMillis(); - /** The entry type. */ - private TaskType type; - /** The previous value. */ - private Object previousValue; - /** The current value. */ - private Object value; - /** The key. */ - private String key; - /** The target PID. */ - private String pid; - - private ConfigHistory(TaskType taskType, String pid){ - this.type = Objects.requireNonNull(taskType); - this.pid = Objects.requireNonNull(pid); - } - - /** - * Creates and registers an entry when starting to configure a bundle. - * @param pid the PID - * @param info any info. - * @return the entry, never null. - */ - public static ConfigHistory configuring(String pid, String info){ - ConfigHistory h = new ConfigHistory(TaskType.BEGIN, pid) - .setValue(info); - synchronized (history){ - history.add(h); - checkHistorySize(); - } - return h; - } - - /** - * Creates and registers an entry when finished to configure a bundle. - * @param pid the PID - * @param info any info. - * @return the entry, never null. - */ - public static ConfigHistory configured(String pid, String info){ - ConfigHistory h = new ConfigHistory(TaskType.END, pid) - .setValue(info); - synchronized (history){ - history.add(h); - checkHistorySize(); - } - return h; - } - - /** - * Creates and registers an entry when a property has been changed. - * @param pid the PID - * @param key the key, not null. - * @param previousValue the previous value. - * @param value the new value. - * @return the entry, never null. - */ - public static ConfigHistory propertySet(String pid, String key, Object value, Object previousValue){ - ConfigHistory h = new ConfigHistory(TaskType.PROPERTY, pid) - .setKey(key) - .setPreviousValue(previousValue) - .setValue(value); - synchronized (history){ - history.add(h); - checkHistorySize(); - } - return h; - } - - /** - * Sets the maximum history size. - * @param maxHistory the size - */ - static void setMaxHistory(int maxHistory){ - ConfigHistory.maxHistory = maxHistory; - } - - /** - * Get the max history size. - * @return the max size - */ - static int getMaxHistory(){ - return maxHistory; - } - - /** - * Access the current history. - * @return the current history, never null. - */ - static List<ConfigHistory> getHistory(){ - return getHistory(null); - } - - /** - * Clears the history. - */ - static void clearHistory(){ - clearHistory(null); - } - - /** - * Clears the history for a PID. - * @param pid the pid, null clears the full history. - */ - static void clearHistory(String pid){ - synchronized (history){ - if("*".equals(pid)) { - history.clear(); - }else{ - history.removeAll(getHistory(pid)); - } - } - } - - /** - * Get the history for a PID. - * @param pid the pid, null returns the full history. - * @return - */ - public static List<ConfigHistory> getHistory(String pid) { - if(pid==null || pid.isEmpty()){ - return new ArrayList<>(history); - } - synchronized (history) { - List<ConfigHistory> result = new ArrayList<>(); - for (ConfigHistory h : history) { - if (h.getPid().startsWith(pid)) { - result.add(h); - } - } - return result; - } - } - - public TaskType getType(){ - return type; - } - - public String getPid() { - return pid; - } - - public Object getPreviousValue() { - return previousValue; - } - - public ConfigHistory setPreviousValue(Object previousValue) { - this.previousValue = previousValue; - return this; - } - - public Object getValue() { - return value; - } - - public ConfigHistory setValue(Object value) { - this.value = value; - return this; - } - - public String getKey() { - return key; - } - - public ConfigHistory setKey(String key) { - this.key = key; - return this; - } - - @Override - public String toString() { - return "ConfigHistory{" + - "timestamp=" + timestamp + - ", previousValue=" + previousValue + - ", value=" + value + - ", key='" + key + '\'' + - '}'; - } - - - /** - * This methd saves the (serialized) history in the plugin's OSGI configuration using - * the HISTORY_KEY key. - * @param osgiConfig the plugin config, not null. - */ - static void save(Dictionary<String,Object> osgiConfig){ - try { - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - ObjectOutputStream oos = new ObjectOutputStream(bos); - oos.writeObject(history); - oos.flush(); - osgiConfig.put(HISTORY_KEY, Base64.getEncoder().encodeToString(bos.toByteArray())); - } catch (Exception e) { - LOG.log(Level.WARNING, "Failed to store getConfig change history.", e); - } - } - - /** - * Restores the history from the plugin's OSGI configuration. - * @param osgiConfig - */ - static void restore(Dictionary<String,Object> osgiConfig){ - try{ - String serialized = (String)osgiConfig.get(HISTORY_KEY); - if(serialized!=null) { - ByteArrayInputStream bis = new ByteArrayInputStream(Base64.getDecoder().decode(serialized)); - ObjectInputStream ois = new ObjectInputStream(bis); - ConfigHistory.history = (List<ConfigHistory>) ois.readObject(); - ois.close(); - } - } catch (Exception e) { - LOG.log(Level.WARNING, "Failed to store getConfig change history.", e); - } - } - - private static void checkHistorySize(){ - while(history.size() > maxHistory){ - history.remove(0); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/eeab5ce0/osgi/common/src/main/java/org/apache/tamaya/osgi/Policy.java ---------------------------------------------------------------------- diff --git a/osgi/common/src/main/java/org/apache/tamaya/osgi/Policy.java b/osgi/common/src/main/java/org/apache/tamaya/osgi/Policy.java deleted file mode 100644 index f19c2d1..0000000 --- a/osgi/common/src/main/java/org/apache/tamaya/osgi/Policy.java +++ /dev/null @@ -1,31 +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.osgi; - -/** - * Operation mode applied to the getConfig read. - */ -public enum Policy { - /** Only add properties not existing in the getConfig. */ - EXTEND, - /** Override existing properties and add new properties. */ - OVERRIDE, - /** Override existing properties only. */ - UPDATE_ONLY -} \ No newline at end of file
