Example #1
0
  public static AnnotationDefinition buildAnnotationDefinition(Class cls) {

    if (!cls.isAnnotation()) return null;

    AnnotationDefinitionImpl annotationDefinition =
        new AnnotationDefinitionImpl(NamingUtils.normalizeClassName(cls.getName()));

    // set retention and target.
    DriverUtils.copyAnnotationRetention(cls, annotationDefinition);
    DriverUtils.copyAnnotationTarget(cls, annotationDefinition);

    Method[] methods = cls.getMethods();
    Method method;
    AnnotationValuePairDefinitionImpl valuePairDefinition;
    Class returnType;
    boolean isArray = false;

    for (int i = 0; methods != null && i < methods.length; i++) {
      method = methods[i];
      if (DriverUtils.isAnnotationMember(cls, method)) {
        returnType = method.getReturnType();
        if ((isArray = returnType.isArray())) returnType = returnType.getComponentType();
        valuePairDefinition =
            new AnnotationValuePairDefinitionImpl(
                method.getName(),
                NamingUtils.normalizeClassName(returnType.getName()),
                DriverUtils.buildValuePairType(returnType),
                isArray,
                // TODO, review this default value assignment, when we have annotations the default
                // value should be an AnnotationInstance
                method.getDefaultValue() != null ? method.getDefaultValue().toString() : null);
        if (valuePairDefinition.isAnnotation()) {
          valuePairDefinition.setAnnotationDefinition(buildAnnotationDefinition(returnType));
        }
        if (valuePairDefinition.isEnum()) {
          Object[] enumConstants = returnType.getEnumConstants();
          if (enumConstants != null) {
            String[] strEnumConstants = new String[enumConstants.length];
            for (int j = 0; j < enumConstants.length; j++) {
              strEnumConstants[j] = enumConstants[j].toString();
            }
            valuePairDefinition.setEnumValues(strEnumConstants);
          }
        }
        annotationDefinition.addValuePair(valuePairDefinition);
      }
    }

    return annotationDefinition;
  }
Example #2
0
  public static String encodeEnumValue(
      AnnotationValuePairDefinition valuePairDefinition, Object value) {
    if (value == null) return null;

    StringBuilder encodedValue = new StringBuilder();
    encodedValue.append(NamingUtils.normalizeClassName(valuePairDefinition.getClassName()));
    encodedValue.append(".");
    encodedValue.append(value.toString());

    return encodedValue.toString();
  }
Example #3
0
  public static String encodePrimitiveValue(
      AnnotationValuePairDefinition valuePairDefinition, Object value) {

    if (value == null) return null;

    StringBuilder encodedValue = new StringBuilder();

    if (NamingUtils.isCharId(valuePairDefinition.getClassName())
        || Character.class.getName().equals(valuePairDefinition.getClassName())) {
      String strValue = value.toString();
      if (StringEscapeUtils.isSingleQuoted(strValue)) {
        encodedValue.append(strValue);
      } else {
        encodedValue.append("'");
        encodedValue.append(value.toString());
        encodedValue.append("'");
      }
    } else if (NamingUtils.isLongId(valuePairDefinition.getClassName())
        || Long.class.getName().equals(valuePairDefinition.getClassName())) {
      encodedValue.append(value.toString());
      encodedValue.append("L");
    } else if (NamingUtils.isFloatId(valuePairDefinition.getClassName())
        || Float.class.getName().equals(valuePairDefinition.getClassName())) {
      encodedValue.append(value.toString());
      encodedValue.append("f");
    } else if (NamingUtils.isDoubleId(valuePairDefinition.getClassName())
        || Double.class.getName().equals(valuePairDefinition.getClassName())) {
      encodedValue.append(value.toString());
      encodedValue.append("d");
    } else if (NamingUtils.isByteId(valuePairDefinition.getClassName())
        || Byte.class.getName().equals(valuePairDefinition.getClassName())) {
      encodedValue.append("(byte)");
      encodedValue.append(value.toString());
    } else {
      encodedValue.append(value.toString());
    }

    return encodedValue.toString();
  }
Example #4
0
 public static AnnotationValuePairDefinition.ValuePairType buildValuePairType(Class cls) {
   if (cls.isEnum()) {
     return AnnotationValuePairDefinition.ValuePairType.ENUM;
   } else if (cls.isAnnotation()) {
     return AnnotationValuePairDefinition.ValuePairType.ANNOTATION;
   } else if (cls.getName().equals(String.class.getName())) {
     return AnnotationValuePairDefinition.ValuePairType.STRING;
   } else if (NamingUtils.isPrimitiveTypeId(cls.getName())) {
     return AnnotationValuePairDefinition.ValuePairType.PRIMITIVE;
   } else {
     return AnnotationValuePairDefinition.ValuePairType.CLASS;
   }
 }
Example #5
0
 public static boolean isValidAnnotationBaseReturnType(Class cls) {
   // TODO review this calculation
   return (cls.isAnnotation() || cls.isEnum() || NamingUtils.isPrimitiveTypeId(cls.getName()))
       || (!cls.isAnonymousClass() && !cls.isLocalClass());
 }