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