1 /* 2 * Copyright 2006 Assaf Arkin, Ralf Joachim 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package org.exolab.castor.mapping; 17 18 import org.castor.core.nature.PropertyHolder; 19 20 /** 21 * Describes the properties of a field. Implementations will extend this inteface to 22 * provide additional properties. 23 * 24 * @author <a href="mailto:arkin AT intalio DOT com">Assaf Arkin</a> 25 * @author <a href="mailto:ralf DOT joachim AT syscon DOT eu">Ralf Joachim</a> 26 * @version $Revision$ $Date: 2005-12-06 14:55:28 -0700 (Tue, 06 Dec 2005) $ 27 */ 28 public interface FieldDescriptor extends PropertyHolder { 29 30 /** 31 * Set the class descriptor which contains this field. 32 * 33 * @param parent The class descriptor which contains this field. 34 */ 35 void setContainingClassDescriptor(ClassDescriptor parent); 36 37 /** 38 * Get the class descriptor which contains this field. 39 * 40 * @return The class descriptor which contains this field. 41 */ 42 ClassDescriptor getContainingClassDescriptor(); 43 44 /** 45 * Returns the name of the field. The field must have a name, even if set through 46 * accessor methods. 47 * 48 * @return Field name. 49 */ 50 String getFieldName(); 51 52 /** 53 * Returns the Java type of the field. 54 * 55 * @return Field type. 56 */ 57 Class getFieldType(); 58 59 /** 60 * Returns the class descriptor related to the field type. If the field type is a 61 * class for which a descriptor exists, this descriptor is returned. If the field 62 * type is a class for which no mapping is provided, null is returned. 63 * 64 * @return The class descriptor of the field type, or null. 65 */ 66 ClassDescriptor getClassDescriptor(); 67 68 /** 69 * Returns the handler of the field. In order to persist or marshal a field 70 * descriptor will be associated with a handler. 71 * 72 * @return The field handler. 73 */ 74 FieldHandler getHandler(); 75 76 /** 77 * Returns true if the field is transient. Transient fields are never persisted or 78 * marshalled. 79 * 80 * @return True if transient field. 81 */ 82 boolean isTransient(); 83 84 /** 85 * Returns true if the field type is immutable. 86 * 87 * @return True if the field type is immutable. 88 */ 89 boolean isImmutable(); 90 91 /** 92 * Returns true if the field type is required. 93 * 94 * @return True if the field type is required. 95 */ 96 boolean isRequired(); 97 98 /** 99 * Returns true if the field is multivalued (a collection). 100 * 101 * @return True if the field is multivalued. 102 */ 103 boolean isMultivalued(); 104 105 } 106