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 2015/03/24 22:20:22 UTC
[05/16] incubator-tamaya git commit: Fixed type parameter evaluation.
Fixed type parameter evaluation.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/commit/7bdbe56c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/tree/7bdbe56c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/diff/7bdbe56c
Branch: refs/heads/master
Commit: 7bdbe56c1879dbed0b305d903bb626d5f863e2c1
Parents: 42175ba
Author: anatole <an...@apache.org>
Authored: Tue Mar 24 15:54:08 2015 +0100
Committer: anatole <an...@apache.org>
Committed: Tue Mar 24 15:54:08 2015 +0100
----------------------------------------------------------------------
.../main/java/org/apache/tamaya/TypeLiteral.java | 17 ++++++++++-------
.../main/java/org/apache/tamaya/TypeLiteral.java | 14 ++++++++------
2 files changed, 18 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/7bdbe56c/java7/api/src/main/java/org/apache/tamaya/TypeLiteral.java
----------------------------------------------------------------------
diff --git a/java7/api/src/main/java/org/apache/tamaya/TypeLiteral.java b/java7/api/src/main/java/org/apache/tamaya/TypeLiteral.java
index edd69eb..a3abdf5 100644
--- a/java7/api/src/main/java/org/apache/tamaya/TypeLiteral.java
+++ b/java7/api/src/main/java/org/apache/tamaya/TypeLiteral.java
@@ -52,9 +52,10 @@ public class TypeLiteral<T> implements Serializable {
/**
* Creates a new TypeLiteral based on a given type.
* @param type the type , not null.
+ * @param <R> the literal generic type.
* @return the corresponding TypeLiteral, never null.
*/
- public static TypeLiteral<?> of(Type type){
+ public static <R> TypeLiteral<R> of(Type type){
return new TypeLiteral<>(type);
}
@@ -102,16 +103,18 @@ public class TypeLiteral<T> implements Serializable {
* @return the generic type parameter of the given single type generic interfaceType, or null.
*/
public static Type getTypeParameter(Class<?> clazz, Class<?> interfaceType) {
- Type type = clazz.getGenericSuperclass();
- if (type instanceof ParameterizedType) {
- if(interfaceType == null ||type.equals(interfaceType)){
+ Type[] types = clazz.getGenericInterfaces();
+ for(Type type:types) {
+ if (type instanceof ParameterizedType) {
ParameterizedType parameterizedType = (ParameterizedType) type;
- if (parameterizedType.getActualTypeArguments().length == 1) {
- return parameterizedType.getActualTypeArguments()[0];
+ if(interfaceType==null || parameterizedType.getRawType().equals(interfaceType)){
+ if (parameterizedType.getActualTypeArguments().length == 1) {
+ return parameterizedType.getActualTypeArguments()[0];
+ }
}
}
}
- return getTypeParameter(clazz, interfaceType);
+ return null;
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/7bdbe56c/java8/api/src/main/java/org/apache/tamaya/TypeLiteral.java
----------------------------------------------------------------------
diff --git a/java8/api/src/main/java/org/apache/tamaya/TypeLiteral.java b/java8/api/src/main/java/org/apache/tamaya/TypeLiteral.java
index 6edbb68..c77cadb 100644
--- a/java8/api/src/main/java/org/apache/tamaya/TypeLiteral.java
+++ b/java8/api/src/main/java/org/apache/tamaya/TypeLiteral.java
@@ -103,16 +103,18 @@ public class TypeLiteral<T> implements Serializable {
* @return the generic type parameter of the given single type generic interfaceType, or null.
*/
public static Type getTypeParameter(Class<?> clazz, Class<?> interfaceType) {
- Type type = clazz.getGenericSuperclass();
- if (type instanceof ParameterizedType) {
- if(interfaceType == null ||type.equals(interfaceType)){
+ Type[] types = clazz.getGenericInterfaces();
+ for(Type type:types) {
+ if (type instanceof ParameterizedType) {
ParameterizedType parameterizedType = (ParameterizedType) type;
- if (parameterizedType.getActualTypeArguments().length == 1) {
- return parameterizedType.getActualTypeArguments()[0];
+ if(interfaceType==null || parameterizedType.getRawType().equals(interfaceType)){
+ if (parameterizedType.getActualTypeArguments().length == 1) {
+ return parameterizedType.getActualTypeArguments()[0];
+ }
}
}
}
- return getTypeParameter(clazz, interfaceType);
+ return null;
}
/**