001 //
002 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-833
003 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
004 // Any modifications to this file will be lost upon recompilation of the source schema.
005 // Generated on: 2009.12.07 at 03:06:36 AM UTC
006 //
007
008
009 package org.jomc.model;
010
011 import java.util.ArrayList;
012 import java.util.Iterator;
013 import java.util.List;
014 import javax.annotation.Generated;
015 import javax.xml.bind.annotation.XmlAccessType;
016 import javax.xml.bind.annotation.XmlAccessorType;
017 import javax.xml.bind.annotation.XmlType;
018
019
020 /**
021 * List of implementations.
022 *
023 * <p>Java class for Implementations complex type.
024 *
025 * <p>The following schema fragment specifies the expected content contained within this class.
026 *
027 * <pre>
028 * <complexType name="Implementations">
029 * <complexContent>
030 * <extension base="{http://jomc.org/model}ModelObject">
031 * <sequence>
032 * <element ref="{http://jomc.org/model}implementation" maxOccurs="unbounded" minOccurs="0"/>
033 * <element name="reference" type="{http://jomc.org/model}ImplementationReference" maxOccurs="unbounded" minOccurs="0"/>
034 * </sequence>
035 * </extension>
036 * </complexContent>
037 * </complexType>
038 * </pre>
039 *
040 *
041 */
042 @XmlAccessorType(XmlAccessType.FIELD)
043 @XmlType(name = "Implementations", propOrder = {
044 "implementation",
045 "reference"
046 })
047 @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
048 public class Implementations
049 extends ModelObject
050 implements Cloneable
051 {
052
053 @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
054 protected List<Implementation> implementation;
055 @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
056 protected List<ImplementationReference> reference;
057
058 /**
059 * Creates a new {@code Implementations} instance.
060 *
061 */
062 public Implementations() {
063 // CC-XJC Version 1.2 Build 2009-11-15T21:50:02+0000
064 super();
065 }
066
067 /**
068 * Creates a new {@code Implementations} instance by deeply copying a given {@code Implementations} instance.
069 *
070 *
071 * @param o
072 * The instance to copy.
073 * @throws NullPointerException
074 * if {@code o} is {@code null}.
075 */
076 public Implementations(final Implementations o) {
077 // CC-XJC Version 1.2 Build 2009-11-15T21:50:02+0000
078 super(o);
079 if (o == null) {
080 throw new NullPointerException("Cannot create a copy of 'Implementations' from 'null'.");
081 }
082 // 'Implementation' collection.
083 copyImplementation(o.getImplementation(), getImplementation());
084 // 'Reference' collection.
085 copyReference(o.getReference(), getReference());
086 }
087
088 /**
089 * Gets the value of the implementation property.
090 *
091 * <p>
092 * This accessor method returns a reference to the live list,
093 * not a snapshot. Therefore any modification you make to the
094 * returned list will be present inside the JAXB object.
095 * This is why there is not a <CODE>set</CODE> method for the implementation property.
096 *
097 * <p>
098 * For example, to add a new item, do as follows:
099 * <pre>
100 * getImplementation().add(newItem);
101 * </pre>
102 *
103 *
104 * <p>
105 * Objects of the following type(s) are allowed in the list
106 * {@link Implementation }
107 *
108 *
109 */
110 @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
111 public List<Implementation> getImplementation() {
112 if (implementation == null) {
113 implementation = new ArrayList<Implementation>();
114 }
115 return this.implementation;
116 }
117
118 /**
119 * Gets the value of the reference property.
120 *
121 * <p>
122 * This accessor method returns a reference to the live list,
123 * not a snapshot. Therefore any modification you make to the
124 * returned list will be present inside the JAXB object.
125 * This is why there is not a <CODE>set</CODE> method for the reference property.
126 *
127 * <p>
128 * For example, to add a new item, do as follows:
129 * <pre>
130 * getReference().add(newItem);
131 * </pre>
132 *
133 *
134 * <p>
135 * Objects of the following type(s) are allowed in the list
136 * {@link ImplementationReference }
137 *
138 *
139 */
140 @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
141 public List<ImplementationReference> getReference() {
142 if (reference == null) {
143 reference = new ArrayList<ImplementationReference>();
144 }
145 return this.reference;
146 }
147
148 /**
149 * Copies all values of property {@code Implementation} deeply.
150 *
151 * @param target
152 * The target to copy {@code source} to.
153 * @param source
154 * The source to copy from.
155 * @throws NullPointerException
156 * if {@code source} or {@code target} is {@code null}.
157 */
158 @SuppressWarnings("unchecked")
159 @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
160 private static void copyImplementation(final List<Implementation> source, final List<Implementation> target) {
161 // CC-XJC Version 1.2 Build 2009-11-15T21:50:02+0000
162 if (!source.isEmpty()) {
163 for (Iterator it = source.iterator(); it.hasNext(); ) {
164 final Object next = it.next();
165 if (next instanceof Implementation) {
166 // CClassInfo: org.jomc.model.Implementation
167 target.add(((Implementation) next).clone());
168 continue;
169 }
170 // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
171 throw new AssertionError((("Unexpected instance '"+ next)+"' for property 'Implementation' of class 'org.jomc.model.Implementations'."));
172 }
173 }
174 }
175
176 /**
177 * Copies all values of property {@code Reference} deeply.
178 *
179 * @param target
180 * The target to copy {@code source} to.
181 * @param source
182 * The source to copy from.
183 * @throws NullPointerException
184 * if {@code source} or {@code target} is {@code null}.
185 */
186 @SuppressWarnings("unchecked")
187 @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
188 private static void copyReference(final List<ImplementationReference> source, final List<ImplementationReference> target) {
189 // CC-XJC Version 1.2 Build 2009-11-15T21:50:02+0000
190 if (!source.isEmpty()) {
191 for (Iterator it = source.iterator(); it.hasNext(); ) {
192 final Object next = it.next();
193 if (next instanceof ImplementationReference) {
194 // CClassInfo: org.jomc.model.ImplementationReference
195 target.add(((ImplementationReference) next).clone());
196 continue;
197 }
198 // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
199 throw new AssertionError((("Unexpected instance '"+ next)+"' for property 'Reference' of class 'org.jomc.model.Implementations'."));
200 }
201 }
202 }
203
204 /**
205 * Creates and returns a deep copy of this object.
206 *
207 *
208 * @return
209 * A deep copy of this object.
210 */
211 @Override
212 @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
213 public Implementations clone() {
214 // CC-XJC Version 1.2 Build 2009-11-15T21:50:02+0000
215 return new Implementations(this);
216 }
217
218 /**
219 * Gets an implementation for a given identifier from the list.
220 *
221 * @param implementation The identifier of the implementation to return.
222 *
223 * @return The implementation identified by {@code implementation} from the
224 * list or {@code null}, if no implementation matching
225 * {@code implementation} is found.
226 *
227 * @throws NullPointerException if {@code implementation} is {@code null}.
228 *
229 * @see #getImplementation()
230 */
231 public Implementation getImplementation( final String implementation )
232 {
233 if ( implementation == null )
234 {
235 throw new NullPointerException( "implementation" );
236 }
237
238 for ( Implementation i : this.getImplementation() )
239 {
240 if ( implementation.equals( i.getIdentifier() ) )
241 {
242 return i;
243 }
244 }
245
246 return null;
247 }
248
249 /**
250 * Gets an implementation for a given class from the list.
251 *
252 * @param implementation The class of the implementation to return.
253 *
254 * @return The implementation identified by {@code implementation} from the
255 * list or {@code null}, if no implementation matching
256 * {@code implementation} is found.
257 *
258 * @throws NullPointerException if {@code implementation} is {@code null}.
259 *
260 * @see #getImplementation()
261 */
262 public Implementation getImplementation( final Class implementation )
263 {
264 if ( implementation == null )
265 {
266 throw new NullPointerException( "implementation" );
267 }
268
269 for ( Implementation i : this.getImplementation() )
270 {
271 if ( implementation.getName().equals( i.getIdentifier() ) &&
272 i.getIdentifier().equals( i.getClazz() ) )
273 {
274 return i;
275 }
276 }
277
278 return null;
279 }
280
281 /**
282 * Gets an implementation for a given name from the list.
283 *
284 * @param name The name of the implementation to return.
285 *
286 * @return The implementation named {@code name} from the list or
287 * {@code null}, if no implementation matching {@code name} is found.
288 *
289 * @throws NullPointerException if {@code name} is {@code null}.
290 *
291 * @see #getImplementation()
292 */
293 public Implementation getImplementationByName( final String name )
294 {
295 if ( name == null )
296 {
297 throw new NullPointerException( "name" );
298 }
299
300 for ( Implementation i : this.getImplementation() )
301 {
302 if ( name.equals( i.getName() ) )
303 {
304 return i;
305 }
306 }
307
308 return null;
309 }
310
311 /**
312 * Gets an implementation reference for a given identifier from the list of
313 * references.
314 *
315 * @param implementation The identifier of the reference to return.
316 *
317 * @return The implementation reference identified by {@code implementation}
318 * from the list or {@code null}, if no implementation reference matching
319 * {@code implementation} is found.
320 *
321 * @throws NullPointerException if {@code implementation} is {@code null}.
322 *
323 * @see #getReference()
324 */
325 public ImplementationReference getReference( final String implementation )
326 {
327 if ( implementation == null )
328 {
329 throw new NullPointerException( "implementation" );
330 }
331
332 for ( ImplementationReference r : this.getReference() )
333 {
334 if ( implementation.equals( r.getIdentifier() ) )
335 {
336 return r;
337 }
338 }
339
340 return null;
341 }
342
343
344 }