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 }