You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tamaya.apache.org by jo...@apache.org on 2017/10/03 17:57:14 UTC
[4/5] incubator-tamaya-sandbox git commit: TAMAYA-260 - Improve how
parameterized types are handled.
TAMAYA-260 - Improve how parameterized types are handled.
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/3aad3568
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/tree/3aad3568
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/diff/3aad3568
Branch: refs/heads/master
Commit: 3aad3568d532798a60a1636a5d54bcb264cdf309
Parents: 4200f87
Author: John D. Ament <jo...@gmail.com>
Authored: Wed Sep 20 23:35:59 2017 -0400
Committer: John Ament <jo...@apache.org>
Committed: Tue Oct 3 13:49:30 2017 -0400
----------------------------------------------------------------------
.../cdi/MicroprofileCDIExtension.java | 45 ++++++++++----------
tamaya-sandbox.iml | 12 ------
2 files changed, 23 insertions(+), 34 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/3aad3568/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 550b9e0..0e30b78 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
@@ -20,13 +20,18 @@ import org.eclipse.microprofile.config.inject.ConfigProperty;
import javax.enterprise.event.Observes;
import javax.enterprise.inject.Instance;
-import javax.enterprise.inject.spi.*;
+import javax.enterprise.inject.spi.AfterBeanDiscovery;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.inject.spi.Extension;
+import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.ProcessBean;
+import javax.enterprise.inject.spi.ProcessProducerMethod;
import javax.inject.Provider;
-import java.lang.reflect.Field;
-import java.lang.reflect.Member;
-import java.lang.reflect.Method;
+import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
-import java.util.*;
+import java.util.HashSet;
+import java.util.Set;
import java.util.logging.Logger;
@@ -63,25 +68,12 @@ public class MicroprofileCDIExtension implements Extension {
boolean configured = false;
for (InjectionPoint injectionPoint : ips) {
if (injectionPoint.getAnnotated().isAnnotationPresent(ConfigProperty.class)) {
- System.err.println("Configured: " + injectionPoint);
+ LOG.fine("Configuring: " + injectionPoint);
final ConfigProperty annotation = injectionPoint.getAnnotated().getAnnotation(ConfigProperty.class);
String key = !annotation.name().isEmpty()?annotation.name():MicroprofileConfigurationProducer.getDefaultKey(injectionPoint);
- Member member = injectionPoint.getMember();
- if(member instanceof Field) {
- Field f = (Field)member;
- if(!Instance.class.equals(f.getType()) &&
- !Provider.class.equals(f.getType())){
- types.add(f.getType());
- }
- }else if(member instanceof Method){
- Method m = (Method)member;
- if(!Instance.class.equals(m.getParameterTypes()[0]) &&
- !Provider.class.equals(m.getParameterTypes()[0])){
- types.add(m.getParameterTypes()[0]);
- }
- }else{
- continue;
- }
+ Type originalType = injectionPoint.getType();
+ Type convertedType = unwrapType(originalType);
+ types.add(convertedType);
configured = true;
LOG.finest(() -> "Enabling Tamaya Microprofile Configuration on bean: " + configuredType.getName());
configuredType.addConfiguredMember(injectionPoint, key);
@@ -105,5 +97,14 @@ public class MicroprofileCDIExtension implements Extension {
}
}
+ private Type unwrapType(Type type) {
+ if(type instanceof ParameterizedType) {
+ Type rawType = ((ParameterizedType) type).getRawType();
+ if(rawType == Provider.class || rawType == Instance.class) {
+ return ((ParameterizedType) type).getActualTypeArguments()[0];
+ }
+ }
+ return type;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/3aad3568/tamaya-sandbox.iml
----------------------------------------------------------------------
diff --git a/tamaya-sandbox.iml b/tamaya-sandbox.iml
deleted file mode 100644
index a0d4a1e..0000000
--- a/tamaya-sandbox.iml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" version="4">
- <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
- <output url="file://$MODULE_DIR$/target/classes" />
- <output-test url="file://$MODULE_DIR$/target/test-classes" />
- <content url="file://$MODULE_DIR$">
- <excludeFolder url="file://$MODULE_DIR$/target" />
- </content>
- <orderEntry type="inheritedJdk" />
- <orderEntry type="sourceFolder" forTests="false" />
- </component>
-</module>
\ No newline at end of file