1d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/**
2d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
3d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * you may not use this file except in compliance with the License.
4d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * You may obtain a copy of the License at
5d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
6d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *     http://www.apache.org/licenses/LICENSE-2.0
7d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
8d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Unless required by applicable law or agreed to in writing, software
9d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * distributed under the License is distributed on an "AS IS" BASIS,
10d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * See the License for the specific language governing permissions and
12d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * limitations under the License.
13d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */
14d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpackage org.jivesoftware.smackx.pubsub.packet;
15d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
16d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/**
17d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Defines all the valid namespaces that are used with the {@link PubSub} packet
18d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * as defined by the specification.
19d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
20d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @author Robin Collier
21d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */
22d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic enum PubSubNamespace
23d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen{
24d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	BASIC(null),
25d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	ERROR("errors"),
26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	EVENT("event"),
27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	OWNER("owner");
28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
29d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	private String fragment;
30d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	private PubSubNamespace(String fragment)
32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	{
33d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		this.fragment = fragment;
34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	}
35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	public String getXmlns()
37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	{
38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		String ns = "http://jabber.org/protocol/pubsub";
39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		if (fragment != null)
41d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen			ns += '#' + fragment;
42d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
43d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		return ns;
44d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	}
45d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
46d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	public String getFragment()
47d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	{
48d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		return fragment;
49d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	}
50d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
51d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	public static PubSubNamespace valueOfFromXmlns(String ns)
52d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	{
53d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		int index = ns.lastIndexOf('#');
54d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
55d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		if (index != -1)
56d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		{
57d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen			String suffix = ns.substring(ns.lastIndexOf('#')+1);
58d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen			return valueOf(suffix.toUpperCase());
59d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		}
60d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		else
61d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen			return BASIC;
62d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	}
63d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
64