/*
* Copyright 2011 Blazebit
*/
package com.blazebit.cdi.exception.annotation;
import java.util.Arrays;
import javax.enterprise.util.AnnotationLiteral;
/**
* Literal for annotation, that can be used for extensions.
*
* @author Christian Beikov
* @since 0.1.2
* @see ExceptionWrap
*/
public class ExceptionWrapLiteral extends AnnotationLiteral<ExceptionWrap>
implements ExceptionWrap {
private static final long serialVersionUID = 1L;
private Class<? extends Throwable>[] sources;
private Class<? extends Exception> wrapper;
@SuppressWarnings("unchecked")
public ExceptionWrapLiteral() {
this(new Class[] { java.lang.Throwable.class },
java.lang.Exception.class);
}
public ExceptionWrapLiteral(Class<? extends Throwable>... sources) {
this(sources, java.lang.Exception.class);
}
@SuppressWarnings("unchecked")
public ExceptionWrapLiteral(Class<? extends Exception> wrapper) {
this(new Class[] { java.lang.Throwable.class }, wrapper);
}
public ExceptionWrapLiteral(Class<? extends Throwable>[] sources,
Class<? extends Exception> wrapper) {
this.sources = sources;
this.wrapper = wrapper;
}
@Override
public Class<? extends Throwable>[] sources() {
return sources == null ? null : Arrays.copyOf(sources, sources.length);
}
@Override
public Class<? extends Exception> wrapper() {
return wrapper;
}
}