Repository: incubator-tamaya-sandbox Updated Branches: refs/heads/master 9788f0028 -> 6e5b58376
TAMAYA-260 Fixed failing microprofile tests. Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/commit/6e5b5837 Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/tree/6e5b5837 Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/diff/6e5b5837 Branch: refs/heads/master Commit: 6e5b58376e76c7721ce06071448d2683507851d4 Parents: 9788f00 Author: Anatole Tresch <anat...@apache.org> Authored: Tue Oct 3 19:22:17 2017 +0200 Committer: Anatole Tresch <anat...@apache.org> Committed: Tue Oct 3 19:22:17 2017 +0200 ---------------------------------------------------------------------- .../microprofile/TamayaConfiguration.java | 10 ++-- .../cdi/MicroprofileCDIExtension.java | 14 ++++- .../cdi/MicroprofileConfigurationProducer.java | 7 +++ .../converter/ProviderConverter.java | 61 ++++++++++++++++++++ .../org.apache.tamaya.spi.PropertyConverter | 3 +- 5 files changed, 88 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/6e5b5837/microprofile/src/main/java/org/apache/tamaya/microprofile/TamayaConfiguration.java ---------------------------------------------------------------------- diff --git a/microprofile/src/main/java/org/apache/tamaya/microprofile/TamayaConfiguration.java b/microprofile/src/main/java/org/apache/tamaya/microprofile/TamayaConfiguration.java index 72b902b..7b5a73c 100644 --- a/microprofile/src/main/java/org/apache/tamaya/microprofile/TamayaConfiguration.java +++ b/microprofile/src/main/java/org/apache/tamaya/microprofile/TamayaConfiguration.java @@ -18,10 +18,7 @@ */ package org.apache.tamaya.microprofile; -import org.apache.tamaya.ConfigOperator; -import org.apache.tamaya.ConfigQuery; -import org.apache.tamaya.Configuration; -import org.apache.tamaya.TypeLiteral; +import org.apache.tamaya.*; import org.apache.tamaya.spi.ConfigurationContext; import org.eclipse.microprofile.config.Config; @@ -75,6 +72,11 @@ public class TamayaConfiguration implements Configuration{ } @Override + public <T> T getFromValue(String value, TypeLiteral<T> targetType) { + return ConfigurationProvider.getConfiguration().getFromValue(value, targetType); + } + + @Override public Map<String, String> getProperties() { return null; } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/6e5b5837/microprofile/src/main/java/org/apache/tamaya/microprofile/cdi/MicroprofileCDIExtension.java ---------------------------------------------------------------------- diff --git a/microprofile/src/main/java/org/apache/tamaya/microprofile/cdi/MicroprofileCDIExtension.java b/microprofile/src/main/java/org/apache/tamaya/microprofile/cdi/MicroprofileCDIExtension.java index 7a819fc..550b9e0 100644 --- a/microprofile/src/main/java/org/apache/tamaya/microprofile/cdi/MicroprofileCDIExtension.java +++ b/microprofile/src/main/java/org/apache/tamaya/microprofile/cdi/MicroprofileCDIExtension.java @@ -19,7 +19,9 @@ package org.apache.tamaya.microprofile.cdi; import org.eclipse.microprofile.config.inject.ConfigProperty; import javax.enterprise.event.Observes; +import javax.enterprise.inject.Instance; import javax.enterprise.inject.spi.*; +import javax.inject.Provider; import java.lang.reflect.Field; import java.lang.reflect.Member; import java.lang.reflect.Method; @@ -66,9 +68,17 @@ public class MicroprofileCDIExtension implements Extension { String key = !annotation.name().isEmpty()?annotation.name():MicroprofileConfigurationProducer.getDefaultKey(injectionPoint); Member member = injectionPoint.getMember(); if(member instanceof Field) { - types.add(((Field) member).getType()); + Field f = (Field)member; + if(!Instance.class.equals(f.getType()) && + !Provider.class.equals(f.getType())){ + types.add(f.getType()); + } }else if(member instanceof Method){ - types.add(((Method) member).getParameterTypes()[0]); + Method m = (Method)member; + if(!Instance.class.equals(m.getParameterTypes()[0]) && + !Provider.class.equals(m.getParameterTypes()[0])){ + types.add(m.getParameterTypes()[0]); + } }else{ continue; } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/6e5b5837/microprofile/src/main/java/org/apache/tamaya/microprofile/cdi/MicroprofileConfigurationProducer.java ---------------------------------------------------------------------- diff --git a/microprofile/src/main/java/org/apache/tamaya/microprofile/cdi/MicroprofileConfigurationProducer.java b/microprofile/src/main/java/org/apache/tamaya/microprofile/cdi/MicroprofileConfigurationProducer.java index eb1ac61..e3eae2c 100644 --- a/microprofile/src/main/java/org/apache/tamaya/microprofile/cdi/MicroprofileConfigurationProducer.java +++ b/microprofile/src/main/java/org/apache/tamaya/microprofile/cdi/MicroprofileConfigurationProducer.java @@ -33,6 +33,7 @@ import javax.enterprise.inject.*; import javax.enterprise.inject.spi.InjectionPoint; import javax.inject.Provider; import java.lang.reflect.AnnotatedElement; +import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.List; import java.util.logging.Level; @@ -91,6 +92,12 @@ public class MicroprofileConfigurationProducer { if (injectionPoint.getMember() instanceof AnnotatedElement) { builder.setAnnotatedElement((AnnotatedElement) injectionPoint.getMember()); } + if(targetType instanceof ParameterizedType){ + ParameterizedType pt = (ParameterizedType)targetType; + if(pt.getRawType().equals(Provider.class)) { + builder.setTargetType(TypeLiteral.of(pt.getActualTypeArguments()[0])); + } + } return builder.build(); } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/6e5b5837/microprofile/src/main/java/org/apache/tamaya/microprofile/converter/ProviderConverter.java ---------------------------------------------------------------------- diff --git a/microprofile/src/main/java/org/apache/tamaya/microprofile/converter/ProviderConverter.java b/microprofile/src/main/java/org/apache/tamaya/microprofile/converter/ProviderConverter.java new file mode 100644 index 0000000..1983e3d --- /dev/null +++ b/microprofile/src/main/java/org/apache/tamaya/microprofile/converter/ProviderConverter.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.microprofile.converter; + +import org.apache.tamaya.ConfigException; +import org.apache.tamaya.TypeLiteral; +import org.apache.tamaya.spi.ConversionContext; +import org.apache.tamaya.spi.PropertyConverter; + +import javax.annotation.Priority; +import javax.inject.Provider; +import java.lang.reflect.Type; +import java.util.Objects; +import java.util.logging.Logger; + +/** + * Converter, converting from String to Boolean for 1 = true, otherwise false. + */ +@Priority(-1) +public class ProviderConverter implements PropertyConverter<Provider> { + + private final Logger LOG = Logger.getLogger(getClass().getName()); + + @Override + public Provider convert(String value, ConversionContext context) { + return () -> { + try{ + Type targetType = context.getTargetType().getType(); + return context.getConfiguration().getFromValue(value, TypeLiteral.of(targetType)); + }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-sandbox/blob/6e5b5837/microprofile/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter ---------------------------------------------------------------------- diff --git a/microprofile/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter b/microprofile/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter index 51051e6..2205fa2 100644 --- a/microprofile/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter +++ b/microprofile/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter @@ -17,4 +17,5 @@ # under the License. # -org.apache.tamaya.microprofile.converter.BooleanAsIntegerConverterFix \ No newline at end of file +org.apache.tamaya.microprofile.converter.BooleanAsIntegerConverterFix +org.apache.tamaya.microprofile.converter.ProviderConverter \ No newline at end of file