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, false);
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, false);
dependency.addImportFilter(PathFilters.acceptAll(), true);
accessibleModules.add(dependency);
}
}
for (ModuleDependency identifier : accessibleModules) {
if (!identifier.equals(moduleIdentifier)) {
moduleSpec.addLocalDependencies(accessibleModules);
}
}
}