You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tamaya.apache.org by pl...@apache.org on 2015/12/20 14:05:53 UTC
[6/8] incubator-tamaya git commit: Moved module core to ./code/
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/eadbfe97/code/core/src/main/java/org/apache/tamaya/core/propertysource/BasePropertySource.java
----------------------------------------------------------------------
diff --git a/code/core/src/main/java/org/apache/tamaya/core/propertysource/BasePropertySource.java b/code/core/src/main/java/org/apache/tamaya/core/propertysource/BasePropertySource.java
new file mode 100644
index 0000000..e9f53f9
--- /dev/null
+++ b/code/core/src/main/java/org/apache/tamaya/core/propertysource/BasePropertySource.java
@@ -0,0 +1,85 @@
+/*
+ * 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.propertysource;
+
+import org.apache.tamaya.spi.PropertySource;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Abstract {@link org.apache.tamaya.spi.PropertySource} that allows to set a default ordinal that will be used, if no
+ * ordinal is provided with the config.
+ */
+public abstract class BasePropertySource implements PropertySource{
+ /** default ordinal that will be used, if no ordinal is provided with the config. */
+ private final int defaultOrdinal;
+
+ /**
+ * Constructor.
+ * @param defaultOrdinal default ordinal that will be used, if no ordinal is provided with the config.
+ */
+ protected BasePropertySource(int defaultOrdinal){
+ this.defaultOrdinal = defaultOrdinal;
+ }
+
+ /**
+ * Constructor, using a default ordinal of 0.
+ */
+ protected BasePropertySource(){
+ this(0);
+ }
+
+ @Override
+ public String getName() {
+ return getClass().getSimpleName();
+ }
+
+ @Override
+ public int getOrdinal() {
+ String configuredOrdinal = get(TAMAYA_ORDINAL);
+ if(configuredOrdinal!=null){
+ try{
+ return Integer.parseInt(configuredOrdinal);
+ } catch(Exception e){
+ Logger.getLogger(getClass().getName()).log(Level.WARNING,
+ "Configured Ordinal is not an int number: " + configuredOrdinal, e);
+ }
+ }
+ return getDefaultOrdinal();
+ }
+
+ /**
+ * Returns the default ordinal used, when no ordinal is set, or the ordinal was not parseable to an int value.
+ * @return the default ordinal used, by default 0.
+ */
+ public int getDefaultOrdinal(){
+ return defaultOrdinal;
+ }
+
+ @Override
+ public String get(String key) {
+ return getProperties().get(key);
+ }
+
+ @Override
+ public boolean isScannable(){
+ return true;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/eadbfe97/code/core/src/main/java/org/apache/tamaya/core/propertysource/EnvironmentPropertySource.java
----------------------------------------------------------------------
diff --git a/code/core/src/main/java/org/apache/tamaya/core/propertysource/EnvironmentPropertySource.java b/code/core/src/main/java/org/apache/tamaya/core/propertysource/EnvironmentPropertySource.java
new file mode 100644
index 0000000..a8a1b11
--- /dev/null
+++ b/code/core/src/main/java/org/apache/tamaya/core/propertysource/EnvironmentPropertySource.java
@@ -0,0 +1,64 @@
+/*
+ * 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.propertysource;
+
+import org.apache.tamaya.spi.PropertySource;
+
+import java.util.Map;
+
+/**
+ * This {@link org.apache.tamaya.spi.PropertySource} provides all Properties which are set
+ * via <br />
+ * {@code export myprop=myval} on UNIX Systems or<br />
+ * {@code set myprop=myval} on Windows
+ */
+public class EnvironmentPropertySource implements PropertySource {
+
+ /**
+ * default ordinal for {@link org.apache.tamaya.core.propertysource.EnvironmentPropertySource}
+ */
+ public static final int DEFAULT_ORDINAL = 300;
+
+ @Override
+ public int getOrdinal() {
+ return DEFAULT_ORDINAL;
+ }
+
+ @Override
+ public String getName() {
+ return "environment-properties";
+ }
+
+ @Override
+ public String get(String key) {
+ return getProperties().get(key);
+ }
+
+ @Override
+ public Map<String, String> getProperties() {
+ return System.getenv(); // already a map and unmodifiable
+
+ }
+
+ @Override
+ public boolean isScannable() {
+ return true;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/eadbfe97/code/core/src/main/java/org/apache/tamaya/core/propertysource/SimplePropertySource.java
----------------------------------------------------------------------
diff --git a/code/core/src/main/java/org/apache/tamaya/core/propertysource/SimplePropertySource.java b/code/core/src/main/java/org/apache/tamaya/core/propertysource/SimplePropertySource.java
new file mode 100644
index 0000000..3ae4f2d
--- /dev/null
+++ b/code/core/src/main/java/org/apache/tamaya/core/propertysource/SimplePropertySource.java
@@ -0,0 +1,128 @@
+/*
+ * 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.propertysource;
+
+import org.apache.tamaya.ConfigException;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Properties;
+
+/**
+ * Simple implementation of a {@link org.apache.tamaya.spi.PropertySource} for properties-files.
+ */
+public class SimplePropertySource extends BasePropertySource {
+ /**
+ * The property source name.
+ */
+ private String name;
+ /**
+ * The current properties.
+ */
+ private Map<String, String> properties;
+
+ /**
+ * Creates a new Properties based PropertySource based on the given URL.
+ *
+ * @param propertiesLocation the URL encoded location, not null.
+ */
+ public SimplePropertySource(File propertiesLocation) {
+ super(0);
+ try {
+ this.properties = load(propertiesLocation.toURI().toURL());
+ this.name = propertiesLocation.toString();
+ } catch (IOException e) {
+ throw new ConfigException("Failed to load properties from " + propertiesLocation, e);
+ }
+ }
+
+ /**
+ * Creates a new Properties based PropertySource based on the given URL.
+ *
+ * @param propertiesLocation the URL encoded location, not null.
+ */
+ public SimplePropertySource(URL propertiesLocation) {
+ super(0);
+ this.properties = load(propertiesLocation);
+ this.name = propertiesLocation.toExternalForm();
+ }
+
+ /**
+ * Creates a new Properties based PropertySource based on the given properties map.
+ *
+ * @param name the name, not null.
+ * @param properties the properties, not null.
+ */
+ public SimplePropertySource(String name, Map<String, String> properties) {
+ super(0);
+ this.properties = new HashMap<>(properties);
+ this.name = Objects.requireNonNull(name);
+ }
+
+ /**
+ * Creates a new Properties based PropertySource based on the given URL.
+ *
+ * @param name The property source name
+ * @param propertiesLocation the URL encoded location, not null.
+ */
+ public SimplePropertySource(String name, URL propertiesLocation) {
+ super(0);
+ this.properties = load(propertiesLocation);
+ this.name = Objects.requireNonNull(name);
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public Map<String, String> getProperties() {
+ return this.properties;
+ }
+
+ /**
+ * loads the Properties from the given URL
+ *
+ * @param propertiesFile {@link java.net.URL} to load Properties from
+ * @return loaded {@link java.util.Properties}
+ * @throws IllegalStateException in case of an error while reading properties-file
+ */
+ private Map<String, String> load(URL propertiesFile) {
+ Map<String, String> properties = new HashMap<>();
+ try (InputStream stream = propertiesFile.openStream()) {
+ Properties props = new Properties();
+ if (stream != null) {
+ props.load(stream);
+ }
+ for (String key : props.stringPropertyNames()) {
+ properties.put(key, props.getProperty(key));
+ }
+ } catch (IOException e) {
+ throw new ConfigException("Error loading properties " + propertiesFile, e);
+ }
+ return properties;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/eadbfe97/code/core/src/main/java/org/apache/tamaya/core/propertysource/SystemPropertySource.java
----------------------------------------------------------------------
diff --git a/code/core/src/main/java/org/apache/tamaya/core/propertysource/SystemPropertySource.java b/code/core/src/main/java/org/apache/tamaya/core/propertysource/SystemPropertySource.java
new file mode 100644
index 0000000..9093f25
--- /dev/null
+++ b/code/core/src/main/java/org/apache/tamaya/core/propertysource/SystemPropertySource.java
@@ -0,0 +1,93 @@
+/*
+ * 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.propertysource;
+
+import org.apache.tamaya.spi.PropertySource;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+/**
+ * This {@link org.apache.tamaya.spi.PropertySource} manages the system properties.
+ */
+public class SystemPropertySource implements PropertySource {
+
+ /**
+ * default ordinal for {@link org.apache.tamaya.core.propertysource.SystemPropertySource}
+ */
+ public static final int DEFAULT_ORDINAL = 1000;
+
+ private volatile Map<String,String> cachedProperties;
+
+ /**
+ * previous System.getProperties().hashCode()
+ * so we can check if we need to reload
+ */
+ private int previousHash;
+
+
+ public SystemPropertySource() {
+ cachedProperties = loadProperties();
+ previousHash = System.getProperties().hashCode();
+ }
+
+ private Map<String, String> loadProperties() {
+ Map<String,String> props = new HashMap<>();
+ Properties sysProps = System.getProperties();
+ for(String name: sysProps.stringPropertyNames()) {
+ props.put(name,sysProps.getProperty(name));
+ }
+ return props;
+ }
+
+ @Override
+ public int getOrdinal() {
+ return DEFAULT_ORDINAL;
+ }
+
+ @Override
+ public String getName() {
+ return "system-properties";
+ }
+
+ @Override
+ public String get(String key) {
+ return getProperties().get(key);
+ }
+
+ @Override
+ public Map<String, String> getProperties() {
+ // only need to reload and fill our map if something has changed
+ // synchronization was removed, Instance was marked as volatile. In the worst case it
+ // is reloaded twice, but the values will be the same.
+ if (previousHash != System.getProperties().hashCode()) {
+ Map<String, String> properties = loadProperties();
+ this.cachedProperties = Collections.unmodifiableMap(properties);
+ previousHash = System.getProperties().hashCode();
+ }
+ return this.cachedProperties;
+ }
+
+ @Override
+ public boolean isScannable() {
+ return true;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/eadbfe97/code/core/src/main/java/org/apache/tamaya/core/provider/JavaConfigurationProvider.java
----------------------------------------------------------------------
diff --git a/code/core/src/main/java/org/apache/tamaya/core/provider/JavaConfigurationProvider.java b/code/core/src/main/java/org/apache/tamaya/core/provider/JavaConfigurationProvider.java
new file mode 100644
index 0000000..9c04926
--- /dev/null
+++ b/code/core/src/main/java/org/apache/tamaya/core/provider/JavaConfigurationProvider.java
@@ -0,0 +1,61 @@
+/*
+ * 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.provider;
+
+import org.apache.tamaya.ConfigException;
+import org.apache.tamaya.core.propertysource.SimplePropertySource;
+import org.apache.tamaya.spi.PropertySource;
+import org.apache.tamaya.spi.PropertySourceProvider;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.List;
+
+/**
+ * Provider which reads all {@code javaconfiguration.properties} files from classpath
+ */
+public class JavaConfigurationProvider implements PropertySourceProvider {
+ /** Default location in the classpath, where Tamaya looks for configuration by default. */
+ public static final String DEFAULT_PROPERTIES_FILE_NAME="META-INF/javaconfiguration.properties";
+
+ @Override
+ public Collection<PropertySource> getPropertySources() {
+ List<PropertySource> propertySources = new ArrayList<>();
+ try {
+ ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ if(cl!=null) {
+ Enumeration<URL> urls = Thread.currentThread().getContextClassLoader()
+ .getResources(DEFAULT_PROPERTIES_FILE_NAME);
+ while (urls.hasMoreElements()) {
+ propertySources.add(new SimplePropertySource(urls.nextElement()));
+ }
+ }
+
+ } catch (IOException e) {
+ throw new ConfigException("Error while loading javaconfiguration.properties", e);
+ }
+ return Collections.unmodifiableList(propertySources);
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/eadbfe97/code/core/src/main/resources/META-INF/services/org.apache.tamaya.Configuration
----------------------------------------------------------------------
diff --git a/code/core/src/main/resources/META-INF/services/org.apache.tamaya.Configuration b/code/core/src/main/resources/META-INF/services/org.apache.tamaya.Configuration
new file mode 100644
index 0000000..e51a247
--- /dev/null
+++ b/code/core/src/main/resources/META-INF/services/org.apache.tamaya.Configuration
@@ -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.DefaultConfiguration
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/eadbfe97/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.ConfigurationContextBuilder
----------------------------------------------------------------------
diff --git a/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.ConfigurationContextBuilder b/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.ConfigurationContextBuilder
new file mode 100644
index 0000000..4efa42e
--- /dev/null
+++ b/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.ConfigurationContextBuilder
@@ -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.DefaultConfigurationContextBuilder
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/eadbfe97/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.ConfigurationProviderSpi
----------------------------------------------------------------------
diff --git a/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.ConfigurationProviderSpi b/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.ConfigurationProviderSpi
new file mode 100644
index 0000000..7c0e249
--- /dev/null
+++ b/code/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/eadbfe97/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter
----------------------------------------------------------------------
diff --git a/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter b/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter
new file mode 100644
index 0000000..93f7b11
--- /dev/null
+++ b/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter
@@ -0,0 +1,33 @@
+#
+# 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.converters.BooleanConverter
+org.apache.tamaya.core.internal.converters.ByteConverter
+org.apache.tamaya.core.internal.converters.CharConverter
+org.apache.tamaya.core.internal.converters.ClassConverter
+org.apache.tamaya.core.internal.converters.DoubleConverter
+org.apache.tamaya.core.internal.converters.FloatConverter
+org.apache.tamaya.core.internal.converters.IntegerConverter
+org.apache.tamaya.core.internal.converters.LongConverter
+org.apache.tamaya.core.internal.converters.ShortConverter
+org.apache.tamaya.core.internal.converters.BigDecimalConverter
+org.apache.tamaya.core.internal.converters.BigIntegerConverter
+org.apache.tamaya.core.internal.converters.CurrencyConverter
+org.apache.tamaya.core.internal.converters.NumberConverter
+org.apache.tamaya.core.internal.converters.URIConverter
+org.apache.tamaya.core.internal.converters.URLConverter
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/eadbfe97/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertySource
----------------------------------------------------------------------
diff --git a/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertySource b/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertySource
new file mode 100644
index 0000000..1b8f8c0
--- /dev/null
+++ b/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertySource
@@ -0,0 +1,20 @@
+#
+# 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.propertysource.EnvironmentPropertySource
+org.apache.tamaya.core.propertysource.SystemPropertySource
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/eadbfe97/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertySourceProvider
----------------------------------------------------------------------
diff --git a/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertySourceProvider b/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertySourceProvider
new file mode 100644
index 0000000..4535a09
--- /dev/null
+++ b/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertySourceProvider
@@ -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.provider.JavaConfigurationProvider
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/eadbfe97/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.ServiceContext
----------------------------------------------------------------------
diff --git a/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.ServiceContext b/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.ServiceContext
new file mode 100644
index 0000000..f8e7e7f
--- /dev/null
+++ b/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.ServiceContext
@@ -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.DefaultServiceContext
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/eadbfe97/code/core/src/test/java/org/apache/tamaya/core/ConfigurationTest.java
----------------------------------------------------------------------
diff --git a/code/core/src/test/java/org/apache/tamaya/core/ConfigurationTest.java b/code/core/src/test/java/org/apache/tamaya/core/ConfigurationTest.java
new file mode 100644
index 0000000..98bb29c
--- /dev/null
+++ b/code/core/src/test/java/org/apache/tamaya/core/ConfigurationTest.java
@@ -0,0 +1,67 @@
+/*
+ * 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;
+
+import org.apache.tamaya.Configuration;
+import org.apache.tamaya.ConfigurationProvider;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * This tests checks if the combination of 2 prioritized PropertySource return valid results on the final Configuration.
+ */
+public class ConfigurationTest {
+
+ @Test
+ public void testAccess(){
+ assertNotNull(current());
+ }
+
+ private Configuration current() {
+ return ConfigurationProvider.getConfiguration();
+ }
+
+ @Test
+ public void testContent(){
+ assertEquals("Robin", current().get("name"));
+ assertEquals("Sabine", current().get("name2")); // from default
+ assertEquals("Mapped to name: Robin", current().get("name3")); // oderridden default, mapped by filter to name property
+ assertEquals("Sereina(filtered)(filtered)(filtered)(filtered)(filtered)(filtered)(filtered)(filtered)(filtered)(filtered)", current().get("name4")); // final only
+ assertNull(current().get("name5")); // final only, but removed from filter
+
+ System.out.println("name : " + current().get("name"));
+ System.out.println("name2: " + current().get("name2"));
+ System.out.println("name3: " + current().get("name3"));
+ System.out.println("name4: " + current().get("name4"));
+ System.out.println("name5: " + current().get("name5"));
+
+ System.out.println("ALL :");
+ Set<Map.Entry<String, String>> entries = current().getProperties().entrySet();
+ for (Map.Entry<String, String> entry : entries) {
+ System.out.println(" " + entry.getKey()+" = " + entry.getValue());
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/eadbfe97/code/core/src/test/java/org/apache/tamaya/core/internal/A.java
----------------------------------------------------------------------
diff --git a/code/core/src/test/java/org/apache/tamaya/core/internal/A.java b/code/core/src/test/java/org/apache/tamaya/core/internal/A.java
new file mode 100644
index 0000000..aa77a5d
--- /dev/null
+++ b/code/core/src/test/java/org/apache/tamaya/core/internal/A.java
@@ -0,0 +1,29 @@
+/*
+ * 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;
+
+/**
+ * Test class for testing transitively evaluated property converters.
+ */
+public class A implements AutoCloseable{
+ @Override
+ public void close() throws Exception {
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/eadbfe97/code/core/src/test/java/org/apache/tamaya/core/internal/B.java
----------------------------------------------------------------------
diff --git a/code/core/src/test/java/org/apache/tamaya/core/internal/B.java b/code/core/src/test/java/org/apache/tamaya/core/internal/B.java
new file mode 100644
index 0000000..31bafb6
--- /dev/null
+++ b/code/core/src/test/java/org/apache/tamaya/core/internal/B.java
@@ -0,0 +1,29 @@
+/*
+ * 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;
+
+/**
+ * Test class for testing transitively evaluated property converters.
+ */
+public class B extends A implements Runnable{
+ @Override
+ public void run() {
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/eadbfe97/code/core/src/test/java/org/apache/tamaya/core/internal/C.java
----------------------------------------------------------------------
diff --git a/code/core/src/test/java/org/apache/tamaya/core/internal/C.java b/code/core/src/test/java/org/apache/tamaya/core/internal/C.java
new file mode 100644
index 0000000..aad1ef9
--- /dev/null
+++ b/code/core/src/test/java/org/apache/tamaya/core/internal/C.java
@@ -0,0 +1,56 @@
+/*
+ * 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 java.io.IOException;
+import java.nio.CharBuffer;
+
+/**
+ * Test class for testing transitively evaluated property converters.
+ */
+public class C extends B implements Readable{
+
+ private String inValue;
+
+ public C(String inValue){
+ this.inValue = inValue;
+ }
+
+ @Override
+ public int read(CharBuffer cb) throws IOException {
+ return 0;
+ }
+
+ /**
+ * Returns the input value, set on creation. Used for test assertion.
+ * @return the in value.
+ */
+ public String getInValue() {
+ return inValue;
+ }
+
+ @Override
+ public String toString() {
+ return "C{" +
+ "inValue='" + inValue + '\'' +
+ '}';
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/eadbfe97/code/core/src/test/java/org/apache/tamaya/core/internal/CTestConverter.java
----------------------------------------------------------------------
diff --git a/code/core/src/test/java/org/apache/tamaya/core/internal/CTestConverter.java b/code/core/src/test/java/org/apache/tamaya/core/internal/CTestConverter.java
new file mode 100644
index 0000000..7ee2a35
--- /dev/null
+++ b/code/core/src/test/java/org/apache/tamaya/core/internal/CTestConverter.java
@@ -0,0 +1,32 @@
+/*
+ * 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.spi.ConversionContext;
+import org.apache.tamaya.spi.PropertyConverter;
+
+/**
+ * Created by Anatole on 13.06.2015.
+ */
+public class CTestConverter implements PropertyConverter<C>{
+ @Override
+ public C convert(String value, ConversionContext context) {
+ return new C(value);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/eadbfe97/code/core/src/test/java/org/apache/tamaya/core/internal/DefaultServiceContextTest.java
----------------------------------------------------------------------
diff --git a/code/core/src/test/java/org/apache/tamaya/core/internal/DefaultServiceContextTest.java b/code/core/src/test/java/org/apache/tamaya/core/internal/DefaultServiceContextTest.java
new file mode 100644
index 0000000..1d24884
--- /dev/null
+++ b/code/core/src/test/java/org/apache/tamaya/core/internal/DefaultServiceContextTest.java
@@ -0,0 +1,140 @@
+/*
+ * 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.ConfigException;
+import org.apache.tamaya.spi.ConfigurationProviderSpi;
+import org.junit.Assert;
+import org.junit.Test;
+
+import javax.annotation.Priority;
+import java.util.Collection;
+import java.util.List;
+
+public class DefaultServiceContextTest {
+
+ /**
+ * context to test
+ */
+ private DefaultServiceContext context = new DefaultServiceContext();
+
+
+ @Test
+ public void testGetService() {
+ ConfigurationProviderSpi providerSpi = context.getService(ConfigurationProviderSpi.class);
+ Assert.assertNotNull(providerSpi);
+ Assert.assertTrue(providerSpi instanceof DefaultConfigurationProvider);
+ }
+
+ @Test(expected = ConfigException.class)
+ public void testGetService_multipleServicesWithoutPriority_shouldThrowConfigException() {
+ context.getService(InvalidPriorityInterface.class);
+ }
+
+ @Test
+ public void testGetService_multipleService_shouldReturnServiceWithHighestPriority() {
+ MultiImplsInterface service = context.getService(MultiImplsInterface.class);
+
+ Assert.assertNotNull(service);
+ Assert.assertTrue(service instanceof MultiImpl2);
+ }
+
+ @Test
+ public void testGetService_noImpl_shouldReturnEmptyOpional() {
+ NoImplInterface service = context.getService(NoImplInterface.class);
+ Assert.assertNull(service);
+ }
+
+
+ @Test
+ public void testGetServices_shouldReturnServices() {
+ {
+ Collection<InvalidPriorityInterface> services = context.getServices(InvalidPriorityInterface.class);
+ Assert.assertNotNull(services);
+ Assert.assertEquals(2, services.size());
+
+ for (InvalidPriorityInterface service : services) {
+ Assert.assertTrue(service instanceof InvalidPriorityImpl1 || service instanceof InvalidPriorityImpl2);
+ }
+ }
+
+ {
+ Collection<MultiImplsInterface> services = context.getServices(MultiImplsInterface.class);
+ Assert.assertNotNull(services);
+ Assert.assertEquals(3, services.size());
+
+ for (MultiImplsInterface service : services) {
+ Assert.assertTrue(service instanceof MultiImpl1 ||
+ service instanceof MultiImpl2 ||
+ service instanceof MultiImpl3);
+ }
+ }
+ }
+
+ @Test
+ public void testGetServices_redundantAccessToServices() {
+ for(int i=0;i<10;i++){
+ Collection<InvalidPriorityInterface> services = context.getServices(InvalidPriorityInterface.class);
+ Assert.assertNotNull(services);
+ Assert.assertEquals(2, services.size());
+ for (InvalidPriorityInterface service : services) {
+ Assert.assertTrue(service instanceof InvalidPriorityImpl1 || service instanceof InvalidPriorityImpl2);
+ }
+ }
+ }
+
+ @Test
+ public void testGetServices_noImpl_shouldReturnEmptyList() {
+ Collection<NoImplInterface> services = context.getServices(NoImplInterface.class);
+ Assert.assertNotNull(services);
+ Assert.assertTrue(services.isEmpty());
+ }
+
+
+ // some test interfaces and classes
+
+ public static interface InvalidPriorityInterface {
+ }
+
+ @Priority(value = 50)
+ public static class InvalidPriorityImpl1 implements InvalidPriorityInterface {
+ }
+
+ @Priority(value = 50)
+ public static class InvalidPriorityImpl2 implements InvalidPriorityInterface {
+ }
+
+
+ public static interface MultiImplsInterface {
+ }
+
+ public static class MultiImpl1 implements MultiImplsInterface {
+ }
+
+ @Priority(value = 500)
+ public static class MultiImpl2 implements MultiImplsInterface {
+ }
+
+ @Priority(value = -10)
+ public static class MultiImpl3 implements MultiImplsInterface {
+ }
+
+ private static interface NoImplInterface {
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/eadbfe97/code/core/src/test/java/org/apache/tamaya/core/internal/PropertyConverterManagerTest.java
----------------------------------------------------------------------
diff --git a/code/core/src/test/java/org/apache/tamaya/core/internal/PropertyConverterManagerTest.java b/code/core/src/test/java/org/apache/tamaya/core/internal/PropertyConverterManagerTest.java
new file mode 100644
index 0000000..82d834a
--- /dev/null
+++ b/code/core/src/test/java/org/apache/tamaya/core/internal/PropertyConverterManagerTest.java
@@ -0,0 +1,179 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tamaya.core.internal;
+
+
+import org.apache.tamaya.ConfigurationProvider;
+import org.apache.tamaya.spi.ConversionContext;
+import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.TypeLiteral;
+import org.junit.Test;
+
+import java.util.List;
+
+import static org.hamcrest.CoreMatchers.*;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.collection.IsCollectionWithSize.hasSize;
+
+public class PropertyConverterManagerTest {
+
+ private ConversionContext DUMMY_CONTEXT = new ConversionContext.Builder(
+ "someKey", TypeLiteral.of(Object.class)).build();
+
+ @Test
+ public void customTypeWithFactoryMethodOfIsRecognizedAsSupported() {
+ PropertyConverterManager manager = new PropertyConverterManager();
+
+ assertThat(manager.isTargetTypeSupported(TypeLiteral.of(MyType.class)),
+ is(true));
+ }
+
+ @Test
+ public void factoryMethodOfIsUsedAsConverter() {
+ PropertyConverterManager manager = new PropertyConverterManager();
+
+ List<PropertyConverter<MyType>> converters = manager.getPropertyConverters(
+ (TypeLiteral)TypeLiteral.of(MyType.class));
+
+ assertThat(converters, hasSize(1));
+
+ PropertyConverter<MyType> converter = converters.get(0);
+
+ Object result = converter.convert("IN", DUMMY_CONTEXT);
+
+ assertThat(result, notNullValue());
+ assertThat(result, instanceOf(MyType.class));
+ assertThat(((MyType)result).getValue(), equalTo("IN"));
+ }
+
+ @Test
+ public void testDirectConverterMapping(){
+ PropertyConverterManager manager = new PropertyConverterManager();
+ List<PropertyConverter<C>> converters = List.class.cast(manager.getPropertyConverters(TypeLiteral.of(C.class)));
+ assertThat(converters, hasSize(1));
+
+ PropertyConverter<C> converter = converters.get(0);
+ C result = converter.convert("testDirectConverterMapping", DUMMY_CONTEXT);
+
+ assertThat(result, notNullValue());
+ assertThat(result, instanceOf(C.class));
+ assertThat(((C)result).getInValue(), equalTo("testDirectConverterMapping"));
+ }
+
+ @Test
+ public void testDirectSuperclassConverterMapping(){
+ PropertyConverterManager manager = new PropertyConverterManager();
+ List<PropertyConverter<B>> converters = List.class.cast(manager.getPropertyConverters(TypeLiteral.of(B.class)));
+ assertThat(converters, hasSize(1));
+ converters = List.class.cast(manager.getPropertyConverters(TypeLiteral.of(B.class)));
+ assertThat(converters, hasSize(1));
+
+ PropertyConverter<B> converter = converters.get(0);
+ B result = converter.convert("testDirectSuperclassConverterMapping", DUMMY_CONTEXT);
+
+ assertThat(result, notNullValue());
+ assertThat(result, instanceOf(C.class));
+ assertThat(((C)result).getInValue(), equalTo("testDirectSuperclassConverterMapping"));
+ }
+
+ @Test
+ public void testMultipleConverterLoad(){
+ PropertyConverterManager manager = new PropertyConverterManager();
+ List<PropertyConverter<B>> converters = List.class.cast(manager.getPropertyConverters(TypeLiteral.of(B.class)));
+ assertThat(converters, hasSize(1));
+ manager = new PropertyConverterManager();
+ converters = List.class.cast(manager.getPropertyConverters(TypeLiteral.of(B.class)));
+ assertThat(converters, hasSize(1));
+ }
+
+ @Test
+ public void testTransitiveSuperclassConverterMapping(){
+ PropertyConverterManager manager = new PropertyConverterManager();
+ List<PropertyConverter<A>> converters = List.class.cast(manager.getPropertyConverters(TypeLiteral.of(A.class)));
+ assertThat(converters, hasSize(1));
+
+ PropertyConverter<A> converter = converters.get(0);
+ A result = converter.convert("testTransitiveSuperclassConverterMapping", DUMMY_CONTEXT);
+
+ assertThat(result, notNullValue());
+ assertThat(result, instanceOf(C.class));
+ assertThat(((C)result).getInValue(), equalTo("testTransitiveSuperclassConverterMapping"));
+ }
+
+ @Test
+ public void testDirectInterfaceMapping(){
+ PropertyConverterManager manager = new PropertyConverterManager();
+ List<PropertyConverter<Readable>> converters = List.class.cast(manager.getPropertyConverters(TypeLiteral.of(Readable.class)));
+ assertThat(converters, hasSize(1));
+
+ PropertyConverter<Readable> converter = converters.get(0);
+ Readable result = converter.convert("testDirectInterfaceMapping", DUMMY_CONTEXT);
+
+ assertThat(result, notNullValue());
+ assertThat(result, instanceOf(C.class));
+ assertThat(((C)result).getInValue(), equalTo("testDirectInterfaceMapping"));
+ }
+
+ @Test
+ public void testTransitiveInterfaceMapping1(){
+ PropertyConverterManager manager = new PropertyConverterManager();
+ List<PropertyConverter<Runnable>> converters = List.class.cast(manager.getPropertyConverters(TypeLiteral.of(Runnable.class)));
+ assertThat(converters, hasSize(1));
+
+ PropertyConverter<Runnable> converter = converters.get(0);
+ Runnable result = converter.convert("testTransitiveInterfaceMapping1", DUMMY_CONTEXT);
+
+ assertThat(result, notNullValue());
+ assertThat(result, instanceOf(C.class));
+ assertThat(((C)result).getInValue(), equalTo("testTransitiveInterfaceMapping1"));
+ }
+
+ @Test
+ public void testTransitiveInterfaceMapping2(){
+ PropertyConverterManager manager = new PropertyConverterManager();
+ List<PropertyConverter<AutoCloseable>> converters = List.class.cast(manager.getPropertyConverters(TypeLiteral.of(AutoCloseable.class)));
+ assertThat(converters, hasSize(1));
+
+ PropertyConverter<AutoCloseable> converter = converters.get(0);
+ AutoCloseable result = converter.convert("testTransitiveInterfaceMapping2", DUMMY_CONTEXT);
+
+ assertThat(result, notNullValue());
+ assertThat(result, instanceOf(C.class));
+ assertThat(((C)result).getInValue(), equalTo("testTransitiveInterfaceMapping2"));
+ }
+
+ public static class MyType {
+ private String typeValue;
+
+ private MyType(String value) {
+ typeValue = value;
+ }
+
+ public static MyType of(String source) {
+ return new MyType(source);
+ }
+
+ public String getValue() {
+ return typeValue;
+ }
+
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/eadbfe97/code/core/src/test/java/org/apache/tamaya/core/internal/converters/BigDecimalConverterTest.java
----------------------------------------------------------------------
diff --git a/code/core/src/test/java/org/apache/tamaya/core/internal/converters/BigDecimalConverterTest.java b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/BigDecimalConverterTest.java
new file mode 100644
index 0000000..9c71688
--- /dev/null
+++ b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/BigDecimalConverterTest.java
@@ -0,0 +1,103 @@
+/*
+ * 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.converters;
+
+import org.apache.tamaya.Configuration;
+import org.apache.tamaya.ConfigurationProvider;
+import org.junit.Test;
+
+import java.math.BigDecimal;
+
+import static org.junit.Assert.*;
+
+/**
+ * Tests the default converter for bytes.
+ */
+public class BigDecimalConverterTest {
+
+ /**
+ * Test conversion. The value are provided by
+ * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+ * @throws Exception
+ */
+ @Test
+ public void testConvert_BigDecimal_Decimal() throws Exception {
+ Configuration config = ConfigurationProvider.getConfiguration();
+ BigDecimal valueRead = config.get("tests.converter.bd.decimal", BigDecimal.class);
+ assertTrue(valueRead != null);
+ assertEquals(valueRead, new BigDecimal(101));
+ }
+
+
+ /**
+ * Test conversion. The value are provided by
+ * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+ * @throws Exception
+ */
+ @Test
+ public void testConvert_BigDecimal_Hex() throws Exception {
+ Configuration config = ConfigurationProvider.getConfiguration();
+ BigDecimal valueRead = config.get("tests.converter.bd.hex.lowerX", BigDecimal.class);
+ assertTrue(valueRead != null);
+ assertEquals(valueRead, new BigDecimal("47"));
+ valueRead = config.get("tests.converter.bd.hex.upperX", BigDecimal.class);
+ assertTrue(valueRead != null);
+ assertEquals(valueRead, new BigDecimal("63"));
+ }
+
+ /**
+ * Test conversion. The value are provided by
+ * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+ * @throws Exception
+ */
+ @Test
+ public void testConvert_NotPresent() throws Exception {
+ Configuration config = ConfigurationProvider.getConfiguration();
+ BigDecimal valueRead = config.get("tests.converter.bd.foo", BigDecimal.class);
+ assertFalse(valueRead != null);
+ }
+
+ /**
+ * Test conversion. The value are provided by
+ * {@link ConverterTestsPropertySource}.
+ * @throws Exception
+ */
+ @Test
+ public void testConvert_BigDecimal_BigValue() throws Exception {
+ Configuration config = ConfigurationProvider.getConfiguration();
+ BigDecimal valueRead = config.get("tests.converter.bd.big", BigDecimal.class);
+ assertTrue(valueRead != null);
+ assertEquals(new BigDecimal("101666666666666662333337263723628763821638923628193612983618293628763"),
+ valueRead);
+ }
+
+ /**
+ * Test conversion. The value are provided by
+ * {@link ConverterTestsPropertySource}.
+ * @throws Exception
+ */
+ @Test
+ public void testConvert_BigDecimal_BigFloatValue() throws Exception {
+ Configuration config = ConfigurationProvider.getConfiguration();
+ BigDecimal valueRead = config.get("tests.converter.bd.bigFloat", BigDecimal.class);
+ assertTrue(valueRead != null);
+ assertEquals(new BigDecimal("1016666666666666623333372637236287638216389293628763.1016666666666666623333372" +
+ "63723628763821638923628193612983618293628763"), valueRead);
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/eadbfe97/code/core/src/test/java/org/apache/tamaya/core/internal/converters/BooleanConverterTest.java
----------------------------------------------------------------------
diff --git a/code/core/src/test/java/org/apache/tamaya/core/internal/converters/BooleanConverterTest.java b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/BooleanConverterTest.java
new file mode 100644
index 0000000..c3b3f96
--- /dev/null
+++ b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/BooleanConverterTest.java
@@ -0,0 +1,108 @@
+/*
+ * 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.converters;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import org.apache.tamaya.Configuration;
+import org.apache.tamaya.ConfigurationProvider;
+import org.junit.Test;
+
+/**
+ * Tests the default converter for bytes.
+ */
+public class BooleanConverterTest {
+
+ /**
+ * Test conversion. The value are provided by
+ * {@link ConverterTestsPropertySource}.
+ * @throws Exception
+ */
+ @Test
+ public void testConvert_Byte() throws Exception {
+ Configuration config = ConfigurationProvider.getConfiguration();
+ // trues
+ Boolean valueRead = config.get("tests.converter.boolean.y1", Boolean.class);
+ assertNotNull(valueRead);
+ assertEquals(valueRead, Boolean.TRUE);
+ valueRead = config.get("tests.converter.boolean.y2", Boolean.class);
+ assertNotNull(valueRead);
+ assertEquals(valueRead, Boolean.TRUE);
+ valueRead = config.get("tests.converter.boolean.yes1", Boolean.class);
+ assertNotNull(valueRead);
+ assertEquals(valueRead, Boolean.TRUE);
+ valueRead = config.get("tests.converter.boolean.yes2", Boolean.class);
+ assertNotNull(valueRead);
+ assertEquals(valueRead, Boolean.TRUE);
+ valueRead = config.get("tests.converter.boolean.yes3", Boolean.class);
+ assertNotNull(valueRead);
+ assertEquals(valueRead, Boolean.TRUE);
+ valueRead = config.get("tests.converter.boolean.true1", Boolean.class);
+ assertNotNull(valueRead);
+ assertEquals(valueRead, Boolean.TRUE);
+ valueRead = config.get("tests.converter.boolean.true2", Boolean.class);
+ assertNotNull(valueRead);
+ assertEquals(valueRead, Boolean.TRUE);
+ valueRead = config.get("tests.converter.boolean.true3", Boolean.class);
+ assertNotNull(valueRead);
+ assertEquals(valueRead, Boolean.TRUE);
+ valueRead = config.get("tests.converter.boolean.t1", Boolean.class);
+ assertNotNull(valueRead);
+ assertEquals(valueRead, Boolean.TRUE);
+ valueRead = config.get("tests.converter.boolean.t2", Boolean.class);
+ assertNotNull(valueRead);
+ assertEquals(valueRead, Boolean.TRUE);
+ // falses
+ valueRead = config.get("tests.converter.boolean.n1", Boolean.class);
+ assertNotNull(valueRead);
+ assertFalse(valueRead.booleanValue());
+ valueRead = config.get("tests.converter.boolean.n2", Boolean.class);
+ assertNotNull(valueRead);
+ assertFalse(valueRead.booleanValue());
+ valueRead = config.get("tests.converter.boolean.no1", Boolean.class);
+ assertFalse(valueRead);
+ assertFalse(valueRead.booleanValue());
+ valueRead = config.get("tests.converter.boolean.no2", Boolean.class);
+ assertNotNull(valueRead);
+ assertFalse(valueRead.booleanValue());
+ valueRead = config.get("tests.converter.boolean.no3", Boolean.class);
+ assertNotNull(valueRead);
+ assertFalse(valueRead.booleanValue());
+ valueRead = config.get("tests.converter.boolean.false1", Boolean.class);
+ assertNotNull(valueRead);
+ assertFalse(valueRead.booleanValue());
+ valueRead = config.get("tests.converter.boolean.false2", Boolean.class);
+ assertNotNull(valueRead);
+ assertFalse(valueRead.booleanValue());
+ valueRead = config.get("tests.converter.boolean.false3", Boolean.class);
+ assertNotNull(valueRead);
+ assertFalse(valueRead.booleanValue());
+ valueRead = config.get("tests.converter.boolean.f1", Boolean.class);
+ assertNotNull(valueRead);
+ assertFalse(valueRead.booleanValue());
+ valueRead = config.get("tests.converter.boolean.f2", Boolean.class);
+ assertNotNull(valueRead);
+ assertFalse(valueRead.booleanValue());
+ valueRead = config.get("tests.converter.boolean.foo", Boolean.class);
+ assertNull(valueRead);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/eadbfe97/code/core/src/test/java/org/apache/tamaya/core/internal/converters/ByteConverterTest.java
----------------------------------------------------------------------
diff --git a/code/core/src/test/java/org/apache/tamaya/core/internal/converters/ByteConverterTest.java b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/ByteConverterTest.java
new file mode 100644
index 0000000..132674d
--- /dev/null
+++ b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/ByteConverterTest.java
@@ -0,0 +1,81 @@
+/*
+ * 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.converters;
+
+import org.apache.tamaya.Configuration;
+import org.apache.tamaya.ConfigurationProvider;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Tests the default converter for bytes.
+ */
+public class ByteConverterTest {
+
+ /**
+ * Test conversion. The value are provided by
+ * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+ * @throws Exception
+ */
+ @Test
+ public void testConvert_Byte() throws Exception {
+ Configuration config = ConfigurationProvider.getConfiguration();
+ Byte valueRead = config.get("tests.converter.byte.decimal", Byte.class);
+ assertNotNull(valueRead);
+ assertEquals(valueRead.byteValue(), 101);
+ valueRead = config.get("tests.converter.byte.octal", Byte.class);
+ assertNotNull(valueRead);
+ assertEquals(valueRead.byteValue(), Byte.decode("02").byteValue());
+ valueRead = config.get("tests.converter.byte.hex.lowerX", Byte.class);
+ assertNotNull(valueRead);
+ assertEquals(valueRead.byteValue(), Byte.decode("0x2F").byteValue());
+ valueRead = config.get("tests.converter.byte.hex.upperX", Byte.class);
+ assertNotNull(valueRead);
+ assertEquals(valueRead.byteValue(), Byte.decode("0X3F").byteValue());
+ valueRead = config.get("tests.converter.byte.foo", Byte.class);
+ assertNull(valueRead);
+ }
+
+ /**
+ * Test conversion. The value are provided by
+ * {@link ConverterTestsPropertySource}.
+ * @throws Exception
+ */
+ @Test
+ public void testConvert_Byte_MinValue() throws Exception {
+ Configuration config = ConfigurationProvider.getConfiguration();
+ Byte valueRead = config.get("tests.converter.byte.min", Byte.class);
+ assertTrue(valueRead!=null);
+ assertEquals(Byte.MIN_VALUE, valueRead.byteValue());
+ }
+
+ /**
+ * Test conversion. The value are provided by
+ * {@link ConverterTestsPropertySource}.
+ * @throws Exception
+ */
+ @Test
+ public void testConvert_Byte_MaxValue() throws Exception {
+ Configuration config = ConfigurationProvider.getConfiguration();
+ Byte valueRead = config.get("tests.converter.byte.max", Byte.class);
+ assertTrue(valueRead!=null);
+ assertEquals(Byte.MAX_VALUE, valueRead.byteValue());
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/eadbfe97/code/core/src/test/java/org/apache/tamaya/core/internal/converters/CharConverterTest.java
----------------------------------------------------------------------
diff --git a/code/core/src/test/java/org/apache/tamaya/core/internal/converters/CharConverterTest.java b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/CharConverterTest.java
new file mode 100644
index 0000000..f27a465
--- /dev/null
+++ b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/CharConverterTest.java
@@ -0,0 +1,86 @@
+/*
+ * 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.converters;
+
+import org.apache.tamaya.Configuration;
+import org.apache.tamaya.ConfigurationProvider;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Tests conversion of the {@link CharConverter}.
+ */
+public class CharConverterTest {
+
+ @Test
+ public void testConvert_Character() throws Exception {
+ Configuration config = ConfigurationProvider.getConfiguration();
+ Character valueRead = config.get("tests.converter.char.f", Character.class);
+ assertTrue(valueRead!=null);
+ assertEquals(valueRead.charValue(), 'f');
+ }
+
+ @Test
+ public void testConvert_Character_Numeric() throws Exception {
+ Configuration config = ConfigurationProvider.getConfiguration();
+ Character valueRead = config.get("tests.converter.char.f-numeric", Character.class);
+ assertTrue(valueRead!=null);
+ assertEquals(valueRead.charValue(), (char)101);
+ }
+
+ @Test
+ public void testConvert_Character_Quoted() throws Exception {
+ Configuration config = ConfigurationProvider.getConfiguration();
+ Character valueRead = config.get("tests.converter.char.d", Character.class);
+ assertTrue(valueRead!=null);
+ assertEquals(valueRead.charValue(), 'd');
+ }
+
+ @Test
+ public void testConvert_Character_WithWhitspace_Before() throws Exception {
+ Configuration config = ConfigurationProvider.getConfiguration();
+ Character valueRead = config.get("tests.converter.char.f-before", Character.class);
+ assertTrue(valueRead!=null);
+ assertEquals(valueRead.charValue(), 'f');
+ }
+
+ @Test
+ public void testConvert_Character_WithWhitspace_After() throws Exception {
+ Configuration config = ConfigurationProvider.getConfiguration();
+ Character valueRead = config.get("tests.converter.char.f-after", Character.class);
+ assertTrue(valueRead!=null);
+ assertEquals(valueRead.charValue(), 'f');
+ }
+
+ @Test
+ public void testConvert_Character_WithWhitspace_Around() throws Exception {
+ Configuration config = ConfigurationProvider.getConfiguration();
+ Character valueRead = config.get("tests.converter.char.f-around", Character.class);
+ assertTrue(valueRead!=null);
+ assertEquals(valueRead.charValue(), 'f');
+ }
+
+ @Test
+ public void testConvert_NotPresent() throws Exception {
+ Configuration config = ConfigurationProvider.getConfiguration();
+ Character valueRead = config.get("tests.converter.char.foo", Character.class);
+ assertNull(valueRead);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/eadbfe97/code/core/src/test/java/org/apache/tamaya/core/internal/converters/ConverterTestsPropertySource.java
----------------------------------------------------------------------
diff --git a/code/core/src/test/java/org/apache/tamaya/core/internal/converters/ConverterTestsPropertySource.java b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/ConverterTestsPropertySource.java
new file mode 100644
index 0000000..26ad140
--- /dev/null
+++ b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/ConverterTestsPropertySource.java
@@ -0,0 +1,252 @@
+/*
+ * 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.converters;
+
+import org.apache.tamaya.spi.PropertySource;
+
+import java.util.Collections;
+import java.util.Map;
+
+/**
+ * Test Property Source used by converter tests.
+ */
+public class ConverterTestsPropertySource implements PropertySource{
+ @Override
+ public int getOrdinal() {
+ return 0;
+ }
+
+ @Override
+ public String getName(){
+ return "ConverterTestsPropertySource";
+ }
+
+ @Override
+ public String get(String key) {
+ switch(key){
+ // Bytes
+ case "tests.converter.byte.decimal":
+ return "101";
+ case "tests.converter.byte.octal":
+ return "02";
+ case "tests.converter.byte.hex.lowerX":
+ return "0x2F";
+ case "tests.converter.byte.hex.upperX":
+ return "0X3F";
+ case "tests.converter.byte.min":
+ return "min";
+ case "tests.converter.byte.max":
+ return "MAX_Value";
+ // Boolean
+ case "tests.converter.boolean.y1":
+ return "y";
+ case "tests.converter.boolean.y2":
+ return "Y";
+ case "tests.converter.boolean.yes1":
+ return "yes";
+ case "tests.converter.boolean.yes2":
+ return "Yes";
+ case "tests.converter.boolean.yes3":
+ return "yeS";
+ case "tests.converter.boolean.true1":
+ return "true";
+ case "tests.converter.boolean.true2":
+ return "True";
+ case "tests.converter.boolean.true3":
+ return "trUe";
+ case "tests.converter.boolean.t1":
+ return "t";
+ case "tests.converter.boolean.t2":
+ return "T";
+ case "tests.converter.boolean.n1":
+ return "n";
+ case "tests.converter.boolean.n2":
+ return "N";
+ case "tests.converter.boolean.no1":
+ return "no";
+ case "tests.converter.boolean.no2":
+ return "No";
+ case "tests.converter.boolean.no3":
+ return "nO";
+ case "tests.converter.boolean.false1":
+ return "false";
+ case "tests.converter.boolean.false2":
+ return "False";
+ case "tests.converter.boolean.false3":
+ return "falSe";
+ case "tests.converter.boolean.f1":
+ return "f";
+ case "tests.converter.boolean.f2":
+ return "F";
+ // Character
+ case "tests.converter.char.f":
+ return "f";
+ case "tests.converter.char.d":
+ return "'d'";
+ case "tests.converter.char.f-before":
+ return " f";
+ case "tests.converter.char.f-after":
+ return "f ";
+ case "tests.converter.char.f-around":
+ return " f ";
+ case "tests.converter.char.f-numeric":
+ return "101";
+ // currency
+ case "tests.converter.currency.code1":
+ return "CHF";
+ case "tests.converter.currency.code2":
+ return "cHf";
+ case "tests.converter.currency.code3":
+ return " CHF";
+ case "tests.converter.currency.code4":
+ return "CHF ";
+ case "tests.converter.currency.code5":
+ return " CHF ";
+ case "tests.converter.currency.code-numeric1":
+ return "100";
+ case "tests.converter.currency.code-numeric2":
+ return " 100";
+ case "tests.converter.currency.code-numeric3":
+ return "100 ";
+ case "tests.converter.currency.code-numeric4":
+ return " 100 ";
+ case "tests.converter.currency.code-locale1":
+ return "DE";
+ case "tests.converter.currency.code-locale2":
+ return " DE";
+ case "tests.converter.currency.code-locale3":
+ return "DE ";
+ case "tests.converter.currency.code-locale4":
+ return " DE ";
+ //double
+ case "tests.converter.double.decimal":
+ return "1.23456789";
+ case "tests.converter.double.decimalNegative":
+ return "-1.23456789";
+ case "tests.converter.double.integer":
+ return " 100";
+ case "tests.converter.double.hex1":
+ return " 0XFF";
+ case "tests.converter.double.hex2":
+ return "-0xFF ";
+ case "tests.converter.double.hex3":
+ return "#FF";
+ case "tests.converter.double.octal":
+ return "0013";
+ case "tests.converter.double.min":
+ return "MIN_Value";
+ case "tests.converter.double.max":
+ return "max";
+ case "tests.converter.double.nan":
+ return "NAN";
+ case "tests.converter.double.pi":
+ return "positive_infinity";
+ case "tests.converter.double.ni":
+ return "Negative_Infinity";
+ //float
+ case "tests.converter.float.decimal":
+ return "1.23456789";
+ case "tests.converter.float.decimalNegative":
+ return "-1.23456789";
+ case "tests.converter.float.integer":
+ return " 100";
+ case "tests.converter.float.hex1":
+ return " 0XFF";
+ case "tests.converter.float.hex2":
+ return "-0xFF ";
+ case "tests.converter.float.hex3":
+ return "#FF";
+ case "tests.converter.float.octal":
+ return "0013";
+ case "tests.converter.float.min":
+ return "MIN_Value";
+ case "tests.converter.float.max":
+ return "max";
+ case "tests.converter.float.nan":
+ return "NAN";
+ case "tests.converter.float.pi":
+ return "positive_infinity";
+ case "tests.converter.float.ni":
+ return "Negative_Infinity";
+ // Integer
+ case "tests.converter.integer.decimal":
+ return "101";
+ case "tests.converter.integer.octal":
+ return "02";
+ case "tests.converter.integer.hex.lowerX":
+ return "0x2F";
+ case "tests.converter.integer.hex.upperX":
+ return "0X3F";
+ case "tests.converter.integer.min":
+ return "min";
+ case "tests.converter.integer.max":
+ return "MAX_Value";
+ // Long
+ case "tests.converter.long.decimal":
+ return "101";
+ case "tests.converter.long.octal":
+ return "02";
+ case "tests.converter.long.hex.lowerX":
+ return "0x2F";
+ case "tests.converter.long.hex.upperX":
+ return "0X3F";
+ case "tests.converter.long.min":
+ return "min";
+ case "tests.converter.long.max":
+ return "MAX_Value";
+ // Short
+ case "tests.converter.short.decimal":
+ return "101";
+ case "tests.converter.short.octal":
+ return "02";
+ case "tests.converter.short.hex.lowerX":
+ return "0x2F";
+ case "tests.converter.short.hex.upperX":
+ return "0X3F";
+ case "tests.converter.short.min":
+ return "min";
+ case "tests.converter.short.max":
+ return "MAX_Value";
+ // BigDecimal
+ case "tests.converter.bd.decimal":
+ return "101";
+ case "tests.converter.bd.float":
+ return "101.36438746";
+ case "tests.converter.bd.big":
+ return "101666666666666662333337263723628763821638923628193612983618293628763";
+ case "tests.converter.bd.bigFloat":
+ return "1016666666666666623333372637236287638216389293628763.101666666666666662333337263723628763821638923628193612983618293628763";
+ case "tests.converter.bd.hex.lowerX":
+ return "0x2F";
+ case "tests.converter.bd.hex.upperX":
+ return "0X3F";
+ }
+ return null;
+ }
+
+ @Override
+ public Map<String, String> getProperties() {
+ return Collections.emptyMap();
+ }
+
+ @Override
+ public boolean isScannable() {
+ return false;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/eadbfe97/code/core/src/test/java/org/apache/tamaya/core/internal/converters/CurrencyConverterTest.java
----------------------------------------------------------------------
diff --git a/code/core/src/test/java/org/apache/tamaya/core/internal/converters/CurrencyConverterTest.java b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/CurrencyConverterTest.java
new file mode 100644
index 0000000..9113ca2
--- /dev/null
+++ b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/CurrencyConverterTest.java
@@ -0,0 +1,154 @@
+/*
+ * 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.converters;
+
+import org.apache.tamaya.Configuration;
+import org.apache.tamaya.ConfigurationProvider;
+import org.junit.Test;
+
+import java.util.Currency;
+
+import static org.junit.Assert.*;
+
+/**
+ * Tests the default converter for bytes.
+ */
+public class CurrencyConverterTest {
+
+ /**
+ * Test conversion. The value are provided by
+ * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+ * @throws Exception
+ */
+ @Test
+ public void testConvert_Currency_Code_CHF() throws Exception {
+ Configuration config = ConfigurationProvider.getConfiguration();
+ Currency valueRead = config.get("tests.converter.currency.code1", Currency.class);
+ assertTrue(valueRead != null);
+ assertEquals(valueRead, Currency.getInstance("CHF"));
+ }
+
+ /**
+ * Test conversion. The value are provided by
+ * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+ * @throws Exception
+ */
+ @Test
+ public void testConvert_Currency_Code_cHf() throws Exception {
+ Configuration config = ConfigurationProvider.getConfiguration();
+ Currency valueRead = config.get("tests.converter.currency.code2", Currency.class);
+ assertTrue(valueRead != null);
+ assertEquals(valueRead, Currency.getInstance("CHF"));
+ }
+
+ /**
+ * Test conversion. The value are provided by
+ * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+ * @throws Exception
+ */
+ @Test
+ public void testConvert_Currency_Code_CHF_Whitespace_Before() throws Exception {
+ Configuration config = ConfigurationProvider.getConfiguration();
+ Currency valueRead = config.get("tests.converter.currency.code3", Currency.class);
+ assertTrue(valueRead != null);
+ assertEquals(valueRead, Currency.getInstance("CHF"));
+ }
+
+ /**
+ * Test conversion. The value are provided by
+ * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+ * @throws Exception
+ */
+ @Test
+ public void testConvert_Currency_Code_CHF_Whitespace_After() throws Exception {
+ Configuration config = ConfigurationProvider.getConfiguration();
+ Currency valueRead = config.get("tests.converter.currency.code4", Currency.class);
+ assertTrue(valueRead != null);
+ assertEquals(valueRead, Currency.getInstance("CHF"));
+ }
+
+ /**
+ * Test conversion. The value are provided by
+ * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+ * @throws Exception
+ */
+ @Test
+ public void testConvert_Currency_Code_CHF_Whitespace_Around() throws Exception {
+ Configuration config = ConfigurationProvider.getConfiguration();
+ Currency valueRead = config.get("tests.converter.currency.code5", Currency.class);
+ assertTrue(valueRead != null);
+ assertEquals(valueRead, Currency.getInstance("CHF"));
+ }
+
+ /**
+ * Test conversion. The value are provided by
+ * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+ * @throws Exception
+ */
+ @Test
+ public void testConvert_Currency_Code_Numeric() throws Exception {
+ Configuration config = ConfigurationProvider.getConfiguration();
+ Currency valueRead = config.get("tests.converter.currency.code-numeric1", Currency.class);
+ assertTrue(valueRead != null);
+ assertEquals(valueRead.getNumericCode(), Currency.getInstance("BGL").getNumericCode());
+ valueRead = config.get("tests.converter.currency.code-numeric2", Currency.class);
+ assertTrue(valueRead != null);
+ assertEquals(valueRead.getNumericCode(), Currency.getInstance("BGL").getNumericCode());
+ valueRead = config.get("tests.converter.currency.code-numeric3", Currency.class);
+ assertTrue(valueRead != null);
+ assertEquals(valueRead.getNumericCode(), Currency.getInstance("BGL").getNumericCode());
+ valueRead = config.get("tests.converter.currency.code-numeric4", Currency.class);
+ assertTrue(valueRead != null);
+ assertEquals(valueRead.getNumericCode(), Currency.getInstance("BGL").getNumericCode());
+ }
+
+ /**
+ * Test conversion. The value are provided by
+ * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+ * @throws Exception
+ */
+ @Test
+ public void testConvert_Currency_Code_Locale() throws Exception {
+ Configuration config = ConfigurationProvider.getConfiguration();
+ Currency valueRead = config.get("tests.converter.currency.code-locale1", Currency.class);
+ assertTrue(valueRead != null);
+ assertEquals(valueRead.getCurrencyCode(), "EUR");
+ valueRead = config.get("tests.converter.currency.code-locale2", Currency.class);
+ assertTrue(valueRead != null);
+ assertEquals(valueRead.getCurrencyCode(), "EUR");
+ valueRead = config.get("tests.converter.currency.code-locale3", Currency.class);
+ assertTrue(valueRead != null);
+ assertEquals(valueRead.getCurrencyCode(), "EUR");
+ valueRead = config.get("tests.converter.currency.code-locale4", Currency.class);
+ assertTrue(valueRead != null);
+ assertEquals(valueRead.getCurrencyCode(), "EUR");
+ }
+
+ /**
+ * Test conversion. The value are provided by
+ * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+ * @throws Exception
+ */
+ @Test
+ public void testConvert_NotPresent() throws Exception {
+ Configuration config = ConfigurationProvider.getConfiguration();
+ Byte valueRead = config.get("tests.converter.byte.foo", Byte.class);
+ assertFalse(valueRead!=null);
+ }
+}
\ No newline at end of file