@Override protected void handleAnnotations(DeploymentUnit deploymentUnit, EEApplicationClasses applicationClasses, DeploymentReflectionIndex deploymentReflectionIndex, Class<?> componentClass, T description) throws DeploymentUnitProcessingException { final EEModuleClassDescription clazz = applicationClasses.getClassByName(componentClass.getName()); //we only care about annotations on the bean class itself if (clazz == null) { return; } final ClassAnnotationInformation<Pool, String> pool = clazz.getAnnotationInformation(Pool.class); if (pool == null) { return; } if (!pool.getClassLevelAnnotations().isEmpty()) { final String poolName = pool.getClassLevelAnnotations().get(0); if (poolName == null || poolName.trim().isEmpty()) { throw EjbLogger.ROOT_LOGGER.poolNameCannotBeEmptyString(description.getEJBName()); } this.setPoolName(description, poolName); } }
@Override protected void handleAnnotations(final DeploymentUnit deploymentUnit, final EEApplicationClasses applicationClasses, final DeploymentReflectionIndex deploymentReflectionIndex, final Class<?> componentClass, final EJBComponentDescription description) throws DeploymentUnitProcessingException { final EEModuleClassDescription clazz = applicationClasses.getClassByName(componentClass.getName()); //we only care about annotations on the bean class itself if (clazz == null) { return; } final ClassAnnotationInformation<SecurityDomain, String> securityDomain = clazz.getAnnotationInformation(SecurityDomain.class); if (securityDomain == null) { return; } if (!securityDomain.getClassLevelAnnotations().isEmpty()) { if (ROOT_LOGGER.isDebugEnabled()) { ROOT_LOGGER.debug("EJB " + description.getEJBName() + " is part of security domain " + securityDomain.getClassLevelAnnotations().get(0)); } description.setSecurityDomain(securityDomain.getClassLevelAnnotations().get(0)); } }
createBuilder.addDependency(componentDescription.getCreateServiceName(), EJBComponent.class, service.getEjbComponentInjectedValue()); createBuilder.addDependency(timerServiceThreadPool, ExecutorService.class, service.getExecutorServiceInjectedValue()); if (timerPersistenceServices.containsKey(ejbComponentDescription.getEJBName())) { createBuilder.addDependency(timerPersistenceServices.get(ejbComponentDescription.getEJBName()), TimerPersistence.class, service.getTimerPersistence()); } else { createBuilder.addDependency(finalDefaultTimerPersistenceService, TimerPersistence.class, service.getTimerPersistence());
private void setupDependencies(final EJBComponentDescription description, final EEApplicationDescription applicationDescription, final ResourceRoot deploymentRoot, final String[] annotationValues) throws DeploymentUnitProcessingException { for (final String annotationValue : annotationValues) { final Set<ComponentDescription> components = applicationDescription.getComponents(annotationValue, deploymentRoot.getRoot()); if (components.isEmpty()) { throw EjbLogger.ROOT_LOGGER.failToFindEjbRefByDependsOn(annotationValue, description.getComponentClassName()); } else if (components.size() != 1) { throw EjbLogger.ROOT_LOGGER.failToCallEjbRefByDependsOn(annotationValue, description.getComponentClassName(), components); } final ComponentDescription component = components.iterator().next(); description.addDependency(component.getStartServiceName()); if (description instanceof SingletonComponentDescription) { ((SingletonComponentDescription)description).getDependsOn().add(component.getStartServiceName()); if (ROOT_LOGGER.isDebugEnabled()) { ROOT_LOGGER.debugf(description.getEJBName() + " bean is dependent on " + component.getComponentName()); } } } } }
String roleName = entry.getKey(); for (String roleLink : entry.getValue()) { EJBRoleRefPermission p = new EJBRoleRefPermission(ejbComponentDescription.getEJBName(), roleName); ejbJaccConfig.addRole(roleLink, p); for (String role : declaredRoles) { if (!securityRoleRefs.containsKey(role)) { EJBRoleRefPermission p = new EJBRoleRefPermission(ejbComponentDescription.getEJBName(), role); ejbJaccConfig.addRole(role, p); EJBRoleRefPermission p = new EJBRoleRefPermission(ejbComponentDescription.getEJBName(), role); ejbJaccConfig.addRole(role, p); SessionBeanComponentDescription session = SessionBeanComponentDescription.class.cast(ejbComponentDescription); if (session.isStateful()) { EJBMethodPermission p = new EJBMethodPermission(ejbComponentDescription.getEJBName(), "getEJBObject", "Home", null); ejbJaccConfig.addPermit(p);
final EjbDeploymentInformation info = new EjbDeploymentInformation(ejbComponentDescription.getEJBName(), componentInjectedValue, remoteViews, localViews, module.getClassLoader(), iorFactory); deploymentInformationMap.put(ejbComponentDescription.getEJBName(), info);
@Override protected void handleDeploymentDescriptor(DeploymentUnit deploymentUnit, DeploymentReflectionIndex deploymentReflectionIndex, Class<?> componentClass, T description) throws DeploymentUnitProcessingException { final String ejbName = description.getEJBName(); final EjbJarMetaData metaData = deploymentUnit.getAttachment(EjbDeploymentAttachmentKeys.EJB_JAR_METADATA); if (metaData == null) { return; } final AssemblyDescriptorMetaData assemblyDescriptor = metaData.getAssemblyDescriptor(); if (assemblyDescriptor == null) { return; } // get the pool metadata final List<EJBBoundPoolMetaData> pools = assemblyDescriptor.getAny(EJBBoundPoolMetaData.class); String poolName = null; if (pools != null) { for (final EJBBoundPoolMetaData poolMetaData : pools) { // if this applies for all EJBs and if there isn't a pool name already explicitly specified // for the specific bean (i.e. via an ejb-name match) if ("*".equals(poolMetaData.getEjbName()) && poolName == null) { poolName = poolMetaData.getPoolName(); } else if (ejbName.equals(poolMetaData.getEjbName())) { poolName = poolMetaData.getPoolName(); } } } if (poolName != null) { this.setPoolName(description, poolName); } }
final Collection<ViewDescription> views = sessionBean.getViews(); if (views == null || views.isEmpty()) { EjbLogger.DEPLOYMENT_LOGGER.noJNDIBindingsForSessionBean(sessionBean.getEJBName()); return; final String globalJNDIBaseName = "java:global/" + (applicationName != null ? applicationName + "/" : "") + sessionBean.getModuleName() + "/" + sessionBean.getEJBName(); final String appJNDIBaseName = "java:app/" + sessionBean.getModuleName() + "/" + sessionBean.getEJBName(); final String moduleJNDIBaseName = "java:module/" + sessionBean.getEJBName(); final String remoteExportedJNDIBaseName = "java:jboss/exported/" + (applicationName != null ? applicationName + "/" : "") + sessionBean.getModuleName() + "/" + sessionBean.getEJBName(); final String ejbNamespaceBindingBaseName = "ejb:" + (applicationName != null ? applicationName + "/" : "") + sessionBean.getModuleName() + "/" + (distinctName != "" ? distinctName + "/" : "") + sessionBean.getEJBName(); EjbLogger.DEPLOYMENT_LOGGER.jndiBindings(sessionBean.getEJBName(), deploymentUnit, jndiBindingsLogMessage);
@Override protected void processBeanMetaData(final EnterpriseBeanMetaData beanMetaData, final DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException { final SecurityRoleRefsMetaData securityRoleRefs = beanMetaData.getSecurityRoleRefs(); if (securityRoleRefs == null) { return; } final DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); final EEModuleDescription moduleDescription = deploymentUnit.getAttachment(Attachments.EE_MODULE_DESCRIPTION); final EJBComponentDescription ejbComponentDescription = (EJBComponentDescription) moduleDescription.getComponentByName(beanMetaData.getEjbName()); for (final SecurityRoleRefMetaData securityRoleRef : securityRoleRefs) { final String fromRole = securityRoleRef.getRoleName(); String toRole = securityRoleRef.getRoleLink(); if (fromRole == null || fromRole.trim().isEmpty()) { throw EjbLogger.ROOT_LOGGER.roleNamesIsNull(ejbComponentDescription.getEJBName()); } // if role-link hasn't been specified, then it links to the same role name as the one specified // in the role-name if (toRole == null) { toRole = fromRole; } ejbComponentDescription.linkSecurityRoles(fromRole, toRole); } } }
final ExcludeListMetaData excludeList = assemblyDescriptor.getExcludeListByEjbName(componentDescription.getEJBName()); if (excludeList != null && excludeList.getMethods() != null) { handleExcludeMethods(componentDescription, excludeList); final MethodPermissionsMetaData methodPermissions = assemblyDescriptor.getMethodPermissionsByEjbName(componentDescription.getEJBName()); if (methodPermissions != null) { handleMethodPermissions(componentDescription, methodPermissions);
for (final ComponentDescription componentDescription : eeModuleDescription.getComponentDescriptions()) { if(componentDescription instanceof EJBComponentDescription) { String ejbName = ((EJBComponentDescription) componentDescription).getEJBName(); if(pattern.matcher(ejbName).matches()) { List<InterceptorBindingMetaData> bindings = bindingsPerComponent.get(ejbName);
if (ejbComponentDescription.getEjbRemoteView() != null && ejbComponentDescription.getEjbHomeView() != null) { IIOPMetaData iiopMetaData = iiopMetaDataMap.get(ejbComponentDescription.getEJBName()); if (iiopMetaData == null) { iiopMetaData = iiopMetaDataMap.get(IIOPMetaData.WILDCARD_BEAN_NAME);
viewMethodSecurityAttributesServiceName = EJBViewMethodSecurityAttributesService.getServiceName(ejbComponentDescription.getApplicationName(), ejbComponentDescription.getModuleName(), ejbComponentDescription.getEJBName(), viewClassName); } else { viewMethodSecurityAttributesServiceBuilder = null; ROOT_LOGGER .debug("Security is *not* enabled on EJB: " + ejbComponentDescription.getEJBName() + ", since no explicit security domain is configured for the bean, nor is there any default security domain configured in the EJB3 subsystem");
final ContainerTransactionsMetaData containerTransactions = assemblyDescriptor.getContainerTransactionsByEjbName(componentDescription.getEJBName()); if (containerTransactions != null) { for (final ContainerTransactionMetaData containerTx : containerTransactions) {
final EJBMethodPermission permission = new EJBMethodPermission(description.getEJBName(), methodIdentifier.getName(), interfaceType.name(), methodIdentifier.getParameterTypes());
@Override protected void handleAnnotations(DeploymentUnit deploymentUnit, EEApplicationClasses applicationClasses, DeploymentReflectionIndex deploymentReflectionIndex, Class<?> componentClass, T description) throws DeploymentUnitProcessingException { final EEModuleClassDescription clazz = applicationClasses.getClassByName(componentClass.getName()); //we only care about annotations on the bean class itself if (clazz == null) { return; } final ClassAnnotationInformation<Pool, String> pool = clazz.getAnnotationInformation(Pool.class); if (pool == null) { return; } if (!pool.getClassLevelAnnotations().isEmpty()) { final String poolName = pool.getClassLevelAnnotations().get(0); if (poolName == null || poolName.trim().isEmpty()) { throw EjbMessages.MESSAGES.poolNameCannotBeEmptyString(description.getEJBName()); } this.setPoolName(description, poolName); } }
@Override protected void handleAnnotations(final DeploymentUnit deploymentUnit, final EEApplicationClasses applicationClasses, final DeploymentReflectionIndex deploymentReflectionIndex, final Class<?> componentClass, final EJBComponentDescription description) throws DeploymentUnitProcessingException { final EEModuleClassDescription clazz = applicationClasses.getClassByName(componentClass.getName()); //we only care about annotations on the bean class itself if (clazz == null) { return; } final ClassAnnotationInformation<SecurityDomain, String> securityDomain = clazz.getAnnotationInformation(SecurityDomain.class); if (securityDomain == null) { return; } if (!securityDomain.getClassLevelAnnotations().isEmpty()) { if (ROOT_LOGGER.isDebugEnabled()) { ROOT_LOGGER.debug("EJB " + description.getEJBName() + " is part of security domain " + securityDomain.getClassLevelAnnotations().get(0)); } description.setSecurityDomain(securityDomain.getClassLevelAnnotations().get(0)); } }
private void setupDependencies(final EJBComponentDescription description, final EEApplicationDescription applicationDescription, final ResourceRoot deploymentRoot, final String[] annotationValues) throws DeploymentUnitProcessingException { for (final String annotationValue : annotationValues) { final Set<ComponentDescription> components = applicationDescription.getComponents(annotationValue, deploymentRoot.getRoot()); if (components.isEmpty()) { throw MESSAGES.failToFindEjbRefByDependsOn(annotationValue, description.getComponentClassName()); } else if (components.size() != 1) { throw MESSAGES.failToCallEjbRefByDependsOn(annotationValue, description.getComponentClassName(), components); } final ComponentDescription component = components.iterator().next(); description.addDependency(component.getStartServiceName(), DependencyType.REQUIRED); if (description instanceof SingletonComponentDescription) { ((SingletonComponentDescription)description).getDependsOn().add(component.getStartServiceName()); if (ROOT_LOGGER.isDebugEnabled()) { ROOT_LOGGER.debugf(description.getEJBName() + " bean is dependent on " + component.getComponentName()); } } } } }
/** * @param componentConfiguration Component configuration of the EJB component */ public EJBSecurityMetaData(final ComponentConfiguration componentConfiguration) { if (componentConfiguration.getComponentDescription() instanceof EJBComponentDescription == false) { throw MESSAGES.invalidComponentConfiguration(componentConfiguration.getComponentName()); } final EJBComponentDescription ejbComponentDescription = (EJBComponentDescription) componentConfiguration.getComponentDescription(); this.ejbClassName = ejbComponentDescription.getEJBClassName(); this.ejbName = ejbComponentDescription.getEJBName(); this.runAsRole = ejbComponentDescription.getRunAs(); this.securityDomain = ejbComponentDescription.getSecurityDomain(); this.runAsPrincipal = ejbComponentDescription.getRunAsPrincipal(); this.securityRoles = ejbComponentDescription.getSecurityRoles(); final Map<String, Collection<String>> links = ejbComponentDescription.getSecurityRoleLinks(); // security role links configured via <security-role-ref> this.securityRoleLinks = links == null ? Collections.<String, Collection<String>>emptyMap() : Collections.unmodifiableMap(links); // @DeclareRoles final Set<String> roles = ejbComponentDescription.getDeclaredRoles(); this.declaredRoles = roles == null ? Collections.<String>emptySet() : Collections.unmodifiableSet(roles); }
@Override protected void processBeanMetaData(final EnterpriseBeanMetaData beanMetaData, final DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException { final SecurityRoleRefsMetaData securityRoleRefs = beanMetaData.getSecurityRoleRefs(); if (securityRoleRefs == null) { return; } final DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); final EEModuleDescription moduleDescription = deploymentUnit.getAttachment(Attachments.EE_MODULE_DESCRIPTION); final EJBComponentDescription ejbComponentDescription = (EJBComponentDescription) moduleDescription.getComponentByName(beanMetaData.getEjbName()); for (final SecurityRoleRefMetaData securityRoleRef : securityRoleRefs) { final String fromRole = securityRoleRef.getRoleName(); String toRole = securityRoleRef.getRoleLink(); if (fromRole == null || fromRole.trim().isEmpty()) { throw MESSAGES.roleNamesIsNull(ejbComponentDescription.getEJBName()); } // if role-link hasn't been specified, then it links to the same role name as the one specified // in the role-name if (toRole == null) { toRole = fromRole; } ejbComponentDescription.linkSecurityRoles(fromRole, toRole); } } }