View Javadoc
1   package org.codehaus.plexus.component.repository;
2   
3   /*
4    * Copyright 2001-2006 Codehaus Foundation.
5    *
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    *
10   *      http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  
19  import java.util.ArrayList;
20  import java.util.List;
21  
22  /**
23   * Contains a set of ComponentDescriptors and the set's dependencies.
24   *
25   * @author Jason van Zyl
26   * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
27   */
28  public class ComponentSetDescriptor {
29      // This field is not currently used in Maven, or Plexus
30      private String id;
31  
32      /** The source location of this component source descriptor */
33      private String source;
34  
35      /** Flag to indicate whether this component should be loaded in a realm/classloader of its own. */
36      private boolean isolatedRealm;
37  
38      /** The component descriptors that can be found within this component set descriptor. */
39      private final List<ComponentDescriptor<?>> components = new ArrayList<ComponentDescriptor<?>>();
40  
41      /** The dependencies that are required by the set of components found in this component set descriptor. */
42      private final List<ComponentDependency> dependencies = new ArrayList<ComponentDependency>();
43  
44      /**
45       * Returns a list of components in this set.
46       * @return a list of components
47       */
48      public List<ComponentDescriptor<?>> getComponents() {
49          return components;
50      }
51  
52      /**
53       * Add a new ComponentDescriptor to this set.
54       * @param cd the ComponentDescriptor to add
55       */
56      public void addComponentDescriptor(ComponentDescriptor<?> cd) {
57          components.add(cd);
58      }
59  
60      /**
61       * Sets a List of components as this set's contents.
62       * @param components the List of components to set
63       */
64      public void setComponents(List<ComponentDescriptor<?>> components) {
65          this.components.clear();
66          this.components.addAll(components);
67      }
68  
69      /**
70       * Returns a List of dependencies of this set of components.
71       * @return a List of dependencies of this set of components
72       */
73      public List<ComponentDependency> getDependencies() {
74          return dependencies;
75      }
76  
77      /**
78       * Add a depenency to this set's contents.
79       * @param cd the ComponentDependency to add
80       */
81      public void addDependency(ComponentDependency cd) {
82          dependencies.add(cd);
83      }
84  
85      /**
86       * Sets a List of dependencies as this set's component dependencies.
87       * @param dependencies the List of components to set
88       */
89      public void setDependencies(List<ComponentDependency> dependencies) {
90          this.dependencies.clear();
91          this.dependencies.addAll(dependencies);
92      }
93  
94      /**
95       * Sets that this set of components may be in an isolated classrealm.
96       * @param isolatedRealm true if this set of components may be in an
97       *  isolated classrealm
98       */
99      public void setIsolatedRealm(boolean isolatedRealm) {
100         this.isolatedRealm = isolatedRealm;
101     }
102 
103     /**
104      * Returns true if this set may be in an isolated classrealm.
105      * @return true if this set may be in an isolated classrealm
106      */
107     public boolean isIsolatedRealm() {
108         return isolatedRealm;
109     }
110 
111     /**
112      * Returns the identifier of this set.
113      * @return the identifier of this set
114      */
115     public String getId() {
116         return id;
117     }
118 
119     /**
120      * Sets the identifier of this set.
121      * @param id the identifier to set
122      */
123     public void setId(String id) {
124         this.id = id;
125     }
126 
127     public String toString() {
128         StringBuilder sb = new StringBuilder();
129 
130         sb.append("Component Descriptor: ");
131 
132         for (ComponentDescriptor<?> cd : components) {
133             sb.append(cd.getHumanReadableKey()).append("\n");
134         }
135 
136         sb.append("---");
137 
138         return sb.toString();
139     }
140 
141     public String getSource() {
142         return source;
143     }
144 
145     public void setSource(String source) {
146         this.source = source;
147     }
148 }