List<ListenerMetaData> listeners = webMetaData.getListeners(); if (listeners == null) { listeners = new ArrayList<ListenerMetaData>(); webMetaData.setListeners(listeners); } else { if (webMetaData.getContextParams() == null) { webMetaData.setContextParams(new ArrayList<ParamValueMetaData>()); final List<ParamValueMetaData> contextParams = webMetaData.getContextParams(); setupWeldContextIgnores(contextParams, InitParameters.CONTEXT_IGNORE_FORWARD); setupWeldContextIgnores(contextParams, InitParameters.CONTEXT_IGNORE_INCLUDE); if (webMetaData.getFilterMappings() != null) { for (FilterMappingMetaData mapping : webMetaData.getFilterMappings()) { if (CONVERSATION_FILTER_NAME.equals(mapping.getFilterName())) { filterMappingFound = true; if (webMetaData.getFilters() == null) { webMetaData.setFilters(new FiltersMetaData()); for (FilterMetaData filter : webMetaData.getFilters()) { if (CONVERSATION_FILTER_CLASS.equals(filter.getFilterClass())) { filterFound = true; webMetaData.getFilters().add(conversationFilterMetadata); registerAsComponent(CONVERSATION_FILTER_CLASS, deploymentUnit); webMetaData.getContextParams().add(CONVERSATION_FILTER_INITIALIZED);
final List<SetupAction> setupActions = deploymentUnit.getAttachmentList(org.jboss.as.ee.component.Attachments.WEB_SETUP_ACTIONS); String servletContainerName = metaData.getServletContainerName(); if(servletContainerName == null) { servletContainerName = defaultContainer; String jaccContextId = metaData.getJaccContextID(); final boolean securityEnabled = capabilities.hasCapability(LEGACY_SECURITY_CAPABILITY_NAME); String tempSecurityDomain = metaData.getSecurityDomain(); if (tempSecurityDomain == null) { tempSecurityDomain = getJBossAppSecurityDomain(deploymentUnit); throw new DeploymentUnitProcessingException(e); if (metaData.getExecutorName() != null) { final InjectedValue<Executor> executor = new InjectedValue<Executor>(); infoBuilder.addDependency(IOServices.WORKER.append(metaData.getExecutorName()), Executor.class, executor); undertowDeploymentInfoService.addInjectedExecutor(metaData.getExecutorName(), executor); seenExecutors.add(metaData.getExecutorName()); if (metaData.getServlets() != null) { for (JBossServletMetaData servlet : metaData.getServlets()) { if (servlet.getExecutorName() != null && !seenExecutors.contains(servlet.getExecutorName())) { final InjectedValue<Executor> executor = new InjectedValue<Executor>(); infoBuilder.addDependency(IOServices.WORKER.append(servlet.getExecutorName()), Executor.class, executor);
public void deploy(final DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException { final DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); final WarMetaData warMetaData = deploymentUnit.getAttachment(WarMetaData.ATTACHMENT_KEY); if(warMetaData == null) { return; // Nothing we can do without WarMetaData final ResourceRoot deploymentRoot = deploymentUnit.getAttachment(org.jboss.as.server.deployment.Attachments.DEPLOYMENT_ROOT); if(deploymentRoot == null) { return; // We don't have a root to work with final DeploymentUnit parent = deploymentUnit.getParent(); if(parent == null || !DeploymentTypeMarker.isType(DeploymentType.EAR, parent)) { return; // Only care if this war is nested in an EAR String contextRoot = WebModuleMetaData.class.cast(moduleMetaData.getValue()).getContextRoot(); if(contextRoot == null && (warMetaData.getJBossWebMetaData() == null || warMetaData.getJBossWebMetaData().getContextRoot() == null)) { contextRoot = "/" + parent.getName().substring(0, parent.getName().length() - 4) + "/" + deploymentUnit.getName().substring(0, deploymentUnit.getName().length() - 4); JBossWebMetaData jBossWebMetaData = warMetaData.getJBossWebMetaData(); if(jBossWebMetaData == null) { jBossWebMetaData = new JBossWebMetaData(); warMetaData.setJBossWebMetaData(jBossWebMetaData); jBossWebMetaData.setContextRoot(contextRoot);
private void setContextParameterIfAbsent(final JBossWebMetaData webMetaData, final String name, final String value) { List<ParamValueMetaData> contextParams = webMetaData.getContextParams(); if (contextParams == null) { contextParams = new ArrayList<>(); webMetaData.setContextParams(contextParams); } for (ParamValueMetaData param : contextParams) { if (name.equals(param.getParamName()) && param.getParamValue() != null) { // already set return; } } ParamValueMetaData param = new ParamValueMetaData(); param.setParamName(name); param.setParamValue(value); contextParams.add(param); } }
private void getAllComponentClasses(JBossWebMetaData metaData, Set<String> classes) { if (metaData.getServlets() != null) for (ServletMetaData servlet : metaData.getServlets()) { if (servlet.getServletClass() != null) { classes.add(servlet.getServletClass()); } } if (metaData.getFilters() != null) for (FilterMetaData filter : metaData.getFilters()) { classes.add(filter.getFilterClass()); } if (metaData.getListeners() != null) for (ListenerMetaData listener : metaData.getListeners()) { classes.add(listener.getListenerClass()); } }
private void addCDIFlag(WarMetaData warMetaData, DeploymentUnit deploymentUnit) { JBossWebMetaData webMetaData = warMetaData.getMergedJBossWebMetaData(); if (webMetaData == null) { webMetaData = new JBossWebMetaData(); warMetaData.setMergedJBossWebMetaData(webMetaData); } List<ParamValueMetaData> contextParams = webMetaData.getContextParams(); if (contextParams == null) { contextParams = new ArrayList<ParamValueMetaData>(); } boolean isCDI = WeldDeploymentMarker.isPartOfWeldDeployment(deploymentUnit); ParamValueMetaData param = new ParamValueMetaData(); param.setParamName(IS_CDI_PARAM); param.setParamValue(Boolean.toString(isCDI)); contextParams.add(param); webMetaData.setContextParams(contextParams); } }
private void addKeycloakSamlAuthData(DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException { DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); WarMetaData warMetaData = deploymentUnit.getAttachment(WarMetaData.ATTACHMENT_KEY); if (warMetaData == null) { throw new DeploymentUnitProcessingException("WarMetaData not found for " + deploymentUnit.getName() + ". Make sure you have specified a WAR as your secure-deployment in the Keycloak subsystem."); } try { addXMLData(getXML(deploymentUnit), warMetaData); } catch (Exception e) { throw new DeploymentUnitProcessingException("Failed to configure KeycloakSamlExtension from subsystem model", e); } JBossWebMetaData webMetaData = warMetaData.getMergedJBossWebMetaData(); if (webMetaData == null) { webMetaData = new JBossWebMetaData(); warMetaData.setMergedJBossWebMetaData(webMetaData); } LoginConfigMetaData loginConfig = webMetaData.getLoginConfig(); if (loginConfig == null) { loginConfig = new LoginConfigMetaData(); webMetaData.setLoginConfig(loginConfig); } loginConfig.setAuthMethod("KEYCLOAK-SAML"); KeycloakLogger.ROOT_LOGGER.deploymentSecured(deploymentUnit.getName()); }
WarMetaData warMetaData = deploymentUnit.getAttachment(WarMetaData.ATTACHMENT_KEY); assert warMetaData != null; JBossWebMetaData mergedMetaData = new JBossWebMetaData(); JBossWebMetaData metaData = warMetaData.getJBossWebMetaData(); JBossWebMetaDataMerger.merge(mergedMetaData, metaData, specMetaData); if (mergedMetaData.isMetadataComplete()) { MetadataCompleteMarker.setMetadataComplete(deploymentUnit, true); if (mergedMetaData.getJndiEnvironmentRefsGroup() != null) { final DeploymentDescriptorEnvironment bindings = new DeploymentDescriptorEnvironment("java:module/env/", mergedMetaData.getJndiEnvironmentRefsGroup()); deploymentUnit.putAttachment(org.jboss.as.ee.component.Attachments.MODULE_DEPLOYMENT_DESCRIPTOR_ENVIRONMENT, bindings); if (mergedMetaData.getModuleName() != null && !mergedMetaData.getModuleName().isEmpty()) { final EEModuleDescription description = deploymentUnit.getAttachment(org.jboss.as.ee.component.Attachments.EE_MODULE_DESCRIPTION); description.setModuleName(mergedMetaData.getModuleName()); if(mergedMetaData.getSecurityDomain() != null) { final EEModuleDescription description = deploymentUnit.getAttachment(org.jboss.as.ee.component.Attachments.EE_MODULE_DESCRIPTION); description.setDefaultSecurityDomain(mergedMetaData.getSecurityDomain()); SecurityRolesMetaData earSecurityRolesMetaData = earMetaData.getSecurityRoles(); if(earSecurityRolesMetaData != null) { if(mergedMetaData.getSecurityRoles() == null) { mergedMetaData.setSecurityRoles(new SecurityRolesMetaData()); SecurityRolesMetaDataMerger.merge(mergedMetaData.getSecurityRoles(), mergedMetaData.getSecurityRoles(), earSecurityRolesMetaData);
@Override public void deploy(DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException { final DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); if (!DeploymentTypeMarker.isType(DeploymentType.WAR, deploymentUnit)) { return; // Skip non web deployments final WarMetaData warMetaData = deploymentUnit.getAttachment(WarMetaData.ATTACHMENT_KEY); if (warMetaData == null || warMetaData.getMergedJBossWebMetaData() == null) { return; TldsMetaData tldsMetaData = deploymentUnit.getAttachment(TldsMetaData.ATTACHMENT_KEY); Map<String, TldMetaData> tlds = tldsMetaData.getTlds(); Module module = deploymentUnit.getAttachment(Attachments.MODULE); try { Iterator<Resource> resources = module.globResources("META-INF/**.tld"); List<ListenerMetaData> listeners = warMetaData.getMergedJBossWebMetaData().getListeners(); if(listeners == null) { warMetaData.getMergedJBossWebMetaData().setListeners(listeners = new ArrayList<ListenerMetaData>()); throw new DeploymentUnitProcessingException(e);
final EEModuleDescription eeModuleDescription = deploymentUnit.getAttachment(Attachments.EE_MODULE_DESCRIPTION); final EEApplicationClasses eeApplicationClasses = deploymentUnit.getAttachment(Attachments.EE_APPLICATION_CLASSES_DESCRIPTION); final CompositeIndex compositeIndex = deploymentUnit.getAttachment(org.jboss.as.server.deployment.Attachments.COMPOSITE_ANNOTATION_INDEX); final WarMetaData warMetaData = deploymentUnit.getAttachment(WarMetaData.ATTACHMENT_KEY); throw new DeploymentUnitProcessingException("Detected multiple classes annotated with @" + ProcessApplication.class.getSimpleName() + ". A deployment must only provide a single @" + ProcessApplication.class.getSimpleName() + " class."); throw new DeploymentUnitProcessingException("@ProcessApplication class is a ServletProcessApplication but deployment is not a Web Application."); List<ListenerMetaData> listeners = mergedJBossWebMetaData.getListeners(); if(listeners == null) { listeners = new ArrayList<ListenerMetaData>(); mergedJBossWebMetaData.setListeners(listeners); throw new DeploymentUnitProcessingException("Class " + paClassName + " is annotated with @" + ProcessApplication.class.getSimpleName() + " but is neither a ServletProcessApplication nor an EJB Session Bean Component.");
@Override public void deploy(DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException { final DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); if (!DeploymentTypeMarker.isType(DeploymentType.WAR, deploymentUnit)) { return; // Skip non web deployments final WarMetaData warMetaData = deploymentUnit.getAttachment(WarMetaData.ATTACHMENT_KEY); if (warMetaData == null || warMetaData.getMergedJBossWebMetaData() == null) { return; TldsMetaData tldsMetaData = deploymentUnit.getAttachment(TldsMetaData.ATTACHMENT_KEY); if (tldsMetaData == null) { tldsMetaData = new TldsMetaData(); deploymentUnit.putAttachment(TldsMetaData.ATTACHMENT_KEY, tldsMetaData); JspConfigMetaData merged = warMetaData.getMergedJBossWebMetaData().getJspConfig(); if (merged != null && merged.getTaglibs() != null) { for (final TaglibMetaData tld : merged.getTaglibs()) { if (mergedMd.getListeners() == null) { mergedMd.setListeners(new ArrayList<ListenerMetaData>()); if (tld.getListeners() != null) { for (ListenerMetaData l : tld.getListeners()) { mergedMd.getListeners().add(l);
private DeploymentInfo createServletConfig() throws StartException { final ComponentRegistry componentRegistry = componentRegistryInjectedValue.getValue(); try { if (!mergedMetaData.isMetadataComplete()) { mergedMetaData.resolveAnnotations(); mergedMetaData.resolveRunAs(); final DeploymentInfo d = new DeploymentInfo(); d.setContextPath(resolveContextPath()); if (mergedMetaData.getDescriptionGroup() != null) { d.setDisplayName(mergedMetaData.getDescriptionGroup().getDisplayName()); List<String> externalOverlays = mergedMetaData.getOverlays(); ResourceManager resourceManager = new ServletResourceManager(deploymentRoot, overlays, explodedDeployment, mergedMetaData.isSymbolicLinkingEnabled(), servletContainer.isDisableFileWatchService(), externalOverlays); delegates.add(new FileResourceManager(resource.getCanonicalFile(), 1024, true, mergedMetaData.isSymbolicLinkingEnabled(), "/")); final String servletVersion = mergedMetaData.getServletVersion(); if (servletVersion != null) { d.setMajorVersion(Integer.parseInt(servletVersion.charAt(0) + "")); if (mergedMetaData.getJspConfig() != null) { Collection<JspPropertyGroup> values = new LinkedHashSet<>(propertyGroups.values()); d.setJspConfigDescriptor(new JspConfigDescriptorImpl(tldInfo.values(), values)); if (mergedMetaData.getExecutorName() != null) { d.setExecutor(executorsByName.get(mergedMetaData.getExecutorName()).getValue()); Boolean proactiveAuthentication = mergedMetaData.getProactiveAuthentication();
@Override public void deploy(DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException { final DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); final Module module = deploymentUnit.getAttachment(org.jboss.as.server.deployment.Attachments.MODULE); final WeldConfiguration configuration = Utils.getRootDeploymentUnit(deploymentUnit).getAttachment(WeldConfiguration.ATTACHMENT_KEY); if (deploymentUnit.getAttachment(WarMetaData.ATTACHMENT_KEY) == null) { return; if (DeploymentTypeMarker.isType(DeploymentType.WAR, deploymentUnit)) { final JBossWebMetaData webMetaData = deploymentUnit.getAttachment(WarMetaData.ATTACHMENT_KEY).getMergedJBossWebMetaData(); if (webMetaData == null) { if (webMetaData.getContextParams() == null) { return; for (ParamValueMetaData param : webMetaData.getContextParams()) { if (CONTEXT_PARAM_DEV_MODE.equals(param.getParamName()) && Boolean.valueOf(param.getParamValue())) { devModeContextParam = true; break; if (DeploymentTypeMarker.isType(DeploymentType.WAR, deploymentUnit)) { if (deploymentUnit.getAttachment(WarMetaData.ATTACHMENT_KEY) == null) {
@Override public void deploy(DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException { final DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); final EEModuleDescription module = deploymentUnit.getAttachment(Attachments.EE_MODULE_DESCRIPTION); final EEApplicationClasses applicationClasses = deploymentUnit.getAttachment(Attachments.EE_APPLICATION_CLASSES_DESCRIPTION); if (!DeploymentTypeMarker.isType(DeploymentType.WAR, deploymentUnit)) { return; // Skip non web deployments WarMetaData warMetaData = deploymentUnit.getAttachment(WarMetaData.ATTACHMENT_KEY); if (warMetaData == null) { WeldLogger.DEPLOYMENT_LOGGER.debug("Not installing Weld web tier integration as no war metadata found"); List<ListenerMetaData> listeners = webMetaData.getListeners(); if (listeners == null) { listeners = new ArrayList<ListenerMetaData>(); webMetaData.setListeners(listeners); } else {
private void addConfiguration(DeploymentUnit deploymentUnit, KeycloakAdapterConfigService configService) throws DeploymentUnitProcessingException { WarMetaData warMetaData = deploymentUnit.getAttachment(WarMetaData.ATTACHMENT_KEY); if (warMetaData == null) { throw new DeploymentUnitProcessingException("WarMetaData not found for KeycloakServer."); } JBossWebMetaData webMetaData = warMetaData.getMergedJBossWebMetaData(); if (webMetaData == null) { webMetaData = new JBossWebMetaData(); warMetaData.setMergedJBossWebMetaData(webMetaData); } List<ParamValueMetaData> contextParams = webMetaData.getContextParams(); if (contextParams == null) { contextParams = new ArrayList<>(); } ParamValueMetaData param = new ParamValueMetaData(); param.setParamName(KEYCLOAK_CONFIG_PARAM_NAME); param.setParamValue(configService.getConfig().toString()); contextParams.add(param); // Prefer ResteasyJackson2Provider over JsonBindingProvider param = new ParamValueMetaData(); param.setParamName("resteasy.preferJacksonOverJsonB"); // Corresponds to ResteasyContextParameters.RESTEASY_PREFER_JACKSON_OVER_JSONB param.setParamValue(Boolean.TRUE.toString()); contextParams.add(param); webMetaData.setContextParams(contextParams); }
@Override public void deploy(DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException { DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); WarMetaData metaData = deploymentUnit.getAttachment(WarMetaData.ATTACHMENT_KEY); if(JsfVersionMarker.isJsfDisabled(deploymentUnit)) { return; } if(metaData == null || metaData.getMergedJBossWebMetaData() == null || metaData.getMergedJBossWebMetaData().getServlets() == null) { return; } JBossServletMetaData jsf = null; for(JBossServletMetaData servlet : metaData.getMergedJBossWebMetaData().getServlets()) { if(JAVAX_FACES_WEBAPP_FACES_SERVLET.equals(servlet.getServletClass())) { jsf = servlet; } } if(jsf != null) { if(jsf.getMultipartConfig() == null) { //WFLY-2329 File upload doesn't work jsf.setMultipartConfig(new MultipartConfigMetaData()); } } if (disallowDoctypeDecl != null) { // Add the disallowDoctypeDecl context param if it's not already present setContextParameterIfAbsent(metaData.getMergedJBossWebMetaData(), DISALLOW_DOCTYPE_DECL, disallowDoctypeDecl.toString()); } }
void processManagement(final DeploymentUnit unit, JBossWebMetaData metaData) { final DeploymentResourceSupport deploymentResourceSupport = unit.getAttachment(Attachments.DEPLOYMENT_RESOURCE_SUPPORT); for (final JBossServletMetaData servlet : metaData.getServlets()) { try { final String name = servlet.getName(); final ModelNode node = deploymentResourceSupport.getDeploymentSubModel(UndertowExtension.SUBSYSTEM_NAME, PathElement.pathElement("servlet", name)); node.get("servlet-class").set(servlet.getServletClass()); node.get("servlet-name").set(servlet.getServletName()); } catch (Exception e) { // Should a failure in creating the mgmt view also make to the deployment to fail? continue; } } }
@Override public void deploy(DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException { final DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); if (!KeycloakAdapterConfigService.getInstance().isSecureDeployment(deploymentUnit)) { WarMetaData warMetaData = deploymentUnit.getAttachment(WarMetaData.ATTACHMENT_KEY); if (warMetaData == null) { return; } JBossWebMetaData webMetaData = warMetaData.getMergedJBossWebMetaData(); if (webMetaData == null) { return; } LoginConfigMetaData loginConfig = webMetaData.getLoginConfig(); if (loginConfig == null) return; if (loginConfig.getAuthMethod() == null) return; if (!loginConfig.getAuthMethod().equals("KEYCLOAK")) return; } final ModuleSpecification moduleSpecification = deploymentUnit.getAttachment(Attachments.MODULE_SPECIFICATION); final ModuleLoader moduleLoader = Module.getBootModuleLoader(); addCommonModules(moduleSpecification, moduleLoader); addPlatformSpecificModules(moduleSpecification, moduleLoader); }
private static String getDeploymentSecurityDomainName(final Endpoint ep, final DeploymentUnit unit) { JBossWebMetaData metadata = ep.getService().getDeployment().getAttachment(JBossWebMetaData.class); String metaDataSecurityDomain = metadata != null ? metadata.getSecurityDomain() : null; if (metaDataSecurityDomain == null) { if (unit.hasAttachment(UndertowAttachments.DEFAULT_SECURITY_DOMAIN)) { metaDataSecurityDomain = unit.getAttachment(UndertowAttachments.DEFAULT_SECURITY_DOMAIN); } else { metaDataSecurityDomain = SecurityConstants.DEFAULT_APPLICATION_POLICY; } } else { metaDataSecurityDomain = SecurityUtil.unprefixSecurityDomain(metaDataSecurityDomain.trim()); } return metaDataSecurityDomain; }
/** * <p>Configures the {@link WarMetaData}.</p> * * @param deploymentUnit */ private void configureWarMetadata(DeploymentUnit deploymentUnit) { WarMetaData warMetaData = deploymentUnit.getAttachment(WarMetaData.ATTACHMENT_KEY); warMetaData.getMergedJBossWebMetaData().setSecurityDomain(this.getConfiguration().getSecurityDomain()); }