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.01 at 02:39:59 AM CEST 
006    //
007    
008    
009    package org.jomc.model;
010    
011    import java.io.ByteArrayInputStream;
012    import java.io.ByteArrayOutputStream;
013    import java.io.File;
014    import java.io.IOException;
015    import java.io.InvalidClassException;
016    import java.io.NotSerializableException;
017    import java.io.ObjectInputStream;
018    import java.io.ObjectOutputStream;
019    import java.io.OptionalDataException;
020    import java.io.Serializable;
021    import java.io.StreamCorruptedException;
022    import java.lang.reflect.Array;
023    import java.lang.reflect.InvocationTargetException;
024    import java.math.BigDecimal;
025    import java.math.BigInteger;
026    import java.net.MalformedURLException;
027    import java.net.URI;
028    import java.net.URISyntaxException;
029    import java.net.URL;
030    import java.util.ArrayList;
031    import java.util.Calendar;
032    import java.util.Currency;
033    import java.util.Date;
034    import java.util.Iterator;
035    import java.util.List;
036    import java.util.Locale;
037    import java.util.TimeZone;
038    import java.util.UUID;
039    import javax.activation.MimeType;
040    import javax.activation.MimeTypeParseException;
041    import javax.annotation.Generated;
042    import javax.xml.bind.JAXBElement;
043    import javax.xml.bind.annotation.XmlAccessType;
044    import javax.xml.bind.annotation.XmlAccessorType;
045    import javax.xml.bind.annotation.XmlAnyElement;
046    import javax.xml.bind.annotation.XmlAttribute;
047    import javax.xml.bind.annotation.XmlElement;
048    import javax.xml.bind.annotation.XmlType;
049    import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
050    import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
051    import javax.xml.datatype.Duration;
052    import javax.xml.datatype.XMLGregorianCalendar;
053    import javax.xml.namespace.QName;
054    import org.w3c.dom.Element;
055    
056    
057    /**
058     * 
059     * Model of a message.
060     * 
061     * The 'Message' type defines attributes 'name', 'final' and 'override'. Attribute 'name' holds a name uniquely identifying
062     * the message in a set of messages. Attribute 'final' flags a message the final node in an inheritance hierarchy.
063     * Attribute 'override' flags a message as intended to override a super-message. A message defines a localizable template
064     * and format arguments.
065     *       
066     * 
067     * <p>Java class for Message complex type.
068     * 
069     * <p>The following schema fragment specifies the expected content contained within this class.
070     * 
071     * <pre>
072     * &lt;complexType name="Message">
073     *   &lt;complexContent>
074     *     &lt;extension base="{http://jomc.org/model}ModelObject">
075     *       &lt;sequence>
076     *         &lt;element ref="{http://jomc.org/model}template"/>
077     *         &lt;element ref="{http://jomc.org/model}arguments" minOccurs="0"/>
078     *         &lt;any processContents='lax' namespace='##other' maxOccurs="unbounded" minOccurs="0"/>
079     *       &lt;/sequence>
080     *       &lt;attribute name="name" use="required" type="{http://jomc.org/model}Identifier" />
081     *       &lt;attribute name="final" type="{http://jomc.org/model}Flag" default="false" />
082     *       &lt;attribute name="override" type="{http://jomc.org/model}Flag" default="false" />
083     *     &lt;/extension>
084     *   &lt;/complexContent>
085     * &lt;/complexType>
086     * </pre>
087     * 
088     * 
089     */
090    @XmlAccessorType(XmlAccessType.FIELD)
091    @XmlType(name = "Message", namespace = "http://jomc.org/model", propOrder = {
092        "template",
093        "arguments",
094        "any"
095    })
096    @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
097    public class Message
098        extends ModelObject
099        implements Cloneable, Inheritable
100    {
101    
102        @XmlElement(namespace = "http://jomc.org/model", required = true)
103        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
104        protected Texts template;
105        @XmlElement(namespace = "http://jomc.org/model")
106        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
107        protected Arguments arguments;
108        @XmlAnyElement(lax = true)
109        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
110        protected List<Object> any;
111        @XmlAttribute(name = "name", required = true)
112        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
113        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
114        protected String name;
115        @XmlAttribute(name = "final")
116        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
117        protected Boolean _final;
118        @XmlAttribute(name = "override")
119        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
120        protected Boolean override;
121    
122        /**
123         * Creates a new {@code Message} instance.
124         * 
125         */
126        public Message() {
127            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
128            super();
129        }
130    
131        /**
132         * Creates a new {@code Message} instance by deeply copying a given {@code Message} instance.
133         * 
134         * 
135         * @param o
136         *     The instance to copy.
137         * @throws NullPointerException
138         *     if {@code o} is {@code null}.
139         */
140        public Message(final Message o) {
141            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
142            super(o);
143            if (o == null) {
144                throw new NullPointerException("Cannot create a copy of 'Message' from 'null'.");
145            }
146            // CClassInfo: org.jomc.model.Texts
147            this.template = ((o.template == null)?null:((o.getTemplate() == null)?null:o.getTemplate().clone()));
148            // CClassInfo: org.jomc.model.Arguments
149            this.arguments = ((o.arguments == null)?null:((o.getArguments() == null)?null:o.getArguments().clone()));
150            // 'Any' collection.
151            if (o.any!= null) {
152                copyAny(o.getAny(), this.getAny());
153            }
154            // CBuiltinLeafInfo: java.lang.String
155            this.name = ((o.name == null)?null:o.getName());
156            // CBuiltinLeafInfo: java.lang.Boolean
157            this._final = ((o._final == null)?null:o.isFinal());
158            // CBuiltinLeafInfo: java.lang.Boolean
159            this.override = ((o.override == null)?null:o.isOverride());
160        }
161    
162        /**
163         * The localizable template of this message.
164         * 
165         * @return
166         *     possible object is
167         *     {@link Texts }
168         *     
169         */
170        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
171        public Texts getTemplate() {
172            return template;
173        }
174    
175        /**
176         * Sets the value of the template property.
177         * 
178         * @param value
179         *     allowed object is
180         *     {@link Texts }
181         *     
182         */
183        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
184        public void setTemplate(Texts value) {
185            this.template = value;
186        }
187    
188        /**
189         * The format arguments of this message or {@code null}.
190         * 
191         * @return
192         *     possible object is
193         *     {@link Arguments }
194         *     
195         */
196        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
197        public Arguments getArguments() {
198            return arguments;
199        }
200    
201        /**
202         * Sets the value of the arguments property.
203         * 
204         * @param value
205         *     allowed object is
206         *     {@link Arguments }
207         *     
208         */
209        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
210        public void setArguments(Arguments value) {
211            this.arguments = value;
212        }
213    
214        /**
215         * Gets the value of the any property.
216         * 
217         * <p>
218         * This accessor method returns a reference to the live list,
219         * not a snapshot. Therefore any modification you make to the
220         * returned list will be present inside the JAXB object.
221         * This is why there is not a <CODE>set</CODE> method for the any property.
222         * 
223         * <p>
224         * For example, to add a new item, do as follows:
225         * <pre>
226         *    getAny().add(newItem);
227         * </pre>
228         * 
229         * 
230         * <p>
231         * Objects of the following type(s) are allowed in the list
232         * {@link Object }
233         * {@link Element }
234         * 
235         * 
236         */
237        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
238        public List<Object> getAny() {
239            if (any == null) {
240                any = new ArrayList<Object>();
241            }
242            return this.any;
243        }
244    
245        /**
246         * The name of this message.
247         * 
248         * @return
249         *     possible object is
250         *     {@link String }
251         *     
252         */
253        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
254        public String getName() {
255            return name;
256        }
257    
258        /**
259         * Sets the value of the name property.
260         * 
261         * @param value
262         *     allowed object is
263         *     {@link String }
264         *     
265         */
266        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
267        public void setName(String value) {
268            this.name = value;
269        }
270    
271        /**
272         * {@code true}, if this message is the final node in an inheritance hierarchy.
273         * 
274         * @return
275         *     possible object is
276         *     {@link Boolean }
277         *     
278         */
279        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
280        public boolean isFinal() {
281            if (_final == null) {
282                return false;
283            } else {
284                return _final;
285            }
286        }
287    
288        /**
289         * Sets the value of the final property.
290         * 
291         * @param value
292         *     allowed object is
293         *     {@link Boolean }
294         *     
295         */
296        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
297        public void setFinal(Boolean value) {
298            this._final = value;
299        }
300    
301        /**
302         * {@code true}, if this message is intended to override a super message.
303         * 
304         * @return
305         *     possible object is
306         *     {@link Boolean }
307         *     
308         */
309        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
310        public boolean isOverride() {
311            if (override == null) {
312                return false;
313            } else {
314                return override;
315            }
316        }
317    
318        /**
319         * Sets the value of the override property.
320         * 
321         * @param value
322         *     allowed object is
323         *     {@link Boolean }
324         *     
325         */
326        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
327        public void setOverride(Boolean value) {
328            this.override = value;
329        }
330    
331        /**
332         * Copies all values of property {@code Any} deeply.
333         * 
334         * @param source
335         *     The source to copy from.
336         * @param target
337         *     The target to copy {@code source} to.
338         * @throws NullPointerException
339         *     if {@code target} is {@code null}.
340         */
341        @SuppressWarnings("unchecked")
342        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
343        private static void copyAny(final List<Object> source, final List<Object> target) {
344            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
345            if ((source!= null)&&(!source.isEmpty())) {
346                for (final Iterator<?> it = source.iterator(); it.hasNext(); ) {
347                    final Object next = it.next();
348                    if (next instanceof Element) {
349                        // CWildcardTypeInfo: org.w3c.dom.Element
350                        target.add(((Element)((Element) next).cloneNode(true)));
351                        continue;
352                    }
353                    if (next instanceof Object) {
354                        // CBuiltinLeafInfo: java.lang.Object
355                        target.add(copyOf(((Object) next)));
356                        continue;
357                    }
358                    // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
359                    throw new AssertionError((("Unexpected instance '"+ next)+"' for property 'Any' of class 'org.jomc.model.Message'."));
360                }
361            }
362        }
363    
364        /**
365         * Creates and returns a deep copy of a given object.
366         * 
367         * @param o
368         *     The instance to copy or {@code null}.
369         * @return
370         *     A deep copy of {@code o} or {@code null} if {@code o} is {@code null}.
371         */
372        @SuppressWarnings("unchecked")
373        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
374        private static Object copyOf(final Object o) {
375            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
376            try {
377                if (o!= null) {
378                    if (o.getClass().isPrimitive()) {
379                        return o;
380                    }
381                    if (o.getClass().isArray()) {
382                        return copyOfArray(o);
383                    }
384                    // Immutable types.
385                    if (o instanceof Boolean) {
386                        return o;
387                    }
388                    if (o instanceof Byte) {
389                        return o;
390                    }
391                    if (o instanceof Character) {
392                        return o;
393                    }
394                    if (o instanceof Double) {
395                        return o;
396                    }
397                    if (o instanceof Enum) {
398                        return o;
399                    }
400                    if (o instanceof Float) {
401                        return o;
402                    }
403                    if (o instanceof Integer) {
404                        return o;
405                    }
406                    if (o instanceof Long) {
407                        return o;
408                    }
409                    if (o instanceof Short) {
410                        return o;
411                    }
412                    if (o instanceof String) {
413                        return o;
414                    }
415                    if (o instanceof BigDecimal) {
416                        return o;
417                    }
418                    if (o instanceof BigInteger) {
419                        return o;
420                    }
421                    if (o instanceof UUID) {
422                        return o;
423                    }
424                    if (o instanceof QName) {
425                        return o;
426                    }
427                    if (o instanceof Duration) {
428                        return o;
429                    }
430                    if (o instanceof Currency) {
431                        return o;
432                    }
433                    // String based types.
434                    if (o instanceof File) {
435                        return new File(o.toString());
436                    }
437                    if (o instanceof URI) {
438                        return new URI(o.toString());
439                    }
440                    if (o instanceof URL) {
441                        return new URL(o.toString());
442                    }
443                    if (o instanceof MimeType) {
444                        return new MimeType(o.toString());
445                    }
446                    // Cloneable types.
447                    if (o instanceof XMLGregorianCalendar) {
448                        return ((XMLGregorianCalendar) o).clone();
449                    }
450                    if (o instanceof Date) {
451                        return ((Date) o).clone();
452                    }
453                    if (o instanceof Calendar) {
454                        return ((Calendar) o).clone();
455                    }
456                    if (o instanceof TimeZone) {
457                        return ((TimeZone) o).clone();
458                    }
459                    if (o instanceof Locale) {
460                        return ((Locale) o).clone();
461                    }
462                    if (o instanceof Element) {
463                        return ((Element)((Element) o).cloneNode(true));
464                    }
465                    if (o instanceof JAXBElement) {
466                        return copyOf(((JAXBElement) o));
467                    }
468                    try {
469                        return o.getClass().getMethod("clone", ((Class[]) null)).invoke(o, ((Object[]) null));
470                    } catch (NoSuchMethodException e) {
471                        if (o instanceof Serializable) {
472                            return copyOf(((Serializable) o));
473                        }
474                        // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
475                        throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ o)+"'.")).initCause(e));
476                    } catch (IllegalAccessException e) {
477                        // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
478                        throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ o)+"'.")).initCause(e));
479                    } catch (InvocationTargetException e) {
480                        // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
481                        throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ o)+"'.")).initCause(e));
482                    } catch (SecurityException e) {
483                        // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
484                        throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ o)+"'.")).initCause(e));
485                    } catch (IllegalArgumentException e) {
486                        // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
487                        throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ o)+"'.")).initCause(e));
488                    } catch (ExceptionInInitializerError e) {
489                        // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
490                        throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ o)+"'.")).initCause(e));
491                    }
492                }
493                return null;
494            } catch (MalformedURLException e) {
495                throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ o)+"'.")).initCause(e));
496            } catch (URISyntaxException e) {
497                throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ o)+"'.")).initCause(e));
498            } catch (MimeTypeParseException e) {
499                throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ o)+"'.")).initCause(e));
500            }
501        }
502    
503        /**
504         * Creates and returns a deep copy of a given array.
505         * 
506         * @param array
507         *     The array to copy or {@code null}.
508         * @return
509         *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
510         */
511        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
512        private static Object copyOfArray(final Object array) {
513            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
514            if (array!= null) {
515                if (array.getClass() == boolean[].class) {
516                    return copyOf(((boolean[]) array));
517                }
518                if (array.getClass() == byte[].class) {
519                    return copyOf(((byte[]) array));
520                }
521                if (array.getClass() == char[].class) {
522                    return copyOf(((char[]) array));
523                }
524                if (array.getClass() == double[].class) {
525                    return copyOf(((double[]) array));
526                }
527                if (array.getClass() == float[].class) {
528                    return copyOf(((float[]) array));
529                }
530                if (array.getClass() == int[].class) {
531                    return copyOf(((int[]) array));
532                }
533                if (array.getClass() == long[].class) {
534                    return copyOf(((long[]) array));
535                }
536                if (array.getClass() == short[].class) {
537                    return copyOf(((short[]) array));
538                }
539                final int len = Array.getLength(array);
540                final Object copy = Array.newInstance(array.getClass().getComponentType(), len);
541                for (int i = (len- 1); (i >= 0); i--) {
542                    Array.set(copy, i, copyOf(Array.get(array, i)));
543                }
544                return copy;
545            }
546            return null;
547        }
548    
549        /**
550         * Creates and returns a deep copy of a given array.
551         * 
552         * @param array
553         *     The array to copy or {@code null}.
554         * @return
555         *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
556         */
557        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
558        private static boolean[] copyOf(final boolean[] array) {
559            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
560            if (array!= null) {
561                final boolean[] copy = ((boolean[]) Array.newInstance(array.getClass().getComponentType(), array.length));
562                System.arraycopy(array, 0, copy, 0, array.length);
563                return copy;
564            }
565            return null;
566        }
567    
568        /**
569         * Creates and returns a deep copy of a given array.
570         * 
571         * @param array
572         *     The array to copy or {@code null}.
573         * @return
574         *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
575         */
576        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
577        private static byte[] copyOf(final byte[] array) {
578            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
579            if (array!= null) {
580                final byte[] copy = ((byte[]) Array.newInstance(array.getClass().getComponentType(), array.length));
581                System.arraycopy(array, 0, copy, 0, array.length);
582                return copy;
583            }
584            return null;
585        }
586    
587        /**
588         * Creates and returns a deep copy of a given array.
589         * 
590         * @param array
591         *     The array to copy or {@code null}.
592         * @return
593         *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
594         */
595        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
596        private static char[] copyOf(final char[] array) {
597            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
598            if (array!= null) {
599                final char[] copy = ((char[]) Array.newInstance(array.getClass().getComponentType(), array.length));
600                System.arraycopy(array, 0, copy, 0, array.length);
601                return copy;
602            }
603            return null;
604        }
605    
606        /**
607         * Creates and returns a deep copy of a given array.
608         * 
609         * @param array
610         *     The array to copy or {@code null}.
611         * @return
612         *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
613         */
614        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
615        private static double[] copyOf(final double[] array) {
616            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
617            if (array!= null) {
618                final double[] copy = ((double[]) Array.newInstance(array.getClass().getComponentType(), array.length));
619                System.arraycopy(array, 0, copy, 0, array.length);
620                return copy;
621            }
622            return null;
623        }
624    
625        /**
626         * Creates and returns a deep copy of a given array.
627         * 
628         * @param array
629         *     The array to copy or {@code null}.
630         * @return
631         *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
632         */
633        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
634        private static float[] copyOf(final float[] array) {
635            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
636            if (array!= null) {
637                final float[] copy = ((float[]) Array.newInstance(array.getClass().getComponentType(), array.length));
638                System.arraycopy(array, 0, copy, 0, array.length);
639                return copy;
640            }
641            return null;
642        }
643    
644        /**
645         * Creates and returns a deep copy of a given array.
646         * 
647         * @param array
648         *     The array to copy or {@code null}.
649         * @return
650         *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
651         */
652        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
653        private static int[] copyOf(final int[] array) {
654            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
655            if (array!= null) {
656                final int[] copy = ((int[]) Array.newInstance(array.getClass().getComponentType(), array.length));
657                System.arraycopy(array, 0, copy, 0, array.length);
658                return copy;
659            }
660            return null;
661        }
662    
663        /**
664         * Creates and returns a deep copy of a given array.
665         * 
666         * @param array
667         *     The array to copy or {@code null}.
668         * @return
669         *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
670         */
671        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
672        private static long[] copyOf(final long[] array) {
673            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
674            if (array!= null) {
675                final long[] copy = ((long[]) Array.newInstance(array.getClass().getComponentType(), array.length));
676                System.arraycopy(array, 0, copy, 0, array.length);
677                return copy;
678            }
679            return null;
680        }
681    
682        /**
683         * Creates and returns a deep copy of a given array.
684         * 
685         * @param array
686         *     The array to copy or {@code null}.
687         * @return
688         *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
689         */
690        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
691        private static short[] copyOf(final short[] array) {
692            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
693            if (array!= null) {
694                final short[] copy = ((short[]) Array.newInstance(array.getClass().getComponentType(), array.length));
695                System.arraycopy(array, 0, copy, 0, array.length);
696                return copy;
697            }
698            return null;
699        }
700    
701        /**
702         * Creates and returns a deep copy of a given {@code JAXBElement} instance.
703         * 
704         * @param element
705         *     The instance to copy or {@code null}.
706         * @return
707         *     A deep copy of {@code element} or {@code null} if {@code element} is {@code null}.
708         */
709        @SuppressWarnings("unchecked")
710        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
711        private static JAXBElement copyOf(final JAXBElement element) {
712            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
713            if (element!= null) {
714                final JAXBElement copy = new JAXBElement(element.getName(), element.getDeclaredType(), element.getScope(), element.getValue());
715                copy.setNil(element.isNil());
716                copy.setValue(copyOf(copy.getValue()));
717                return copy;
718            }
719            return null;
720        }
721    
722        /**
723         * Creates and returns a deep copy of a given {@code Serializable}.
724         * 
725         * @param serializable
726         *     The instance to copy or {@code null}.
727         * @return
728         *     A deep copy of {@code serializable} or {@code null} if {@code serializable} is {@code null}.
729         */
730        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
731        private static Serializable copyOf(final Serializable serializable) {
732            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
733            if (serializable!= null) {
734                try {
735                    final ByteArrayOutputStream byteArrayOutput = new ByteArrayOutputStream();
736                    final ObjectOutputStream out = new ObjectOutputStream(byteArrayOutput);
737                    out.writeObject(serializable);
738                    out.close();
739                    final ByteArrayInputStream byteArrayInput = new ByteArrayInputStream(byteArrayOutput.toByteArray());
740                    final ObjectInputStream in = new ObjectInputStream(byteArrayInput);
741                    final Serializable copy = ((Serializable) in.readObject());
742                    in.close();
743                    return copy;
744                } catch (SecurityException e) {
745                    throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
746                } catch (ClassNotFoundException e) {
747                    throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
748                } catch (InvalidClassException e) {
749                    throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
750                } catch (NotSerializableException e) {
751                    throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
752                } catch (StreamCorruptedException e) {
753                    throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
754                } catch (OptionalDataException e) {
755                    throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
756                } catch (IOException e) {
757                    throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
758                }
759            }
760            return null;
761        }
762    
763        /**
764         * Creates and returns a deep copy of this object.
765         * 
766         * 
767         * @return
768         *     A deep copy of this object.
769         */
770        @Override
771        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-04-01T02:39:59+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
772        public Message clone() {
773            {
774                // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
775                final Message clone = ((Message) super.clone());
776                // CClassInfo: org.jomc.model.Texts
777                clone.template = ((this.template == null)?null:((this.getTemplate() == null)?null:this.getTemplate().clone()));
778                // CClassInfo: org.jomc.model.Arguments
779                clone.arguments = ((this.arguments == null)?null:((this.getArguments() == null)?null:this.getArguments().clone()));
780                // 'Any' collection.
781                if (this.any!= null) {
782                    clone.any = null;
783                    copyAny(this.getAny(), clone.getAny());
784                }
785                // CBuiltinLeafInfo: java.lang.String
786                clone.name = ((this.name == null)?null:this.getName());
787                // CBuiltinLeafInfo: java.lang.Boolean
788                clone._final = ((this._final == null)?null:this.isFinal());
789                // CBuiltinLeafInfo: java.lang.Boolean
790                clone.override = ((this.override == null)?null:this.isOverride());
791                return clone;
792            }
793        }
794        
795        /**
796         * System's line separator.
797         * @since 1.2
798         */
799        @javax.xml.bind.annotation.XmlTransient
800        private static final String LINE_SEPARATOR = System.getProperty( "line.separator", "\n" );
801    
802        /**
803         * Gets a single {@code JAXBElement} matching a namespace URI and local part from the {@code any} property of the
804         * instance.
805         *
806         * @param namespaceURI The namespace URI of the {@code JAXBElement} to return.
807         * @param localPart The local part of the {@code JAXBElement} to return.
808         *
809         * @return The {@code JAXBElement} matching {@code namespaceURI} and {@code localPart} from the {@code any} property
810         * of the instance or {@code null}, if no such element is found.
811         *
812         * @throws NullPointerException if {@code namespaceURI} or {@code localPart} is {@code null}.
813         * @throws IllegalStateException if the {@code any} property contains more than one matching element.
814         *
815         * @see #getAnyElement(java.util.List, java.lang.String, java.lang.String)
816         *
817         * @deprecated As of JOMC 1.1, please use method {@link #getAnyElement(java.lang.String, java.lang.String, java.lang.Class)}.
818         * This method will be removed in version 2.0.
819         */
820        @Deprecated
821        public javax.xml.bind.JAXBElement getAnyElement( final String namespaceURI, final String localPart )
822        {
823            return this.getAnyElement( this.getAny(), namespaceURI, localPart );
824        }
825    
826        /**
827         * Gets a list containing all {@code JAXBElement}s matching a namespace URI and local part from the {@code any}
828         * property of the instance.
829         *
830         * @param namespaceURI The namespace URI of the {@code JAXBElement}s to return.
831         * @param localPart The local part of the {@code JAXBElement}s to return.
832         *
833         * @return An unmodifiable list of all {@code JAXBElement}s matching {@code namespaceURI} and {@code localPart} from
834         * the {@code any} property of the instance - an empty list if no such elements are found.
835         *
836         * @throws NullPointerException if {@code namespaceURI} or {@code localPart} is {@code null}.
837         *
838         * @see #getAnyElements(java.util.List, java.lang.String, java.lang.String)
839         *
840         * @deprecated As of JOMC 1.1, please use method {@link #getAnyElements(java.lang.String, java.lang.String, java.lang.Class)}.
841         * This method will be removed in version 2.0.
842         */
843        @Deprecated
844        public java.util.List<javax.xml.bind.JAXBElement> getAnyElements( final String namespaceURI,
845                                                                          final String localPart )
846        {
847            return this.getAnyElements( this.getAny(), namespaceURI, localPart );
848        }
849    
850        /**
851         * Gets a single {@code JAXBElement} matching a namespace URI and local part from the {@code any} property of the
852         * instance.
853         *
854         * @param namespaceURI The namespace URI of the {@code JAXBElement} to return.
855         * @param localPart The local part of the {@code JAXBElement} to return.
856         * @param type The class of the type the element is bound to.
857         * @param <T> The type the element is bound to.
858         *
859         * @return The {@code JAXBElement} matching {@code namespaceURI} and {@code localPart} from the {@code any} property
860         * of the instance or {@code null}, if no such element is found.
861         *
862         * @throws NullPointerException if {@code namespaceURI}, {@code localPart} or {@code type} is {@code null}.
863         * @throws IllegalStateException if the {@code any} property contains more than one matching element.
864         *
865         * @see #getAnyElement(java.util.List, java.lang.String, java.lang.String, java.lang.Class)
866         *
867         * @since 1.1
868         */
869        public <T> javax.xml.bind.JAXBElement<T> getAnyElement( final String namespaceURI, final String localPart,
870                                                                final Class<T> type )
871        {
872            return this.getAnyElement( this.getAny(), namespaceURI, localPart, type );
873        }
874    
875        /**
876         * Gets a list containing all {@code JAXBElement}s matching a namespace URI and local part from the {@code any}
877         * property of the instance.
878         *
879         * @param namespaceURI The namespace URI of the {@code JAXBElement}s to return.
880         * @param localPart The local part of the {@code JAXBElement}s to return.
881         * @param type The class of the type the elements are bound to.
882         * @param <T> The type the elements are bound to.
883         *
884         * @return An unmodifiable list of all {@code JAXBElement}s matching {@code namespaceURI} and {@code localPart} from
885         * the {@code any} property of the instance - an empty list if no such elements are found.
886         *
887         * @throws NullPointerException if {@code namespaceURI}, {@code localPart} or {@code type} is {@code null}.
888         *
889         * @see #getAnyElements(java.util.List, java.lang.String, java.lang.String, java.lang.Class)
890         *
891         * @since 1.1
892         */
893        public <T> java.util.List<javax.xml.bind.JAXBElement<T>> getAnyElements( final String namespaceURI,
894                                                                                 final String localPart,
895                                                                                 final Class<T> type )
896        {
897            return this.getAnyElements( this.getAny(), namespaceURI, localPart, type );
898        }
899    
900        /**
901         * Gets a single object matching a given class from the {@code any} property of the instance.
902         *
903         * @param clazz The class to return an instance of.
904         * @param <T> The type of the object to return.
905         *
906         * @return The instance of {@code clazz} from the {@code any} property of the instance or {@code null}, if no such
907         * instance is found.
908         *
909         * @throws NullPointerException if {@code clazz} is {@code null}.
910         * @throws IllegalStateException if the {@code any} property contains more than one matching object.
911         *
912         * @see #getAnyObject(java.util.List, java.lang.Class)
913         */
914        public <T> T getAnyObject( final Class<T> clazz )
915        {
916            return this.getAnyObject( this.getAny(), clazz );
917        }
918    
919        /**
920         * Gets a list containing all objects matching a given class from the {@code any} property of the instance.
921         *
922         * @param clazz The class to return all instances of.
923         * @param <T> The type of the objects to return.
924         *
925         * @return An unmodifiable list of all instances of {@code clazz} from the {@code any} property of the instance -
926         * an empty list if no such objects are found.
927         *
928         * @throws NullPointerException if {@code clazz} is {@code null}.
929         *
930         * @see #getAnyObjects(java.util.List, java.lang.Class)
931         */
932        public <T> java.util.List<T> getAnyObjects( final Class<T> clazz )
933        {
934            return this.getAnyObjects( this.getAny(), clazz );
935        }
936    
937        /**
938         * Gets a Java {@code MessageFormat} instance for a given locale.
939         *
940         * @param locale The locale to get a Java {@code MessageFormat} instance for.
941         *
942         * @return A Java {@code MessageFormat} instance for {@code locale}.
943         *
944         * @throws NullPointerException if {@code locale} is {@code null}.
945         *
946         * @see #getTemplate()
947         *
948         * @since 1.2
949         */
950        public java.text.MessageFormat getJavaMessage( final Locale locale )
951        {
952            if ( locale == null )
953            {
954                throw new NullPointerException( "locale" );
955            }
956    
957            try
958            {
959                final Text text = this.getTemplate().getText( locale.getLanguage().toLowerCase( Locale.ENGLISH ) );
960                final StringBuilder builder = new StringBuilder( text.getValue().length() );
961                final java.io.BufferedReader reader = new java.io.BufferedReader(
962                    new java.io.StringReader( text.getValue() ) );
963    
964                String line;
965                while ( ( line = reader.readLine() ) != null )
966                {
967                    builder.append( LINE_SEPARATOR ).append( line );
968                }
969    
970                return new java.text.MessageFormat( builder.substring( LINE_SEPARATOR.length() ), locale );
971            }
972            catch ( final java.io.IOException e )
973            {
974                throw new AssertionError( e );
975            }
976        }
977          
978    }