1 package net.sf.jldapbeans.lang.annotation; 2 3 import java.lang.reflect.*; 4 5 public enum LdapModifier { 6 /*** Modifier for ASBTRACT <tt>objectClass</tt>es */ 7 ABSTRACT, 8 /*** Modifier for AUXILIARY <tt>objectClass</tt>es */ 9 AUXILIARY, 10 REQUIRED, 11 /*** Modifier for STRUCTURAL <tt>objectClass</tt>es */ 12 STRUCTURAL, 13 SINGLE_VALUE; 14 15 public static boolean isAbstract(LdapModifier... ldapModifiers) { 16 for(LdapModifier modifier : ldapModifiers) 17 if(modifier.equals(ABSTRACT)) return true; 18 return false; 19 } 20 21 public static boolean isAuxiliary(LdapModifier... ldapModifiers) { 22 for(LdapModifier modifier : ldapModifiers) 23 if(modifier.equals(AUXILIARY)) return true; 24 return false; 25 } 26 27 public static boolean isStructural(LdapModifier... ldapModifiers) { 28 for(LdapModifier modifier : ldapModifiers) 29 if(modifier.equals(STRUCTURAL)) return true; 30 return false; 31 } 32 33 public static boolean isRequired(LdapModifier... ldapModifiers) { 34 for(LdapModifier modifier : ldapModifiers) 35 if(modifier.equals(REQUIRED)) return true; 36 return false; 37 } 38 39 public static boolean isSingleValue(LdapModifier... ldapModifiers) { 40 for(LdapModifier modifier : ldapModifiers) 41 if(modifier.equals(SINGLE_VALUE)) return true; 42 return false; 43 } 44 45 /*** 46 * Identifies the <tt>LdapModifier</tt> of a java class 47 * 48 * @param clazz Guesses the object type for this java class. 49 * @return The <tt>LdapModifier</tt> for the java class specified of <tt>null</tt> if 50 * doesn't corresponds with a <tt>LdapBean</tt> declaration. 51 */ 52 public static LdapModifier forClass(Class<?> clazz) { 53 if(!clazz.isAnnotationPresent(LdapBean.class)) return null; 54 LdapBean beanMeta = clazz.getAnnotation(LdapBean.class); 55 return beanMeta.value(); 56 } 57 58 public static LdapModifier[] forMethod(Method method) { 59 if(!method.isAnnotationPresent(LdapAttribute.class)) return null; 60 LdapAttribute attrMeta = method.getAnnotation(LdapAttribute.class); 61 return attrMeta.value(); 62 } 63 64 }