001 /**
002 *
003 * Copyright 2006 The Apache Software Foundation
004 *
005 * Licensed under the Apache License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018 package org.apache.geronimo.kernel.repository;
019
020 import java.io.Serializable;
021 import java.util.Collection;
022 import java.util.HashSet;
023 import java.util.LinkedHashSet;
024 import java.util.Set;
025 import java.util.List;
026 import java.util.Collections;
027 import java.util.ArrayList;
028 import java.util.Iterator;
029
030 /**
031 * holds the data from the EnvironmentType xml while it is being resolved, transitively closed, etc.
032 *
033 * @version $Rev: 430508 $ $Date: 2006-08-10 12:56:47 -0700 (Thu, 10 Aug 2006) $
034 */
035 public class Environment implements Serializable {
036 private static final long serialVersionUID = 7075760873629376317L;
037
038 private Artifact configId;
039
040 private final LinkedHashSet dependencies = new LinkedHashSet();
041
042 private final Set hiddenClasses = new HashSet();
043 private final Set nonOverrideableClasses = new HashSet();
044
045 private boolean inverseClassLoading;
046 private boolean suppressDefaultEnvironment;
047
048 public Environment() {
049 }
050
051 public Environment(Artifact configId) {
052 this.configId = configId;
053 }
054
055 public Environment(Environment environment) {
056 this.configId = environment.getConfigId();
057 this.dependencies.addAll(environment.dependencies);
058 this.hiddenClasses.addAll(environment.getHiddenClasses());
059 this.nonOverrideableClasses.addAll(environment.getNonOverrideableClasses());
060 this.inverseClassLoading = environment.isInverseClassLoading();
061 this.suppressDefaultEnvironment = environment.isSuppressDefaultEnvironment();
062 }
063
064 public Artifact getConfigId() {
065 return configId;
066 }
067
068 public void setConfigId(Artifact configId) {
069 this.configId = configId;
070 }
071
072 /**
073 * Gets a List (with elements of type Dependency) of the configuration and
074 * JAR dependencies of this configuration.
075 *
076 * @see Dependency
077 */
078 public List getDependencies() {
079 return Collections.unmodifiableList(new ArrayList(dependencies));
080 }
081
082 public void addDependency(Artifact artifact, ImportType importType) {
083 this.dependencies.add(new Dependency(artifact, importType));
084 }
085
086 public void addDependency(Dependency dependency) {
087 this.dependencies.add(dependency);
088 }
089
090 public void addDependencies(Collection dependencies) {
091 for (Iterator iterator = dependencies.iterator(); iterator.hasNext();) {
092 // make sure they are all dependency objects... generics would be sooooo nice
093 Dependency dependency = (Dependency) iterator.next();
094 addDependency(dependency);
095 }
096 }
097
098 public void setDependencies(Collection dependencies) {
099 this.dependencies.clear();
100 addDependencies(dependencies);
101 }
102
103 /**
104 * todo: I should be documented so it's not completely unclear what kind of
105 * elements I hold.
106 */
107 public Set getHiddenClasses() {
108 return hiddenClasses;
109 }
110
111 public void addHiddenClasses(Collection hiddenClasses) {
112 this.hiddenClasses.addAll(hiddenClasses);
113 }
114
115 public void setHiddenClasses(Collection hiddenClasses) {
116 this.hiddenClasses.clear();
117 addHiddenClasses(hiddenClasses);
118 }
119
120 /**
121 * todo: I should be documented so it's not completely unclear what kind of
122 * elements I hold.
123 */
124 public Set getNonOverrideableClasses() {
125 return nonOverrideableClasses;
126 }
127
128 public void addNonOverrideableClasses(Collection nonOverrideableClasses) {
129 this.nonOverrideableClasses.addAll(nonOverrideableClasses);
130 }
131
132 public void setNonOverrideableClasses(Collection nonOverrideableClasses) {
133 this.nonOverrideableClasses.clear();
134 addNonOverrideableClasses(nonOverrideableClasses);
135 }
136
137 public boolean isInverseClassLoading() {
138 return inverseClassLoading;
139 }
140
141 public void setInverseClassLoading(boolean inverseClassLoading) {
142 this.inverseClassLoading = inverseClassLoading;
143 }
144
145 public boolean isSuppressDefaultEnvironment() {
146 return suppressDefaultEnvironment;
147 }
148
149 public void setSuppressDefaultEnvironment(boolean suppressDefaultEnvironment) {
150 this.suppressDefaultEnvironment = suppressDefaultEnvironment;
151 }
152
153 }