code: @SuppressWarnings({ "rawtypes", "unchecked" })
  	public static <T> T getClassAnnotationValue(Class source, Class annotation, String attributeName, Class<T> expected) {
  		Annotation instance = source.getAnnotation(annotation);
  		T value = null;
  		if (instance != null) {
  			try {
  				value = (T) instance.annotationType().getMethod(attributeName).invoke(instance);
  			} catch (Exception ex) {
  				log.warning(ex.getClass().getSimpleName() + ": " + ex.getMessage());
  			}
  		}
  		return value;
  	}
docs: <p>
  getClassAnnotationValue.
  </p>
  
  @param source
  a {@link java.lang.Class} object.
  @param annotation
  a {@link java.lang.Class} object.
  @param attributeName
  a {@link java.lang.String} object.
  @param expected
  a {@link java.lang.Class} object.
  @param <T>
  a T object.
  @return a T object.