1 //
2 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-2
3 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
4 // Any modifications to this file will be lost upon recompilation of the source schema.
5 // Generated on: 2012.04.26 at 04:53:34 AM CEST
6 //
7
8
9 package org.jomc.model;
10
11 import java.util.ArrayList;
12 import java.util.Iterator;
13 import java.util.List;
14 import javax.annotation.Generated;
15 import javax.xml.bind.annotation.XmlAccessType;
16 import javax.xml.bind.annotation.XmlAccessorType;
17 import javax.xml.bind.annotation.XmlElement;
18 import javax.xml.bind.annotation.XmlType;
19
20
21 /**
22 * List of implementations.
23 *
24 * <p>Java class for Implementations complex type.
25 *
26 * <p>The following schema fragment specifies the expected content contained within this class.
27 *
28 * <pre>
29 * <complexType name="Implementations">
30 * <complexContent>
31 * <extension base="{http://jomc.org/model}ModelObject">
32 * <sequence>
33 * <element ref="{http://jomc.org/model}implementation" maxOccurs="unbounded" minOccurs="0"/>
34 * <element name="reference" type="{http://jomc.org/model}ImplementationReference" maxOccurs="unbounded" minOccurs="0"/>
35 * </sequence>
36 * </extension>
37 * </complexContent>
38 * </complexType>
39 * </pre>
40 *
41 *
42 */
43 @XmlAccessorType(XmlAccessType.FIELD)
44 @XmlType(name = "Implementations", namespace = "http://jomc.org/model", propOrder = {
45 "implementation",
46 "reference"
47 })
48 @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-26T04:53:34+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
49 public class Implementations
50 extends ModelObject
51 implements Cloneable
52 {
53
54 @XmlElement(namespace = "http://jomc.org/model")
55 @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-26T04:53:34+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
56 protected List<Implementation> implementation;
57 @XmlElement(namespace = "http://jomc.org/model")
58 @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-26T04:53:34+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
59 protected List<ImplementationReference> reference;
60
61 /**
62 * Creates a new {@code Implementations} instance.
63 *
64 */
65 public Implementations() {
66 // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
67 super();
68 }
69
70 /**
71 * Creates a new {@code Implementations} instance by deeply copying a given {@code Implementations} instance.
72 *
73 *
74 * @param o
75 * The instance to copy.
76 * @throws NullPointerException
77 * if {@code o} is {@code null}.
78 */
79 public Implementations(final Implementations o) {
80 // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
81 super(o);
82 if (o == null) {
83 throw new NullPointerException("Cannot create a copy of 'Implementations' from 'null'.");
84 }
85 // 'Implementation' collection.
86 if (o.implementation!= null) {
87 copyImplementation(o.getImplementation(), this.getImplementation());
88 }
89 // 'Reference' collection.
90 if (o.reference!= null) {
91 copyReference(o.getReference(), this.getReference());
92 }
93 }
94
95 /**
96 * Gets the value of the implementation property.
97 *
98 * <p>
99 * This accessor method returns a reference to the live list,
100 * not a snapshot. Therefore any modification you make to the
101 * returned list will be present inside the JAXB object.
102 * This is why there is not a <CODE>set</CODE> method for the implementation property.
103 *
104 * <p>
105 * For example, to add a new item, do as follows:
106 * <pre>
107 * getImplementation().add(newItem);
108 * </pre>
109 *
110 *
111 * <p>
112 * Objects of the following type(s) are allowed in the list
113 * {@link Implementation }
114 *
115 *
116 */
117 @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-26T04:53:34+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
118 public List<Implementation> getImplementation() {
119 if (implementation == null) {
120 implementation = new ArrayList<Implementation>();
121 }
122 return this.implementation;
123 }
124
125 /**
126 * Gets the value of the reference property.
127 *
128 * <p>
129 * This accessor method returns a reference to the live list,
130 * not a snapshot. Therefore any modification you make to the
131 * returned list will be present inside the JAXB object.
132 * This is why there is not a <CODE>set</CODE> method for the reference property.
133 *
134 * <p>
135 * For example, to add a new item, do as follows:
136 * <pre>
137 * getReference().add(newItem);
138 * </pre>
139 *
140 *
141 * <p>
142 * Objects of the following type(s) are allowed in the list
143 * {@link ImplementationReference }
144 *
145 *
146 */
147 @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-26T04:53:34+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
148 public List<ImplementationReference> getReference() {
149 if (reference == null) {
150 reference = new ArrayList<ImplementationReference>();
151 }
152 return this.reference;
153 }
154
155 /**
156 * Copies all values of property {@code Implementation} deeply.
157 *
158 * @param source
159 * The source to copy from.
160 * @param target
161 * The target to copy {@code source} to.
162 * @throws NullPointerException
163 * if {@code target} is {@code null}.
164 */
165 @SuppressWarnings("unchecked")
166 @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-26T04:53:34+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
167 private static void copyImplementation(final List<Implementation> source, final List<Implementation> target) {
168 // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
169 if ((source!= null)&&(!source.isEmpty())) {
170 for (final Iterator<?> it = source.iterator(); it.hasNext(); ) {
171 final Object next = it.next();
172 if (next instanceof Implementation) {
173 // CClassInfo: org.jomc.model.Implementation
174 target.add(((Implementation) next).clone());
175 continue;
176 }
177 // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
178 throw new AssertionError((("Unexpected instance '"+ next)+"' for property 'Implementation' of class 'org.jomc.model.Implementations'."));
179 }
180 }
181 }
182
183 /**
184 * Copies all values of property {@code Reference} deeply.
185 *
186 * @param source
187 * The source to copy from.
188 * @param target
189 * The target to copy {@code source} to.
190 * @throws NullPointerException
191 * if {@code target} is {@code null}.
192 */
193 @SuppressWarnings("unchecked")
194 @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-26T04:53:34+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
195 private static void copyReference(final List<ImplementationReference> source, final List<ImplementationReference> target) {
196 // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
197 if ((source!= null)&&(!source.isEmpty())) {
198 for (final Iterator<?> it = source.iterator(); it.hasNext(); ) {
199 final Object next = it.next();
200 if (next instanceof ImplementationReference) {
201 // CClassInfo: org.jomc.model.ImplementationReference
202 target.add(((ImplementationReference) next).clone());
203 continue;
204 }
205 // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
206 throw new AssertionError((("Unexpected instance '"+ next)+"' for property 'Reference' of class 'org.jomc.model.Implementations'."));
207 }
208 }
209 }
210
211 /**
212 * Creates and returns a deep copy of this object.
213 *
214 *
215 * @return
216 * A deep copy of this object.
217 */
218 @Override
219 @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-26T04:53:34+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
220 public Implementations clone() {
221 {
222 // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
223 final Implementations clone = ((Implementations) super.clone());
224 // 'Implementation' collection.
225 if (this.implementation!= null) {
226 clone.implementation = null;
227 copyImplementation(this.getImplementation(), clone.getImplementation());
228 }
229 // 'Reference' collection.
230 if (this.reference!= null) {
231 clone.reference = null;
232 copyReference(this.getReference(), clone.getReference());
233 }
234 return clone;
235 }
236 }
237
238 /**
239 * Gets an implementation for a given identifier from the list of implementations.
240 *
241 * @param implementation The identifier of the implementation to return.
242 *
243 * @return The first matching implementation or {@code null}, if no such implementation is found.
244 *
245 * @throws NullPointerException if {@code implementation} is {@code null}.
246 *
247 * @see #getImplementation()
248 * @see Implementation#getIdentifier()
249 */
250 public Implementation getImplementation( final String implementation )
251 {
252 if ( implementation == null )
253 {
254 throw new NullPointerException( "implementation" );
255 }
256
257 for ( int i = 0, s0 = this.getImplementation().size(); i < s0; i++ )
258 {
259 final Implementation current = this.getImplementation().get( i );
260
261 if ( implementation.equals( current.getIdentifier() ) )
262 {
263 return current;
264 }
265 }
266
267 return null;
268 }
269
270 /**
271 * Gets an implementation for a given class from the list of implementations.
272 *
273 * @param implementation The class of the implementation to return.
274 *
275 * @return The first matching implementation or {@code null}, if no such implementation is found.
276 *
277 * @throws NullPointerException if {@code implementation} is {@code null}.
278 *
279 * @see #getImplementation()
280 * @see Implementation#isClassDeclaration()
281 * @see Implementation#getClazz()
282 */
283 public Implementation getImplementation( final Class<?> implementation )
284 {
285 if ( implementation == null )
286 {
287 throw new NullPointerException( "implementation" );
288 }
289
290 for ( int i = 0, s0 = this.getImplementation().size(); i < s0; i++ )
291 {
292 final Implementation current = this.getImplementation().get( i );
293
294 if ( current.isClassDeclaration() && implementation.getName().equals( current.getClazz() ) )
295 {
296 return current;
297 }
298 }
299
300 return null;
301 }
302
303 /**
304 * Gets an implementation for a given name from the list of implementations.
305 *
306 * @param name The name of the implementation to return.
307 *
308 * @return The first matching implementation or {@code null}, if no such implementation is found.
309 *
310 * @throws NullPointerException if {@code name} is {@code null}.
311 *
312 * @see #getImplementation()
313 * @see Implementation#getName()
314 */
315 public Implementation getImplementationByName( final String name )
316 {
317 if ( name == null )
318 {
319 throw new NullPointerException( "name" );
320 }
321
322 for ( int i = 0, s0 = this.getImplementation().size(); i < s0; i++ )
323 {
324 final Implementation current = this.getImplementation().get( i );
325
326 if ( name.equals( current.getName() ) )
327 {
328 return current;
329 }
330 }
331
332 return null;
333 }
334
335 /**
336 * Gets an implementation reference for a given identifier from the list of references.
337 *
338 * @param implementation The identifier of the reference to return.
339 *
340 * @return The first matching implementation reference or {@code null}, if no such reference is found.
341 *
342 * @throws NullPointerException if {@code implementation} is {@code null}.
343 *
344 * @see #getReference()
345 * @see ImplementationReference#getIdentifier()
346 */
347 public ImplementationReference getReference( final String implementation )
348 {
349 if ( implementation == null )
350 {
351 throw new NullPointerException( "implementation" );
352 }
353
354 for ( int i = 0, s0 = this.getReference().size(); i < s0; i++ )
355 {
356 final ImplementationReference r = this.getReference().get( i );
357
358 if ( implementation.equals( r.getIdentifier() ) )
359 {
360 return r;
361 }
362 }
363
364 return null;
365 }
366
367 }