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;
018
019 /** <p> Common superclass for <code>ElementDescriptor</code>
020 * and <code>AttributeDescriptor</code>.</p>
021 *
022 * <p> Nodes can have just a local name
023 * or they can have a local name, qualified name and a namespace uri.</p>
024 *
025 * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
026 * @version $Revision: 438373 $
027 */
028 public class NodeDescriptor extends Descriptor {
029
030 /** The local name of this node without any namespace prefix */
031 private String localName;
032 /** The qualified name of the xml node associated with this descriptor. */
033 private String qualifiedName;
034 /** The namespace URI of this node */
035 private String uri = "";
036
037 /** Base constructor */
038 public NodeDescriptor() {
039 }
040
041 /**
042 * Creates a NodeDescriptor with no namespace URI or prefix.
043 *
044 * @param localName the (xml) local name of this node.
045 * This will be used to set both qualified and local name for this name.
046 */
047 public NodeDescriptor(String localName) {
048 this.localName = localName;
049 this.qualifiedName = localName;
050 }
051
052
053 /**
054 * Creates a NodeDescriptor with namespace URI and qualified name
055 * @param localName the (xml) local name of this node
056 * @param qualifiedName the (xml) qualified name of this node
057 * @param uri the (xml) namespace prefix of this node
058 */
059 public NodeDescriptor(String localName, String qualifiedName, String uri) {
060 this.localName = localName;
061 this.qualifiedName = qualifiedName;
062 this.uri = uri;
063 }
064
065 /**
066 * Gets the local name, excluding any namespace prefix
067 * @return the (xml) local name of this node
068 */
069 public String getLocalName() {
070 return localName;
071 }
072
073 /**
074 * Sets the local name
075 * @param localName the (xml) local name of this node
076 */
077 public void setLocalName(String localName) {
078 this.localName = localName;
079 }
080
081 /**
082 * Gets the qualified name, including any namespace prefix
083 * @return the (xml) qualified name of this node. This may be null.
084 */
085 public String getQualifiedName() {
086 if ( qualifiedName == null ) {
087 qualifiedName = localName;
088 }
089 return qualifiedName;
090 }
091
092 /**
093 * Sets the qualified name
094 * @param qualifiedName the new (xml) qualified name for this node
095 */
096 public void setQualifiedName(String qualifiedName) {
097 this.qualifiedName = qualifiedName;
098 }
099
100 /**
101 * Gets the (xml) namespace URI prefix for this node.
102 * @return the namespace URI that this node belongs to
103 * or "" if there is no namespace defined
104 */
105 public String getURI() {
106 return uri;
107 }
108
109
110 /**
111 * Sets the namespace URI that this node belongs to.
112 * @param uri the new namespace uri for this node
113 */
114 public void setURI(String uri) {
115 if ( uri == null ) {
116 throw new IllegalArgumentException(
117 "The namespace URI cannot be null. "
118 + "No namespace URI is specified with the empty string"
119 );
120 }
121 this.uri = uri;
122 }
123 }