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: 2016.11.01 at 03:16:38 AM CET 006// 007 008 009package org.jomc.model; 010 011import java.util.ArrayList; 012import java.util.Iterator; 013import java.util.List; 014import javax.annotation.Generated; 015import javax.xml.bind.annotation.XmlAccessType; 016import javax.xml.bind.annotation.XmlAccessorType; 017import javax.xml.bind.annotation.XmlElement; 018import 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 = "2016-11-01T03:16:37+01:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2") 049public 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 = "2016-11-01T03:16:37+01: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 = "2016-11-01T03:16:37+01: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.1 Build 2012-03-02T12:09:12+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.1 Build 2012-03-02T12:09:12+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 = "2016-11-01T03:16:37+01: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 = "2016-11-01T03:16:37+01: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 = "2016-11-01T03:16:37+01: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 = "2016-11-01T03:16:37+01: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 = "2016-11-01T03:16:37+01: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}