View Javadoc

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: 2013.04.21 at 08:43:16 PM 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   * &lt;complexType name="Implementations">
30   *   &lt;complexContent>
31   *     &lt;extension base="{http://jomc.org/model}ModelObject">
32   *       &lt;sequence>
33   *         &lt;element ref="{http://jomc.org/model}implementation" maxOccurs="unbounded" minOccurs="0"/>
34   *         &lt;element name="reference" type="{http://jomc.org/model}ImplementationReference" maxOccurs="unbounded" minOccurs="0"/>
35   *       &lt;/sequence>
36   *     &lt;/extension>
37   *   &lt;/complexContent>
38   * &lt;/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 = "2013-04-21T08:43:16+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 = "2013-04-21T08:43:16+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 = "2013-04-21T08:43:16+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.1 Build 2012-03-02T12:09:12+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.1 Build 2012-03-02T12:09:12+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 = "2013-04-21T08:43:16+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 = "2013-04-21T08:43:16+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 = "2013-04-21T08:43:16+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.1 Build 2012-03-02T12:09:12+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 = "2013-04-21T08:43:16+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.1 Build 2012-03-02T12:09:12+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 = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
220     public Implementations clone() {
221         {
222             // CC-XJC Version 2.0.1 Build 2012-03-02T12:09:12+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 declaring {@code implementation} or {@code null}, if no such
276      * implementation is found.
277      *
278      * @throws NullPointerException if {@code implementation} is {@code null}.
279      * @throws ModelObjectException if compiling the name of a referenced type to a {@code JavaTypeName} fails.
280      *
281      * @see #getImplementation()
282      * @see Implementation#isClassDeclaration()
283      * @see Implementation#getClazz()
284      */
285     public Implementation getImplementation( final Class<?> implementation ) throws ModelObjectException
286     {
287         if ( implementation == null )
288         {
289             throw new NullPointerException( "implementation" );
290         }
291 
292         for ( int i = 0, s0 = this.getImplementation().size(); i < s0; i++ )
293         {
294             final Implementation current = this.getImplementation().get( i );
295 
296             if ( current.isClassDeclaration() && current.getClazz() != null )
297             {
298                 if ( implementation.getName().equals( current.getJavaTypeName().getClassName() ) )
299                 {
300                     return current;
301                 }
302             }
303         }
304 
305         return null;
306     }
307 
308     /**
309      * Gets an implementation for a given name from the list of implementations.
310      *
311      * @param name The name of the implementation to return.
312      *
313      * @return The first matching implementation or {@code null}, if no such implementation is found.
314      *
315      * @throws NullPointerException if {@code name} is {@code null}.
316      *
317      * @see #getImplementation()
318      * @see Implementation#getName()
319      */
320     public Implementation getImplementationByName( final String name )
321     {
322         if ( name == null )
323         {
324             throw new NullPointerException( "name" );
325         }
326 
327         for ( int i = 0, s0 = this.getImplementation().size(); i < s0; i++ )
328         {
329             final Implementation current = this.getImplementation().get( i );
330 
331             if ( name.equals( current.getName() ) )
332             {
333                 return current;
334             }
335         }
336 
337         return null;
338     }
339 
340     /**
341      * Gets an implementation reference for a given identifier from the list of references.
342      *
343      * @param implementation The identifier of the reference to return.
344      *
345      * @return The first matching implementation reference or {@code null}, if no such reference is found.
346      *
347      * @throws NullPointerException if {@code implementation} is {@code null}.
348      *
349      * @see #getReference()
350      * @see ImplementationReference#getIdentifier()
351      */
352     public ImplementationReference getReference( final String implementation )
353     {
354         if ( implementation == null )
355         {
356             throw new NullPointerException( "implementation" );
357         }
358 
359         for ( int i = 0, s0 = this.getReference().size(); i < s0; i++ )
360         {
361             final ImplementationReference r = this.getReference().get( i );
362 
363             if ( implementation.equals( r.getIdentifier() ) )
364             {
365                 return r;
366             }
367         }
368 
369         return null;
370     }
371       
372 }