- /*
- * Copyright 1999-2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- /*
- * $Id: ExtendedType.java,v 1.3 2004/02/16 23:06:11 minchau Exp $
- */
- package com.sun.org.apache.xml.internal.dtm.ref;
-
- /**
- * The class ExtendedType represents an extended type object used by
- * ExpandedNameTable.
- */
- public final class ExtendedType
- {
- private int nodetype;
- private String namespace;
- private String localName;
- private int hash;
-
- /**
- * Create an ExtendedType object from node type, namespace and local name.
- * The hash code is calculated from the node type, namespace and local name.
- *
- * @param nodetype Type of the node
- * @param namespace Namespace of the node
- * @param localName Local name of the node
- */
- public ExtendedType (int nodetype, String namespace, String localName)
- {
- this.nodetype = nodetype;
- this.namespace = namespace;
- this.localName = localName;
- this.hash = nodetype + namespace.hashCode() + localName.hashCode();
- }
-
- /**
- * Create an ExtendedType object from node type, namespace, local name
- * and a given hash code.
- *
- * @param nodetype Type of the node
- * @param namespace Namespace of the node
- * @param localName Local name of the node
- * @param hash The given hash code
- */
- public ExtendedType (int nodetype, String namespace, String localName, int hash)
- {
- this.nodetype = nodetype;
- this.namespace = namespace;
- this.localName = localName;
- this.hash = hash;
- }
-
- /**
- * Redefine this ExtendedType object to represent a different extended type.
- * This is intended to be used ONLY on the hashET object. Using it elsewhere
- * will mess up existing hashtable entries!
- */
- protected void redefine(int nodetype, String namespace, String localName)
- {
- this.nodetype = nodetype;
- this.namespace = namespace;
- this.localName = localName;
- this.hash = nodetype + namespace.hashCode() + localName.hashCode();
- }
-
- /**
- * Redefine this ExtendedType object to represent a different extended type.
- * This is intended to be used ONLY on the hashET object. Using it elsewhere
- * will mess up existing hashtable entries!
- */
- protected void redefine(int nodetype, String namespace, String localName, int hash)
- {
- this.nodetype = nodetype;
- this.namespace = namespace;
- this.localName = localName;
- this.hash = hash;
- }
-
- /**
- * Override the hashCode() method in the Object class
- */
- public int hashCode()
- {
- return hash;
- }
-
- /**
- * Test if this ExtendedType object is equal to the given ExtendedType.
- *
- * @param other The other ExtendedType object to test for equality
- * @return true if the two ExtendedType objects are equal.
- */
- public boolean equals(ExtendedType other)
- {
- try
- {
- return other.nodetype == this.nodetype &&
- other.localName.equals(this.localName) &&
- other.namespace.equals(this.namespace);
- }
- catch(NullPointerException e)
- {
- return false;
- }
- }
-
- /**
- * Return the node type
- */
- public int getNodeType()
- {
- return nodetype;
- }
-
- /**
- * Return the local name
- */
- public String getLocalName()
- {
- return localName;
- }
-
- /**
- * Return the namespace
- */
- public String getNamespace()
- {
- return namespace;
- }
-
- }