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 }