Author: pete.muir(a)jboss.org
Date: 2009-08-18 11:26:57 -0400 (Tue, 18 Aug 2009)
New Revision: 3549
Modified:
ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/WBClassImpl.java
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/annotatedItem/DeclaringTypeTest.java
Log:
WBRI-369
Modified:
ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/WBClassImpl.java
===================================================================
---
ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/WBClassImpl.java 2009-08-18
13:18:51 UTC (rev 3548)
+++
ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/WBClassImpl.java 2009-08-18
15:26:57 UTC (rev 3549)
@@ -19,6 +19,7 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
+import java.lang.reflect.Member;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.lang.reflect.Type;
@@ -201,7 +202,7 @@
{
field.setAccessible(true);
}
- WBField<?, ?> annotatedField = WBFieldImpl.of(field, this,
classTransformer);
+ WBField<?, ?> annotatedField = WBFieldImpl.of(field,
getDeclaringWBClass(field, classTransformer), classTransformer);
this.fields.add(annotatedField);
if (c == rawType)
{
@@ -249,11 +250,10 @@
});
this.declaredConstructorsBySignature = new HashMap<ConstructorSignature,
WBConstructor<?>>();
- for (Constructor<?> constructor : rawType.getDeclaredConstructors())
+ for (Constructor<Object> constructor : rawType.getDeclaredConstructors())
{
- @SuppressWarnings("unchecked")
- Constructor<T> c = (Constructor<T>) constructor;
- WBConstructor<T> annotatedConstructor = WBConstructorImpl.of(c, this,
classTransformer);
+ // TODO Fix this cast
+ WBConstructor<T> annotatedConstructor = (WBConstructor<T>)
WBConstructorImpl.of(constructor, getDeclaringWBClass(constructor, classTransformer),
classTransformer);
if (!constructor.isAccessible())
{
constructor.setAccessible(true);
@@ -330,7 +330,7 @@
method.setAccessible(true);
}
- WBMethod<?, ?> annotatedMethod = WBMethodImpl.of(method, this,
classTransformer);
+ WBMethod<?, ?> annotatedMethod = WBMethodImpl.of(method,
getDeclaringWBClass(method, classTransformer), classTransformer);
this.methods.add(annotatedMethod);
this.methodsBySignature.put(annotatedMethod.getSignature(),
annotatedMethod);
if (c == rawType)
@@ -360,6 +360,20 @@
}
}
}
+
+ @SuppressWarnings("unchecked")
+ private <X> WBClass<X> getDeclaringWBClass(Member member, ClassTransformer
transformer)
+ {
+ if (member.getDeclaringClass().equals(getJavaClass()))
+ {
+ return (WBClass<X>) this;
+ }
+ else
+ {
+ WBClass<X> loadClass = transformer.loadClass(member.getDeclaringClass());
+ return loadClass;
+ }
+ }
/**
* Gets the implementing class
Modified:
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/annotatedItem/DeclaringTypeTest.java
===================================================================
---
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/annotatedItem/DeclaringTypeTest.java 2009-08-18
13:18:51 UTC (rev 3548)
+++
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/annotatedItem/DeclaringTypeTest.java 2009-08-18
15:26:57 UTC (rev 3549)
@@ -33,7 +33,7 @@
public class DeclaringTypeTest extends AbstractWebBeansTest
{
- @Test(groups="broken")
+ @Test
public void testInheritance()
{
AnnotatedType<Child> type =
getCurrentManager().createAnnotatedType(Child.class);
Show replies by date