001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package org.apache.commons.betwixt.io.read;
018
019 import org.apache.commons.betwixt.ElementDescriptor;
020 import org.xml.sax.Attributes;
021
022 /**
023 * Describes a mapping between an xml element and a betwixt element.
024 *
025 * @author Robert Burrell Donkin
026 * @since 0.5
027 */
028 public class ElementMapping {
029
030 /** Namespace of the xml element */
031 private String namespace;
032 /** Name of the element */
033 private String name;
034 /** Attributes associated with this element */
035 private Attributes attributes;
036 /** The base type of the mapped bean */
037 private Class type;
038 /** The mapped descriptor */
039 private ElementDescriptor descriptor;
040
041 /** Base constructor */
042 public ElementMapping() {}
043
044 /**
045 * Gets the namespace URI or an empty string if the parser is not namespace aware
046 * or the element has no namespace.
047 * @return namespace possibly null
048 */
049 public String getNamespace() {
050 return namespace;
051 }
052
053 /**
054 * Sets the namespace URI for this element
055 * @param namespace the namespace uri, possibly null
056 */
057 public void setNamespace(String namespace) {
058 this.namespace = namespace;
059 }
060
061 /**
062 * Gets the local name if the parser is namespace aware, otherwise the name.
063 * @return the element name, possibly null
064 */
065 public String getName() {
066 return name;
067 }
068
069 /**
070 * Sets the local name for this element.
071 * @param name the element name, possibly null
072 */
073 public void setName(String name) {
074 this.name = name;
075 }
076
077 /**
078 * Gets the element's attributes.
079 * @return the Attributes for this element, possibly null.
080 */
081 public Attributes getAttributes() {
082 return attributes;
083 }
084
085 /**
086 * Sets the element's attributes
087 * @param attributes the element's attributes, possibly null
088 */
089 public void setAttributes(Attributes attributes) {
090 this.attributes = attributes;
091 }
092
093 /**
094 * Gets the base type for this element.
095 * The base type may - or may not - correspond to the created type.
096 * @return the Class of the base type for this element
097 */
098 public Class getType() {
099 return type;
100 }
101
102 /**
103 * Sets the base type for this element.
104 * The base type may - or may not - correspond to the created type.
105 * @param type the Class of the base type for this element
106 */
107 public void setType(Class type) {
108 this.type = type;
109 }
110
111 /**
112 * Gets the mapped element descriptor.
113 * @return the mapped ElementDescriptor
114 */
115 public ElementDescriptor getDescriptor() {
116 return descriptor;
117 }
118
119 /**
120 * Sets the mapped element descriptor.
121 * @param descriptor set this descriptor
122 */
123 public void setDescriptor(ElementDescriptor descriptor) {
124 this.descriptor = descriptor;
125 }
126
127 /**
128 * Returns something useful for logging.
129 * @since 0.8
130 */
131 public String toString() {
132 StringBuffer buffer = new StringBuffer();
133 buffer.append("ElementMapping[");
134 buffer.append(name);
135 buffer.append(" -> ");
136 buffer.append(type);
137 buffer.append("]");
138 return buffer.toString();
139 }
140 }