[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