001 //
002 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-2
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: 2012.04.26 at 04:53:34 AM CEST
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.XmlElement;
018 import javax.xml.bind.annotation.XmlType;
019
020
021 /**
022 * List of implementations.
023 *
024 * <p>Java class for Implementations complex type.
025 *
026 * <p>The following schema fragment specifies the expected content contained within this class.
027 *
028 * <pre>
029 * <complexType name="Implementations">
030 * <complexContent>
031 * <extension base="{http://jomc.org/model}ModelObject">
032 * <sequence>
033 * <element ref="{http://jomc.org/model}implementation" maxOccurs="unbounded" minOccurs="0"/>
034 * <element name="reference" type="{http://jomc.org/model}ImplementationReference" maxOccurs="unbounded" minOccurs="0"/>
035 * </sequence>
036 * </extension>
037 * </complexContent>
038 * </complexType>
039 * </pre>
040 *
041 *
042 */
043 @XmlAccessorType(XmlAccessType.FIELD)
044 @XmlType(name = "Implementations", namespace = "http://jomc.org/model", propOrder = {
045 "implementation",
046 "reference"
047 })
048 @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-26T04:53:34+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
049 public class Implementations
050 extends ModelObject
051 implements Cloneable
052 {
053
054 @XmlElement(namespace = "http://jomc.org/model")
055 @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-26T04:53:34+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
056 protected List<Implementation> implementation;
057 @XmlElement(namespace = "http://jomc.org/model")
058 @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-26T04:53:34+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
059 protected List<ImplementationReference> reference;
060
061 /**
062 * Creates a new {@code Implementations} instance.
063 *
064 */
065 public Implementations() {
066 // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
067 super();
068 }
069
070 /**
071 * Creates a new {@code Implementations} instance by deeply copying a given {@code Implementations} instance.
072 *
073 *
074 * @param o
075 * The instance to copy.
076 * @throws NullPointerException
077 * if {@code o} is {@code null}.
078 */
079 public Implementations(final Implementations o) {
080 // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
081 super(o);
082 if (o == null) {
083 throw new NullPointerException("Cannot create a copy of 'Implementations' from 'null'.");
084 }
085 // 'Implementation' collection.
086 if (o.implementation!= null) {
087 copyImplementation(o.getImplementation(), this.getImplementation());
088 }
089 // 'Reference' collection.
090 if (o.reference!= null) {
091 copyReference(o.getReference(), this.getReference());
092 }
093 }
094
095 /**
096 * Gets the value of the implementation property.
097 *
098 * <p>
099 * 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 }