[seam-commits] Seam SVN: r12907 - in modules/security/trunk/impl: src/main/java/org/jboss/seam/security/management and 2 other directories.

seam-commits at lists.jboss.org seam-commits at lists.jboss.org
Sun May 30 08:09:37 EDT 2010


Author: shane.bryzak at jboss.com
Date: 2010-05-30 08:09:36 -0400 (Sun, 30 May 2010)
New Revision: 12907

Removed:
   modules/security/trunk/impl/src/main/java/org/jboss/seam/security/util/AnnotatedBeanProperty.java
Modified:
   modules/security/trunk/impl/pom.xml
   modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/JpaIdentityStore.java
   modules/security/trunk/impl/src/main/java/org/jboss/seam/security/permission/JpaPermissionStore.java
Log:
added weldx to project


Modified: modules/security/trunk/impl/pom.xml
===================================================================
--- modules/security/trunk/impl/pom.xml	2010-05-30 11:51:36 UTC (rev 12906)
+++ modules/security/trunk/impl/pom.xml	2010-05-30 12:09:36 UTC (rev 12907)
@@ -32,6 +32,12 @@
       </dependency>
 
       <dependency>
+         <groupId>org.jboss.weld</groupId>
+         <artifactId>weld-extensions</artifactId>
+         <version>1.0.0-SNAPSHOT</version>
+      </dependency>
+
+      <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <scope>provided</scope>

Modified: modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/JpaIdentityStore.java
===================================================================
--- modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/JpaIdentityStore.java	2010-05-30 11:51:36 UTC (rev 12906)
+++ modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/JpaIdentityStore.java	2010-05-30 12:09:36 UTC (rev 12907)
@@ -11,7 +11,7 @@
 
 import org.jboss.seam.security.annotations.management.IdentityProperty;
 import org.jboss.seam.security.annotations.management.PropertyType;
-import org.jboss.seam.security.util.AnnotatedBeanProperty;
+import org.jboss.weld.extensions.util.AnnotatedBeanProperty;
 import org.picketlink.idm.api.Credential;
 import org.picketlink.idm.api.Group;
 import org.picketlink.idm.api.IdentityType;

Modified: modules/security/trunk/impl/src/main/java/org/jboss/seam/security/permission/JpaPermissionStore.java
===================================================================
--- modules/security/trunk/impl/src/main/java/org/jboss/seam/security/permission/JpaPermissionStore.java	2010-05-30 11:51:36 UTC (rev 12906)
+++ modules/security/trunk/impl/src/main/java/org/jboss/seam/security/permission/JpaPermissionStore.java	2010-05-30 12:09:36 UTC (rev 12907)
@@ -25,7 +25,7 @@
 import org.jboss.seam.security.management.IdentityManager;
 //import org.jboss.seam.security.management.JpaIdentityStore;
 import org.jboss.seam.security.permission.PermissionMetadata.ActionSet;
-import org.jboss.seam.security.util.AnnotatedBeanProperty;
+import org.jboss.weld.extensions.util.AnnotatedBeanProperty;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

