diff options
Diffstat (limited to 'src/org/jivesoftware/smackx/ConfigureProviderManager.java')
-rw-r--r-- | src/org/jivesoftware/smackx/ConfigureProviderManager.java | 207 |
1 files changed, 207 insertions, 0 deletions
diff --git a/src/org/jivesoftware/smackx/ConfigureProviderManager.java b/src/org/jivesoftware/smackx/ConfigureProviderManager.java new file mode 100644 index 0000000..7c0cdf2 --- /dev/null +++ b/src/org/jivesoftware/smackx/ConfigureProviderManager.java @@ -0,0 +1,207 @@ +/** + * All rights reserved. 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.jivesoftware.smackx; + +import org.jivesoftware.smack.provider.PrivacyProvider; +import org.jivesoftware.smack.provider.ProviderManager; +import org.jivesoftware.smackx.GroupChatInvitation; +import org.jivesoftware.smackx.PrivateDataManager; +import org.jivesoftware.smackx.bytestreams.ibb.provider.CloseIQProvider; +import org.jivesoftware.smackx.bytestreams.ibb.provider.DataPacketProvider; +import org.jivesoftware.smackx.bytestreams.ibb.provider.OpenIQProvider; +import org.jivesoftware.smackx.bytestreams.socks5.provider.BytestreamsProvider; +import org.jivesoftware.smackx.carbons.Carbon; +import org.jivesoftware.smackx.entitycaps.provider.CapsExtensionProvider; +import org.jivesoftware.smackx.forward.Forwarded; +import org.jivesoftware.smackx.packet.AttentionExtension; +import org.jivesoftware.smackx.packet.ChatStateExtension; +import org.jivesoftware.smackx.packet.LastActivity; +import org.jivesoftware.smackx.packet.Nick; +import org.jivesoftware.smackx.packet.OfflineMessageInfo; +import org.jivesoftware.smackx.packet.OfflineMessageRequest; +import org.jivesoftware.smackx.packet.SharedGroupsInfo; +import org.jivesoftware.smackx.ping.provider.PingProvider; +import org.jivesoftware.smackx.provider.DataFormProvider; +import org.jivesoftware.smackx.provider.DelayInformationProvider; +import org.jivesoftware.smackx.provider.DiscoverInfoProvider; +import org.jivesoftware.smackx.provider.DiscoverItemsProvider; +import org.jivesoftware.smackx.provider.HeadersProvider; +import org.jivesoftware.smackx.provider.HeaderProvider; +import org.jivesoftware.smackx.provider.MUCAdminProvider; +import org.jivesoftware.smackx.provider.MUCOwnerProvider; +import org.jivesoftware.smackx.provider.MUCUserProvider; +import org.jivesoftware.smackx.provider.MessageEventProvider; +import org.jivesoftware.smackx.provider.MultipleAddressesProvider; +import org.jivesoftware.smackx.provider.RosterExchangeProvider; +import org.jivesoftware.smackx.provider.StreamInitiationProvider; +import org.jivesoftware.smackx.provider.VCardProvider; +import org.jivesoftware.smackx.provider.XHTMLExtensionProvider; +import org.jivesoftware.smackx.pubsub.provider.AffiliationProvider; +import org.jivesoftware.smackx.pubsub.provider.AffiliationsProvider; +import org.jivesoftware.smackx.pubsub.provider.ConfigEventProvider; +import org.jivesoftware.smackx.pubsub.provider.EventProvider; +import org.jivesoftware.smackx.pubsub.provider.FormNodeProvider; +import org.jivesoftware.smackx.pubsub.provider.ItemProvider; +import org.jivesoftware.smackx.pubsub.provider.ItemsProvider; +import org.jivesoftware.smackx.pubsub.provider.PubSubProvider; +import org.jivesoftware.smackx.pubsub.provider.RetractEventProvider; +import org.jivesoftware.smackx.pubsub.provider.SimpleNodeProvider; +import org.jivesoftware.smackx.pubsub.provider.SubscriptionProvider; +import org.jivesoftware.smackx.pubsub.provider.SubscriptionsProvider; +import org.jivesoftware.smackx.receipts.DeliveryReceipt; +import org.jivesoftware.smackx.search.UserSearch; + +/** + * Since dalvik on Android does not allow the loading of META-INF files from the + * filesystem, you have to register every provider manually. + * + * The full list of providers is at: + * http://fisheye.igniterealtime.org/browse/smack/trunk/build/resources/META-INF/smack.providers?hb=true + * + * @author Florian Schmaus fschmaus@gmail.com + * + */ +public class ConfigureProviderManager { + + public static void configureProviderManager() { + ProviderManager pm = ProviderManager.getInstance(); + + // The order is the same as in the smack.providers file + + // Private Data Storage + pm.addIQProvider("query","jabber:iq:private", new PrivateDataManager.PrivateDataIQProvider()); + // Time + try { + pm.addIQProvider("query","jabber:iq:time", Class.forName("org.jivesoftware.smackx.packet.Time")); + } catch (ClassNotFoundException e) { + System.err.println("Can't load class for org.jivesoftware.smackx.packet.Time"); + } + + // Roster Exchange + pm.addExtensionProvider("x","jabber:x:roster", new RosterExchangeProvider()); + // Message Events + pm.addExtensionProvider("x","jabber:x:event", new MessageEventProvider()); + // Chat State + pm.addExtensionProvider("active","http://jabber.org/protocol/chatstates", new ChatStateExtension.Provider()); + pm.addExtensionProvider("composing","http://jabber.org/protocol/chatstates", new ChatStateExtension.Provider()); + pm.addExtensionProvider("paused","http://jabber.org/protocol/chatstates", new ChatStateExtension.Provider()); + pm.addExtensionProvider("inactive","http://jabber.org/protocol/chatstates", new ChatStateExtension.Provider()); + pm.addExtensionProvider("gone","http://jabber.org/protocol/chatstates", new ChatStateExtension.Provider()); + + // XHTML + pm.addExtensionProvider("html","http://jabber.org/protocol/xhtml-im", new XHTMLExtensionProvider()); + + // Group Chat Invitations + pm.addExtensionProvider("x","jabber:x:conference", new GroupChatInvitation.Provider()); + // Service Discovery # Items + pm.addIQProvider("query","http://jabber.org/protocol/disco#items", new DiscoverItemsProvider()); + // Service Discovery # Info + pm.addIQProvider("query","http://jabber.org/protocol/disco#info", new DiscoverInfoProvider()); + // Data Forms + pm.addExtensionProvider("x","jabber:x:data", new DataFormProvider()); + // MUC User + pm.addExtensionProvider("x","http://jabber.org/protocol/muc#user", new MUCUserProvider()); + // MUC Admin + pm.addIQProvider("query","http://jabber.org/protocol/muc#admin", new MUCAdminProvider()); + // MUC Owner + pm.addIQProvider("query","http://jabber.org/protocol/muc#owner", new MUCOwnerProvider()); + // Delayed Delivery + pm.addExtensionProvider("x","jabber:x:delay", new DelayInformationProvider()); + pm.addExtensionProvider("delay", "urn:xmpp:delay", new DelayInformationProvider()); + // Version + try { + pm.addIQProvider("query","jabber:iq:version", Class.forName("org.jivesoftware.smackx.packet.Version")); + } catch (ClassNotFoundException e) { + System.err.println("Can't load class for org.jivesoftware.smackx.packet.Version"); + } + // VCard + pm.addIQProvider("vCard","vcard-temp", new VCardProvider()); + // Offline Message Requests + pm.addIQProvider("offline","http://jabber.org/protocol/offline", new OfflineMessageRequest.Provider()); + // Offline Message Indicator + pm.addExtensionProvider("offline","http://jabber.org/protocol/offline", new OfflineMessageInfo.Provider()); + // Last Activity + pm.addIQProvider("query","jabber:iq:last", new LastActivity.Provider()); + // User Search + pm.addIQProvider("query","jabber:iq:search", new UserSearch.Provider()); + // SharedGroupsInfo + pm.addIQProvider("sharedgroup","http://www.jivesoftware.org/protocol/sharedgroup", new SharedGroupsInfo.Provider()); + + // JEP-33: Extended Stanza Addressing + pm.addExtensionProvider("addresses","http://jabber.org/protocol/address", new MultipleAddressesProvider()); + + // FileTransfer + pm.addIQProvider("si","http://jabber.org/protocol/si", new StreamInitiationProvider()); + pm.addIQProvider("query","http://jabber.org/protocol/bytestreams", new BytestreamsProvider()); + pm.addIQProvider("open","http://jabber.org/protocol/ibb", new OpenIQProvider()); + pm.addIQProvider("data","http://jabber.org/protocol/ibb", new DataPacketProvider()); + pm.addIQProvider("close","http://jabber.org/protocol/ibb", new CloseIQProvider()); + pm.addExtensionProvider("data","http://jabber.org/protocol/ibb", new DataPacketProvider()); + + // Privacy + pm.addIQProvider("query","jabber:iq:privacy", new PrivacyProvider()); + + // SHIM + pm.addExtensionProvider("headers", "http://jabber.org/protocol/shim", new HeadersProvider()); + pm.addExtensionProvider("header", "http://jabber.org/protocol/shim", new HeaderProvider()); + + // PubSub + pm.addIQProvider("pubsub", "http://jabber.org/protocol/pubsub", new PubSubProvider()); + pm.addExtensionProvider("create", "http://jabber.org/protocol/pubsub", new SimpleNodeProvider()); + pm.addExtensionProvider("items", "http://jabber.org/protocol/pubsub", new ItemsProvider()); + pm.addExtensionProvider("item", "http://jabber.org/protocol/pubsub", new ItemProvider()); + pm.addExtensionProvider("subscriptions", "http://jabber.org/protocol/pubsub", new SubscriptionsProvider()); + pm.addExtensionProvider("subscription", "http://jabber.org/protocol/pubsub", new SubscriptionProvider()); + pm.addExtensionProvider("affiliations", "http://jabber.org/protocol/pubsub", new AffiliationsProvider()); + pm.addExtensionProvider("affiliation", "http://jabber.org/protocol/pubsub", new AffiliationProvider()); + pm.addExtensionProvider("options", "http://jabber.org/protocol/pubsub", new FormNodeProvider()); + // PubSub owner + pm.addIQProvider("pubsub", "http://jabber.org/protocol/pubsub#owner", new PubSubProvider()); + pm.addExtensionProvider("configure", "http://jabber.org/protocol/pubsub#owner", new FormNodeProvider()); + pm.addExtensionProvider("default", "http://jabber.org/protocol/pubsub#owner", new FormNodeProvider()); + // PubSub event + pm.addExtensionProvider("event", "http://jabber.org/protocol/pubsub#event", new EventProvider()); + pm.addExtensionProvider("configuration", "http://jabber.org/protocol/pubsub#event", new ConfigEventProvider()); + pm.addExtensionProvider("delete", "http://jabber.org/protocol/pubsub#event", new SimpleNodeProvider()); + pm.addExtensionProvider("options", "http://jabber.org/protocol/pubsub#event", new FormNodeProvider()); + pm.addExtensionProvider("items", "http://jabber.org/protocol/pubsub#event", new ItemsProvider()); + pm.addExtensionProvider("item", "http://jabber.org/protocol/pubsub#event", new ItemProvider()); + pm.addExtensionProvider("retract", "http://jabber.org/protocol/pubsub#event", new RetractEventProvider()); + pm.addExtensionProvider("purge", "http://jabber.org/protocol/pubsub#event", new SimpleNodeProvider()); + + // Nick Exchange + pm.addExtensionProvider("nick", "http://jabber.org/protocol/nick", new Nick.Provider()); + + // Attention + pm.addExtensionProvider("attention", "urn:xmpp:attention:0", new AttentionExtension.Provider()); + + // XEP-0297 Stanza Forwarding + pm.addExtensionProvider("forwarded", "urn:xmpp:forward:0", new Forwarded.Provider()); + + // XEP-0280 Message Carbons + pm.addExtensionProvider("sent", "urn:xmpp:carbons:2", new Carbon.Provider()); + pm.addExtensionProvider("received", "urn:xmpp:carbons:2", new Carbon.Provider()); + + // XEP-0199 XMPP Ping + pm.addIQProvider("ping", "urn:xmpp:ping", new PingProvider()); + + // XEP-184 Message Delivery Receipts + pm.addExtensionProvider("received", "urn:xmpp:receipts", new DeliveryReceipt.Provider()); + pm.addExtensionProvider("request", "urn:xmpp:receipts", new DeliveryReceipt.Provider()); + + // XEP-0115 Entity Capabilities + pm.addExtensionProvider("c", "http://jabber.org/protocol/caps", new CapsExtensionProvider()); + } +} |