package org.apache.commons.digester3.annotations.utils;
/*
* 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.
*/
import static org.apache.commons.beanutils.MethodUtils.invokeExactMethod;
import java.lang.annotation.Annotation;
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";
The namespaceURI
string constant. /**
* The {@code namespaceURI} string constant.
*/
private static final String NAMESPACE_URI = "namespaceURI";
The namespaceURI
string constant. /**
* The {@code namespaceURI} string constant.
*/
private static final String FIRE_ON_BEGIN = "fireOnBegin";
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 namespaceURI()
from annotation. Params: - annotation – The annotation has to be introspected
Returns: The annotation namespaceURI()
/**
* Extract the {@code namespaceURI()} from annotation.
*
* @param annotation The annotation has to be introspected
* @return The annotation {@code namespaceURI()}
*/
public static String getAnnotationNamespaceURI( Annotation annotation )
{
Object ret = invokeAnnotationMethod( annotation, NAMESPACE_URI );
if ( ret != null )
{
return (String) ret;
}
return null;
}
Extract the fireOnBegin()
from annotation. Params: - annotation – The annotation has to be introspected
Returns: The annotation fireOnBegin()
/**
* Extract the {@code fireOnBegin()} from annotation.
*
* @param annotation The annotation has to be introspected
* @return The annotation {@code fireOnBegin()}
*/
public static boolean getFireOnBegin( Annotation annotation )
{
Object ret = invokeAnnotationMethod( annotation, FIRE_ON_BEGIN );
if ( ret != null )
{
return (Boolean) ret;
}
return false;
}
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 invokeExactMethod( annotation, method, null );
}
catch ( Throwable t )
{
return null;
}
}
}