001/** 002 * 003 * Copyright the original author or authors 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * 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 */ 017package org.jivesoftware.smackx.pubsub.packet; 018 019import java.util.Locale; 020 021/** 022 * Defines all the valid namespaces that are used with the {@link PubSub} packet 023 * as defined by the specification. 024 * 025 * @author Robin Collier 026 */ 027public enum PubSubNamespace 028{ 029 BASIC(null), 030 ERROR("errors"), 031 EVENT("event"), 032 OWNER("owner"); 033 034 private final String fragment; 035 private final String fullNamespace; 036 037 private PubSubNamespace(String fragment) 038 { 039 this.fragment = fragment; 040 if (fragment != null) { 041 fullNamespace = PubSub.NAMESPACE + '#' + fragment; 042 } 043 else { 044 fullNamespace = PubSub.NAMESPACE; 045 } 046 } 047 048 public String getXmlns() 049 { 050 return fullNamespace; 051 } 052 053 public String getFragment() 054 { 055 return fragment; 056 } 057 058 public static PubSubNamespace valueOfFromXmlns(String ns) 059 { 060 int index = ns.lastIndexOf('#'); 061 062 if (index != -1) 063 { 064 String suffix = ns.substring(ns.lastIndexOf('#') + 1); 065 return valueOf(suffix.toUpperCase(Locale.US)); 066 } 067 else 068 return BASIC; 069 } 070}