All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.igniterealtime.jbosh.BodyQName Maven / Gradle / Ivy

Go to download

Library to connect to Cisco Enterprise Chat and Email (ECE) chat interface which is a modified version of XMPP over BOSH standard.

The newest version!
/*
 * Copyright 2009 Mike Cumings
 *
 * 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.
 */

package org.igniterealtime.jbosh;

import javax.xml.namespace.QName;

/**
 * Qualified name of an attribute of the wrapper element.  This class is analagous to the {@code javax.xml.namespace.QName} class.
 * Each qualified name consists of a namespace URI and a local name.
 * 

* Instances of this class are immutable and thread-safe. *

*/ public final class BodyQName { /** * BOSH namespace URI. */ static final String BOSH_NS_URI = "http://jabber.org/protocol/httpbind"; /** * Namespace URI. */ private final QName qname; /** * Private constructor to prevent direct construction. * * @param wrapped QName instance to wrap */ private BodyQName( final QName wrapped) { qname = wrapped; } /** * Creates a new qualified name using a namespace URI and local name. * * @param uri namespace URI * @param local local name * @return BodyQName instance */ public static BodyQName create( final String uri, final String local) { return createWithPrefix(uri, local, null); } /** * Creates a new qualified name using a namespace URI and local name along with an optional prefix. * * @param uri namespace URI * @param local local name * @param prefix optional prefix or @{code null} for no prefix * @return BodyQName instance */ public static BodyQName createWithPrefix( final String uri, final String local, final String prefix) { if (uri == null || uri.length() == 0) { throw (new IllegalArgumentException( "URI is required and may not be null/empty")); } if (local == null || local.length() == 0) { throw (new IllegalArgumentException( "Local arg is required and may not be null/empty")); } if (prefix == null || prefix.length() == 0) { return new BodyQName(new QName(uri, local)); } else { return new BodyQName(new QName(uri, local, prefix)); } } /** * Creates a new qualified name using the BOSH namespace URI and local name. * * @param local local name * @return BodyQName instance */ static BodyQName createBOSH( final String local) { return createWithPrefix(BOSH_NS_URI, local, null); } /** * Get the namespace URI of this qualified name. * * @return namespace uri */ public String getNamespaceURI() { return qname.getNamespaceURI(); } /** * Get the local part of this qualified name. * * @return local name */ public String getLocalPart() { return qname.getLocalPart(); } /** * Get the optional prefix used with this qualified name, or {@code null} if no prefix has been assiciated. * * @return prefix, or {@code null} if no prefix was supplied */ public String getPrefix() { return qname.getPrefix(); } /** * {@inheritDoc} */ @Override public boolean equals(final Object obj) { if (obj instanceof BodyQName) { BodyQName other = (BodyQName) obj; return qname.equals(other.qname); } else { return false; } } /////////////////////////////////////////////////////////////////////////// // Package-private methods: /** * {@inheritDoc} */ @Override public int hashCode() { return qname.hashCode(); } /** * Convenience method to compare this qualified name with a {@code javax.xml.namespace.QName}. * * @param otherName QName to compare to * @return @{code true} if the qualified name is the same, {@code false} otherwise */ boolean equalsQName(final QName otherName) { return qname.equals(otherName); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy