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 }