blob: beee9e72748a147329724483e1e922c18ac95abb [file] [log] [blame]
package com.github.javaparser.ast.nodeTypes;
import java.util.List;
import com.github.javaparser.ast.Node;
import com.github.javaparser.ast.type.ClassOrInterfaceType;
import com.github.javaparser.ast.type.ReferenceType;
public interface NodeWithThrowable<T> {
T setThrows(List<ReferenceType> throws_);
List<ReferenceType> getThrows();
/**
* Adds this type to the throws clause
*
* @param throwType the exception type
* @return this
*/
@SuppressWarnings("unchecked")
default T addThrows(ReferenceType throwType) {
getThrows().add(throwType);
throwType.setParentNode((Node) this);
return (T) this;
}
/**
* Adds this class to the throws clause
*
* @param clazz the exception class
* @return this
*/
default T addThrows(Class<? extends Throwable> clazz) {
((Node) this).tryAddImportToParentCompilationUnit(clazz);
return addThrows(new ClassOrInterfaceType(clazz.getSimpleName()));
}
/**
* Check whether this elements throws this exception class
*
* @param clazz the class of the exception
* @return true if found in throws clause, false if not
*/
public default boolean isThrows(Class<? extends Throwable> clazz) {
return isThrows(clazz.getSimpleName());
}
/**
* Check whether this elements throws this exception class
*
* @param throwableName the class of the exception
* @return true if found in throws clause, false if not
*/
public default boolean isThrows(String throwableName) {
return getThrows().stream().anyMatch(t -> t.toString().equals(throwableName));
}
}