use of org.jivesoftware.smackx.jiveproperties.packet.JivePropertiesExtension in project Spark by igniterealtime.
the class Workspace method loadPlugins.
/**
* Starts the Loading of all Spark Plugins.
*/
public void loadPlugins() {
// Send Available status
SparkManager.getSessionManager().changePresence(statusBox.getPresence());
// Add presence and message listeners
// we listen for these to force open a 1-1 peer chat window from other operators if
// one isn't already open
StanzaFilter workspaceMessageFilter = new StanzaTypeFilter(Message.class);
// Add the packetListener to this instance
SparkManager.getSessionManager().getConnection().addAsyncStanzaListener(this, workspaceMessageFilter);
// Make presence available to anonymous requests, if from anonymous user in the system.
StanzaListener workspacePresenceListener = stanza -> {
Presence presence = (Presence) stanza;
JivePropertiesExtension extension = (JivePropertiesExtension) presence.getExtension(JivePropertiesExtension.NAMESPACE);
if (extension != null && extension.getProperty("anonymous") != null) {
boolean isAvailable = statusBox.getPresence().getMode() == Presence.Mode.available;
Presence reply = new Presence(Presence.Type.available);
if (!isAvailable) {
reply.setType(Presence.Type.unavailable);
}
reply.setTo(presence.getFrom());
try {
SparkManager.getSessionManager().getConnection().sendStanza(reply);
} catch (SmackException.NotConnectedException e) {
Log.warning("Unable to send presence reply to " + reply.getTo(), e);
}
}
};
SparkManager.getSessionManager().getConnection().addAsyncStanzaListener(workspacePresenceListener, new StanzaTypeFilter(Presence.class));
// Until we have better plugin management, will init after presence updates.
gatewayPlugin = new GatewayPlugin();
gatewayPlugin.initialize();
// Load all non-presence related items.
conferences.loadConferenceBookmarks();
SearchManager.getInstance();
transcriptPlugin = new ChatTranscriptPlugin();
// Load Broadcast Plugin
broadcastPlugin = new BroadcastPlugin();
broadcastPlugin.initialize();
// Load BookmarkPlugin
bookmarkPlugin = new BookmarkPlugin();
bookmarkPlugin.initialize();
// Schedule loading of the plugins after two seconds.
TaskEngine.getInstance().schedule(new TimerTask() {
public void run() {
final PluginManager pluginManager = PluginManager.getInstance();
SparkManager.getMainWindow().addMainWindowListener(pluginManager);
pluginManager.initializePlugins();
// Subscriptions are always manual
Roster roster = Roster.getInstanceFor(SparkManager.getConnection());
roster.setSubscriptionMode(Roster.SubscriptionMode.manual);
}
}, 2000);
// Check URI Mappings
SparkManager.getChatManager().handleURIMapping(Spark.ARGUMENTS);
}
use of org.jivesoftware.smackx.jiveproperties.packet.JivePropertiesExtension in project Smack by igniterealtime.
the class JivePropertiesManager method getProperty.
/**
* Convenience method to get a property from a packet. Will return null if the stanza contains
* not property with the given name.
*
* @param packet TODO javadoc me please
* @param name TODO javadoc me please
* @return the property or <code>null</code> if none found.
*/
public static Object getProperty(StanzaView packet, String name) {
Object res = null;
JivePropertiesExtension jpe = packet.getExtension(JivePropertiesExtension.class);
if (jpe != null) {
res = jpe.getProperty(name);
}
return res;
}
use of org.jivesoftware.smackx.jiveproperties.packet.JivePropertiesExtension in project Smack by igniterealtime.
the class JivePropertiesManager method addProperty.
/**
* Convenience method to add a property to a stanza.
*
* @param stanzaBuilder the stanza to add the property to.
* @param name the name of the property to add.
* @param value the value of the property to add.
*/
public static void addProperty(StanzaBuilder<?> stanzaBuilder, String name, Object value) {
JivePropertiesExtension jpe = (JivePropertiesExtension) stanzaBuilder.getExtension(JivePropertiesExtension.QNAME);
if (jpe == null) {
jpe = new JivePropertiesExtension();
stanzaBuilder.addExtension(jpe);
}
jpe.setProperty(name, value);
}
use of org.jivesoftware.smackx.jiveproperties.packet.JivePropertiesExtension in project Smack by igniterealtime.
the class JivePropertiesExtensionTest method checkProvider.
@Test
public void checkProvider() throws Exception {
// @formatter:off
String properties = "<message xmlns='jabber:client' from='romeo@example.net/orchard' to='juliet@example.com/balcony'>" + "<body>Neither, fair saint, if either thee dislike.</body>" + "<properties xmlns='http://www.jivesoftware.com/xmlns/xmpp/properties'>" + "<property>" + "<name>FooBar</name>" + "<value type='integer'>42</value>" + "</property>" + "</properties>" + "</message>";
// @formatter:on
Message message = PacketParserUtils.parseStanza(properties);
JivePropertiesExtension jpe = JivePropertiesExtension.from(message);
assertNotNull(jpe);
Integer integer = (Integer) jpe.getProperty("FooBar");
assertNotNull(integer);
int fourtytwo = integer;
assertEquals(42, fourtytwo);
}
use of org.jivesoftware.smackx.jiveproperties.packet.JivePropertiesExtension in project camel by apache.
the class XmppBinding method extractHeadersFromXmpp.
public Map<String, Object> extractHeadersFromXmpp(Packet xmppPacket, Exchange exchange) {
Map<String, Object> answer = new HashMap<String, Object>();
PacketExtension jpe = xmppPacket.getExtension(JivePropertiesExtension.NAMESPACE);
if (jpe != null && jpe instanceof JivePropertiesExtension) {
extractHeadersFrom((JivePropertiesExtension) jpe, exchange, answer);
}
if (jpe != null && jpe instanceof DefaultPacketExtension) {
extractHeadersFrom((DefaultPacketExtension) jpe, exchange, answer);
}
if (xmppPacket instanceof Message) {
Message xmppMessage = (Message) xmppPacket;
answer.put(XmppConstants.MESSAGE_TYPE, xmppMessage.getType());
answer.put(XmppConstants.SUBJECT, xmppMessage.getSubject());
answer.put(XmppConstants.THREAD_ID, xmppMessage.getThread());
} else if (xmppPacket instanceof PubSub) {
PubSub pubsubPacket = (PubSub) xmppPacket;
answer.put(XmppConstants.MESSAGE_TYPE, pubsubPacket.getType());
}
answer.put(XmppConstants.FROM, xmppPacket.getFrom());
answer.put(XmppConstants.PACKET_ID, xmppPacket.getPacketID());
answer.put(XmppConstants.TO, xmppPacket.getTo());
return answer;
}
Aggregations