1 /** 2 * Redistribution and use of this software and associated documentation 3 * ("Software"), with or without modification, are permitted provided 4 * that the following conditions are met: 5 * 6 * 1. Redistributions of source code must retain copyright 7 * statements and notices. Redistributions must also contain a 8 * copy of this document. 9 * 10 * 2. Redistributions in binary form must reproduce the 11 * above copyright notice, this list of conditions and the 12 * following disclaimer in the documentation and/or other 13 * materials provided with the distribution. 14 * 15 * 3. The name "Exolab" must not be used to endorse or promote 16 * products derived from this Software without prior written 17 * permission of Intalio, Inc. For written permission, 18 * please contact info@exolab.org. 19 * 20 * 4. Products derived from this Software may not be called "Exolab" 21 * nor may "Exolab" appear in their names without prior written 22 * permission of Intalio, Inc. Exolab is a registered 23 * trademark of Intalio, Inc. 24 * 25 * 5. Due credit should be given to the Exolab Project 26 * (http://www.exolab.org/). 27 * 28 * THIS SOFTWARE IS PROVIDED BY INTALIO, INC. AND CONTRIBUTORS 29 * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT 30 * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 31 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 32 * INTALIO, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 33 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 34 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 35 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 36 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 37 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 38 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 39 * OF THE POSSIBILITY OF SUCH DAMAGE. 40 * 41 * Copyright 1999-2003 (C) Intalio, Inc. All Rights Reserved. 42 * 43 * $Id$ 44 */ 45 46 package org.exolab.castor.xml; 47 48 import org.exolab.castor.mapping.AbstractFieldHandler; 49 50 /** 51 * This FieldHandler is used in the generated descriptors. 52 * <p> 53 * A field handler knows how to perform various operations on the field that 54 * require access to the field value. 55 * </p> 56 * 57 * @author <a href="arkin@intalio.com">Assaf Arkin</a> 58 * @author <a href="kvisco@intalio.com">Keith Visco</a> 59 * @version $Revision$ $Date: 2006-04-14 04:14:43 -0600 (Fri, 14 Apr 60 * 2006) $ 61 * @see org.exolab.castor.mapping.FieldDescriptor 62 */ 63 public class XMLFieldHandler<T> extends AbstractFieldHandler<T> { 64 65 /** 66 * Creates a new default XMLFieldHandler instance. 67 */ 68 public XMLFieldHandler() { 69 super(); 70 } 71 72 /** 73 * Returns true if the given object is an XMLFieldHandler that is equivalent 74 * to this one. An equivalent XMLFieldHandler is an XMLFieldHandler that is 75 * an instances of the same class. This method can be overwritten to provide 76 * more advanced equivalence tests. 77 * 78 * @return true if the given object is an XMLFieldHandler that is equivalent 79 * to this one. 80 **/ 81 public boolean equals(Object obj) { 82 if (obj == null) { 83 return false; 84 } 85 if (!(obj instanceof XMLFieldHandler)) { 86 return false; 87 } 88 return getClass().isInstance(obj); 89 } 90 91 /** 92 * Returns the value of the field from the object. 93 * 94 * @param object 95 * The object 96 * @return The value of the field 97 * @throws IllegalStateException 98 * The Java object has changed and is no longer supported by this 99 * handler, or the handler is not compatiable with the Java object 100 */ 101 public T getValue(Object object) throws IllegalStateException { 102 // -- Do nothing, this method is overloaded by the 103 // -- source code generator 104 return null; 105 } 106 107 /** 108 * Creates a new instance of the object described by this field. 109 * 110 * @param parent 111 * The object for which the field is created 112 * @return A new instance of the field's value 113 * @throws IllegalStateException 114 * This field is a simple type and cannot be instantiated 115 */ 116 public T newInstance(Object parent) throws IllegalStateException { 117 // -- Do nothing, this method is overloaded by the 118 // -- source code generator 119 return null; 120 } 121 122 /** 123 * Creates a new instance of the object described by this field. 124 * 125 * @param parent 126 * The object for which the field is created 127 * @param args 128 * the set of constructor arguments 129 * @return A new instance of the field's value 130 * @throws IllegalStateException 131 * This field is a simple type and cannot be instantiated 132 */ 133 public Object newInstance(final Object parent, final Object[] args) throws IllegalStateException { 134 // -- backward compatability...ignore args 135 return newInstance(parent); 136 } 137 138 /** 139 * Sets the value of the field on the object. 140 * 141 * @param object 142 * The object. 143 * @param value 144 * The new value. 145 * @throws IllegalStateException 146 * The Java object has changed and is no longer supported by this 147 * handler, or the handler is not compatiable with the Java 148 * object. 149 * @throws IllegalArgumentException 150 * The value passed is not of a supported type. 151 */ 152 public void setValue(final Object object, final T value) throws IllegalStateException, 153 IllegalArgumentException { 154 // -- Do nothing, this method is overloaded by the 155 // -- source code generator 156 } 157 158 public void resetValue(final Object object) throws IllegalStateException, IllegalArgumentException { 159 // -- Do nothing, this method is overloaded by the 160 // -- source code generator 161 } 162 }