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-2004 (C) Intalio, Inc. All Rights Reserved. 42 * 43 * $Id$ 44 */ 45 package org.exolab.castor.xml.descriptors; 46 47 import org.exolab.castor.mapping.AccessMode; 48 import org.exolab.castor.mapping.ClassDescriptor; 49 import org.exolab.castor.mapping.FieldDescriptor; 50 import org.exolab.castor.xml.NodeType; 51 import org.exolab.castor.xml.TypeValidator; 52 import org.exolab.castor.xml.XMLFieldDescriptor; 53 import org.exolab.castor.xml.validators.StringValidator; 54 55 /** 56 * The default String class descriptor. 57 * @author <a href="mailto:kvisco-at-intalio.com">Keith Visco</a> 58 * @version $Revision$ $Date: 2004-12-16 22:49:25 -0700 (Thu, 16 Dec 2004) $ 59 */ 60 public class StringClassDescriptor extends BaseDescriptor { 61 62 /** The set of element descriptors. */ 63 private static final XMLFieldDescriptor[] NO_ELEMENTS = new XMLFieldDescriptor[0]; 64 /** The set of attribute descriptors. */ 65 private static final XMLFieldDescriptor[] NO_ATTRIBUTES = new XMLFieldDescriptor[0]; 66 /** The content descriptor. */ 67 private static final XMLFieldDescriptor NO_CONTENT = null; 68 /** Our field descriptor array. Lists the fields we describe. */ 69 private static final FieldDescriptor[] NO_FIELDS = new FieldDescriptor[0]; 70 71 //--------------------/ 72 //- Member Variables -/ 73 //--------------------/ 74 75 /** The XML name for the described object. */ 76 private String _xmlName = null; 77 /** The desired namespace for the described object. */ 78 private String _nsURI = null; 79 /** Type validator to use to validate an instance of this type. */ 80 private StringValidator _validator = null; 81 82 //----------------/ 83 //- Constructors -/ 84 //----------------/ 85 86 /** 87 * No-arg constructor. 88 */ 89 public StringClassDescriptor() { 90 super(); 91 } //-- StringClassDescriptor() 92 93 //-----------/ 94 //- Methods -/ 95 //-----------/ 96 97 /** 98 * Returns the set of attribute XMLFieldDescriptors. 99 * 100 * @return an array of XMLFieldDescriptors for all members that should be 101 * marshaled as attributes 102 */ 103 public XMLFieldDescriptor[] getAttributeDescriptors() { 104 return NO_ATTRIBUTES; 105 } //-- getAttributeDescriptors() 106 107 /** 108 * Returns the Class that this ClassDescriptor describes. 109 * @return the Class that this ClassDescriptor describes. 110 */ 111 public Class getJavaClass() { 112 return java.lang.String.class; 113 } //-- getClassType() 114 115 /** 116 * Returns the set of element MarshalDescriptors. 117 * 118 * @return an array of MarshalDescriptors for all members that should be 119 * marshaled as Elements 120 */ 121 public XMLFieldDescriptor[] getElementDescriptors() { 122 return NO_ELEMENTS; 123 } //-- getElementDescriptors() 124 125 /** 126 * Returns the class descriptor of the class extended by this class. 127 * 128 * @return The extended class descriptor 129 */ 130 public ClassDescriptor getExtends() { 131 return null; 132 } //-- getExtends 133 134 /** 135 * Returns a list of fields represented by this descriptor. 136 * 137 * @return A list of fields 138 */ 139 public FieldDescriptor[] getFields() { 140 return NO_FIELDS; 141 } //-- getFields 142 143 /** 144 * Returns the descriptor for dealing with Text content. 145 * @return the XMLFieldDescriptor for dealing with Text content 146 */ 147 public XMLFieldDescriptor getContentDescriptor() { 148 return NO_CONTENT; 149 } //-- getContentDescriptor() 150 151 /** 152 * Returns the XML field descriptor matching the given xml name and 153 * nodeType. If NodeType is null, then either an AttributeDescriptor, or 154 * ElementDescriptor may be returned. Null is returned if no matching 155 * descriptor is available. 156 * 157 * @param name the xml name to match against 158 * @param namespace the namespace uri 159 * @param nodeType the NodeType to match against, or null if the node type 160 * is not known. 161 * @return the matching descriptor, or null if no matching descriptor is 162 * available. 163 */ 164 public XMLFieldDescriptor getFieldDescriptor(final String name, 165 final String namespace, final NodeType nodeType) { 166 return null; 167 } //-- getFieldDescriptor 168 169 /** 170 * @return the namespace prefix to use when marshaling as XML. 171 */ 172 public String getNameSpacePrefix() { 173 return null; 174 } //-- getNameSpacePrefix 175 176 /** 177 * @return the namespace URI used when marshaling and unmarshaling as XML. 178 */ 179 public String getNameSpaceURI() { 180 return _nsURI; 181 } //-- getNameSpaceURI 182 183 /** 184 * Returns the identity field, null if this class has no identity. 185 * 186 * @return The identity field 187 */ 188 public FieldDescriptor getIdentity() { 189 return null; 190 } //-- getIdentity 191 192 /** 193 * Returns the access mode specified for this class. 194 * 195 * @return The access mode 196 */ 197 public AccessMode getAccessMode() { 198 return null; 199 } //-- getAccessMode 200 201 /** 202 * Returns a specific validator for the class described by this 203 * ClassDescriptor. A null value may be returned if no specific validator 204 * exists. 205 * 206 * @return the type validator for the class described by this 207 * ClassDescriptor. 208 */ 209 public TypeValidator getValidator() { 210 return _validator; 211 } //-- getValidator 212 213 /** 214 * Returns the XML Name for the Class being described. 215 * 216 * @return the XML name. 217 */ 218 public String getXMLName() { 219 return _xmlName; 220 } //-- getXMLName 221 222 /** 223 * Sets the type validator to use to validate an instance of this type. 224 * @param validator the type validator to use. 225 */ 226 public void setValidator(final StringValidator validator) { 227 this._validator = validator; 228 } //-- setValidator 229 230 /** 231 * Sets the XML Name for the described object. 232 * 233 * @param xmlName the XML name to use for the described object. 234 */ 235 public void setXMLName(final String xmlName) { 236 this._xmlName = xmlName; 237 } //-- setXMLName 238 239 /** 240 * Sets the desired namespace URI for the described object. 241 * 242 * @param nsURI is the desired namespace URI 243 */ 244 public void setNameSpaceURI(final String nsURI) { 245 this._nsURI = nsURI; 246 } //-- setNameSpaceURI 247 248 } //-- StringMarshalInfo