Repository: incubator-tamaya-sandbox Updated Branches: refs/heads/java8 41305de43 -> 50927f438
TAMAYA-260: Fixed CDI issues regarding MP integration. 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/88b39eff Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/tree/88b39eff Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/diff/88b39eff Branch: refs/heads/java8 Commit: 88b39eff5c92d977414f2e8d229bf0d023173656 Parents: 41305de Author: anatole <anat...@apache.org> Authored: Sun Aug 13 01:27:49 2017 +0200 Committer: anatole <anat...@apache.org> Committed: Sun Aug 13 01:27:49 2017 +0200 ---------------------------------------------------------------------- microprofile/pom.xml | 72 +++++++++---- .../microprofile/MicroprofileConfigBuilder.java | 6 +- .../microprofile/cdi/BridgingConfigBean.java | 104 +++++++++++++++++++ .../tamaya/microprofile/cdi/ConfiguredType.java | 4 +- .../cdi/MicroprofileCDIExtension.java | 94 +++-------------- .../cdi/MicroprofileConfigurationProducer.java | 63 ++++++++--- .../converter/ProviderConverter.java | 10 +- microprofile/src/main/resources/beans.xml | 25 +++++ .../AutoDiscoveredConfigSourceTest.java | 2 +- .../imported/CDIPlainInjectionTest.java | 46 ++++++-- .../imported/CdiOptionalInjectionTest.java | 52 +++++----- .../imported/ConfigProviderTest.java | 29 +----- .../microprofile/imported/ConverterTest.java | 2 +- .../imported/CustomConfigSourceTest.java | 21 ---- .../imported/OptionalValuesBean.java | 3 +- .../imported/base/AbstractTest.java | 42 -------- .../imported/broken/ConfigOwner.java | 28 ++--- .../imported/broken/CustomConverterBean.java | 26 ++--- ...MissingConverterOnInstanceInjectionTest.java | 62 ----------- .../MissingValueOnInstanceInjectionTest.java | 61 ----------- .../WrongConverterOnInstanceInjectionTest.java | 63 ----------- .../microprofile/imported/converters/Pizza.java | 9 +- .../imported/converters/PizzaConverter.java | 3 +- .../tck/TamayaConfigArchiveProcessor.java | 4 +- .../src/test/resources/META-INF/beans.xml | 24 +++++ .../META-INF/microprofile-config.properties | 2 + ...rg.eclipse.microprofile.config.spi.Converter | 18 ++++ 27 files changed, 406 insertions(+), 469 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/88b39eff/microprofile/pom.xml ---------------------------------------------------------------------- diff --git a/microprofile/pom.xml b/microprofile/pom.xml index 4795d36..ff893b8 100644 --- a/microprofile/pom.xml +++ b/microprofile/pom.xml @@ -42,7 +42,10 @@ under the License. <arquillian.version>1.1.13.Final</arquillian.version> <arquillian-weld-embedded.version>2.0.0.Beta5</arquillian-weld-embedded.version> <cdi2-api.version>2.0</cdi2-api.version> - <weld.version>3.0.0.Final</weld.version> + <weld-shaded.version>3.0.0.Final</weld-shaded.version> + <weld.version>2.2.7.Final</weld.version> + <deltaspike.version>1.1.0</deltaspike.version> + <openejb.version>4.7.1</openejb.version> </properties> <dependencies> @@ -73,29 +76,48 @@ under the License. <artifactId>tamaya-functions</artifactId> <version>${tamaya-version}</version> </dependency> - <!--<dependency>--> - <!--<groupId>javax.enterprise</groupId>--> - <!--<artifactId>cdi-api</artifactId>--> - <!--<version>1.2</version>--> - <!--<scope>provided</scope>--> - <!--</dependency>--> - <!--<dependency>--> - <!--<groupId>org.apache.geronimo.specs</groupId>--> - <!--<artifactId>geronimo-jcdi_1.1_spec</artifactId>--> - <!--<version>${geronimo-jcdi-1.1-spec.version}</version>--> - <!--<scope>provided</scope>--> - <!--</dependency>--> <dependency> <groupId>org.eclipse.microprofile.config</groupId> <artifactId>microprofile-config-api</artifactId> <version>1.0</version> </dependency> <dependency> - <groupId>org.eclipse.microprofile.config</groupId> - <artifactId>microprofile-config-tck</artifactId> - <version>1.0</version> + <groupId>javax.enterprise</groupId> + <artifactId>cdi-api</artifactId> + <version>1.2</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.apache.geronimo.specs</groupId> + <artifactId>geronimo-jcdi_1.1_spec</artifactId> + <version>${geronimo-jcdi-1.1-spec.version}</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.jboss.weld.se</groupId> + <artifactId>weld-se</artifactId> + <version>${weld.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.deltaspike.cdictrl</groupId> + <artifactId>deltaspike-cdictrl-weld</artifactId> + <version>${deltaspike.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.deltaspike.modules</groupId> + <artifactId>deltaspike-test-control-module-api</artifactId> + <version>${deltaspike.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.deltaspike.modules</groupId> + <artifactId>deltaspike-test-control-module-impl</artifactId> + <version>${deltaspike.version}</version> <scope>test</scope> </dependency> + <!-- Microprofile TCK support only --> <dependency> <groupId>org.jboss.arquillian.testng</groupId> <artifactId>arquillian-testng-container</artifactId> @@ -115,19 +137,31 @@ under the License. <scope>test</scope> <type>pom</type> </dependency> + <dependency> + <groupId>org.apache.openejb</groupId> + <artifactId>openejb-core</artifactId> + <version>${openejb.version}</version> + <scope>provided</scope> + </dependency> </dependencies> <profiles> <profile> - <id>Weld3</id> + <id>TCK</id> <activation> - <activeByDefault>true</activeByDefault> + <activeByDefault>false</activeByDefault> </activation> <dependencies> <dependency> + <groupId>org.eclipse.microprofile.config</groupId> + <artifactId>microprofile-config-tck</artifactId> + <version>1.0</version> + <scope>test</scope> + </dependency> + <dependency> <groupId>org.jboss.weld.se</groupId> <artifactId>weld-se-shaded</artifactId> - <version>${weld.version}</version> + <version>${weld-shaded.version}</version> <scope>test</scope> </dependency> <dependency> http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/88b39eff/microprofile/src/main/java/org/apache/tamaya/microprofile/MicroprofileConfigBuilder.java ---------------------------------------------------------------------- diff --git a/microprofile/src/main/java/org/apache/tamaya/microprofile/MicroprofileConfigBuilder.java b/microprofile/src/main/java/org/apache/tamaya/microprofile/MicroprofileConfigBuilder.java index aacd31b..7947e63 100644 --- a/microprofile/src/main/java/org/apache/tamaya/microprofile/MicroprofileConfigBuilder.java +++ b/microprofile/src/main/java/org/apache/tamaya/microprofile/MicroprofileConfigBuilder.java @@ -96,8 +96,10 @@ final class MicroprofileConfigBuilder implements ConfigBuilder{ @Override public ConfigBuilder addDiscoveredConverters() { for(Converter<?> converter: ServiceContextManager.getServiceContext().getServices(Converter.class)){ - TypeLiteral lit = TypeLiteral.of(TypeLiteral.of(converter.getClass()).getType()); - contextBuilder.addPropertyConverters(lit, MicroprofileAdapter.toPropertyConverter(converter)); + TypeLiteral targetType = TypeLiteral.of( + TypeLiteral.getGenericInterfaceTypeParameters(converter.getClass(),Converter.class)[0]); + contextBuilder.addPropertyConverters(targetType, + MicroprofileAdapter.toPropertyConverter(converter)); } return this; } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/88b39eff/microprofile/src/main/java/org/apache/tamaya/microprofile/cdi/BridgingConfigBean.java ---------------------------------------------------------------------- diff --git a/microprofile/src/main/java/org/apache/tamaya/microprofile/cdi/BridgingConfigBean.java b/microprofile/src/main/java/org/apache/tamaya/microprofile/cdi/BridgingConfigBean.java new file mode 100644 index 0000000..0b22c6a --- /dev/null +++ b/microprofile/src/main/java/org/apache/tamaya/microprofile/cdi/BridgingConfigBean.java @@ -0,0 +1,104 @@ +/* + * 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.cdi; + +import javax.enterprise.context.spi.CreationalContext; +import javax.enterprise.inject.spi.Bean; +import javax.enterprise.inject.spi.InjectionPoint; +import java.lang.annotation.Annotation; +import java.lang.reflect.Type; +import java.util.Objects; +import java.util.Set; + +/** + * Internally used conversion bean. + */ +class BridgingConfigBean implements Bean<Object> { + + private final Bean<Object> delegate; + private final Set<Type> types; + + public BridgingConfigBean(final Bean delegate, final Set<Type> types) { + this.types = types; + this.delegate = Objects.requireNonNull(delegate); + } + + @Override + public Set<Type> getTypes() { + return types; + } + + @Override + public Class<?> getBeanClass() { + return delegate.getBeanClass(); + } + + @Override + public Set<InjectionPoint> getInjectionPoints() { + return delegate.getInjectionPoints(); + } + + @Override + public String getName() { + return delegate.getName(); + } + + @Override + public Set<Annotation> getQualifiers() { + return delegate.getQualifiers(); + } + + @Override + public Class<? extends Annotation> getScope() { + return delegate.getScope(); + } + + @Override + public Set<Class<? extends Annotation>> getStereotypes() { + return delegate.getStereotypes(); + } + + @Override + public boolean isAlternative() { + return delegate.isAlternative(); + } + + @Override + public boolean isNullable() { + return delegate.isNullable(); + } + + @Override + public Object create(CreationalContext<Object> creationalContext) { +// Set<InjectionPoint> injectionPoints = delegate.getInjectionPoints(); +// for(InjectionPoint injectionPoint:injectionPoints){ +// final ConfigProperty annotation = injectionPoint.getAnnotated().getAnnotation(ConfigProperty.class); +// String key = annotation.name(); +// ConversionContext context = +// MicroprofileConfigurationProducer.createConversionContext(key, injectionPoint); +// Object result = MicroprofileConfigurationProducer.resolveValue(annotation.defaultValue(), context, injectionPoint); +// creationalContext.push(result); +// return result; +// } + return this.delegate.create(creationalContext); + } + + @Override + public void destroy(Object instance, CreationalContext<Object> creationalContext) { + delegate.destroy(instance, creationalContext); + } +} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/88b39eff/microprofile/src/main/java/org/apache/tamaya/microprofile/cdi/ConfiguredType.java ---------------------------------------------------------------------- diff --git a/microprofile/src/main/java/org/apache/tamaya/microprofile/cdi/ConfiguredType.java b/microprofile/src/main/java/org/apache/tamaya/microprofile/cdi/ConfiguredType.java index fdebf31..e94c075 100644 --- a/microprofile/src/main/java/org/apache/tamaya/microprofile/cdi/ConfiguredType.java +++ b/microprofile/src/main/java/org/apache/tamaya/microprofile/cdi/ConfiguredType.java @@ -31,7 +31,7 @@ import java.util.Objects; * Event published for items configured by CDI extensions. This is for example used by the documentation module * to automatically track the configuration endpoints for documentation. */ -class ConfiguredType { +public class ConfiguredType { private final Class<?> type; private final List<ConfiguredMethod> methods = new ArrayList<>(); @@ -63,7 +63,7 @@ class ConfiguredType { /** * Used to build up during injection point processing. - * @param injectionPoint the CDI injection ppint, not null. + * @param injectionPoint the CDI injection point, not null. * @param key the possible config key, not null. */ void addConfiguredMember(InjectionPoint injectionPoint, String key) { http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/88b39eff/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 b6280f4..1993e7b 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 @@ -16,16 +16,13 @@ */ package org.apache.tamaya.microprofile.cdi; -import org.eclipse.microprofile.config.Config; -import org.eclipse.microprofile.config.ConfigProvider; import org.eclipse.microprofile.config.inject.ConfigProperty; -import javax.enterprise.context.spi.CreationalContext; import javax.enterprise.event.Observes; import javax.enterprise.inject.spi.*; -import java.lang.annotation.Annotation; import java.lang.reflect.Field; import java.lang.reflect.Member; +import java.lang.reflect.Method; import java.lang.reflect.Type; import java.util.*; import java.util.logging.Logger; @@ -65,16 +62,18 @@ public class MicroprofileCDIExtension implements Extension { for (InjectionPoint injectionPoint : ips) { if (injectionPoint.getAnnotated().isAnnotationPresent(ConfigProperty.class)) { final ConfigProperty annotation = injectionPoint.getAnnotated().getAnnotation(ConfigProperty.class); - String key = annotation!=null?annotation.name():injectionPoint.getMember().getName(); + String key = !annotation.name().isEmpty()?annotation.name():injectionPoint.getMember().getName(); Member member = injectionPoint.getMember(); - if(member instanceof Field){ - if(annotation!=null){ - types.add(((Field)member).getType()); - configured = true; - LOG.finest(() -> "Enabling Tamaya Microprofile Configuration on bean: " + configuredType.getName()); - configuredType.addConfiguredMember(injectionPoint, key); - } + if(member instanceof Field) { + types.add(((Field) member).getType()); + }else if(member instanceof Method){ + types.add(((Method) member).getParameterTypes()[0]); + }else{ + continue; } + configured = true; + LOG.finest(() -> "Enabling Tamaya Microprofile Configuration on bean: " + configuredType.getName()); + configuredType.addConfiguredMember(injectionPoint, key); } } if(configured) { @@ -92,78 +91,9 @@ public class MicroprofileCDIExtension implements Extension { public void addConverter(@Observes final AfterBeanDiscovery abd, final BeanManager bm) { if(!types.isEmpty() && convBean!=null) { - abd.addBean(new ConverterBean(convBean, types)); + abd.addBean(new BridgingConfigBean(convBean, types)); } } - /** - * Internally used conversion bean. - */ - private static class ConverterBean implements Bean<Object> { - - private final Bean<Object> delegate; - private final Set<Type> types; - - public ConverterBean(final Bean convBean, final Set<Type> types) { - this.types = types; - this.delegate = Objects.requireNonNull(convBean); - } - - @Override - public Set<Type> getTypes() { - return types; - } - - @Override - public Class<?> getBeanClass() { - return delegate.getBeanClass(); - } - - @Override - public Set<InjectionPoint> getInjectionPoints() { - return delegate.getInjectionPoints(); - } - - @Override - public String getName() { - return delegate.getName(); - } - - @Override - public Set<Annotation> getQualifiers() { - return delegate.getQualifiers(); - } - - @Override - public Class<? extends Annotation> getScope() { - return delegate.getScope(); - } - - @Override - public Set<Class<? extends Annotation>> getStereotypes() { - return delegate.getStereotypes(); - } - - @Override - public boolean isAlternative() { - return delegate.isAlternative(); - } - - @Override - public boolean isNullable() { - return delegate.isNullable(); - } - - @Override - public Object create(CreationalContext<Object> creationalContext) { - return delegate.create(creationalContext); - } - - @Override - public void destroy(Object instance, CreationalContext<Object> creationalContext) { - delegate.destroy(instance, creationalContext); - } - } - } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/88b39eff/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 1f2e397..e4bbf6b 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 @@ -26,10 +26,10 @@ import org.eclipse.microprofile.config.spi.ConfigBuilder; import org.eclipse.microprofile.config.spi.ConfigProviderResolver; import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Any; import javax.enterprise.inject.Produces; import javax.enterprise.inject.spi.InjectionPoint; import java.lang.reflect.AnnotatedElement; +import java.lang.reflect.Type; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; @@ -50,26 +50,43 @@ public class MicroprofileConfigurationProducer { // unless the extension is not installed, this should never happen because the extension // enforces the resolvability of the config - Configuration config = ConfigurationProvider.getConfiguration(); - final Class<?> toType = (Class<?>) injectionPoint.getAnnotated().getBaseType(); + String defaultTextValue = annotation.defaultValue().isEmpty() ? null : annotation.defaultValue(); - String textValue = config.get(key); + ConversionContext conversionContext = createConversionContext(key, injectionPoint); + Object value = resolveValue(defaultTextValue, conversionContext, injectionPoint); + if (value == null) { + throw new ConfigException(String.format( + "Can't resolve any of the possible config keys: %s to the required target type: %s, supported formats: %s", + key, conversionContext.getTargetType(), conversionContext.getSupportedFormats().toString())); + } + LOGGER.finest(String.format("Injecting %s for key %s in class %s", key, value.toString(), injectionPoint.toString())); + return value; + } + + static ConversionContext createConversionContext(String key, InjectionPoint injectionPoint) { + final Type targetType = injectionPoint.getAnnotated().getBaseType(); + Configuration config = ConfigurationProvider.getConfiguration(); ConversionContext.Builder builder = new ConversionContext.Builder(config, - ConfigurationProvider.getConfiguration().getContext(), key, TypeLiteral.of(toType)); + ConfigurationProvider.getConfiguration().getContext(), key, TypeLiteral.of(targetType)); if (injectionPoint.getMember() instanceof AnnotatedElement) { builder.setAnnotatedElement((AnnotatedElement) injectionPoint.getMember()); } - ConversionContext conversionContext = builder.build(); + return builder.build(); + } + + static Object resolveValue(String defaultTextValue, ConversionContext context, InjectionPoint injectionPoint) { + Configuration config = ConfigurationProvider.getConfiguration(); + String textValue = config.get(context.getKey()); if (textValue == null) { textValue = defaultTextValue; } Object value = null; if (textValue != null) { - List<PropertyConverter<Object>> converters = ConfigurationProvider.getConfiguration().getContext() - .getPropertyConverters(TypeLiteral.of(toType)); + List<PropertyConverter> converters = ConfigurationProvider.getConfiguration().getContext() + .getPropertyConverters((TypeLiteral)context.getTargetType()); for (PropertyConverter<Object> converter : converters) { try { - value = converter.convert(textValue, conversionContext); + value = converter.convert(textValue, context); if (value != null) { LOGGER.log(Level.FINEST, "Parsed default value from '" + textValue + "' into " + injectionPoint); @@ -81,12 +98,6 @@ public class MicroprofileConfigurationProducer { } } } - if (value == null) { - throw new ConfigException(String.format( - "Can't resolve any of the possible config keys: %s to the required target type: %s, supported formats: %s", - key, toType.getName(), conversionContext.getSupportedFormats().toString())); - } - LOGGER.finest(String.format("Injecting %s for key %s in class %s", key, value.toString(), injectionPoint.toString())); return value; } @@ -100,4 +111,26 @@ public class MicroprofileConfigurationProducer { return ConfigProviderResolver.instance().getBuilder(); } +// @Produces +// @ConfigProperty +// public Provider getConfiguredProvider(InjectionPoint injectionPoint){ +// final ConfigProperty annotation = injectionPoint.getAnnotated().getAnnotation(ConfigProperty.class); +// String key = annotation.name(); +// +// // unless the extension is not installed, this should never happen because the extension +// // enforces the resolvability of the config +// +// String defaultTextValue = annotation.defaultValue().isEmpty() ? null : annotation.defaultValue(); +// ConversionContext conversionContext = createConversionContext(key, injectionPoint); +// return () -> { +// Object value = resolveValue(defaultTextValue, conversionContext, injectionPoint); +// if (value == null) { +// throw new ConfigException(String.format( +// "Can't resolve any of the possible config keys: %s to the required target type: %s, supported formats: %s", +// key, conversionContext.getTargetType(), conversionContext.getSupportedFormats().toString())); +// } +// return value; +// }; +// } + } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/88b39eff/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 index 1548999..d50cba9 100644 --- a/microprofile/src/main/java/org/apache/tamaya/microprofile/converter/ProviderConverter.java +++ b/microprofile/src/main/java/org/apache/tamaya/microprofile/converter/ProviderConverter.java @@ -23,6 +23,8 @@ import org.apache.tamaya.spi.ConversionContext; import org.apache.tamaya.spi.PropertyConverter; import javax.inject.Provider; +import java.lang.reflect.Type; +import java.util.Optional; import java.util.logging.Logger; /** @@ -34,11 +36,15 @@ public class ProviderConverter implements PropertyConverter<Provider> { @Override public Provider<?> convert(String value, ConversionContext context) { - TypeLiteral<Provider> target = (TypeLiteral<Provider>)context.getTargetType(); + TypeLiteral<Optional> target = (TypeLiteral<Optional>)context.getTargetType(); + Type targetType = TypeLiteral.getTypeParameters(target.getType())[0]; return () -> { Object result = null; + if(String.class.equals(targetType)){ + result = value; + } for(PropertyConverter pv:context.getConfigurationContext().getPropertyConverters( - TypeLiteral.of(target.getType()))){ + TypeLiteral.of(targetType))){ result = pv.convert(value, context); if(result!=null){ break; http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/88b39eff/microprofile/src/main/resources/beans.xml ---------------------------------------------------------------------- diff --git a/microprofile/src/main/resources/beans.xml b/microprofile/src/main/resources/beans.xml new file mode 100644 index 0000000..9b07802 --- /dev/null +++ b/microprofile/src/main/resources/beans.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy current the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> +<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://jboss.org/schema/cdi/beans_1_0.xsd"> + + +</beans> + http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/88b39eff/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/AutoDiscoveredConfigSourceTest.java ---------------------------------------------------------------------- diff --git a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/AutoDiscoveredConfigSourceTest.java b/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/AutoDiscoveredConfigSourceTest.java index f321f54..57cbc5d 100644 --- a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/AutoDiscoveredConfigSourceTest.java +++ b/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/AutoDiscoveredConfigSourceTest.java @@ -19,9 +19,9 @@ *******************************************************************************/ package org.apache.tamaya.microprofile.imported; +import org.apache.tamaya.microprofile.imported.converters.Pizza; import org.eclipse.microprofile.config.Config; import org.eclipse.microprofile.config.spi.ConfigProviderResolver; -import org.eclipse.microprofile.config.tck.converters.Pizza; import org.junit.Assert; import org.junit.Test; http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/88b39eff/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/CDIPlainInjectionTest.java ---------------------------------------------------------------------- diff --git a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/CDIPlainInjectionTest.java b/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/CDIPlainInjectionTest.java index 170f55b..61c67fb 100644 --- a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/CDIPlainInjectionTest.java +++ b/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/CDIPlainInjectionTest.java @@ -19,10 +19,18 @@ package org.apache.tamaya.microprofile.imported; +import org.apache.openejb.jee.EjbJar; +import org.apache.openejb.junit.ApplicationComposer; +import org.apache.openejb.testing.Classes; +import org.apache.openejb.testing.Module; +import org.apache.tamaya.microprofile.cdi.MicroprofileCDIExtension; +import org.apache.tamaya.microprofile.cdi.MicroprofileConfigurationProducer; import org.eclipse.microprofile.config.inject.ConfigProperty; import org.eclipse.microprofile.config.spi.ConfigSource; -import org.jboss.arquillian.testng.Arquillian; -import org.testng.annotations.Test; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; import javax.enterprise.context.Dependent; import javax.enterprise.inject.spi.CDI; @@ -31,20 +39,43 @@ import javax.inject.Provider; import java.util.HashMap; import java.util.Map; -import static org.eclipse.microprofile.config.tck.matchers.AdditionalMatchers.floatCloseTo; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.*; +import static org.junit.Assert.assertEquals; /** * Test cases for CDI-based API that test retrieving values from the configuration. * The tests depend only on CDI 1.2. * @author Ondrej Mihalyi */ -public class CDIPlainInjectionTest extends Arquillian{ +@RunWith(ApplicationComposer.class) +public class CDIPlainInjectionTest{ private static final String DEFAULT_PROPERTY_BEAN_KEY = "org.eclipse.microprofile.config.tck.CDIPlainInjectionTest.defaultPropertyBean.configProperty"; + static{ + System.setProperty("my.string.property", "text"); + System.setProperty("my.boolean.property", "true"); + System.setProperty("my.int.property", "5"); + System.setProperty("my.long.property", "10"); + System.setProperty("my.float.property", "10.5"); + System.setProperty("my.double.property", "11.5"); + System.setProperty(DEFAULT_PROPERTY_BEAN_KEY, "pathConfigValue"); + } + + @Module + @Classes(cdi = true, value = { + SimpleValuesBean.class, DynamicValuesBean.class, DefaultPropertyBean.class, + MicroprofileCDIExtension.class, + MicroprofileConfigurationProducer.class + }) + public EjbJar jar() { + ensure_all_property_values_are_defined(); + return new EjbJar("config"); + } + + @Test public void can_inject_simple_values_when_defined() { ensure_all_property_values_are_defined(); @@ -55,13 +86,13 @@ public class CDIPlainInjectionTest extends Arquillian{ assertThat(bean.booleanProperty, is(true)); assertThat(bean.intProperty, is(equalTo(5))); assertThat(bean.longProperty, is(equalTo(10L))); - assertThat(bean.floatProperty, is(floatCloseTo(10.5f, 0.1f))); + assertEquals(bean.floatProperty, 10.5f, 0.1f); assertThat(bean.doubleProperty, is(closeTo(11.5, 0.1))); assertThat(bean.booleanObjProperty, is(true)); assertThat(bean.integerProperty, is(equalTo(5))); assertThat(bean.longObjProperty, is(equalTo(10L))); - assertThat(bean.floatObjProperty, is(floatCloseTo(10.5f, 0.1f))); + assertEquals(bean.floatObjProperty, 10.5f, 0.1f); assertThat(bean.doubleObjProperty, is(closeTo(11.5, 0.1))); assertThat(bean.doublePropertyWithDefaultValue, is(closeTo(3.1415, 0.1))); @@ -101,7 +132,8 @@ public class CDIPlainInjectionTest extends Arquillian{ System.setProperty(DEFAULT_PROPERTY_BEAN_KEY, "pathConfigValue"); } - private void clear_all_property_values() { + @After + public void clear_all_property_values() { System.getProperties().remove("my.string.property"); System.getProperties().remove("my.boolean.property"); System.getProperties().remove("my.int.property"); http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/88b39eff/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/CdiOptionalInjectionTest.java ---------------------------------------------------------------------- diff --git a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/CdiOptionalInjectionTest.java b/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/CdiOptionalInjectionTest.java index ee6d158..e156644 100644 --- a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/CdiOptionalInjectionTest.java +++ b/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/CdiOptionalInjectionTest.java @@ -19,44 +19,42 @@ */ package org.apache.tamaya.microprofile.imported; -import org.eclipse.microprofile.config.tck.OptionalValuesBean; -import org.jboss.arquillian.container.test.api.Deployment; -import org.jboss.arquillian.testng.Arquillian; -import org.jboss.shrinkwrap.api.ShrinkWrap; -import org.jboss.shrinkwrap.api.asset.EmptyAsset; -import org.jboss.shrinkwrap.api.asset.StringAsset; -import org.jboss.shrinkwrap.api.spec.JavaArchive; -import org.jboss.shrinkwrap.api.spec.WebArchive; -import org.testng.Assert; -import org.testng.annotations.Test; +import org.apache.deltaspike.testcontrol.api.TestControl; +import org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner; +import org.apache.openejb.jee.EjbJar; +import org.apache.openejb.junit.ApplicationComposer; +import org.apache.openejb.testing.Classes; +import org.apache.openejb.testing.Module; +import org.apache.tamaya.microprofile.cdi.MicroprofileCDIExtension; +import org.apache.tamaya.microprofile.cdi.MicroprofileConfigurationProducer; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import javax.enterprise.context.ApplicationScoped; +import javax.enterprise.context.RequestScoped; import javax.inject.Inject; +import javax.inject.Singleton; /** * Verify injection of {@code Optional<T>} fields. * * @author <a href="mailto:strub...@apache.org">Mark Struberg</a> */ -public class CdiOptionalInjectionTest extends Arquillian{ +@RunWith(ApplicationComposer.class) +public class CdiOptionalInjectionTest{ - private @Inject OptionalValuesBean optionalValuesBean; - - @Deployment - public static WebArchive deploy() { - JavaArchive testJar = ShrinkWrap - .create(JavaArchive.class, "cdiOptionalInjectionTest.jar") - .addClasses(org.eclipse.microprofile.config.tck.CdiOptionalInjectionTest.class, OptionalValuesBean.class) - .addAsManifestResource(new StringAsset("my.optional.int.property=1234\nmy.optional.string.property=hello"), - "microprofile-config.properties") - .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml") - .as(JavaArchive.class); - - WebArchive war = ShrinkWrap - .create(WebArchive.class, "cdiOptionalInjectionTest.war") - .addAsLibrary(testJar); - return war; + @Module + @Classes(cdi = true, value = { + OptionalValuesBean.class, + MicroprofileCDIExtension.class, + MicroprofileConfigurationProducer.class + }) + public EjbJar jar() { + return new EjbJar("config"); } + private @Inject OptionalValuesBean optionalValuesBean; @Test public void testOptionalInjection() { http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/88b39eff/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/ConfigProviderTest.java ---------------------------------------------------------------------- diff --git a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/ConfigProviderTest.java b/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/ConfigProviderTest.java index 4feb736..d7368ea 100644 --- a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/ConfigProviderTest.java +++ b/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/ConfigProviderTest.java @@ -21,18 +21,11 @@ package org.apache.tamaya.microprofile.imported; import org.eclipse.microprofile.config.Config; import org.eclipse.microprofile.config.ConfigProvider; import org.eclipse.microprofile.config.spi.ConfigSource; -import org.eclipse.microprofile.config.tck.base.AbstractTest; import org.hamcrest.CoreMatchers; import org.hamcrest.MatcherAssert; -import org.jboss.arquillian.container.test.api.Deployment; -import org.jboss.shrinkwrap.api.ShrinkWrap; -import org.jboss.shrinkwrap.api.asset.EmptyAsset; -import org.jboss.shrinkwrap.api.spec.JavaArchive; -import org.jboss.shrinkwrap.api.spec.WebArchive; import org.junit.Assert; import org.junit.Test; -import javax.inject.Inject; import java.io.*; import java.util.Map; import java.util.NoSuchElementException; @@ -46,23 +39,6 @@ public class ConfigProviderTest { private Config config = ConfigProvider.getConfig(); - @Deployment - public static WebArchive deploy() { - JavaArchive testJar = ShrinkWrap - .create(JavaArchive.class, "configProviderTest.jar") - .addPackage(AbstractTest.class.getPackage()) - .addClass(org.eclipse.microprofile.config.tck.ConfigProviderTest.class) - .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml") - .as(JavaArchive.class); - - AbstractTest.addFile(testJar, "META-INF/microprofile-config.properties"); - - WebArchive war = ShrinkWrap - .create(WebArchive.class, "configProviderTest.war") - .addAsLibrary(testJar); - return war; - } - @Test public void testEnvironmentConfigSource() { Map<String, String> env = System.getenv(); @@ -76,7 +52,10 @@ public class ConfigProviderTest { Properties properties = System.getProperties(); for (Map.Entry<Object, Object> propEntry : properties.entrySet()) { - String propValue = (String) propEntry.getValue(); + if(!String.class.equals(propEntry.getValue().getClass())){ + continue; + } + String propValue = propEntry.getValue().toString(); if (propValue != null && propValue.length() > 0) { Assert.assertEquals(propValue, config.getValue((String) propEntry.getKey(), String.class)); } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/88b39eff/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/ConverterTest.java ---------------------------------------------------------------------- diff --git a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/ConverterTest.java b/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/ConverterTest.java index a4e887c..c513957 100644 --- a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/ConverterTest.java +++ b/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/ConverterTest.java @@ -19,9 +19,9 @@ */ package org.apache.tamaya.microprofile.imported; +import org.apache.tamaya.microprofile.imported.converters.Duck; import org.eclipse.microprofile.config.Config; import org.eclipse.microprofile.config.ConfigProvider; -import org.eclipse.microprofile.config.tck.converters.Duck; import org.junit.Assert; import org.junit.Test; http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/88b39eff/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/CustomConfigSourceTest.java ---------------------------------------------------------------------- diff --git a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/CustomConfigSourceTest.java b/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/CustomConfigSourceTest.java index 79a62f6..2fe702e 100644 --- a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/CustomConfigSourceTest.java +++ b/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/CustomConfigSourceTest.java @@ -24,9 +24,6 @@ import org.eclipse.microprofile.config.ConfigProvider; import org.junit.Assert; import org.junit.Test; -import javax.inject.Inject; - -import static org.eclipse.microprofile.config.tck.base.AbstractTest.addFile; /** * @author <a href="mailto:strub...@apache.org">Mark Struberg</a> @@ -35,24 +32,6 @@ public class CustomConfigSourceTest { private Config config = ConfigProvider.getConfig(); -// @Deployment -// public static WebArchive deploy() { -// JavaArchive testJar = ShrinkWrap -// .create(JavaArchive.class, "customConfigSourceTest.jar") -// .addClasses(org.eclipse.microprofile.config.tck.CustomConfigSourceTest.class, CustomDbConfigSource.class, CustomConfigSourceProvider.class) -// .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml") -// .addAsServiceProvider(ConfigSource.class, CustomDbConfigSource.class) -// .addAsServiceProvider(ConfigSourceProvider.class, CustomConfigSourceProvider.class) -// .as(JavaArchive.class); -// -// addFile(testJar, "META-INF/microprofile-config.properties"); -// -// WebArchive war = ShrinkWrap -// .create(WebArchive.class, "customConfigSourceTest.war") -// .addAsLibrary(testJar); -// return war; -// } - @Test public void testConfigSourceProvider() { http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/88b39eff/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/OptionalValuesBean.java ---------------------------------------------------------------------- diff --git a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/OptionalValuesBean.java b/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/OptionalValuesBean.java index bc9df03..397116e 100644 --- a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/OptionalValuesBean.java +++ b/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/OptionalValuesBean.java @@ -28,9 +28,10 @@ import org.eclipse.microprofile.config.inject.ConfigProperty; import javax.enterprise.context.Dependent; import javax.inject.Inject; +import javax.inject.Singleton; import java.util.Optional; -@Dependent +@Singleton public class OptionalValuesBean { @Inject @ConfigProperty(name="my.optional.int.property") http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/88b39eff/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/base/AbstractTest.java ---------------------------------------------------------------------- diff --git a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/base/AbstractTest.java b/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/base/AbstractTest.java deleted file mode 100644 index 0c9d3cc..0000000 --- a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/base/AbstractTest.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2016-2017 Contributors to the Eclipse Foundation - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * You may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -package org.apache.tamaya.microprofile.imported.base; - -import org.jboss.shrinkwrap.api.asset.UrlAsset; -import org.jboss.shrinkwrap.api.spec.JavaArchive; - - -/** - * @author <a href="mailto:strub...@apache.org">Mark Struberg</a> - */ -public class AbstractTest { - - - public static void addFile(JavaArchive archive, String originalPath) { - archive.addAsResource(new UrlAsset(Thread.currentThread().getContextClassLoader().getResource("internal/" + originalPath)), - originalPath); - } - - public static void addFile(JavaArchive archive, String originalFile, String targetFile) { - archive.addAsResource(new UrlAsset(Thread.currentThread().getContextClassLoader().getResource(originalFile)), - targetFile); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/88b39eff/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/broken/ConfigOwner.java ---------------------------------------------------------------------- diff --git a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/broken/ConfigOwner.java b/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/broken/ConfigOwner.java index e6763b2..fbdd875 100644 --- a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/broken/ConfigOwner.java +++ b/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/broken/ConfigOwner.java @@ -23,17 +23,17 @@ import org.eclipse.microprofile.config.inject.ConfigProperty; import javax.enterprise.context.RequestScoped; import javax.inject.Inject; - -/** - * A bean contains a config property injection - * - * @author <a href="mailto:strub...@apache.org">Mark Struberg</a> - * @author <a href="mailto:emiji...@uk.ibm.com">Emily Jiang</a> - */ -@RequestScoped -public class ConfigOwner { - - @Inject - @ConfigProperty(name="my.long.value") - private Long configValue; -} +// +///** +// * A bean contains a config property injection +// * +// * @author <a href="mailto:strub...@apache.org">Mark Struberg</a> +// * @author <a href="mailto:emiji...@uk.ibm.com">Emily Jiang</a> +// */ +//@RequestScoped +//public class ConfigOwner { +// +// @Inject +// @ConfigProperty(name="my.long.value") +// private Long configValue; +//} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/88b39eff/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/broken/CustomConverterBean.java ---------------------------------------------------------------------- diff --git a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/broken/CustomConverterBean.java b/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/broken/CustomConverterBean.java index 51b7028..30ec35b 100644 --- a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/broken/CustomConverterBean.java +++ b/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/broken/CustomConverterBean.java @@ -31,16 +31,16 @@ import javax.inject.Inject; * @author <a href="mailto:emiji...@uk.ibm.com">Emily Jiang</a> */ -public class CustomConverterBean { - - @RequestScoped - public static class ConfigOwner { - - @Inject - @ConfigProperty(name="my.customtype.value") - private CustomType configValue; - } - - public static class CustomType { - } -} +//public class CustomConverterBean { +// +// @RequestScoped +// public static class ConfigOwner { +// +// @Inject +// @ConfigProperty(name="my.customtype.value") +// private CustomType configValue; +// } +// +// public static class CustomType { +// } +//} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/88b39eff/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/broken/MissingConverterOnInstanceInjectionTest.java ---------------------------------------------------------------------- diff --git a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/broken/MissingConverterOnInstanceInjectionTest.java b/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/broken/MissingConverterOnInstanceInjectionTest.java deleted file mode 100644 index 863594c..0000000 --- a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/broken/MissingConverterOnInstanceInjectionTest.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2016-2017 Contributors to the Eclipse Foundation - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * You may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -package org.apache.tamaya.microprofile.imported.broken; - -import org.jboss.arquillian.container.test.api.Deployment; -import org.jboss.arquillian.container.test.api.ShouldThrowException; -import org.jboss.arquillian.testng.Arquillian; -import org.jboss.shrinkwrap.api.ShrinkWrap; -import org.jboss.shrinkwrap.api.asset.EmptyAsset; -import org.jboss.shrinkwrap.api.asset.StringAsset; -import org.jboss.shrinkwrap.api.spec.JavaArchive; -import org.jboss.shrinkwrap.api.spec.WebArchive; -import org.testng.annotations.Test; - -import javax.enterprise.inject.spi.DeploymentException; - -/** - * Verify that a Converter exists which can handle the configured string. - * - * @author <a href="mailto:strub...@apache.org">Mark Struberg</a> - */ -public class MissingConverterOnInstanceInjectionTest extends Arquillian { - - @ShouldThrowException(DeploymentException.class) - @Deployment - public static WebArchive deploy() { - JavaArchive testJar = ShrinkWrap - .create(JavaArchive.class, "missingConverterOnInstanceInjectionTest.jar") - .addClass(CustomConverterBean.class) - .addAsManifestResource(new StringAsset("my.customtype.value=xxxxx"), "microprofile-config.properties") - .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml") - .as(JavaArchive.class); - - WebArchive war = ShrinkWrap - .create(WebArchive.class, "missingConverterOnInstanceInjectionTest.war") - .addAsLibrary(testJar); - return war; - } - - @Test - public void test() { - } - - -} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/88b39eff/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/broken/MissingValueOnInstanceInjectionTest.java ---------------------------------------------------------------------- diff --git a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/broken/MissingValueOnInstanceInjectionTest.java b/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/broken/MissingValueOnInstanceInjectionTest.java deleted file mode 100644 index 776000a..0000000 --- a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/broken/MissingValueOnInstanceInjectionTest.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2016-2017 Contributors to the Eclipse Foundation - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * You may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -package org.apache.tamaya.microprofile.imported.broken; - -import org.jboss.arquillian.container.test.api.Deployment; -import org.jboss.arquillian.container.test.api.ShouldThrowException; -import org.jboss.arquillian.testng.Arquillian; -import org.jboss.shrinkwrap.api.ShrinkWrap; -import org.jboss.shrinkwrap.api.asset.EmptyAsset; -import org.jboss.shrinkwrap.api.spec.JavaArchive; -import org.jboss.shrinkwrap.api.spec.WebArchive; -import org.testng.annotations.Test; - -import javax.enterprise.inject.spi.DeploymentException; - -/** - * Verify that injectng a native value which is not configured will lead to a deployment error. - * - * @author <a href="mailto:strub...@apache.org">Mark Struberg</a> - */ -public class MissingValueOnInstanceInjectionTest extends Arquillian { - - @ShouldThrowException(DeploymentException.class) - @Deployment - public static WebArchive deploy() { - JavaArchive testJar = ShrinkWrap - .create(JavaArchive.class, "missingValueOnInstanceInjectionTest.jar") - .addClass(ConfigOwner.class) - .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml") - .as(JavaArchive.class); - - WebArchive war = ShrinkWrap - .create(WebArchive.class, "missingValueOnInstanceInjectionTest.war") - .addAsLibrary(testJar); - return war; - } - - @Test - public void test() { - } - - - -} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/88b39eff/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/broken/WrongConverterOnInstanceInjectionTest.java ---------------------------------------------------------------------- diff --git a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/broken/WrongConverterOnInstanceInjectionTest.java b/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/broken/WrongConverterOnInstanceInjectionTest.java deleted file mode 100644 index 5075ef2..0000000 --- a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/broken/WrongConverterOnInstanceInjectionTest.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2016-2017 Contributors to the Eclipse Foundation - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * You may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -package org.apache.tamaya.microprofile.imported.broken; - -import org.jboss.arquillian.container.test.api.Deployment; -import org.jboss.arquillian.container.test.api.ShouldThrowException; -import org.jboss.arquillian.testng.Arquillian; -import org.jboss.shrinkwrap.api.ShrinkWrap; -import org.jboss.shrinkwrap.api.asset.EmptyAsset; -import org.jboss.shrinkwrap.api.asset.StringAsset; -import org.jboss.shrinkwrap.api.spec.JavaArchive; -import org.jboss.shrinkwrap.api.spec.WebArchive; -import org.testng.annotations.Test; - -import javax.enterprise.inject.spi.DeploymentException; - -/** - * Verify that injectng a native value also has a valid converter which can handle the configured string. - * - * @author <a href="mailto:strub...@apache.org">Mark Struberg</a> - */ -public class WrongConverterOnInstanceInjectionTest extends Arquillian { - - @ShouldThrowException(DeploymentException.class) - @Deployment - public static WebArchive deploy() { - JavaArchive testJar = ShrinkWrap - .create(JavaArchive.class, "wrongConverterOnInstanceInjectionTest.jar") - .addClass(ConfigOwner.class) - .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml") - .addAsManifestResource(new StringAsset("my.long.value=xxxxx"), "microprofile-config.properties") - .as(JavaArchive.class); - - WebArchive war = ShrinkWrap - .create(WebArchive.class, "wrongConverterOnInstanceInjectionTest.war") - .addAsLibrary(testJar); - return war; - } - - @Test - public void test() { - } - - - -} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/88b39eff/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/converters/Pizza.java ---------------------------------------------------------------------- diff --git a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/converters/Pizza.java b/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/converters/Pizza.java index 147756a..bba1100 100644 --- a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/converters/Pizza.java +++ b/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/converters/Pizza.java @@ -27,12 +27,9 @@ public class Pizza { private String size; - public Pizza(String... parts) { - if (parts.length ==2) { - size = parts[0]; - flavor = parts[1]; - } - + public Pizza(String size, String flavor) { + this.size = size; + this.flavor = flavor; } public String getSize() { http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/88b39eff/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/converters/PizzaConverter.java ---------------------------------------------------------------------- diff --git a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/converters/PizzaConverter.java b/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/converters/PizzaConverter.java index 0cdb388..9717405 100644 --- a/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/converters/PizzaConverter.java +++ b/microprofile/src/test/java/org/apache/tamaya/microprofile/imported/converters/PizzaConverter.java @@ -28,6 +28,7 @@ public class PizzaConverter implements Converter<Pizza> { @Override public Pizza convert(String value) { - return new Pizza(value.split(":")); + String[] parts = value.split(":"); + return new Pizza(parts[0], parts[1]); } } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/88b39eff/microprofile/src/test/java/org/apache/tamaya/microprofile/tck/TamayaConfigArchiveProcessor.java ---------------------------------------------------------------------- diff --git a/microprofile/src/test/java/org/apache/tamaya/microprofile/tck/TamayaConfigArchiveProcessor.java b/microprofile/src/test/java/org/apache/tamaya/microprofile/tck/TamayaConfigArchiveProcessor.java index d9caf5d..1620535 100644 --- a/microprofile/src/test/java/org/apache/tamaya/microprofile/tck/TamayaConfigArchiveProcessor.java +++ b/microprofile/src/test/java/org/apache/tamaya/microprofile/tck/TamayaConfigArchiveProcessor.java @@ -26,7 +26,6 @@ import org.apache.tamaya.spi.PropertyConverter; import org.eclipse.microprofile.config.spi.ConfigProviderResolver; import org.jboss.arquillian.container.test.spi.client.deployment.ApplicationArchiveProcessor; import org.jboss.arquillian.test.spi.TestClass; -import org.jboss.arquillian.testenricher.cdi.container.CDIExtension; import org.jboss.shrinkwrap.api.Archive; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.asset.EmptyAsset; @@ -34,6 +33,7 @@ import org.jboss.shrinkwrap.api.spec.JavaArchive; import org.jboss.shrinkwrap.api.spec.WebArchive; import org.jboss.shrinkwrap.resolver.api.maven.Maven; +import javax.enterprise.inject.spi.Extension; import java.io.File; /** @@ -66,7 +66,7 @@ public class TamayaConfigArchiveProcessor implements ApplicationArchiveProcessor .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml") .addAsServiceProvider(ConfigProviderResolver.class, MicroprofileConfigProviderResolver.class) .addAsServiceProvider(PropertyConverter.class, ProviderConverter.class) - .addAsServiceProvider(CDIExtension.class, MicroprofileCDIExtension.class); + .addAsServiceProvider(Extension.class, MicroprofileCDIExtension.class); ((WebArchive) applicationArchive).addAsLibraries( configJar) .addAsLibraries(apiLibs) http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/88b39eff/microprofile/src/test/resources/META-INF/beans.xml ---------------------------------------------------------------------- diff --git a/microprofile/src/test/resources/META-INF/beans.xml b/microprofile/src/test/resources/META-INF/beans.xml new file mode 100644 index 0000000..adee378 --- /dev/null +++ b/microprofile/src/test/resources/META-INF/beans.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy current the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> +<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://jboss.org/schema/cdi/beans_1_0.xsd"> + +</beans> + http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/88b39eff/microprofile/src/test/resources/META-INF/microprofile-config.properties ---------------------------------------------------------------------- diff --git a/microprofile/src/test/resources/META-INF/microprofile-config.properties b/microprofile/src/test/resources/META-INF/microprofile-config.properties index 6895df3..39298a8 100644 --- a/microprofile/src/test/resources/META-INF/microprofile-config.properties +++ b/microprofile/src/test/resources/META-INF/microprofile-config.properties @@ -18,6 +18,8 @@ # under the License. # +my.optional.int.property=1234 +my.optional.string.property=hello tck.config.test.javaconfig.properties.key1=VALue1 http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/88b39eff/microprofile/src/test/resources/META-INF/services/org.eclipse.microprofile.config.spi.Converter ---------------------------------------------------------------------- diff --git a/microprofile/src/test/resources/META-INF/services/org.eclipse.microprofile.config.spi.Converter b/microprofile/src/test/resources/META-INF/services/org.eclipse.microprofile.config.spi.Converter new file mode 100644 index 0000000..7d5dcd6 --- /dev/null +++ b/microprofile/src/test/resources/META-INF/services/org.eclipse.microprofile.config.spi.Converter @@ -0,0 +1,18 @@ +# +# Copyright (c) 2016-2017 Mark Struberg and others +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +org.apache.tamaya.microprofile.imported.converters.PizzaConverter \ No newline at end of file