1
18
19 package io.undertow.servlet.api;
20
21 import io.undertow.servlet.UndertowServletMessages;
22 import io.undertow.servlet.util.ConstructorInstanceFactory;
23
24 import java.lang.reflect.Constructor;
25 import java.util.Set;
26
27 import javax.servlet.ServletContainerInitializer;
28
29
32 public class ServletContainerInitializerInfo {
33
34 private final Class<? extends ServletContainerInitializer> servletContainerInitializerClass;
35 private final InstanceFactory<? extends ServletContainerInitializer> instanceFactory;
36 private final Set<Class<?>> handlesTypes;
37
38 public ServletContainerInitializerInfo(final Class<? extends ServletContainerInitializer> servletContainerInitializerClass, final InstanceFactory<? extends ServletContainerInitializer> instanceFactory, final Set<Class<?>> handlesTypes) {
39 this.servletContainerInitializerClass = servletContainerInitializerClass;
40 this.instanceFactory = instanceFactory;
41 this.handlesTypes = handlesTypes;
42 }
43
44 public ServletContainerInitializerInfo(final Class<? extends ServletContainerInitializer> servletContainerInitializerClass, final Set<Class<?>> handlesTypes) {
45 this.servletContainerInitializerClass = servletContainerInitializerClass;
46 this.handlesTypes = handlesTypes;
47
48 try {
49 final Constructor<ServletContainerInitializer> ctor = (Constructor<ServletContainerInitializer>) servletContainerInitializerClass.getDeclaredConstructor();
50 ctor.setAccessible(true);
51 this.instanceFactory = new ConstructorInstanceFactory<>(ctor);
52 } catch (NoSuchMethodException e) {
53 throw UndertowServletMessages.MESSAGES.componentMustHaveDefaultConstructor("ServletContainerInitializer", servletContainerInitializerClass);
54 }
55 }
56
57 public Class<? extends ServletContainerInitializer> getServletContainerInitializerClass() {
58 return servletContainerInitializerClass;
59 }
60
61
69 public Set<Class<?>> getHandlesTypes() {
70 return handlesTypes;
71 }
72
73 public InstanceFactory<? extends ServletContainerInitializer> getInstanceFactory() {
74 return instanceFactory;
75 }
76 }
77