/* $Id: AnnotationUtils.java 992060 2010-09-02 19:09:47Z simonetripodi $
 *
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.commons.digester.annotations.utils;

import java.lang.annotation.Annotation;

import org.apache.commons.beanutils.MethodUtils;

Simple utility class to introspect annotations.
Since:2.1
/** * Simple utility class to introspect annotations. * * @since 2.1 */
public class AnnotationUtils {
The value string constant.
/** * The {@code value} string constant. */
private static final String VALUE = "value";
The pattern string constant.
/** * The {@code pattern} string constant. */
private static final String PATTERN = "pattern";
This class can't be instantiated.
/** * This class can't be instantiated. */
private AnnotationUtils() { // this class can' be instantiated }
Extract the value() from annotation.
Params:
  • annotation – the annotation has to be introspected.
Returns:the annotation value().
/** * Extract the {@code value()} from annotation. * * @param annotation the annotation has to be introspected. * @return the annotation {@code value()}. */
public static Object getAnnotationValue(Annotation annotation) { return invokeAnnotationMethod(annotation, VALUE); }
Extract the pattern() from annotation.
Params:
  • annotation – the annotation has to be introspected.
Returns:the annotation pattern().
/** * Extract the {@code pattern()} from annotation. * * @param annotation the annotation has to be introspected. * @return the annotation {@code pattern()}. */
public static String getAnnotationPattern(Annotation annotation) { Object ret = invokeAnnotationMethod(annotation, PATTERN); if (ret != null) { return (String) ret; } return null; }
Extract the Annotations array value() from annotation if present, nul otherwise.
Params:
  • annotation – the annotation has to be introspected.
Returns:the annotation value() as Annotations array.
/** * Extract the Annotations array {@code value()} from annotation if present, * nul otherwise. * * @param annotation the annotation has to be introspected. * @return the annotation {@code value()} as Annotations array. */
public static Annotation[] getAnnotationsArrayValue(Annotation annotation) { Object value = getAnnotationValue(annotation); if (value != null && value.getClass().isArray() && Annotation.class.isAssignableFrom(value.getClass().getComponentType())) { return (Annotation[]) value; } return null; }
Invokes an annotation method.
Params:
  • annotationn – the annotation has to be introspected.
  • method – the method name to execute.
Returns:the annotation method value, null if any error occurs.
/** * Invokes an annotation method. * * @param annotationn the annotation has to be introspected. * @param method the method name to execute. * @return the annotation method value, null if any error occurs. */
private static Object invokeAnnotationMethod(Annotation annotation, String method) { try { return MethodUtils.invokeExactMethod(annotation, method, null); } catch (Throwable t) { return null; } } }