ServletListenerRegistrationBean Class — spring-boot Architecture
Architecture documentation for the ServletListenerRegistrationBean class in ServletListenerRegistrationBean.java from the spring-boot codebase.
Entity Profile
Source Code
core/spring-boot/src/main/java/org/springframework/boot/web/servlet/ServletListenerRegistrationBean.java lines 59–149
public class ServletListenerRegistrationBean<T extends EventListener> extends RegistrationBean {
private static final Set<Class<?>> SUPPORTED_TYPES;
static {
Set<Class<?>> types = new HashSet<>();
types.add(ServletContextAttributeListener.class);
types.add(ServletRequestListener.class);
types.add(ServletRequestAttributeListener.class);
types.add(HttpSessionAttributeListener.class);
types.add(HttpSessionIdListener.class);
types.add(HttpSessionListener.class);
types.add(ServletContextListener.class);
SUPPORTED_TYPES = Collections.unmodifiableSet(types);
}
private @Nullable T listener;
/**
* Create a new {@link ServletListenerRegistrationBean} instance.
*/
public ServletListenerRegistrationBean() {
}
/**
* Create a new {@link ServletListenerRegistrationBean} instance.
* @param listener the listener to register
*/
public ServletListenerRegistrationBean(T listener) {
Assert.notNull(listener, "'listener' must not be null");
Assert.isTrue(isSupportedType(listener), "'listener' is not of a supported type");
this.listener = listener;
}
/**
* Set the listener that will be registered.
* @param listener the listener to register
*/
public void setListener(T listener) {
Assert.notNull(listener, "'listener' must not be null");
Assert.isTrue(isSupportedType(listener), "'listener' is not of a supported type");
this.listener = listener;
}
/**
* Return the listener to be registered.
* @return the listener to be registered
*/
public @Nullable T getListener() {
return this.listener;
}
@Override
protected String getDescription() {
Assert.notNull(this.listener, "'listener' must not be null");
return "listener " + this.listener;
}
@Override
protected void register(String description, ServletContext servletContext) {
try {
servletContext.addListener(this.listener);
}
catch (RuntimeException ex) {
throw new IllegalStateException("Failed to add listener '" + this.listener + "' to servlet context", ex);
}
}
/**
* Returns {@code true} if the specified listener is one of the supported types.
* @param listener the listener to test
* @return if the listener is of a supported type
*/
public static boolean isSupportedType(EventListener listener) {
for (Class<?> type : SUPPORTED_TYPES) {
if (ClassUtils.isAssignableValue(type, listener)) {
return true;
}
}
return false;
}
/**
* Return the supported types for this registration.
* @return the supported types
*/
public static Set<Class<?>> getSupportedTypes() {
return SUPPORTED_TYPES;
}
}
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free