/* * JBoss, Home of Professional Open Source. * Copyright 2012, Red Hat, Inc., and individual contributors * as indicated by the @author tags. See the copyright.txt file in the * distribution for a full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.jboss.as.server.deployment.module.descriptor; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Set; import org.jboss.as.server.deployment.module.FilterSpecification; import org.jboss.as.server.deployment.module.ModuleDependency; import org.jboss.as.server.deployment.module.ResourceRoot; import org.jboss.modules.DependencySpec; import org.jboss.modules.ModuleIdentifier; /** * @author Stuart Douglas */ class ModuleStructureSpec { private ModuleIdentifier moduleIdentifier; private final List<ModuleDependency> moduleDependencies = new ArrayList<ModuleDependency>(); private final List<DependencySpec> systemDependencies = new ArrayList<DependencySpec>(); private final List<ResourceRoot> resourceRoots = new ArrayList<ResourceRoot>(); private final List<FilterSpecification> exportFilters = new ArrayList<FilterSpecification>(); private final List<ModuleIdentifier> exclusions = new ArrayList<ModuleIdentifier>(); private final List<String> classFileTransformers = new ArrayList<String>(); private final List<ModuleIdentifier> aliases = new ArrayList<ModuleIdentifier>(); private final List<ModuleIdentifier> annotationModules = new ArrayList<ModuleIdentifier>(); /** * Note that this being null is different to an empty list. * * Null means unspecified, while empty means specified but empty * * A sub deployment will inherit this from its parent if it is unspecified, but not if * it is empty but specified. */ private Set<String> excludedSubsystems; private boolean localLast = false; public ModuleIdentifier getModuleIdentifier() { return moduleIdentifier; } public void setModuleIdentifier(ModuleIdentifier moduleIdentifier) { this.moduleIdentifier = moduleIdentifier; } public void addModuleDependency(ModuleDependency dependency) { moduleDependencies.add(dependency); } public List<ModuleDependency> getModuleDependencies() { return Collections.unmodifiableList(moduleDependencies); } public void addResourceRoot(ResourceRoot resourceRoot) { resourceRoots.add(resourceRoot); } public List<ResourceRoot> getResourceRoots() { return Collections.unmodifiableList(resourceRoots); } public void addSystemDependency(final DependencySpec dependency) { systemDependencies.add(dependency); } public List<DependencySpec> getSystemDependencies() { return Collections.unmodifiableList(systemDependencies); } public void addAlias(final ModuleIdentifier dependency) { aliases.add(dependency); } public List<ModuleIdentifier> getAliases() { return Collections.unmodifiableList(aliases); } public void addAnnotationModule(final ModuleIdentifier dependency) { annotationModules.add(dependency); } public List<ModuleIdentifier> getAnnotationModules() { return Collections.unmodifiableList(annotationModules); } public List<ModuleIdentifier> getExclusions() { return exclusions; } public List<FilterSpecification> getExportFilters() { return exportFilters; } public List<String> getClassFileTransformers() { return classFileTransformers; } public boolean isLocalLast() { return localLast; } public void setLocalLast(final boolean localLast) { this.localLast = localLast; } public Set<String> getExcludedSubsystems() { return excludedSubsystems; } public void setExcludedSubsystems(final Set<String> excludedSubsystems) { this.excludedSubsystems = excludedSubsystems; } }