private Attachable getAttachmentsInternal() { if (attachments == null) { attachments = new AttachableSupport(); } return attachments; }
private Module installWebappModule(ServletContext servletContext, Resource resource, Dictionary<String, String> headers) { String contextPath = servletContext.getContextPath(); Resource association = NamedResourceAssociation.getResource(contextPath); resource = association != null ? association : resource; AttachableSupport context = new AttachableSupport(); context.putAttachment(SERVLET_CONTEXT_KEY, servletContext); Module module; try { Runtime runtime = RuntimeLocator.getRequiredRuntime(); ClassLoader classLoader = servletContext.getClassLoader(); module = runtime.installModule(classLoader, resource, headers, context); } catch (RuntimeException rte) { throw rte; } catch (ModuleException ex) { throw new IllegalStateException(ex); } return module; }
private Module installWebappModule(ServletContext servletContext, Resource resource, Dictionary<String, String> headers) { String contextPath = servletContext.getContextPath(); Resource association = NamedResourceAssociation.getResource(contextPath); resource = association != null ? association : resource; AttachableSupport context = new AttachableSupport(); context.putAttachment(SERVLET_CONTEXT_KEY, servletContext); Module module; try { Runtime runtime = RuntimeLocator.getRequiredRuntime(); ClassLoader classLoader = servletContext.getClassLoader(); module = runtime.installModule(classLoader, resource, headers, context); } catch (RuntimeException rte) { throw rte; } catch (ModuleException ex) { throw new IllegalStateException(ex); } return module; }
@Override public final Module installModule(ClassLoader classLoader, Resource resource, Dictionary<String, String> headers, Attachable context) throws ModuleException { assertNoShutdown(); context = context != null ? context : new AttachableSupport(); AbstractModule module = createModule(classLoader, resource, headers, context); // Attach the {@link ModuleEntriesProvider} ModuleEntriesProvider entriesProvider = context.getAttachment(AbstractModule.MODULE_ENTRIES_PROVIDER_KEY); entriesProvider = entriesProvider != null ? entriesProvider : getDefaultEntriesProvider(module, context); if (entriesProvider != null) { module.putAttachment(AbstractModule.MODULE_ENTRIES_PROVIDER_KEY, entriesProvider); } if (getModule(module.getIdentity()) != null) throw new ModuleException("Module already installed: " + module); modules.put(module.getModuleId(), module); // #1 The module's state is set to {@code INSTALLED}. module.setState(State.INSTALLED); // #2 A module event of type {@link ModuleEvent#INSTALLED} is fired. runtimeEvents.fireModuleEvent(module, ModuleEvent.INSTALLED); LOGGER.info("Installed: {}", module); return module; }