[webbeans-commits] Webbeans SVN: r1100 - ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector and 4 other directories.
webbeans-commits at lists.jboss.org
webbeans-commits at lists.jboss.org
Mon Jan 19 18:06:59 EST 2009
Author: pete.muir at jboss.org
Date: 2009-01-19 18:06:59 -0500 (Mon, 19 Jan 2009)
New Revision: 1100
Added:
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/simple/Leopard_Broken.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/simple/Tiger.java
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedClass.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedItem.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedItem.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedMember.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedType.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedClassImpl.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedParameterImpl.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/bootstrap/BootstrapTest.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/simple/SimpleBeanDefinitionTest.java
Log:
WBRI-105 and tidy up simple bean a bit
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java 2009-01-19 22:53:13 UTC (rev 1099)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java 2009-01-19 23:06:59 UTC (rev 1100)
@@ -305,13 +305,13 @@
/**
* Validates the type
*/
- private void checkType()
+ protected void checkType()
{
- if (Reflections.isNonStaticInnerClass(type))
+ if (getAnnotatedItem().isNonStaticMemberClass())
{
throw new DefinitionException("Simple Web Bean " + type + " cannot be a non-static inner class");
}
- if (Reflections.isParameterizedType(type))
+ if (getAnnotatedItem().isParameterizedType())
{
throw new DefinitionException("Simple Web Bean " + type + " cannot be a parameterized type");
}
@@ -321,6 +321,22 @@
throw new DefinitionException("Simple Web Beans declaring a passivating scope must have a serializable implementation class");
}
}
+
+ @Override
+ protected void checkBeanImplementation()
+ {
+ super.checkBeanImplementation();
+ if (!scopeType.equals(Dependent.class))
+ {
+ for (AnnotatedField<?> field : getAnnotatedItem().getFields())
+ {
+ if (field.isPublic() && !field.isStatic())
+ {
+ throw new DefinitionException("Normal scoped Web Bean implementation class has a public field " + getAnnotatedItem());
+ }
+ }
+ }
+ }
/**
* Initializes the constructor
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedClass.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedClass.java 2009-01-19 22:53:13 UTC (rev 1099)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedClass.java 2009-01-19 23:06:59 UTC (rev 1100)
@@ -142,5 +142,14 @@
* @return The abstracted superclass, null if there is no superclass
*/
public AnnotatedClass<?> getSuperclass();
+
+ /**
+ * Determine if this is a non-static member class
+ *
+ * @return true if this is a non-static member
+ */
+ public boolean isNonStaticMemberClass();
+
+ public boolean isParameterizedType();
}
\ No newline at end of file
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedItem.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedItem.java 2009-01-19 22:53:13 UTC (rev 1099)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedItem.java 2009-01-19 23:06:59 UTC (rev 1100)
@@ -166,6 +166,13 @@
* @return True if proxyable, false otherwise
*/
public boolean isProxyable();
+
+ /**
+ * Indicates if this annotated item is public
+ *
+ * @return if public, returns true
+ */
+ public boolean isPublic();
/**
* Gets the name of this AnnotatedItem
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedItem.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedItem.java 2009-01-19 22:53:13 UTC (rev 1099)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedItem.java 2009-01-19 23:06:59 UTC (rev 1100)
@@ -151,6 +151,11 @@
{
return delegate().isProxyable();
}
+
+ public boolean isPublic()
+ {
+ return delegate().isPublic();
+ }
/**
* Overridden method into delegate
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedMember.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedMember.java 2009-01-19 22:53:13 UTC (rev 1099)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedMember.java 2009-01-19 23:06:59 UTC (rev 1100)
@@ -19,6 +19,7 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.Member;
+import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -98,6 +99,8 @@
// Cached string representation
private String toString;
+
+ private final boolean _public;
/**
* Constructor
@@ -108,6 +111,7 @@
{
super(annotationMap, declaredAnnotationMap);
name = member.getName();
+ _public = Modifier.isPublic(member.getModifiers());
}
/**
@@ -138,6 +142,11 @@
{
return Reflections.isTransient(getDelegate());
}
+
+ public boolean isPublic()
+ {
+ return _public;
+ }
/**
* Gets the current value of the member
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedType.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedType.java 2009-01-19 22:53:13 UTC (rev 1099)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedType.java 2009-01-19 23:06:59 UTC (rev 1100)
@@ -17,6 +17,8 @@
package org.jboss.webbeans.introspector.jlr;
+import java.lang.reflect.Modifier;
+
import org.jboss.webbeans.introspector.AnnotatedClass;
import org.jboss.webbeans.util.Reflections;
@@ -38,6 +40,7 @@
// Cached string representation
private String toString;
+ private final boolean _public;
/**
* Constructor
@@ -56,6 +59,7 @@
{
this.superclass = null;
}
+ this._public = Modifier.isFinal(type.getModifiers());
}
public AbstractAnnotatedType(AnnotationMap annotationMap, Class<T> type)
@@ -86,6 +90,11 @@
{
return Reflections.isFinal(getDelegate());
}
+
+ public boolean isPublic()
+ {
+ return _public;
+ }
/**
* Gets the name of the type
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedClassImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedClassImpl.java 2009-01-19 22:53:13 UTC (rev 1099)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedClassImpl.java 2009-01-19 23:06:59 UTC (rev 1100)
@@ -38,6 +38,7 @@
import org.jboss.webbeans.introspector.AnnotatedField;
import org.jboss.webbeans.introspector.AnnotatedMethod;
import org.jboss.webbeans.util.Names;
+import org.jboss.webbeans.util.Reflections;
import org.jboss.webbeans.util.Strings;
import com.google.common.collect.ForwardingMap;
@@ -255,6 +256,9 @@
// Cached string representation
private String toString;
+ private final boolean _nonStaticMemberClass;
+ private final boolean _parameterizedType;
+
public static <T> AnnotatedClass<T> of(Class<T> clazz)
{
return new AnnotatedClassImpl<T>(clazz, clazz, clazz.getAnnotations(), clazz.getDeclaredAnnotations());
@@ -293,6 +297,8 @@
this.declaredFields = new HashSet<AnnotatedField<?>>();
this.declaredAnnotatedFields = new AnnotatedFieldMap();
this.declaredMetaAnnotatedFields = new AnnotatedFieldMap();
+ this._nonStaticMemberClass = Reflections.isNonMemberInnerClass(rawType);
+ this._parameterizedType = Reflections.isParameterizedType(rawType);
for (Class<?> c = clazz; c != Object.class && c != null; c = c.getSuperclass())
{
for (Field field : c.getDeclaredFields())
@@ -493,6 +499,16 @@
return clazz;
}
+ public boolean isNonStaticMemberClass()
+ {
+ return _nonStaticMemberClass;
+ }
+
+ public boolean isParameterizedType()
+ {
+ return _parameterizedType;
+ }
+
/**
* Gets the actual type arguments
*
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedParameterImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedParameterImpl.java 2009-01-19 22:53:13 UTC (rev 1099)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedParameterImpl.java 2009-01-19 23:06:59 UTC (rev 1100)
@@ -45,6 +45,7 @@
private final boolean _final = false;
// The static state
private final boolean _static = false;
+ private final boolean _public = false;
private final AnnotatedMember<?, ?> declaringMember;
// Cached string representation
@@ -127,6 +128,11 @@
{
return _static;
}
+
+ public boolean isPublic()
+ {
+ return _public;
+ }
/**
* Gets the current value
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java 2009-01-19 22:53:13 UTC (rev 1099)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java 2009-01-19 23:06:59 UTC (rev 1100)
@@ -197,7 +197,7 @@
* @param clazz Class to Check
* @return True if static, false otherwise
*/
- public static boolean isNonStaticInnerClass(Class<?> clazz)
+ public static boolean isNonMemberInnerClass(Class<?> clazz)
{
return clazz.isMemberClass() && !isStatic(clazz);
}
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/bootstrap/BootstrapTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/bootstrap/BootstrapTest.java 2009-01-19 22:53:13 UTC (rev 1099)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/bootstrap/BootstrapTest.java 2009-01-19 23:06:59 UTC (rev 1100)
@@ -10,6 +10,7 @@
import org.jboss.webbeans.bean.EnterpriseBean;
import org.jboss.webbeans.bean.ProducerMethodBean;
import org.jboss.webbeans.bean.SimpleBean;
+import org.jboss.webbeans.test.mock.MockBootstrap;
import org.jboss.webbeans.test.unit.AbstractTest;
import org.testng.annotations.Test;
@@ -201,7 +202,9 @@
@Test(groups="bootstrap", expectedExceptions=IllegalStateException.class)
public void testDiscoverFails()
{
- deployBeans();
+ MockBootstrap bootstrap = new MockBootstrap();
+ bootstrap.setWebBeanDiscovery(null);
+ bootstrap.boot();
}
@Test(groups="bootstrap")
Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/simple/Leopard_Broken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/simple/Leopard_Broken.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/simple/Leopard_Broken.java 2009-01-19 23:06:59 UTC (rev 1100)
@@ -0,0 +1,11 @@
+package org.jboss.webbeans.tck.tests.implementation.simple;
+
+import javax.webbeans.RequestScoped;
+
+ at RequestScoped
+class Leopard_Broken
+{
+
+ public String name = "pete";
+
+}
Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/simple/Leopard_Broken.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/simple/SimpleBeanDefinitionTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/simple/SimpleBeanDefinitionTest.java 2009-01-19 22:53:13 UTC (rev 1099)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/simple/SimpleBeanDefinitionTest.java 2009-01-19 23:06:59 UTC (rev 1100)
@@ -301,4 +301,27 @@
assert false;
}
+ @Test @SpecAssertion(section="3.2")
+ public void testDependentScopedBeanCanHavePublicField() throws Exception
+ {
+ deployBeans(Tiger.class);
+ new RunInDependentContext()
+ {
+
+ @Override
+ protected void execute() throws Exception
+ {
+ assert manager.getInstanceByType(Tiger.class).name.equals("pete");
+ }
+
+ }.run();
+
+ }
+
+ @Test(expectedExceptions=DefinitionException.class) @SpecAssertion(section="3.2")
+ public void testNonDependentScopedBeanCanNotHavePublicField()
+ {
+ deployBeans(Leopard_Broken.class);
+ }
+
}
Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/simple/Tiger.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/simple/Tiger.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/simple/Tiger.java 2009-01-19 23:06:59 UTC (rev 1100)
@@ -0,0 +1,11 @@
+package org.jboss.webbeans.tck.tests.implementation.simple;
+
+import javax.webbeans.Dependent;
+
+ at Dependent
+class Tiger
+{
+
+ public String name = "pete";
+
+}
Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/simple/Tiger.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
More information about the weld-commits
mailing list