Deleted: modules/security/trunk/impl/src/main/java/org/jboss/seam/security/util/AnnotatedBeanProperty.java
===================================================================
--- modules/security/trunk/impl/src/main/java/org/jboss/seam/security/util/AnnotatedBeanProperty.java	2010-05-30 11:51:36 UTC (rev 12906)
+++ modules/security/trunk/impl/src/main/java/org/jboss/seam/security/util/AnnotatedBeanProperty.java	2010-05-30 12:09:36 UTC (rev 12907)
@@ -1,367 +0,0 @@
-package org.jboss.seam.security.util;
-
-import java.beans.Introspector;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-import java.lang.ExceptionInInitializerError;
-
-/**
- * A convenience class for working with an annotated property (either a field or method) of
- * a JavaBean class.  By providing an isMatch() method in a concrete implementation
- * of this class, annotations may be matched on their attribute values or other
- * conditions.
- *  
- * @author Shane Bryzak
- */
-public class AnnotatedBeanProperty<T extends Annotation>
-{
-   private Field propertyField;
-   private Method propertyGetter;
-   private Method propertySetter;
-   private String name;
-   private Type propertyType;
-   private T annotation;
-   
-   private boolean isFieldProperty;
-   private boolean set = false;
-   
-   private Class<?> targetClass;
-   private Class<T> annotationClass;
-   private boolean scanned = false;
-   
-   /**
-    * Default constructor
-    * 
-    * @param cls The class to scan for the property
-    * @param annotationClass The annotation class to scan for. Specified attribute
-    * values may be scanned for by providing an implementation of the isMatch() method. 
-    */
-   public AnnotatedBeanProperty(Class<?> cls, Class<T> annotationClass)
-   {            
-      this.targetClass = cls;
-      this.annotationClass = annotationClass;
-   }   
-   
-   /**
-    * Scans the target class to locate the annotated property
-    */
-   private void scan()
-   {      
-      // First check declared fields
-      for (Field f : targetClass.getDeclaredFields())
-      {
-         if (f.isAnnotationPresent(annotationClass) && 
-               isMatch(f.getAnnotation(annotationClass))) 
-         {
-            setupFieldProperty(f);
-            this.annotation = f.getAnnotation(annotationClass);            
-            set = true;
-            return;
-         }
-      }      
-      
-      // Then check public fields, in case it's inherited
-      for (Field f : targetClass.getFields())
-      {
-         if (f.isAnnotationPresent(annotationClass) &&
-               isMatch(f.getAnnotation(annotationClass))) 
-         {
-            this.annotation = f.getAnnotation(annotationClass);
-            setupFieldProperty(f);
-            set = true;
-            return;
-         }
-      }
-      
-      // Then check public methods (we ignore private methods)
-      for (Method m : targetClass.getMethods())
-      {
-         if (m.isAnnotationPresent(annotationClass) &&
-               isMatch(m.getAnnotation(annotationClass)))
-         {
-            this.annotation = m.getAnnotation(annotationClass);
-            String methodName = m.getName();
-            
-            if ( m.getName().startsWith("get") )
-            {
-               this.name = Introspector.decapitalize( m.getName().substring(3) );
-            }
-            else if ( methodName.startsWith("is") )
-            {
-               this.name = Introspector.decapitalize( m.getName().substring(2) );
-            }            
-            
-            if (this.name != null)
-            {
-               this.propertyGetter = getGetterMethod(targetClass, this.name);
-               this.propertySetter = getSetterMethod(targetClass, this.name);
-               this.propertyType = this.propertyGetter.getGenericReturnType();
-               isFieldProperty = false;               
-               set = true;
-            }
-            else
-            {
-               throw new IllegalStateException("Invalid accessor method, must start with 'get' or 'is'.  " +
-                     "Method: " + m + " in class: " + targetClass);
-            }
-         }
-      }   
-      
-      scanned = true;
-   }
-   
-   /**
-    * This method may be overridden by a subclass. It can be used to scan 
-    * for an annotation with particular attribute values, or to allow a match
-    * based on more complex logic.  
-    * 
-    * @param annotation The potential match
-    * @return true if the specified annotation is a match
-    */
-   protected boolean isMatch(T annotation)
-   {
-      return true;
-   }
-
-   /**
-    * This method sets the property value for a specified bean to the specified 
-    * value.  The property to be set is either a field or setter method that
-    * matches the specified annotation class and returns true for the isMatch() 
-    * method.
-    * 
-    * @param bean The bean containing the property to set
-    * @param value The new property value
-    * @throws Exception
-    */
-   public void setValue(Object bean, Object value) throws Exception
-   {
-      if (!scanned) scan();
-      
-      if (isFieldProperty)
-      {
-         setFieldValue(propertyField, bean, value);        
-      }
-      else
-      {
-         invokeMethod(propertySetter, bean, value);
-      }
-   }
-    
-   /**
-    * Returns the property value for the specified bean.  The property to be
-    * returned is either a field or getter method that matches the specified
-    * annotation class and returns true for the isMatch() method.
-    * 
-    * @param bean The bean to read the property from
-    * @return The property value
-    * @throws Exception
-    */
-   public Object getValue(Object bean) throws Exception
-   {
-      if (!scanned) scan();
-      
-      if (isFieldProperty)
-      {
-         return getFieldValue(propertyField, bean);  
-      }
-      else
-      {
-         return invokeMethod(propertyGetter, bean);
-      }
-   }
-   
-   /**
-    * Returns the name of the property. If the property is a field, then the
-    * field name is returned.  Otherwise, if the property is a method, then the
-    * name that is returned is the getter method name without the "get" or "is"
-    * prefix, and a lower case first letter.
-    * 
-    * @return The name of the property
-    */
-   public String getName()
-   {
-      if (!scanned) scan();      
-      return name;
-   }
-   
-   /**
-    * Returns the annotation type
-    * 
-    * @return The annotation type
-    */
-   public T getAnnotation()
-   {
-      if (!scanned) scan();
-      return annotation;
-   }
-   
-   /**
-    * Returns the property type
-    * 
-    * @return The property type
-    */
-   public Type getPropertyType()
-   {
-      if (!scanned) scan();
-      return propertyType;
-   }
-   
-   /**
-    * Returns true if the property has been successfully located, otherwise
-    * returns false.
-    * 
-    * @return
-    */
-   public boolean isSet()
-   {
-      if (!scanned) scan();
-      return set;
-   }
-   
-   private void setupFieldProperty(Field propertyField)
-   {
-      this.propertyField = propertyField;
-      isFieldProperty = true;
-      this.name = propertyField.getName();
-      this.propertyType = propertyField.getGenericType();
-   }   
-   
-   private Object getFieldValue(Field field, Object obj)
-   {
-      field.setAccessible(true);
-      try
-      {
-         return field.get(obj);
-      }
-      catch (IllegalAccessException e)
-      {
-         throw new RuntimeException(buildGetFieldValueErrorMessage(field, obj), e);        
-      }      
-      catch (NullPointerException ex)
-      {         
-         NullPointerException ex2 = new NullPointerException(
-               buildGetFieldValueErrorMessage(field, obj));
-         ex2.initCause(ex.getCause());
-         throw ex2;
-      }   
-   }
-   
-   private String buildGetFieldValueErrorMessage(Field field, Object obj)
-   {
-      return String.format("Exception reading [%s] field from object [%s].",
-            field.getName(), obj);
-   }
-   
-   private void setFieldValue(Field field, Object obj, Object value)
-   {
-      field.setAccessible(true);
-      try
-      {
-         field.set(obj, value);
-      }
-      catch (IllegalAccessException e)
-      {
-         throw new RuntimeException(buildSetFieldValueErrorMessage(field, obj, value), e);
-      }
-      catch (NullPointerException ex)
-      {         
-         NullPointerException ex2 = new NullPointerException(
-               buildSetFieldValueErrorMessage(field, obj, value));
-         ex2.initCause(ex.getCause());
-         throw ex2;
-      }
-   }
-   
-   private String buildSetFieldValueErrorMessage(Field field, Object obj, Object value)
-   {
-      return String.format("Exception setting [%s] field on object [%s] to value [%s]",
-            field.getName(), obj, value);
-   }
-   
-   private Object invokeMethod(Method method, Object obj, Object... args)
-   {
-      try
-      {
-         return method.invoke(obj, args);
-      }
-      catch (IllegalAccessException ex)
-      {
-         throw new RuntimeException(buildInvokeMethodErrorMessage(method, obj, args), ex);
-      }
-      catch (IllegalArgumentException ex)
-      {
-         throw new IllegalArgumentException(buildInvokeMethodErrorMessage(method, obj, args), ex.getCause()); 
-      }
-      catch (InvocationTargetException ex)
-      {
-         throw new RuntimeException(buildInvokeMethodErrorMessage(method, obj, args), ex);
-      }
-      catch (NullPointerException ex)
-      {         
-         NullPointerException ex2 = new NullPointerException(buildInvokeMethodErrorMessage(method, obj, args));
-         ex2.initCause(ex.getCause());
-         throw ex2;
-      }
-      catch (ExceptionInInitializerError e)
-      {
-         throw new RuntimeException(buildInvokeMethodErrorMessage(method, obj, args), e);
-      }
-   }   
-   
-   private String buildInvokeMethodErrorMessage(Method method, Object obj, Object... args)
-   {
-      StringBuilder message = new StringBuilder(String.format(
-            "Exception invoking method [%s] on object [%s], using arguments [",
-            method.getName(), obj));
-      if (args != null) for (int i = 0; i < args.length; i++) message.append((i > 0 ? "," : "") + args[i]);
-      message.append("]");
-      return message.toString();
-   }
-   
-   private Method getSetterMethod(Class<?> clazz, String name)
-   {
-      Method[] methods = clazz.getMethods();
-      for (Method method: methods)
-      {
-         String methodName = method.getName();
-         if ( methodName.startsWith("set") && method.getParameterTypes().length==1 )
-         {
-            if ( Introspector.decapitalize( methodName.substring(3) ).equals(name) )
-            {
-               return method;
-            }
-         }
-      }
-      throw new IllegalArgumentException("no such setter method: " + clazz.getName() + '.' + name);
-   }
-   
-   private Method getGetterMethod(Class<?> clazz, String name)
-   {
-      Method[] methods = clazz.getMethods();
-      for (Method method: methods)
-      {
-         String methodName = method.getName();
-         if ( method.getParameterTypes().length==0 )
-         {
-            if ( methodName.startsWith("get") )
-            {
-               if ( Introspector.decapitalize( methodName.substring(3) ).equals(name) )
-               {
-                  return method;
-               }
-            }
-            else if ( methodName.startsWith("is") )
-            {
-               if ( Introspector.decapitalize( methodName.substring(2) ).equals(name) )
-               {
-                  return method;
-               }
-            }
-         }
-      }
-      throw new IllegalArgumentException("no such getter method: " + clazz.getName() + '.' + name);
-   }   
-}
\ No newline at end of file



More information about the seam-commits mailing list