1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 package org.apache.commons.betwixt; 18 19 /** <p> Common superclass for <code>ElementDescriptor</code> 20 * and <code>AttributeDescriptor</code>.</p> 21 * 22 * <p> Nodes can have just a local name 23 * or they can have a local name, qualified name and a namespace uri.</p> 24 * 25 * @author <a href="mailto:jstrachan@apache.org">James Strachan</a> 26 * @version $Revision: 438373 $ 27 */ 28 public class NodeDescriptor extends Descriptor { 29 30 /** The local name of this node without any namespace prefix */ 31 private String localName; 32 /** The qualified name of the xml node associated with this descriptor. */ 33 private String qualifiedName; 34 /** The namespace URI of this node */ 35 private String uri = ""; 36 37 /** Base constructor */ 38 public NodeDescriptor() { 39 } 40 41 /** 42 * Creates a NodeDescriptor with no namespace URI or prefix. 43 * 44 * @param localName the (xml) local name of this node. 45 * This will be used to set both qualified and local name for this name. 46 */ 47 public NodeDescriptor(String localName) { 48 this.localName = localName; 49 this.qualifiedName = localName; 50 } 51 52 53 /** 54 * Creates a NodeDescriptor with namespace URI and qualified name 55 * @param localName the (xml) local name of this node 56 * @param qualifiedName the (xml) qualified name of this node 57 * @param uri the (xml) namespace prefix of this node 58 */ 59 public NodeDescriptor(String localName, String qualifiedName, String uri) { 60 this.localName = localName; 61 this.qualifiedName = qualifiedName; 62 this.uri = uri; 63 } 64 65 /** 66 * Gets the local name, excluding any namespace prefix 67 * @return the (xml) local name of this node 68 */ 69 public String getLocalName() { 70 return localName; 71 } 72 73 /** 74 * Sets the local name 75 * @param localName the (xml) local name of this node 76 */ 77 public void setLocalName(String localName) { 78 this.localName = localName; 79 } 80 81 /** 82 * Gets the qualified name, including any namespace prefix 83 * @return the (xml) qualified name of this node. This may be null. 84 */ 85 public String getQualifiedName() { 86 if ( qualifiedName == null ) { 87 qualifiedName = localName; 88 } 89 return qualifiedName; 90 } 91 92 /** 93 * Sets the qualified name 94 * @param qualifiedName the new (xml) qualified name for this node 95 */ 96 public void setQualifiedName(String qualifiedName) { 97 this.qualifiedName = qualifiedName; 98 } 99 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 }