View Javadoc
1   /*
2    * Redistribution and use of this software and associated documentation ("Software"), with or
3    * without modification, are permitted provided that the following conditions are met:
4    *
5    * 1. Redistributions of source code must retain copyright statements and notices. Redistributions
6    * must also contain a copy of this document.
7    *
8    * 2. Redistributions in binary form must reproduce the above copyright notice, this list of
9    * conditions and the following disclaimer in the documentation and/or other materials provided with
10   * the distribution.
11   *
12   * 3. The name "Exolab" must not be used to endorse or promote products derived from this Software
13   * without prior written permission of Intalio, Inc. For written permission, please contact
14   * info@exolab.org.
15   *
16   * 4. Products derived from this Software may not be called "Exolab" nor may "Exolab" appear in
17   * their names without prior written permission of Intalio, Inc. Exolab is a registered trademark of
18   * Intalio, Inc.
19   *
20   * 5. Due credit should be given to the Exolab Project (http://www.exolab.org/).
21   *
22   * THIS SOFTWARE IS PROVIDED BY INTALIO, INC. AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESSED OR
23   * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
24   * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTALIO, INC. OR ITS
25   * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27   * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28   * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
29   * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30   *
31   * Copyright 2004 (C) Intalio, Inc. All Rights Reserved.
32   *
33   * $Id$
34   */
35  package org.exolab.castor.xml.handlers;
36  
37  import org.exolab.castor.mapping.FieldHandler;
38  import org.exolab.castor.mapping.GeneralizedFieldHandler;
39  
40  /**
41   * An implementation of GeneralizedFieldHandler that simply calls Object#toString() in the
42   * conversion methods.
43   *
44   * @author <a href="kvisco@intalio.com">Keith Visco</a>
45   * @version $Revision$ $Date: 2005-02-28 17:53:23 -0700 (Mon, 28 Feb 2005) $
46   */
47  public class ToStringFieldHandler extends GeneralizedFieldHandler {
48  
49    /** The class type for this FieldHandler. */
50    private final Class _type;
51  
52    /**
53     * Creates a new ToStringFieldHandler.
54     *
55     * @param type the class type to create the FieldHandler for
56     */
57    public ToStringFieldHandler(final Class type) {
58      this(type, null);
59    } // -- ToStringFieldHandler
60  
61    /**
62     * Creates a new ToStringFieldHandler.
63     *
64     * @param type the class type to create the FieldHandler for
65     * @param handler the FieldHandler to wrap
66     */
67    public ToStringFieldHandler(final Class type, final FieldHandler handler) {
68      super();
69      if (type == null) {
70        throw new IllegalArgumentException("The argument 'type' must not be null.");
71      }
72      _type = type;
73      if (handler != null) {
74        setFieldHandler(handler);
75      }
76    } // -- ToStringFieldHandler
77  
78    /**
79     * {@inheritDoc}
80     * 
81     * @see org.exolab.castor.mapping.GeneralizedFieldHandler#convertUponGet(java.lang.Object)
82     */
83    public Object convertUponGet(final Object value) {
84      if (value == null) {
85        return null;
86      }
87      return value.toString();
88    } // -- convertUponGet
89  
90    /**
91     * {@inheritDoc}
92     * 
93     * @see org.exolab.castor.mapping.GeneralizedFieldHandler#convertUponSet(java.lang.Object)
94     */
95    public Object convertUponSet(final Object value) {
96      if (value == null) {
97        return null;
98      }
99      return value.toString();
100   } // -- convertUponSet;
101 
102   /**
103    * {@inheritDoc}
104    * 
105    * @see org.exolab.castor.mapping.GeneralizedFieldHandler#getFieldType()
106    */
107   public Class getFieldType() {
108     return _type;
109   } // -- getFieldType
110 
111 } // -- ValueOfFieldHandler