Skip to content

Extensions help

Shows extension signs recognized by registered installers.

GuiceBundle.builder()
    ...
    .printExtensionsHelp()
    .build()

Example report:

INFO  [2022-12-28 14:57:01,445] ru.vyarus.dropwizard.guice.debug.ExtensionsHelpDiagnostic: Recognized extension signs

    lifecycle            (r.v.d.g.m.i.f.LifeCycleInstaller)     
        implements LifeCycle

    managed              (r.v.d.g.m.i.feature.ManagedInstaller) 
        implements Managed

    jerseyfeature        (r.v.d.g.m.i.f.j.JerseyFeatureInstaller) 
        implements Feature

    jerseyprovider       (r.v.d.g.m.i.f.j.p.JerseyProviderInstaller) 
        @Provider on class
        implements ExceptionMapper
        implements ParamConverterProvider
        implements ContextResolver
        implements MessageBodyReader
        implements MessageBodyWriter
        implements ReaderInterceptor
        implements WriterInterceptor
        implements ContainerRequestFilter
        implements ContainerResponseFilter
        implements DynamicFeature
        implements ValueParamProvider
        implements InjectionResolver
        implements ApplicationEventListener
        implements ModelProcessor

    resource             (r.v.d.g.m.i.f.j.ResourceInstaller)    
        @Path on class
        @Path on implemented interface

    eagersingleton       (r.v.d.g.m.i.f.e.EagerSingletonInstaller) 
        @EagerSingleton on class

    healthcheck          (r.v.d.g.m.i.f.h.HealthCheckInstaller) 
        extends NamedHealthCheck

    task                 (r.v.d.g.m.i.feature.TaskInstaller)    
        extends Task

    plugin               (r.v.d.g.m.i.f.plugin.PluginInstaller) 
        @Plugin on class
        custom annotation on class, annotated with @Plugin

    webservlet           (r.v.d.g.m.i.f.w.WebServletInstaller)  
        extends HttpServlet + @WebServlet

    webfilter            (r.v.d.g.m.i.f.web.WebFilterInstaller) 
        implements Filter + @WebFilter

    weblistener          (r.v.d.g.m.i.f.w.l.WebListenerInstaller) 
        implements EventListener + @WebListener

All signs are grouped by installer. Installers listed in processing order, which is important, because first installer recognized extension "owns" it (even if extension contains signs, recognizable by other installers).

Custom installers

Custom installers should implement new method to participate in report (not required!). Example implementation from singleton installer:

public class EagerSingletonInstaller implements FeatureInstaller {
    ...

    @Override
    public List<String> getRecognizableSigns() {
        return Collections.singletonList("@" + EagerSingleton.class.getSimpleName() + " on class");
    }
}