public void addSystemDependency(final ModuleDependency dependency) {
   if (!exclusions.contains(dependency.getIdentifier())
       && !systemDependenciesSet.contains(dependency.getIdentifier())) {
     this.systemDependencies.add(dependency);
     this.systemDependenciesSet.add(dependency.getIdentifier());
   }
 }
Example #2
0
 private List<DependencyInfo> doGetDependencies(final Module module) {
   Dependency[] dependencies = module.getDependencies();
   if (dependencies == null) {
     return Collections.emptyList();
   }
   ArrayList<DependencyInfo> list = new ArrayList<DependencyInfo>(dependencies.length);
   for (Dependency dependency : dependencies) {
     final String dependencyType = dependency.getClass().getSimpleName();
     final String exportFilter = dependency.getExportFilter().toString();
     final String importFilter = dependency.getImportFilter().toString();
     final DependencyInfo info;
     if (dependency instanceof LocalDependency) {
       final LocalDependency localDependency = (LocalDependency) dependency;
       ArrayList<String> pathList = new ArrayList<String>(localDependency.getPaths());
       Collections.sort(pathList);
       info =
           new DependencyInfo(
               dependencyType,
               exportFilter,
               importFilter,
               null,
               null,
               false,
               localDependency.getLocalLoader().toString(),
               pathList);
     } else if (dependency instanceof ModuleDependency) {
       final ModuleDependency moduleDependency = (ModuleDependency) dependency;
       info =
           new DependencyInfo(
               dependencyType,
               exportFilter,
               importFilter,
               moduleDependency.getModuleLoader().mxBean,
               moduleDependency.getIdentifier().toString(),
               moduleDependency.isOptional(),
               null,
               null);
     } else {
       info =
           new DependencyInfo(
               dependencyType, exportFilter, importFilter, null, null, false, null, null);
     }
     list.add(info);
   }
   return list;
 }
 public void addExclusion(final ModuleIdentifier exclusion) {
   allDependencies = null;
   exclusions.add(exclusion);
   Iterator<ModuleDependency> it = systemDependencies.iterator();
   while (it.hasNext()) {
     final ModuleDependency dep = it.next();
     if (dep.getIdentifier().equals(exclusion)) {
       it.remove();
     }
   }
   it = localDependencies.iterator();
   while (it.hasNext()) {
     final ModuleDependency dep = it.next();
     if (dep.getIdentifier().equals(exclusion)) {
       it.remove();
     }
   }
 }
 @Override
 public void deploy(DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException {
   final DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit();
   final DeploymentUnit parent = deploymentUnit.getParent();
   // only run for sub deployments
   if (parent == null) {
     return;
   }
   final ModuleSpecification moduleSpec =
       deploymentUnit.getAttachment(Attachments.MODULE_SPECIFICATION);
   final ModuleLoader moduleLoader =
       deploymentUnit.getAttachment(Attachments.SERVICE_MODULE_LOADER);
   final ModuleIdentifier parentModule = parent.getAttachment(Attachments.MODULE_IDENTIFIER);
   if (parentModule != null) {
     // access to ear classes
     ModuleDependency moduleDependency =
         new ModuleDependency(moduleLoader, parentModule, false, false, true);
     moduleDependency.addImportFilter(PathFilters.acceptAll(), true);
     moduleSpec.addDependency(moduleDependency);
   }
 }
  @Override
  public void deploy(DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException {
    final DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit();
    final DeploymentUnit parent =
        deploymentUnit.getParent() == null ? deploymentUnit : deploymentUnit.getParent();

    final ModuleSpecification parentModuleSpec =
        parent.getAttachment(Attachments.MODULE_SPECIFICATION);

    final ModuleSpecification moduleSpec =
        deploymentUnit.getAttachment(Attachments.MODULE_SPECIFICATION);
    final ModuleLoader moduleLoader =
        deploymentUnit.getAttachment(Attachments.SERVICE_MODULE_LOADER);
    final ModuleIdentifier moduleIdentifier =
        deploymentUnit.getAttachment(Attachments.MODULE_IDENTIFIER);

    if (deploymentUnit.getParent() != null) {
      final ModuleIdentifier parentModule = parent.getAttachment(Attachments.MODULE_IDENTIFIER);
      if (parentModule != null) {
        // access to ear classes
        ModuleDependency moduleDependency =
            new ModuleDependency(moduleLoader, parentModule, false, false, true);
        moduleDependency.addImportFilter(PathFilters.acceptAll(), true);
        moduleSpec.addLocalDependency(moduleDependency);
      }
    }

    // If the sub deployments aren't isolated, then we need to set up dependencies between the sub
    // deployments
    if (!parentModuleSpec.isSubDeploymentModulesIsolated()) {
      final List<DeploymentUnit> subDeployments =
          parent.getAttachmentList(Attachments.SUB_DEPLOYMENTS);
      final List<ModuleDependency> accessibleModules = new ArrayList<ModuleDependency>();
      for (DeploymentUnit subDeployment : subDeployments) {
        final ModuleSpecification subModule =
            subDeployment.getAttachment(Attachments.MODULE_SPECIFICATION);
        if (!subModule.isPrivateModule()) {
          ModuleIdentifier identifier = subDeployment.getAttachment(Attachments.MODULE_IDENTIFIER);
          ModuleDependency dependency =
              new ModuleDependency(moduleLoader, identifier, false, false, true);
          dependency.addImportFilter(PathFilters.acceptAll(), true);
          accessibleModules.add(dependency);
        }
      }
      for (ModuleDependency identifier : accessibleModules) {
        if (!identifier.equals(moduleIdentifier)) {
          moduleSpec.addLocalDependencies(accessibleModules);
        }
      }
    }
  }
 public void addLocalDependency(final ModuleDependency dependency) {
   allDependencies = null;
   if (!exclusions.contains(dependency.getIdentifier())) {
     this.localDependencies.add(dependency);
   }
 }