You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tamaya.apache.org by an...@apache.org on 2017/11/14 09:25:47 UTC
[06/12] incubator-tamaya git commit: TAMAYA-318 Moved spi-support as
API base implementation package to remove code duplicates.
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/7917a9f3/code/core/src/main/java/org/apache/tamaya/core/internal/converters/ConvertQuery.java
----------------------------------------------------------------------
diff --git a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/ConvertQuery.java b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/ConvertQuery.java
new file mode 100644
index 0000000..6fb31c6
--- /dev/null
+++ b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/ConvertQuery.java
@@ -0,0 +1,68 @@
+/*
+ * 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.ConfigQuery;
+import org.apache.tamaya.Configuration;
+import org.apache.tamaya.TypeLiteral;
+import org.apache.tamaya.spi.ConversionContext;
+import org.apache.tamaya.spi.PropertyConverter;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Query to convert a String value.
+ * @param <T> the target type.
+ */
+final class ConvertQuery<T> implements ConfigQuery<T> {
+
+ private static final Logger LOG = Logger.getLogger(ConvertQuery.class.getName());
+
+ 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 OptionalConverter){
+ 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/blob/7917a9f3/code/core/src/main/java/org/apache/tamaya/core/internal/converters/EnumConverter.java
----------------------------------------------------------------------
diff --git a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/EnumConverter.java b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/EnumConverter.java
deleted file mode 100644
index f66e638..0000000
--- a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/EnumConverter.java
+++ /dev/null
@@ -1,83 +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.core.internal.converters;
-
-import org.apache.tamaya.ConfigException;
-import org.apache.tamaya.spi.ConversionContext;
-import org.apache.tamaya.spi.PropertyConverter;
-import org.osgi.service.component.annotations.Component;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Locale;
-import java.util.Objects;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-/**
- * Converter, converting from String to tge given enum type.
- */
-@Component(service = PropertyConverter.class)
-public class EnumConverter<T> implements PropertyConverter<T> {
- private final Logger LOG = Logger.getLogger(EnumConverter.class.getName());
- private Class<T> enumType;
- private Method factory;
-
- public EnumConverter(Class<T> enumType) {
- if (!Enum.class.isAssignableFrom(enumType)) {
- throw new IllegalArgumentException("Not an Enum: " + enumType.getName());
- }
- this.enumType = Objects.requireNonNull(enumType);
- try {
- this.factory = enumType.getMethod("valueOf", String.class);
- } catch (NoSuchMethodException e) {
- throw new ConfigException("Uncovertible enum type without valueOf method found, please provide a custom " +
- "PropertyConverter for: " + enumType.getName());
- }
- }
-
- @Override
- public T convert(String value, ConversionContext context) {
- context.addSupportedFormats(getClass(),"<enumValue>");
- try {
- return (T) factory.invoke(null, value);
- } catch (InvocationTargetException | IllegalAccessException e) {
- LOG.log(Level.FINEST, "Invalid enum value '" + value + "' for " + enumType.getName(), e);
- }
- try {
- return (T) factory.invoke(null, value.toUpperCase(Locale.ENGLISH));
- } catch (InvocationTargetException | IllegalAccessException e) {
- LOG.log(Level.FINEST, "Invalid enum value '" + value + "' for " + enumType.getName(), e);
- }
- return null;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (!(o instanceof EnumConverter)) return false;
- EnumConverter<?> that = (EnumConverter<?>) o;
- return Objects.equals(enumType, that.enumType);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(enumType);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/7917a9f3/code/core/src/main/java/org/apache/tamaya/core/internal/converters/FileConverter.java
----------------------------------------------------------------------
diff --git a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/FileConverter.java b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/FileConverter.java
index 0901c9f..e9891be 100644
--- a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/FileConverter.java
+++ b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/FileConverter.java
@@ -23,7 +23,6 @@ import org.apache.tamaya.spi.PropertyConverter;
import org.osgi.service.component.annotations.Component;
import java.io.File;
-import java.net.URL;
import java.util.Objects;
import java.util.logging.Level;
import java.util.logging.Logger;
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/7917a9f3/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OffsetDateTimeConverter.java
----------------------------------------------------------------------
diff --git a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OffsetDateTimeConverter.java b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OffsetDateTimeConverter.java
index 9486640..062d584 100644
--- a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OffsetDateTimeConverter.java
+++ b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OffsetDateTimeConverter.java
@@ -22,7 +22,6 @@ import org.apache.tamaya.spi.ConversionContext;
import org.apache.tamaya.spi.PropertyConverter;
import org.osgi.service.component.annotations.Component;
-import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.logging.Level;
import java.util.logging.Logger;
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/7917a9f3/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OffsetTimeConverter.java
----------------------------------------------------------------------
diff --git a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OffsetTimeConverter.java b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OffsetTimeConverter.java
index ce8ebed..794ad8a 100644
--- a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OffsetTimeConverter.java
+++ b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OffsetTimeConverter.java
@@ -22,7 +22,6 @@ import org.apache.tamaya.spi.ConversionContext;
import org.apache.tamaya.spi.PropertyConverter;
import org.osgi.service.component.annotations.Component;
-import java.time.OffsetDateTime;
import java.time.OffsetTime;
import java.util.logging.Level;
import java.util.logging.Logger;
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/7917a9f3/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OptionalConverter.java
----------------------------------------------------------------------
diff --git a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OptionalConverter.java b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OptionalConverter.java
index 8be1533..dc53c84 100644
--- a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OptionalConverter.java
+++ b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OptionalConverter.java
@@ -19,22 +19,14 @@
package org.apache.tamaya.core.internal.converters;
import org.apache.tamaya.ConfigException;
-import org.apache.tamaya.ConfigQuery;
-import org.apache.tamaya.Configuration;
import org.apache.tamaya.TypeLiteral;
-import org.apache.tamaya.core.internal.PropertyConverterManager;
import org.apache.tamaya.spi.ConversionContext;
import org.apache.tamaya.spi.PropertyConverter;
import org.osgi.service.component.annotations.Component;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
import java.util.Optional;
-import java.util.logging.Level;
-import java.util.logging.Logger;
/**
* Converter, converting from String to Boolean.
@@ -42,8 +34,6 @@ import java.util.logging.Logger;
@Component(service = PropertyConverter.class)
public class OptionalConverter implements PropertyConverter<Optional> {
- private static final Logger LOG = Logger.getLogger(OptionalConverter.class.getName());
-
@Override
public Optional convert(String value, ConversionContext context) {
if(value==null){
@@ -72,36 +62,4 @@ public class OptionalConverter implements PropertyConverter<Optional> {
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 OptionalConverter){
- 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/blob/7917a9f3/code/core/src/main/java/org/apache/tamaya/core/internal/converters/PathConverter.java
----------------------------------------------------------------------
diff --git a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/PathConverter.java b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/PathConverter.java
index e59c0b9..404daee 100644
--- a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/PathConverter.java
+++ b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/PathConverter.java
@@ -22,11 +22,8 @@ import org.apache.tamaya.spi.ConversionContext;
import org.apache.tamaya.spi.PropertyConverter;
import org.osgi.service.component.annotations.Component;
-import java.io.File;
-import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Path;
-import java.nio.file.Paths;
import java.util.Objects;
import java.util.logging.Level;
import java.util.logging.Logger;
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/7917a9f3/code/core/src/main/java/org/apache/tamaya/core/internal/converters/SupplierConverter.java
----------------------------------------------------------------------
diff --git a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/SupplierConverter.java b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/SupplierConverter.java
new file mode 100644
index 0000000..05aa3d5
--- /dev/null
+++ b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/SupplierConverter.java
@@ -0,0 +1,71 @@
+/*
+ * 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.ConfigException;
+import org.apache.tamaya.TypeLiteral;
+import org.apache.tamaya.spi.ConversionContext;
+import org.apache.tamaya.spi.PropertyConverter;
+import org.osgi.service.component.annotations.Component;
+
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.function.Supplier;
+import java.util.logging.Logger;
+
+/**
+ * Converter, converting from String to Boolean.
+ */
+@Component(service = PropertyConverter.class)
+public class SupplierConverter implements PropertyConverter<Supplier> {
+
+ private static final Logger LOG = Logger.getLogger(SupplierConverter.class.getName());
+
+ @Override
+ public Supplier convert(String value, ConversionContext context) {
+ return () -> {
+ try{
+ Type targetType = context.getTargetType().getType();
+ ParameterizedType pt = (ParameterizedType) targetType;
+ if(String.class.equals(pt.getActualTypeArguments()[0])){
+ return value;
+ }
+ ConvertQuery converter = new ConvertQuery(value, TypeLiteral.of(pt.getActualTypeArguments()[0]));
+ Object o = context.getConfiguration().query(converter);
+ if(o==null){
+ throw new ConfigException("No such value: " + context.getKey());
+ }
+ return o;
+ }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();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/7917a9f3/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
deleted file mode 100644
index 316dd59..0000000
--- a/code/core/src/main/java/org/apache/tamaya/core/propertysource/BasePropertySource.java
+++ /dev/null
@@ -1,162 +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.core.propertysource;
-
-import org.apache.tamaya.spi.PropertySource;
-import org.apache.tamaya.spi.PropertyValue;
-
-import java.util.Map;
-import java.util.Objects;
-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 int defaultOrdinal;
- /** Used if the ordinal has been set explicitly. */
- private volatile Integer ordinal;
- /** The name of the property source. */
- private String name;
-
- /**
- * Constructor.
- * @param name the (unique) property source name, not {@code null}.
- */
- protected BasePropertySource(String name){
- this.name = Objects.requireNonNull(name);
- this.defaultOrdinal = 0;
- }
-
- /**
- * Constructor.
- * @param defaultOrdinal default ordinal that will be used, if no ordinal is provided with the config.
- */
- protected BasePropertySource(int defaultOrdinal){
- this.name = getClass().getSimpleName();
- this.defaultOrdinal = defaultOrdinal;
- }
-
- /**
- * Constructor.
- * @param name the (unique) property source name, not {@code null}.
- * @param defaultOrdinal default ordinal that will be used, if no ordinal is provided with the config.
- */
- protected BasePropertySource(String name, int defaultOrdinal){
- this.name = Objects.requireNonNull(name);
- this.defaultOrdinal = defaultOrdinal;
- }
-
-
- /**
- * Constructor, using a default ordinal of 0.
- */
- protected BasePropertySource(){
- this(0);
- }
-
- @Override
- public String getName() {
- return name;
- }
-
- /**
- * Sets the property source's (unique) name.
- * @param name the name, not {@code null}.
- */
- public void setName(String name){
- this.name = Objects.requireNonNull(name);
- }
-
- /**
- * Allows to set the ordinal of this property source explcitly. This will override any evaluated
- * ordinal, or default ordinal. To reset an explcit ordinal call {@code setOrdinal(null);}.
- * @param ordinal the explicit ordinal, or {@code null}.
- */
- public void setOrdinal(Integer ordinal){
- this.ordinal = ordinal;
- }
-
- /**
- * Allows to set the ordinal of this property source explcitly. This will override any evaluated
- * ordinal, or default ordinal. To reset an explcit ordinal call {@code setOrdinal(null);}.
- * @param defaultOrdinal the default ordinal, or {@code null}.
- */
- public void setDefaultOrdinal(Integer defaultOrdinal){
- this.defaultOrdinal = defaultOrdinal;
- }
-
- public int getOrdinal() {
- Integer ordinal = this.ordinal;
- if(ordinal!=null){
- Logger.getLogger(getClass().getName()).finest(
- "Using explicit ordinal '"+ordinal+"' for property source: " + getName());
- return ordinal;
- }
- PropertyValue configuredOrdinal = get(TAMAYA_ORDINAL);
- if(configuredOrdinal!=null){
- try {
- return Integer.parseInt(configuredOrdinal.getValue());
- } 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 PropertyValue get(String key) {
- Map<String,PropertyValue> properties = getProperties();
- PropertyValue val = properties.get(key);
- if(val==null){
- return null;
- }
- return val;
- }
-
- @Override
- public boolean isScannable(){
- return true;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (!(o instanceof BasePropertySource)) return false;
- BasePropertySource that = (BasePropertySource) o;
- return Objects.equals(getName(), that.getName());
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(getName());
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/7917a9f3/code/core/src/main/java/org/apache/tamaya/core/propertysource/CLIPropertySource.java
----------------------------------------------------------------------
diff --git a/code/core/src/main/java/org/apache/tamaya/core/propertysource/CLIPropertySource.java b/code/core/src/main/java/org/apache/tamaya/core/propertysource/CLIPropertySource.java
deleted file mode 100644
index 276cc94..0000000
--- a/code/core/src/main/java/org/apache/tamaya/core/propertysource/CLIPropertySource.java
+++ /dev/null
@@ -1,131 +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.core.propertysource;
-
-import org.apache.tamaya.spi.PropertySource;
-import org.apache.tamaya.spi.PropertyValue;
-import org.osgi.service.component.annotations.Component;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
-
-/**
- * PropertySource that allows to add the programs main arguments as configuration entries. Unix syntax using '--' and
- * '-' params is supported.
- */
-@Component(service = PropertySource.class)
-public class CLIPropertySource extends BasePropertySource{
-
- /** The original main arguments. */
- private static String[] args = new String[0];
-
- /** The map of parsed main arguments. */
- private static Map<String,PropertyValue> mainArgs;
-
- /* Initializes the initial state. */
- static {
- initMainArgs(args);
- }
-
- /**
- * Creates a new instance.
- */
- public CLIPropertySource(){
- this(null);
- }
-
- /**
- * Creates a new instance, allows optionally to pass the main arguments.
- * @param args the args, or null.
- */
- public CLIPropertySource(String... args){
- if(args!=null){
- initMainArgs(args);
- }
- }
-
- /**
- * Creates a new instance, allows optionally to pass the main arguments.
- * @param args the args, or null.
- * @param ordinal the ordinal to be applied.
- */
- public CLIPropertySource(int ordinal, String... args){
- if(args!=null){
- initMainArgs(args);
- }
- setOrdinal(ordinal);
- }
-
-
-
- /**
- * Configure the main arguments, hereby parsing and mapping the main arguments into
- * configuration propertiesi as key-value pairs.
- * @param args the main arguments, not {@code null}.
- */
- public static void initMainArgs(String... args){
- CLIPropertySource.args = Objects.requireNonNull(args);
- // TODO is there a way to figure out the args?
- String argsProp = System.getProperty("main.args");
- if(argsProp!=null){
- CLIPropertySource.args = argsProp.split("\\s");
- }
- Map<String,PropertyValue> result;
- if(CLIPropertySource.args==null){
- result = Collections.emptyMap();
- }else{
- result = new HashMap<>();
- String prefix = System.getProperty("main.args.prefix");
- if(prefix==null){
- prefix="";
- }
- String key = null;
- for(String arg:CLIPropertySource.args){
- if(arg.startsWith("--")){
- arg = arg.substring(2);
- int index = arg.indexOf("=");
- if(index>0){
- key = arg.substring(0,index).trim();
- result.put(prefix+key, PropertyValue.of(key, arg.substring(index+1).trim(), "main-args"));
- key = null;
- }else{
- result.put(prefix+arg, PropertyValue.of(prefix+arg, arg, "main-args"));
- }
- }else if(arg.startsWith("-")){
- key = arg.substring(1);
- }else{
- if(key!=null){
- result.put(prefix+key, PropertyValue.of(prefix+key, arg, "main-args"));
- key = null;
- }else{
- result.put(prefix+arg, PropertyValue.of(prefix+arg, arg, "main-args"));
- }
- }
- }
- }
- CLIPropertySource.mainArgs = Collections.unmodifiableMap(result);
- }
-
- @Override
- public Map<String, PropertyValue> getProperties() {
- return Collections.unmodifiableMap(mainArgs);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/7917a9f3/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
deleted file mode 100644
index 0ba4cd4..0000000
--- a/code/core/src/main/java/org/apache/tamaya/core/propertysource/EnvironmentPropertySource.java
+++ /dev/null
@@ -1,293 +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.core.propertysource;
-
-import org.apache.tamaya.spi.PropertySource;
-import org.apache.tamaya.spi.PropertyValue;
-import org.osgi.service.component.annotations.Component;
-
-import java.util.*;
-
-/**
- * <p>{@link PropertySource} to access environment variables via Tamaya
- * which are set via {@code export VARIABLE=value} on UNIX systems or
- * {@code set VARIABLE=value} on Windows systems.</p>
- *
- * <p>Using the {@linkplain EnvironmentPropertySource} without any
- * additional configuration gives access to all existing environment
- * variables available to the Java process Tamaya is running in.</p>
- *
- * <h1>Simple usage example</h1>
- *
- * <pre>
- * $ export OPS_MODE=production
- * $ export COLOR=false
- * $ java -jar application.jar
- * </pre>
- *
- * <p>To access {@code OPS_MODE} and {@code COLOR} with the following code
- * fragment could be used:</p>
- *
- * <pre>
- * PropertySource ps = new EnvironmentPropertySource();
- * PropertyValue opsMode = ps.get("OPS_MODE");
- * PropertyValue color = ps.get("COLOR");
- * </pre>
- *
- * <h1>Application specific environmet variables with prefix</h1>
- *
- * <p>Given the case where to instances of the same application are running on
- * a single machine but need different values for the environment variable
- * {@code CUSTOMER}. The {@linkplain EnvironmentPropertySource} allows you
- * to prefix the environment variable with an application specific prefix
- * and to access it by the non-prefixed variable name.</p>
- *
- * <pre>
- * $ export CUSTOMER=none
- * $ export a81.CUSTOMER=moon
- * $ export b78.CUSTOMER=luna
- * </pre>
- *
- * <p>Given an environment with these tree variables the application running
- * for the customer called Moon could be started with the following command:</p>
- *
- * <pre>
- * $ java -Dtamaya.envprops.prefix=a81 -jar application.jar
- * </pre>
- *
- * <p>The application specific value can now be accessed from the code of the
- * application like this:</p>
- *
- * <pre>
- * PropertySource ps = new EnvironmentPropertySource();
- * PropertyValue pv = ps.get("CUSTOMER");
- * System.out.println(pv.getValue());
- * </pre>
- *
- * <p>The output of application would be {@code moon}.</p>
- *
- * <h1>Disabling the access to environment variables</h1>
- *
- * <p>The access to environment variables could be simply
- * disabled by the setting the systemproperty {@code tamaya.envprops.disable}
- * or {@code tamaya.defaults.disable} to {@code true}.</p>
- */
-@Component(service = PropertySource.class)
-public class EnvironmentPropertySource extends BasePropertySource {
- private static final String TAMAYA_ENVPROPS_PREFIX = "tamaya.envprops.prefix";
- private static final String TAMAYA_ENVPROPS_DISABLE = "tamaya.envprops.disable";
- private static final String TAMAYA_DEFAULT_DISABLE = "tamaya.defaults.disable";
-
- /**
- * Default ordinal for {@link org.apache.tamaya.core.propertysource.EnvironmentPropertySource}
- */
- public static final int DEFAULT_ORDINAL = 300;
-
- /**
- * Prefix that allows environment properties to virtually be mapped on specified sub section.
- */
- private String prefix;
-
- /**
- * If true, this property source does not return any properties. This is useful since this
- * property source is applied by default, but can be switched off by setting the
- * {@code tamaya.envprops.disable} system/environment property to {@code true}.
- */
- private boolean disabled = false;
-
- private SystemPropertiesProvider propertiesProvider = new SystemPropertiesProvider();
-
- /**
- * Creates a new instance. Also initializes the {@code prefix} and {@code disabled} properties
- * from the system-/ environment properties:
- * <pre>
- * tamaya.envprops.prefix
- * tamaya.envprops.disable
- * </pre>
- */
- public EnvironmentPropertySource(){
- initFromSystemProperties();
- }
-
- /**
- * Initializes the {@code prefix} and {@code disabled} properties from the system-/
- * environment properties:
- * <pre>
- * tamaya.envprops.prefix
- * tamaya.envprops.disable
- * </pre>
- */
- private void initFromSystemProperties() {
- String temp = getPropertiesProvider().getEnvPropsPrefix();
-
- if (temp != null) {
- prefix = temp;
- }
-
- temp = getPropertiesProvider().getEnvPropsDisable();
-
- if (temp != null) {
- this.disabled = Boolean.parseBoolean(temp);
- }
-
- temp = getPropertiesProvider().getDefaultsDisable();
-
- if (temp != null) {
- disabled |= Boolean.parseBoolean(temp);
- }
- }
-
- /**
- * Creates a new instance using a fixed ordinal value.
- * @param ordinal the ordinal number.
- */
- public EnvironmentPropertySource(int ordinal){
- this(null, ordinal);
- }
-
- /**
- * Creates a new instance.
- * @param prefix the prefix to be used, or null.
- * @param ordinal the ordinal to be used.
- */
- public EnvironmentPropertySource(String prefix, int ordinal){
- this.prefix = prefix;
- setOrdinal(ordinal);
- }
-
- /**
- * Creates a new instance.
- * @param prefix the prefix to be used, or null.
- */
- public EnvironmentPropertySource(String prefix){
- this.prefix = prefix;
- }
-
- @Override
- public int getDefaultOrdinal() {
- return DEFAULT_ORDINAL;
- }
-
- @Override
- public String getName() {
- if (isDisabled()) {
- return "environment-properties(disabled)";
- }
- return "environment-properties";
- }
-
- @Override
- public PropertyValue get(String key) {
- if (isDisabled()) {
- return null;
- }
-
- String effectiveKey = hasPrefix() ? getPrefix() + "." + key
- : key;
-
- String value = getPropertiesProvider().getenv(effectiveKey);
-
- return PropertyValue.of(key, value, getName());
- }
-
- private boolean hasPrefix() {
- return null != prefix;
- }
-
- @Override
- public Map<String, PropertyValue> getProperties() {
- if (isDisabled()) {
- return Collections.emptyMap();
- }
-
- String effectivePrefix = getPrefix() + ".";
- int effectivePrefixLength = hasPrefix() ? getPrefix().length() + 1
- : 0;
- Map<String, String> envProps = getPropertiesProvider().getenv();
-
- Map<String, PropertyValue> values = new HashMap<>();
-
- for (Map.Entry<String, String> entry : envProps.entrySet()) {
- if (hasPrefix()) {
- if (entry.getKey().startsWith(effectivePrefix)) {
-
- String choppedKey = entry.getKey().substring(effectivePrefixLength);
- String value = entry.getValue();
- values.put(choppedKey, PropertyValue.of(choppedKey, value, getName()));
- }
- } else {
- values.put(entry.getKey(), PropertyValue.of(entry.getKey(), entry.getValue(), getName()));
- }
- }
-
- return values;
- }
-
- @Override
- public boolean isScannable() {
- return true;
- }
-
- void setPropertiesProvider(SystemPropertiesProvider spp) {
- propertiesProvider = spp;
- initFromSystemProperties();
- }
-
- SystemPropertiesProvider getPropertiesProvider() {
- return propertiesProvider;
- }
-
- public String getPrefix() {
- return prefix;
- }
-
- public boolean isDisabled() {
- return disabled;
- }
-
- /**
- * <p>Provides access to the system properties used to configure
- * {@linkplain EnvironmentPropertySource}.</p>
- *
- * <p>This implementation delegates all property lookups
- * to {@linkplain System#getProperty(String)}.</p>
- */
- static class SystemPropertiesProvider {
- String getEnvPropsPrefix() {
- return System.getenv(TAMAYA_ENVPROPS_PREFIX);
- }
-
- String getEnvPropsDisable() {
- return System.getenv(TAMAYA_ENVPROPS_DISABLE);
- }
-
- String getDefaultsDisable() {
- return System.getenv(TAMAYA_DEFAULT_DISABLE);
- }
-
- String getenv(String name) {
- return System.getenv(name);
- }
-
- Map<String, String> getenv() {
- return System.getenv();
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/7917a9f3/code/core/src/main/java/org/apache/tamaya/core/propertysource/JavaConfigurationPropertySource.java
----------------------------------------------------------------------
diff --git a/code/core/src/main/java/org/apache/tamaya/core/propertysource/JavaConfigurationPropertySource.java b/code/core/src/main/java/org/apache/tamaya/core/propertysource/JavaConfigurationPropertySource.java
deleted file mode 100644
index 1518fc0..0000000
--- a/code/core/src/main/java/org/apache/tamaya/core/propertysource/JavaConfigurationPropertySource.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tamaya.core.propertysource;
-
-import org.apache.tamaya.ConfigException;
-import org.apache.tamaya.core.internal.PropertySourceComparator;
-import org.apache.tamaya.spi.PropertySource;
-import org.apache.tamaya.spi.PropertyValue;
-import org.apache.tamaya.spi.ServiceContextManager;
-import org.osgi.service.component.annotations.Component;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.*;
-
-import static java.lang.String.format;
-import static java.lang.Thread.currentThread;
-
-/**
- * Provider which reads all {@value DEFAULT_SIMPLE_PROPERTIES_FILE_NAME} and
- * {@value DEFAULT_XML_PROPERTIES_FILE_NAME} files found in the
- * classpath. By setting
- * {@code tamaya.defaultprops.disable} or {@code tamaya.defaults.disable}
- * as system or environment property this feature can be disabled.
- */
-@Component(service = PropertySource.class)
-public class JavaConfigurationPropertySource extends BasePropertySource {
- /**
- * Default location in the classpath, where Tamaya looks for simple line based configuration by default.
- */
- public static final String DEFAULT_SIMPLE_PROPERTIES_FILE_NAME="META-INF/javaconfiguration.properties";
-
- /**
- * Default location in the classpath, where Tamaya looks for XML based configuration by default.
- */
- public static final String DEFAULT_XML_PROPERTIES_FILE_NAME = "META-INF/javaconfiguration.xml";
-
- private static final int DEFAULT_ORDINAL = 900;
-
- private boolean enabled = evaluateEnabled();
-
- public JavaConfigurationPropertySource(){
- super("resource:META-INF/javaconfiguration.*", DEFAULT_ORDINAL);
- }
-
- private boolean evaluateEnabled() {
- String value = System.getProperty("tamaya.defaultprops.disable");
- if(value==null){
- value = System.getenv("tamaya.defaultprops.disable");
- }
- if(value==null){
- value = System.getProperty("tamaya.defaults.disable");
- }
- if(value==null){
- value = System.getenv("tamaya.defaults.disable");
- }
- if(value==null){
- return true;
- }
- return value.isEmpty() || !Boolean.parseBoolean(value);
- }
-
- private List<PropertySource> getPropertySources() {
- List<PropertySource> propertySources = new ArrayList<>();
- propertySources.addAll(loadPropertySourcesByName(DEFAULT_SIMPLE_PROPERTIES_FILE_NAME));
- propertySources.addAll(loadPropertySourcesByName(DEFAULT_XML_PROPERTIES_FILE_NAME));
- Collections.sort(propertySources, PropertySourceComparator.getInstance());
- return propertySources;
- }
-
- private Collection<? extends PropertySource> loadPropertySourcesByName(String filename) {
- List<PropertySource> propertySources = new ArrayList<>();
- Enumeration<URL> propertyLocations;
- try {
- propertyLocations = ServiceContextManager.getServiceContext()
- .getResources(filename, currentThread().getContextClassLoader());
- } catch (IOException e) {
- String msg = format("Error while searching for %s", filename);
-
- throw new ConfigException(msg, e);
- }
-
- while (propertyLocations.hasMoreElements()) {
- URL currentUrl = propertyLocations.nextElement();
- SimplePropertySource sps = new SimplePropertySource(currentUrl);
-
- propertySources.add(sps);
- }
-
- return propertySources;
- }
-
- public boolean isEnabled() {
- return enabled;
- }
-
- public void setEnabled(boolean enabled){
- this.enabled = enabled;
- }
-
-
- @Override
- public Map<String, PropertyValue> getProperties() {
- if (!isEnabled()) {
- return Collections.emptyMap();
- }
- Map<String,PropertyValue> result = new HashMap<>();
- for(PropertySource ps:getPropertySources()){
- result.putAll(ps.getProperties());
- }
- return result;
- }
-
- @Override
- public String toString() {
- return "JavaConfigurationPropertySource{" +
- "enabled=" + enabled +
- '}';
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/7917a9f3/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
deleted file mode 100644
index 6046e0c..0000000
--- a/code/core/src/main/java/org/apache/tamaya/core/propertysource/SimplePropertySource.java
+++ /dev/null
@@ -1,140 +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.core.propertysource;
-
-import org.apache.tamaya.ConfigException;
-import org.apache.tamaya.spi.PropertyValue;
-
-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;
-import java.util.logging.Logger;
-
-/**
- * Simple implementation of a {@link org.apache.tamaya.spi.PropertySource} for
- * simple property files and XML property files.
- */
-public class SimplePropertySource extends BasePropertySource {
-
- private static final Logger LOG = Logger.getLogger(SimplePropertySource.class.getName());
-
- /**
- * The current properties.
- */
- private Map<String, PropertyValue> properties = new HashMap<>();
-
- /**
- * Creates a new Properties based PropertySource based on the given URL.
- *
- * @param propertiesLocation the URL encoded location, not {@code null}.
- */
- public SimplePropertySource(File propertiesLocation) {
- super(0);
- try {
- setName(propertiesLocation.toString());
- this.properties = load(propertiesLocation.toURI().toURL());
- } 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 {@code null}.
- */
- public SimplePropertySource(URL propertiesLocation) {
- super(0);
- this.properties = load(Objects.requireNonNull(propertiesLocation));
- setName(propertiesLocation.toString());
- }
-
- /**
- * Creates a new Properties based PropertySource based on the given properties map.
- *
- * @param name the name, not {@code null}.
- * @param properties the properties, not {@code null}.
- */
- public SimplePropertySource(String name, Map<String, String> properties) {
- super(0);
- setName(Objects.requireNonNull(name));
- for(Map.Entry<String,String> en:properties.entrySet()){
- this.properties.put(en.getKey(), PropertyValue.of(en.getKey(), en.getValue(), 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 {@code null}.
- */
- public SimplePropertySource(String name, URL propertiesLocation) {
- super(0);
- this.properties = load(propertiesLocation);
- setName(name);
- }
-
- @Override
- public Map<String, PropertyValue> 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, PropertyValue> load(URL propertiesFile) {
- setName(propertiesFile.toString());
- boolean isXML = isXMLPropertieFiles(propertiesFile);
-
- Map<String, PropertyValue> properties = new HashMap<>();
- try (InputStream stream = propertiesFile.openStream()) {
- Properties props = new Properties();
- if (stream != null) {
- if (isXML) {
- props.loadFromXML(stream);
- } else {
- props.load(stream);
- }
- }
-
- for (String key : props.stringPropertyNames()) {
- properties.put(key, PropertyValue.of(key, props.getProperty(key), getName()));
- }
- } catch (IOException e) {
- throw new ConfigException("Error loading properties from " + propertiesFile, e);
- }
-
- return properties;
- }
-
- private boolean isXMLPropertieFiles(URL url) {
- return url.getFile().endsWith(".xml");
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/7917a9f3/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
deleted file mode 100644
index b4ded3a..0000000
--- a/code/core/src/main/java/org/apache/tamaya/core/propertysource/SystemPropertySource.java
+++ /dev/null
@@ -1,190 +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.core.propertysource;
-
-import org.apache.tamaya.spi.PropertySource;
-import org.apache.tamaya.spi.PropertyValue;
-import org.osgi.service.component.annotations.Component;
-
-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. You can disable this feature by
- * setting {@code tamaya.envprops.disable} or {@code tamaya.defaults.disable}.
- */
-@Component(service = PropertySource.class)
-public class SystemPropertySource extends BasePropertySource {
-
- /**
- * default ordinal for {@link org.apache.tamaya.core.propertysource.SystemPropertySource}
- */
- public static final int DEFAULT_ORDINAL = 1000;
-
- private volatile Map<String, PropertyValue> cachedProperties;
-
- /**
- * previous System.getProperties().hashCode()
- * so we can check if we need to reload
- */
- private volatile int previousHash;
-
- /**
- * Prefix that allows system properties to virtually be mapped on specified sub section.
- */
- private String prefix;
-
- /**
- * If true, this property source does not return any properties. This is useful since this
- * property source is applied by default, but can be switched off by setting the
- * {@code tamaya.envprops.disable} system/environment property to {@code true}.
- */
- private boolean disabled = false;
-
- /**
- * Creates a new instance. Also initializes the {@code prefix} and {@code disabled} properties
- * from the system-/ environment properties:
- * <pre>
- * tamaya.envprops.prefix
- * tamaya.envprops.disable
- * </pre>
- */
- public SystemPropertySource(){
- initFromSystemProperties();
- if(!disabled){
- cachedProperties = Collections.unmodifiableMap(loadProperties());
- }
- }
-
- /**
- * Initializes the {@code prefix} and {@code disabled} properties from the system-/
- * environment properties:
- * <pre>
- * tamaya.envprops.prefix
- * tamaya.envprops.disable
- * </pre>
- */
- private void initFromSystemProperties() {
- String value = System.getProperty("tamaya.sysprops.prefix");
- if(value==null){
- prefix = System.getenv("tamaya.sysprops.prefix");
- }
- value = System.getProperty("tamaya.sysprops.disable");
- if(value==null){
- value = System.getenv("tamaya.sysprops.disable");
- }
- if(value==null){
- value = System.getProperty("tamaya.defaults.disable");
- }
- if(value==null){
- value = System.getenv("tamaya.defaults.disable");
- }
- if(value!=null && !value.isEmpty()) {
- this.disabled = Boolean.parseBoolean(value);
- }
- }
-
- /**
- * Creates a new instance using a fixed ordinal value.
- * @param ordinal the ordinal number.
- */
- public SystemPropertySource(int ordinal){
- this(null, ordinal);
- }
-
- /**
- * Creates a new instance.
- * @param prefix the prefix to be used, or null.
- * @param ordinal the ordinal to be used.
- */
- public SystemPropertySource(String prefix, int ordinal){
- this.prefix = prefix;
- setOrdinal(ordinal);
- }
-
- /**
- * Creates a new instance.
- * @param prefix the prefix to be used, or null.
- */
- public SystemPropertySource(String prefix){
- this.prefix = prefix;
- }
-
- @Override
- public int getDefaultOrdinal() {
- return DEFAULT_ORDINAL;
- }
-
-
- private Map<String,PropertyValue> loadProperties() {
- Properties sysProps = System.getProperties();
- previousHash = System.getProperties().hashCode();
- final String prefix = this.prefix;
- Map<String,PropertyValue> values = new HashMap<>();
- for (Map.Entry<Object,Object> entry : sysProps.entrySet()) {
- if(prefix==null) {
- values.put(entry.getKey().toString(), PropertyValue.of(entry.getKey().toString(), entry.getValue().toString(), getName()));
- }else {
- values.put(prefix + entry.getKey(), PropertyValue.of(prefix + entry.getKey(), entry.getValue().toString(), getName()));
- }
- }
- return values;
- }
-
- @Override
- public String getName() {
- if(disabled){
- return "system-properties(disabled)";
- }
- return "system-properties";
- }
-
- @Override
- public PropertyValue get(String key) {
- if(disabled){
- return null;
- }
- String prefix = this.prefix;
- if(prefix==null) {
- return PropertyValue.of(key, System.getProperty(key), getName());
- }
- return PropertyValue.of(key, System.getProperty(key.substring(prefix.length())), getName());
- }
-
- @Override
- public Map<String, PropertyValue> getProperties() {
- if(disabled){
- return Collections.emptyMap();
- }
- // 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()) {
- this.cachedProperties = Collections.unmodifiableMap(loadProperties());
- }
- return this.cachedProperties;
- }
-
- @Override
- public boolean isScannable() {
- return true;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/7917a9f3/code/core/src/main/java/org/apache/tamaya/core/propertysource/package-info.java
----------------------------------------------------------------------
diff --git a/code/core/src/main/java/org/apache/tamaya/core/propertysource/package-info.java b/code/core/src/main/java/org/apache/tamaya/core/propertysource/package-info.java
deleted file mode 100644
index 05ed466..0000000
--- a/code/core/src/main/java/org/apache/tamaya/core/propertysource/package-info.java
+++ /dev/null
@@ -1,23 +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.
- */
-
-/**
- * Contains internal implementations artifacts registered as services.
- */
-package org.apache.tamaya.core.propertysource;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/7917a9f3/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
index f934197..396aef1 100644
--- 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
@@ -41,3 +41,4 @@ org.apache.tamaya.core.internal.converters.OffsetDateTimeConverter
org.apache.tamaya.core.internal.converters.OffsetTimeConverter
org.apache.tamaya.core.internal.converters.InstantConverter
org.apache.tamaya.core.internal.converters.OptionalConverter
+org.apache.tamaya.core.internal.converters.SupplierConverter
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/7917a9f3/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
index 56c599c..d1e392d 100644
--- 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
@@ -16,7 +16,7 @@
# specific language governing permissions and limitations
# under the License.
#
-org.apache.tamaya.core.propertysource.EnvironmentPropertySource
-org.apache.tamaya.core.propertysource.SystemPropertySource
-org.apache.tamaya.core.propertysource.CLIPropertySource
-org.apache.tamaya.core.propertysource.JavaConfigurationPropertySource
\ No newline at end of file
+org.apache.tamaya.spisupport.propertysource.EnvironmentPropertySource
+org.apache.tamaya.spisupport.propertysource.SystemPropertySource
+org.apache.tamaya.spisupport.propertysource.CLIPropertySource
+org.apache.tamaya.spisupport.propertysource.JavaConfigurationPropertySource
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/7917a9f3/code/core/src/test/java/org/apache/tamaya/core/ConfigurationContextBuilderTest.java
----------------------------------------------------------------------
diff --git a/code/core/src/test/java/org/apache/tamaya/core/ConfigurationContextBuilderTest.java b/code/core/src/test/java/org/apache/tamaya/core/ConfigurationContextBuilderTest.java
index ddb36e2..2c8f627 100644
--- a/code/core/src/test/java/org/apache/tamaya/core/ConfigurationContextBuilderTest.java
+++ b/code/core/src/test/java/org/apache/tamaya/core/ConfigurationContextBuilderTest.java
@@ -20,8 +20,8 @@ package org.apache.tamaya.core;
import org.apache.tamaya.ConfigurationProvider;
import org.apache.tamaya.TypeLiteral;
-import org.apache.tamaya.core.internal.DefaultConfigurationContextBuilder;
import org.apache.tamaya.spi.*;
+import org.apache.tamaya.core.internal.DefaultConfigurationContextBuilder;
import org.junit.Test;
import java.util.Arrays;
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/7917a9f3/code/core/src/test/java/org/apache/tamaya/core/internal/DefaultConfigurationContextTest.java
----------------------------------------------------------------------
diff --git a/code/core/src/test/java/org/apache/tamaya/core/internal/DefaultConfigurationContextTest.java b/code/core/src/test/java/org/apache/tamaya/core/internal/DefaultConfigurationContextTest.java
index 7c483bb..38412f3 100644
--- a/code/core/src/test/java/org/apache/tamaya/core/internal/DefaultConfigurationContextTest.java
+++ b/code/core/src/test/java/org/apache/tamaya/core/internal/DefaultConfigurationContextTest.java
@@ -22,7 +22,6 @@ import org.apache.tamaya.ConfigurationProvider;
import org.apache.tamaya.TypeLiteral;
import org.apache.tamaya.core.testdata.TestPropertyDefaultSource;
import org.apache.tamaya.spi.*;
-import org.junit.Ignore;
import org.junit.Test;
import static org.junit.Assert.*;
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/7917a9f3/code/core/src/test/java/org/apache/tamaya/core/internal/DefaultConfigurationTest.java
----------------------------------------------------------------------
diff --git a/code/core/src/test/java/org/apache/tamaya/core/internal/DefaultConfigurationTest.java b/code/core/src/test/java/org/apache/tamaya/core/internal/DefaultConfigurationTest.java
deleted file mode 100644
index d45dbbd..0000000
--- a/code/core/src/test/java/org/apache/tamaya/core/internal/DefaultConfigurationTest.java
+++ /dev/null
@@ -1,201 +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.core.internal;
-
-import org.apache.tamaya.TypeLiteral;
-import org.apache.tamaya.spi.*;
-import org.junit.Test;
-
-import java.util.List;
-import java.util.Map;
-
-import static org.junit.Assert.assertEquals;
-
-public class DefaultConfigurationTest {
-
- /**
- * Tests for get(String)
- */
- @Test(expected = NullPointerException.class)
- public void getDoesNotAcceptNull() {
- DefaultConfiguration c = new DefaultConfiguration(new DummyConfigurationContext());
-
- c.get(null);
- }
-
- /**
- * Tests for get(String, Class)
- */
- @SuppressWarnings({ "rawtypes", "unchecked" })
- @Test(expected = NullPointerException.class)
- public void getDoesNotAcceptNullForClassTargetType() {
- DefaultConfiguration c = new DefaultConfiguration(new DummyConfigurationContext());
-
- c.get("a", (Class) null);
- }
-
- /**
- * Tests for get(String, TypeLiteral)
- */
- @Test(expected = NullPointerException.class)
- public void getDoesNotAcceptNullForTypeLiteralTargetType() {
- DefaultConfiguration c = new DefaultConfiguration(new DummyConfigurationContext());
-
- c.get("a", (TypeLiteral<?>)null);
- }
-
- /**
- * Tests for getOrDefault(String, Class, String)
- */
- @Test(expected = NullPointerException.class)
- public void getOrDefaultDoesNotAcceptNullAsKeyForThreeParameterVariant() {
- DefaultConfiguration c = new DefaultConfiguration(new DummyConfigurationContext());
-
- c.getOrDefault(null, String.class, "ok");
- }
-
- @Test(expected = NullPointerException.class)
- public void getOrDefaultDoesNotAcceptNullAsDefaultValueForThreeParameterVariant() {
- DefaultConfiguration c = new DefaultConfiguration(new DummyConfigurationContext());
-
- c.getOrDefault("a", String.class, null);
- }
-
- @SuppressWarnings({ "unchecked", "rawtypes" })
- @Test(expected = NullPointerException.class)
- public void getOrDefaultDoesNotAcceptNullAsTargetTypeForThreeParameterVariant() {
- DefaultConfiguration c = new DefaultConfiguration(new DummyConfigurationContext());
-
- c.getOrDefault("a", (Class)null, "b");
- }
-
- /**
- * Tests for getOrDefault(String, TypeLiteral, String)
- */
- @Test(expected = NullPointerException.class)
- public void getOrDefaultDoesNotAcceptNullAsKeyForThreeParameterVariantSecondIsTypeLiteral() {
- DefaultConfiguration c = new DefaultConfiguration(new DummyConfigurationContext());
-
- c.getOrDefault(null, TypeLiteral.of(String.class), "ok");
- }
-
- @Test(expected = NullPointerException.class)
- public void getOrDefaultDoesNotAcceptNullAsDefaultValueForThreeParameterVariantSecondIsTypeLiteral() {
- DefaultConfiguration c = new DefaultConfiguration(new DummyConfigurationContext());
-
- c.getOrDefault("a", TypeLiteral.of(String.class), null);
- }
-
- @Test(expected = NullPointerException.class)
- public void getOrDefaultDoesNotAcceptNullAsTargetTypeForThreeParameterVariantSecondIsTypeLiteral() {
- DefaultConfiguration c = new DefaultConfiguration(new DummyConfigurationContext());
-
- c.getOrDefault("a", (TypeLiteral<String>) null, "b");
- }
-
- /**
- * Tests for getOrDefault(String, String)
- */
- @Test(expected = NullPointerException.class)
- public void getOrDefaultDoesNotAcceptNullAsKeyForTwoParameterVariantDefaultValueIsSecond() {
- DefaultConfiguration c = new DefaultConfiguration(new DummyConfigurationContext());
-
- c.getOrDefault(null, "ok");
- }
-
- @Test(expected = NullPointerException.class)
- public void getOrDefaultDoesNotAcceptNullAsDefaultValueForTwoParameterVariantDefaultValueIsSecond() {
- DefaultConfiguration c = new DefaultConfiguration(new DummyConfigurationContext());
-
- c.getOrDefault("a", null);
- }
-
- @Test(expected = NullPointerException.class)
- public void with_Null() {
- DefaultConfiguration c = new DefaultConfiguration(new DummyConfigurationContext());
-
- c.with(null);
- }
-
- @Test(expected = NullPointerException.class)
- public void query_Null() {
- DefaultConfiguration c = new DefaultConfiguration(new DummyConfigurationContext());
-
- c.query(null);
- }
-
- @Test
- public void with() {
- DefaultConfiguration c = new DefaultConfiguration(new DummyConfigurationContext());
- assertEquals(c.with(config -> config), c);
- }
-
- @Test
- public void query() {
- DefaultConfiguration c = new DefaultConfiguration(new DummyConfigurationContext());
- assertEquals(c.query(config -> "testQ"), "testQ");
- }
-
- public static class DummyConfigurationContext implements ConfigurationContext {
- @Override
- public void addPropertySources(PropertySource... propertySources) {
- throw new RuntimeException("Method should be never called in this test");
- }
-
- @Override
- public List<PropertySource> getPropertySources() {
- throw new RuntimeException("Method should be never called in this test");
- }
-
- @Override
- public PropertySource getPropertySource(String name) {
- throw new RuntimeException("Method should be never called in this test");
- }
-
- @Override
- public <T> void addPropertyConverter(TypeLiteral<T> type, PropertyConverter<T> propertyConverter) {
- throw new RuntimeException("Method should be never called in this test");
- }
-
- @Override
- public Map<TypeLiteral<?>, List<PropertyConverter<?>>> getPropertyConverters() {
- throw new RuntimeException("Method should be never called in this test");
- }
-
- @Override
- public <T> List<PropertyConverter<T>> getPropertyConverters(TypeLiteral<T> type) {
- throw new RuntimeException("Method should be never called in this test");
- }
-
- @Override
- public List<PropertyFilter> getPropertyFilters() {
- throw new RuntimeException("Method should be never called in this test");
- }
-
- @Override
- public PropertyValueCombinationPolicy getPropertyValueCombinationPolicy() {
- throw new RuntimeException("Method should be never called in this test");
- }
-
- @Override
- public ConfigurationContextBuilder toBuilder() {
- throw new RuntimeException("Method should be never called in this test");
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/7917a9f3/code/core/src/test/java/org/apache/tamaya/core/internal/PriorityServiceComparatorTest.java
----------------------------------------------------------------------
diff --git a/code/core/src/test/java/org/apache/tamaya/core/internal/PriorityServiceComparatorTest.java b/code/core/src/test/java/org/apache/tamaya/core/internal/PriorityServiceComparatorTest.java
deleted file mode 100644
index 1b1425b..0000000
--- a/code/core/src/test/java/org/apache/tamaya/core/internal/PriorityServiceComparatorTest.java
+++ /dev/null
@@ -1,45 +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.core.internal;
-
-import org.apache.tamaya.core.propertysource.SystemPropertySource;
-import org.junit.Test;
-
-import javax.annotation.Priority;
-
-import static org.junit.Assert.*;
-
-/**
- * Created by atsticks on 12.09.16.
- */
-public class PriorityServiceComparatorTest {
-
-
- @Test
- public void compare() throws Exception {
- assertTrue(PriorityServiceComparator.getInstance().compare("a", "b")==0);
- assertTrue(PriorityServiceComparator.getInstance().compare(getClass(), getClass())==0);
- assertTrue(PriorityServiceComparator.getInstance().compare(new A(), new SystemPropertySource())==-1);
- assertTrue(PriorityServiceComparator.getInstance().compare(new SystemPropertySource(), new A())==1);
- }
-
- @Priority(100)
- private static final class A{}
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/7917a9f3/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
deleted file mode 100644
index fd9c766..0000000
--- a/code/core/src/test/java/org/apache/tamaya/core/internal/PropertyConverterManagerTest.java
+++ /dev/null
@@ -1,182 +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.core.internal;
-
-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;
-
-@SuppressWarnings("unchecked")
-public class PropertyConverterManagerTest {
-
- private final 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));
- }
-
- @SuppressWarnings({ "rawtypes" })
- @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((result).getInValue(), equalTo("testDirectConverterMapping"));
- }
-
- @Test
- public void testDirectSuperclassConverterMapping(){
- PropertyConverterManager manager = new PropertyConverterManager(true);
- 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(0));
- manager = new PropertyConverterManager();
- converters = List.class.cast(manager.getPropertyConverters(TypeLiteral.of(B.class)));
- assertThat(converters, hasSize(0));
- manager.initConverters();
- converters = List.class.cast(manager.getPropertyConverters(TypeLiteral.of(B.class)));
- assertThat(converters, hasSize(1));
- }
-
- @Test
- public void testTransitiveSuperclassConverterMapping(){
- PropertyConverterManager manager = new PropertyConverterManager(true);
- 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(true);
- 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(true);
- 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(true);
- 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 final 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/7917a9f3/code/core/src/test/java/org/apache/tamaya/core/internal/PropertyFilterComparatorTest.java
----------------------------------------------------------------------
diff --git a/code/core/src/test/java/org/apache/tamaya/core/internal/PropertyFilterComparatorTest.java b/code/core/src/test/java/org/apache/tamaya/core/internal/PropertyFilterComparatorTest.java
deleted file mode 100644
index 0ad4c8a..0000000
--- a/code/core/src/test/java/org/apache/tamaya/core/internal/PropertyFilterComparatorTest.java
+++ /dev/null
@@ -1,75 +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.core.internal;
-
-import org.apache.tamaya.spi.FilterContext;
-import org.apache.tamaya.spi.PropertyFilter;
-import org.apache.tamaya.spi.PropertyValue;
-import org.junit.Test;
-
-import javax.annotation.Priority;
-
-import java.util.Comparator;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-public class PropertyFilterComparatorTest {
-
- @Test
- public void comparationOfFiltersWithSamePriorityIsCorrect() {
- Comparator<PropertyFilter> comparator = PropertyFilterComparator.getInstance();
-
- int result = comparator.compare(new PropertyFilterA(), new PropertyFilterA());
-
- assertThat(result).isEqualTo(0);
- }
-
- @Test
- public void comparationOfFiltersFirstHigherThenSecondWorksCorrectly() {
- Comparator<PropertyFilter> comparator = PropertyFilterComparator.getInstance();
-
- int result = comparator.compare(new PropertyFilterB(), new PropertyFilterA());
-
- assertThat(result).isGreaterThan(0);
- }
-
- @Test
- public void comparationOfFiltersSecondHigherThenFirstWorksCorrectly() {
- Comparator<PropertyFilter> comparator = PropertyFilterComparator.getInstance();
-
- int result = comparator.compare(new PropertyFilterA(), new PropertyFilterB());
-
- assertThat(result).isLessThan(0);
- }
-
-
- @Priority(1)
- private static class PropertyFilterA implements PropertyFilter {
- public PropertyValue filterProperty(PropertyValue value, FilterContext context) {
- throw new RuntimeException("Not implemented or look at me!");
- }
- }
-
- @Priority(2)
- private static class PropertyFilterB implements PropertyFilter {
- public PropertyValue filterProperty(PropertyValue value, FilterContext context) {
- throw new RuntimeException("Not implemented or look at me!");
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/7917a9f3/code/core/src/test/java/org/apache/tamaya/core/propertysource/BasePropertySourceTest.java
----------------------------------------------------------------------
diff --git a/code/core/src/test/java/org/apache/tamaya/core/propertysource/BasePropertySourceTest.java b/code/core/src/test/java/org/apache/tamaya/core/propertysource/BasePropertySourceTest.java
deleted file mode 100644
index 54f3113..0000000
--- a/code/core/src/test/java/org/apache/tamaya/core/propertysource/BasePropertySourceTest.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tamaya.core.propertysource;
-
-import org.apache.tamaya.core.internal.PropertySourceComparator;
-import org.apache.tamaya.spi.PropertySource;
-import org.apache.tamaya.spi.PropertyValue;
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.util.*;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-public class BasePropertySourceTest {
-
- @Test
- public void isAlwaysScanable() {
- BasePropertySource bs = new BasePropertySource() {
- @Override
- public Map<String, PropertyValue> getProperties() {
- return Collections.emptyMap();
- }
- };
-
- assertThat(bs.isScannable()).isTrue();
- }
-
- @Test
- public void givenOrdinalOverwritesGivenDefaulOrdinal() {
- BasePropertySource bs = new BasePropertySource() {
- @Override
- public Map<String, PropertyValue> getProperties() {
- return Collections.emptyMap();
- }
- };
-
- bs.setDefaultOrdinal(10);
-
- assertThat(bs.getDefaultOrdinal()).isEqualTo(10);
- assertThat(bs.getOrdinal()).isEqualTo(10);
-
- bs.setOrdinal(20);
-
- assertThat(bs.getOrdinal()).isEqualTo(20);
- }
-
- @Test
- public void testGetOrdinal() {
-
- PropertySource defaultPropertySource = new BasePropertySource(56) {
-
- @Override
- public String getName() {
- return "testWithDefault";
- }
-
- @Override
- public PropertyValue get(String key) {
- return null;
- }
-
- @Override
- public Map<String, PropertyValue> getProperties() {
- return Collections.emptyMap();
- }
- };
-
- Assert.assertEquals(56, PropertySourceComparator.getOrdinal(defaultPropertySource));
- Assert.assertEquals(1000, new OverriddenOrdinalPropertySource().getOrdinal());
-
- // propertySource with invalid ordinal
- Assert.assertEquals(1, new OverriddenInvalidOrdinalPropertySource().getOrdinal());
- }
-
- @Test
- public void testGet() {
- Assert.assertEquals(1000, new OverriddenOrdinalPropertySource().getOrdinal());
- }
-
- private static class OverriddenOrdinalPropertySource extends BasePropertySource {
-
- private OverriddenOrdinalPropertySource() {
- super(250);
- }
-
- @Override
- public String getName() {
- return "overriddenOrdinal";
- }
-
- @Override
- public Map<String, PropertyValue> getProperties() {
- Map<String,PropertyValue> result = new HashMap<>(1);
- result.put(PropertySource.TAMAYA_ORDINAL, PropertyValue.of(PropertySource.TAMAYA_ORDINAL, "1000", getName()));
- return result;
- }
- }
-
- private static class OverriddenInvalidOrdinalPropertySource extends BasePropertySource {
-
- private OverriddenInvalidOrdinalPropertySource() {
- super(1);
- }
-
- @Override
- public String getName() {
- return "overriddenInvalidOrdinal";
- }
-
- @Override
- public Map<String, PropertyValue> getProperties() {
- Map<String,PropertyValue> result = new HashMap<>(1);
- result.put(PropertySource.TAMAYA_ORDINAL, PropertyValue.of(PropertySource.TAMAYA_ORDINAL, "invalid", getName()));
- return result;
- }
- }
-
-
-}