public static Class resolveToClass(Type type) { if (type == null) { throw new NullPointerException("No null type accepted"); } if (type instanceof Class<?>) { return (Class<?>)type; } else if (type instanceof TypeVariable) { TypeVariable resolvedTypeVariable = (TypeVariable)type; return resolveToClass(resolvedTypeVariable.getBounds()[0]); } else { throw new UnsupportedOperationException("Type resolution of " + type + " not yet implemented"); } }
public static Class resolveToClass(Type type) { if (type == null) { throw new NullPointerException("No null type accepted"); } if (type instanceof Class<?>) { return (Class<?>)type; } else if (type instanceof TypeVariable) { TypeVariable resolvedTypeVariable = (TypeVariable)type; return resolveToClass(resolvedTypeVariable.getBounds()[0]); } else { throw new UnsupportedOperationException("Type resolution of " + type + " not yet implemented"); } }
public static Class<?> resolveToClass(Type implementation, Class<?> type, int parameterIndex) { if (implementation == null) { throw new NullPointerException("No null type accepted"); } // First resolve to type Type resolvedType = resolve(implementation, type, parameterIndex); // if (resolvedType != null) { return resolveToClass(resolvedType); } else { return null; } }
public static Class<?> resolveToClass(Type implementation, Class<?> type, int parameterIndex) { if (implementation == null) { throw new NullPointerException("No null type accepted"); } // First resolve to type Type resolvedType = resolve(implementation, type, parameterIndex); // if (resolvedType != null) { return resolveToClass(resolvedType); } else { return null; } }
@Test public void testZoo() { class A extends ThreadLocal {} TypeVariable resolved = (TypeVariable)Introspector.resolve(A.class, ThreadLocal.class, 0); assertEquals("T", resolved.getName()); assertEquals(Collections.<Type>singletonList(Object.class), Arrays.asList(resolved.getBounds())); assertEquals(Object.class, Introspector.resolveToClass(A.class, ThreadLocal.class, 0)); }
@Test public void testZoo() { class A extends ThreadLocal {} TypeVariable resolved = (TypeVariable)Introspector.resolve(A.class, ThreadLocal.class, 0); assertEquals("T", resolved.getName()); assertEquals(Collections.<Type>singletonList(Object.class), Arrays.asList(resolved.getBounds())); assertEquals(Object.class, Introspector.resolveToClass(A.class, ThreadLocal.class, 0)); }
@Test public void testFoo() { Type resolved = Introspector.resolve(ThreadLocal.class, ThreadLocal.class, 0); assertTrue(resolved instanceof TypeVariable); TypeVariable tv = (TypeVariable)resolved; assertEquals(ThreadLocal.class, tv.getGenericDeclaration()); assertEquals(Object.class, Introspector.resolveToClass(ThreadLocal.class, ThreadLocal.class, 0)); }
@Test public void testDaa() { Type resolved = Introspector.resolve(InheritableThreadLocal.class, ThreadLocal.class, 0); assertTrue(resolved instanceof TypeVariable); TypeVariable tv = (TypeVariable)resolved; assertEquals(InheritableThreadLocal.class, tv.getGenericDeclaration()); assertEquals(Object.class, Introspector.resolveToClass(InheritableThreadLocal.class, ThreadLocal.class, 0)); }
@Test public void testFoo() { Type resolved = Introspector.resolve(ThreadLocal.class, ThreadLocal.class, 0); assertTrue(resolved instanceof TypeVariable); TypeVariable tv = (TypeVariable)resolved; assertEquals(ThreadLocal.class, tv.getGenericDeclaration()); assertEquals(Object.class, Introspector.resolveToClass(ThreadLocal.class, ThreadLocal.class, 0)); }
@Test public void testDaa() { Type resolved = Introspector.resolve(InheritableThreadLocal.class, ThreadLocal.class, 0); assertTrue(resolved instanceof TypeVariable); TypeVariable tv = (TypeVariable)resolved; assertEquals(InheritableThreadLocal.class, tv.getGenericDeclaration()); assertEquals(Object.class, Introspector.resolveToClass(InheritableThreadLocal.class, ThreadLocal.class, 0)); }
@Test public void testJuu() { class A extends InheritableThreadLocal<String> {} Type resolved = Introspector.resolve(A.class, ThreadLocal.class, 0); assertEquals(String.class, resolved); assertEquals(String.class, Introspector.resolveToClass(A.class, ThreadLocal.class, 0)); }
@Test public void testJuu() { class A extends InheritableThreadLocal<String> {} Type resolved = Introspector.resolve(A.class, ThreadLocal.class, 0); assertEquals(String.class, resolved); assertEquals(String.class, Introspector.resolveToClass(A.class, ThreadLocal.class, 0)); }
@Test public void testBar() { class A extends ThreadLocal<String> {} Type resolved = Introspector.resolve(A.class, ThreadLocal.class, 0); assertEquals(String.class, resolved); assertEquals(String.class, Introspector.resolveToClass(A.class, ThreadLocal.class, 0)); }
@Test public void testBar() { class A extends ThreadLocal<String> {} Type resolved = Introspector.resolve(A.class, ThreadLocal.class, 0); assertEquals(String.class, resolved); assertEquals(String.class, Introspector.resolveToClass(A.class, ThreadLocal.class, 0)); }
@Override public Map<ContextualParameter, Object> getContextualArguments(Set<ContextualParameter> parameters) { Map<ContextualParameter, Object> args = super.getContextualArguments(parameters); for (ContextualParameter parameter : parameters) { ContextualParameter contextualParameter = (ContextualParameter)parameter; if (Event.class.isAssignableFrom(contextualParameter.getType())) { Class payloadType = Introspector.resolveToClass(contextualParameter.getGenericType(), Event.class, 0); if (payloadType.isInstance(req.getEvent().getValue())) { if (args.isEmpty()) { args = new HashMap<ContextualParameter, Object>(); } args.put(parameter, new Event(req.getEvent().getName(), req.getEvent().getValue())); } } } return args; }
@Override public Map<ContextualParameter, Object> getContextualArguments(Set<ContextualParameter> parameters) { Map<ContextualParameter, Object> args = super.getContextualArguments(parameters); for (ContextualParameter parameter : parameters) { ContextualParameter contextualParameter = (ContextualParameter)parameter; if (Event.class.isAssignableFrom(contextualParameter.getType())) { Class payloadType = Introspector.resolveToClass(contextualParameter.getGenericType(), Event.class, 0); if (payloadType.isInstance(req.getEvent().getValue())) { if (args.isEmpty()) { args = new HashMap<ContextualParameter, Object>(); } args.put(parameter, new Event(req.getEvent().getName(), req.getEvent().getValue())); } } } return args; }