예제 #1
0
  /**
   * アノテーションの要素を名前と値の{@link Map}として返します。
   *
   * @param annotation アノテーション。{@literal null}であってはいけません
   * @return アノテーションの要素の名前と値からなる{@link Map}
   */
  public static Map<String, Object> getProperties(final Annotation annotation) {
    assertArgumentNotNull("annotation", annotation);

    final Map<String, Object> map = newHashMap();
    final BeanDesc beanDesc = BeanDescFactory.getBeanDesc(annotation.annotationType());
    for (final String name : beanDesc.getMethodNames()) {
      final Object v = getProperty(beanDesc, annotation, name);
      if (v != null) {
        map.put(name, v);
      }
    }
    return map;
  }
예제 #2
0
 /**
  * アノテーションの要素の値を返します。
  *
  * @param beanDesc アノテーションを表す{@link BeanDesc}
  * @param annotation アノテーション
  * @param name 要素の名前
  * @return アノテーションの要素の値
  */
 protected static Object getProperty(
     final BeanDesc beanDesc, final Annotation annotation, final String name) {
   final MethodDesc methodDesc = beanDesc.getMethodDescNoException(name);
   if (methodDesc == null) {
     return null;
   }
   final Object value = methodDesc.invoke(annotation);
   if (value == null || "".equals(value)) {
     return null;
   }
   return value;
 }