You are viewing a plain text version of this content. The canonical link for it is here.
Posted to nuvem-commits@incubator.apache.org by jo...@apache.org on 2011/05/02 23:13:23 UTC

svn commit: r1098849 - in /incubator/nuvem/trunk/nuvem-standalone-xmpp/src: main/java/org/apache/nuvem/xmpp/client/ main/resources/ test/java/org/apache/nuvem/xmpp/client/

Author: johnp
Date: Mon May  2 23:13:22 2011
New Revision: 1098849

URL: http://svn.apache.org/viewvc?rev=1098849&view=rev
Log:
Standalone XMPP Presence Management implementation + simplifying few class names

Added:
    incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/DefaultPresenceManager.java
    incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/MessageAdapter.java
      - copied, changed from r1092553, incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/SmackMessageAdapter.java
    incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/MessageListenerAdapter.java
      - copied, changed from r1086399, incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/SmackMessageListenerAdapter.java
    incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/PresenceAdapter.java
    incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/RosterListenerAdapter.java
    incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/StatusAdapter.java
      - copied, changed from r1086399, incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/SmackStatusAdapter.java
Removed:
    incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/SmackMessageAdapter.java
    incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/SmackMessageListenerAdapter.java
    incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/SmackStatusAdapter.java
Modified:
    incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/DefaultXMPPEndPoint.java
    incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/NuvemPacketFilter.java
    incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/NuvemPacketListener.java
    incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/resources/nuvemxmpp.composite
    incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/resources/testnuvemxmpp.composite
    incubator/nuvem/trunk/nuvem-standalone-xmpp/src/test/java/org/apache/nuvem/xmpp/client/DefaultXMPPEndPointTestCase.java
    incubator/nuvem/trunk/nuvem-standalone-xmpp/src/test/java/org/apache/nuvem/xmpp/client/XMPPEndPointIntegrationTest.java

Added: incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/DefaultPresenceManager.java
URL: http://svn.apache.org/viewvc/incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/DefaultPresenceManager.java?rev=1098849&view=auto
==============================================================================
--- incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/DefaultPresenceManager.java (added)
+++ incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/DefaultPresenceManager.java Mon May  2 23:13:22 2011
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.nuvem.xmpp.client;
+
+import org.apache.commons.lang.Validate;
+import org.apache.nuvem.cloud.xmpp.api.XMPPConnector;
+import org.apache.nuvem.cloud.xmpp.api.presence.PresenceListener;
+import org.apache.nuvem.cloud.xmpp.api.presence.PresenceManager;
+import org.apache.nuvem.cloud.xmpp.common.AbstractPresenceManager;
+import org.jivesoftware.smack.XMPPConnection;
+import org.oasisopen.sca.annotation.Reference;
+import org.oasisopen.sca.annotation.Service;
+
+/**
+ * Utility Service to provide all presence related operations.
+ * 
+ */
+@Service(PresenceManager.class)
+public class DefaultPresenceManager extends AbstractPresenceManager {
+
+	/**
+	 * Connecter to fetch XMPP Connection.
+	 */
+	@Reference
+	protected XMPPConnector<XMPPConnection> connector;
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	public void registerListener(PresenceListener listener) {
+		Validate.notNull(listener);
+		connector.getConnection().getRoster().addRosterListener(
+				new RosterListenerAdapter(listener));
+		//Keeps a reference to the listener for later use.
+		listeners.add(listener);
+	}
+
+}

Modified: incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/DefaultXMPPEndPoint.java
URL: http://svn.apache.org/viewvc/incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/DefaultXMPPEndPoint.java?rev=1098849&r1=1098848&r2=1098849&view=diff
==============================================================================
--- incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/DefaultXMPPEndPoint.java (original)
+++ incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/DefaultXMPPEndPoint.java Mon May  2 23:13:22 2011
@@ -24,10 +24,11 @@ import java.util.logging.Logger;
 
 import org.apache.commons.lang.Validate;
 import org.apache.nuvem.cloud.xmpp.api.JID;
-import org.apache.nuvem.cloud.xmpp.api.Message;
 import org.apache.nuvem.cloud.xmpp.api.Status;
 import org.apache.nuvem.cloud.xmpp.api.XMPPConnector;
 import org.apache.nuvem.cloud.xmpp.api.XMPPEndPoint;
+import org.apache.nuvem.cloud.xmpp.api.message.Message;
+import org.apache.nuvem.cloud.xmpp.api.presence.PresenceManager;
 import org.apache.nuvem.cloud.xmpp.common.AbstractXMPPEndPoint;
 import org.jivesoftware.smack.Chat;
 import org.jivesoftware.smack.Roster;
@@ -59,6 +60,10 @@ public class DefaultXMPPEndPoint extends
 	@Reference
 	protected XMPPConnector<XMPPConnection> connector;
 
+	@Reference
+	protected PresenceManager presenceManager; 
+	
+	
 	/**
 	 * The packet filter to decide what packets to recieve from the XMPP
 	 * Server..
@@ -101,18 +106,18 @@ public class DefaultXMPPEndPoint extends
 		}
 		Status deliveryStatus = new Status();
 
-		org.apache.nuvem.cloud.xmpp.api.MessageListener nuvemListener = getListenerFor(message
+		org.apache.nuvem.cloud.xmpp.api.message.MessageListener nuvemListener = getListenerFor(message
 				.recipient());
 
 		Chat chat = connection.getChatManager().createChat(
 				message.recipient().asString(),
-				new SmackMessageListenerAdapter(nuvemListener));
+				new MessageListenerAdapter(nuvemListener));
 		try {
 			chat.sendMessage(message.payLoad().content());
 		} catch (XMPPException e) {
 			log.severe("error while sending xmpp message to "
 					+ message.recipient().asString());
-			deliveryStatus = SmackStatusAdapter.toStatus(e.getXMPPError());
+			deliveryStatus = StatusAdapter.toStatus(e.getXMPPError());
 		}
 		return deliveryStatus;
 	}
@@ -170,4 +175,9 @@ public class DefaultXMPPEndPoint extends
 	public boolean isConnected() {
 		return connector.getConnection().isConnected();
 	}
+
+	@Override
+	public PresenceManager presenceManager() {
+		return presenceManager;
+	}
 }

Copied: incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/MessageAdapter.java (from r1092553, incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/SmackMessageAdapter.java)
URL: http://svn.apache.org/viewvc/incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/MessageAdapter.java?p2=incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/MessageAdapter.java&p1=incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/SmackMessageAdapter.java&r1=1092553&r2=1098849&rev=1098849&view=diff
==============================================================================
--- incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/SmackMessageAdapter.java (original)
+++ incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/MessageAdapter.java Mon May  2 23:13:22 2011
@@ -20,22 +20,24 @@
 
 package org.apache.nuvem.xmpp.client;
 
-import org.apache.nuvem.cloud.xmpp.api.MessageBuilder;
+import org.apache.nuvem.cloud.xmpp.api.message.MessageBuilder;
 import org.jivesoftware.smack.packet.Message;
+import org.jivesoftware.smack.packet.Presence;
 
 /**
  * Adapter to transform nuvem message into smack message.
  * 
  * 
  */
-public class SmackMessageAdapter {
+public class MessageAdapter {
 
 	/**
 	 * Converts nuvem specific message object to the one smack API accepts.
 	 * 
 	 */
 	public static Message toSmackMessage(
-			org.apache.nuvem.cloud.xmpp.api.Message nuvemMessage, String sender) {
+			org.apache.nuvem.cloud.xmpp.api.message.Message nuvemMessage,
+			String sender) {
 		Message smackMessage = new Message();
 		smackMessage.setFrom(sender);
 		smackMessage.setBody(nuvemMessage.payLoad().content());
@@ -43,6 +45,7 @@ public class SmackMessageAdapter {
 		return smackMessage;
 	}
 
+
 	/**
 	 * Converts smack message to Nuvem Message.
 	 * 
@@ -50,7 +53,7 @@ public class SmackMessageAdapter {
 	 *            the smack message.
 	 * @return nuvem message.
 	 */
-	public static org.apache.nuvem.cloud.xmpp.api.Message toNuvemMessage(
+	public static org.apache.nuvem.cloud.xmpp.api.message.Message toNuvemMessage(
 			Message message) {
 		return new MessageBuilder().from(message.getFrom()).toRecipient(
 				message.getTo()).containing(message.getBody()).build();

Copied: incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/MessageListenerAdapter.java (from r1086399, incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/SmackMessageListenerAdapter.java)
URL: http://svn.apache.org/viewvc/incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/MessageListenerAdapter.java?p2=incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/MessageListenerAdapter.java&p1=incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/SmackMessageListenerAdapter.java&r1=1086399&r2=1098849&rev=1098849&view=diff
==============================================================================
--- incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/SmackMessageListenerAdapter.java (original)
+++ incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/MessageListenerAdapter.java Mon May  2 23:13:22 2011
@@ -20,7 +20,7 @@
 
 package org.apache.nuvem.xmpp.client;
 
-import org.apache.nuvem.cloud.xmpp.api.MessageBuilder;
+import org.apache.nuvem.cloud.xmpp.api.message.MessageBuilder;
 import org.jivesoftware.smack.Chat;
 import org.jivesoftware.smack.MessageListener;
 import org.jivesoftware.smack.packet.Message;
@@ -30,15 +30,15 @@ import org.jivesoftware.smack.packet.Mes
  * messages.
  * 
  */
-public class SmackMessageListenerAdapter implements MessageListener {
+public class MessageListenerAdapter implements MessageListener {
 
 	/**
 	 * The Nuvem Listener.
 	 */
-	private org.apache.nuvem.cloud.xmpp.api.MessageListener nuvemListener;
+	private org.apache.nuvem.cloud.xmpp.api.message.MessageListener nuvemListener;
 
-	public SmackMessageListenerAdapter(
-			org.apache.nuvem.cloud.xmpp.api.MessageListener nuvemMessageListener) {
+	public MessageListenerAdapter(
+			org.apache.nuvem.cloud.xmpp.api.message.MessageListener nuvemMessageListener) {
 		if (nuvemMessageListener == null)
 			throw new IllegalArgumentException("listener should not be null");
 		this.nuvemListener = nuvemMessageListener;

Modified: incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/NuvemPacketFilter.java
URL: http://svn.apache.org/viewvc/incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/NuvemPacketFilter.java?rev=1098849&r1=1098848&r2=1098849&view=diff
==============================================================================
--- incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/NuvemPacketFilter.java (original)
+++ incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/NuvemPacketFilter.java Mon May  2 23:13:22 2011
@@ -22,8 +22,8 @@ package org.apache.nuvem.xmpp.client;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.nuvem.cloud.xmpp.api.JID;
-import org.apache.nuvem.cloud.xmpp.api.MessageListener;
 import org.apache.nuvem.cloud.xmpp.api.XMPPEndPoint;
+import org.apache.nuvem.cloud.xmpp.api.message.MessageListener;
 import org.jivesoftware.smack.filter.PacketFilter;
 import org.jivesoftware.smack.packet.Message;
 import org.jivesoftware.smack.packet.Packet;

Modified: incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/NuvemPacketListener.java
URL: http://svn.apache.org/viewvc/incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/NuvemPacketListener.java?rev=1098849&r1=1098848&r2=1098849&view=diff
==============================================================================
--- incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/NuvemPacketListener.java (original)
+++ incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/NuvemPacketListener.java Mon May  2 23:13:22 2011
@@ -22,8 +22,8 @@ package org.apache.nuvem.xmpp.client;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.nuvem.cloud.xmpp.api.JID;
-import org.apache.nuvem.cloud.xmpp.api.MessageListener;
 import org.apache.nuvem.cloud.xmpp.api.XMPPEndPoint;
+import org.apache.nuvem.cloud.xmpp.api.message.MessageListener;
 import org.jivesoftware.smack.PacketListener;
 import org.jivesoftware.smack.packet.Message;
 import org.jivesoftware.smack.packet.Packet;
@@ -48,7 +48,7 @@ public class NuvemPacketListener impleme
 					"/");
 			MessageListener listener = endPoint
 					.getListenerFor(new JID(from));
-			listener.listen(SmackMessageAdapter
+			listener.listen(MessageAdapter
 					.toNuvemMessage((Message) packet));
 		}
 	}

Added: incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/PresenceAdapter.java
URL: http://svn.apache.org/viewvc/incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/PresenceAdapter.java?rev=1098849&view=auto
==============================================================================
--- incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/PresenceAdapter.java (added)
+++ incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/PresenceAdapter.java Mon May  2 23:13:22 2011
@@ -0,0 +1,91 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.nuvem.xmpp.client;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.nuvem.cloud.xmpp.api.JID;
+import org.apache.nuvem.cloud.xmpp.api.presence.Presence;
+import org.apache.nuvem.cloud.xmpp.api.presence.PresenceBuilder;
+import org.apache.nuvem.cloud.xmpp.api.presence.Presence.Show;
+import org.apache.nuvem.cloud.xmpp.api.presence.Presence.Type;
+import org.jivesoftware.smack.packet.Presence.Mode;
+
+/**
+ * Hepls convert smack specific presence object into nuvem specific presence
+ * object.
+ * 
+ */
+public final class PresenceAdapter {
+
+	private static final Map<Mode, Presence.Show> showConverstionMap = new HashMap<Mode, Show>();
+	private static final Map<org.jivesoftware.smack.packet.Presence.Type, Presence.Type> typeConversionMap = new HashMap<org.jivesoftware.smack.packet.Presence.Type, Type>();
+
+	static {
+		showConverstionMap.put(Mode.available, Show.AVAILABLE);
+		showConverstionMap.put(Mode.away, Show.AWAY);
+		showConverstionMap.put(Mode.chat, Show.CHAT);
+		showConverstionMap.put(Mode.dnd, Show.DND);
+		showConverstionMap.put(Mode.xa, Show.XA);
+
+		typeConversionMap.put(
+				org.jivesoftware.smack.packet.Presence.Type.available,
+				Type.AVAILABLE);
+		typeConversionMap.put(
+				org.jivesoftware.smack.packet.Presence.Type.unavailable,
+				Type.UNAVAILABLE);
+		typeConversionMap.put(
+				org.jivesoftware.smack.packet.Presence.Type.subscribe,
+				Type.SUBSCRIBE);
+		typeConversionMap.put(
+				org.jivesoftware.smack.packet.Presence.Type.subscribed,
+				Type.SUBSCRIBED);
+		typeConversionMap.put(
+				org.jivesoftware.smack.packet.Presence.Type.unsubscribe,
+				Type.UNSUBSCRIBE);
+		typeConversionMap.put(
+				org.jivesoftware.smack.packet.Presence.Type.unsubscribed,
+				Type.UNSUBSCRIBED);
+		typeConversionMap.put(
+				org.jivesoftware.smack.packet.Presence.Type.error, Type.ERROR);
+	}
+
+	/**
+	 * Converts smack's {@link org.jivesoftware.smack.packet.Presence} to
+	 * Nuvem's {@link org.apache.nuvem.cloud.xmpp.api.presence.Presence} object.
+	 */
+	public static Presence toNuvemPresence(
+			org.jivesoftware.smack.packet.Presence presence) {
+		String from = presence.getFrom();
+		String to = presence.getTo();
+		String status = presence.getStatus();
+		Show show = showConverstionMap.get(presence.getMode());
+		Type type = typeConversionMap.get(presence.getType());
+		PresenceBuilder builder = new PresenceBuilder().withShow(show)
+				.withType(type).withStatus(status);
+		builder.from(new JID(from));
+		if (StringUtils.isNotEmpty(to)) {
+			builder.to(new JID(to));
+		}
+		return builder.build();
+	}
+}

Added: incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/RosterListenerAdapter.java
URL: http://svn.apache.org/viewvc/incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/RosterListenerAdapter.java?rev=1098849&view=auto
==============================================================================
--- incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/RosterListenerAdapter.java (added)
+++ incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/RosterListenerAdapter.java Mon May  2 23:13:22 2011
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.nuvem.xmpp.client;
+
+import java.util.Collection;
+
+import org.apache.nuvem.cloud.xmpp.api.presence.PresenceListener;
+
+/**
+ * Listens to smack roster events and adapts it to nuvem roster events.
+ * 
+ */
+public class RosterListenerAdapter implements
+		org.jivesoftware.smack.RosterListener {
+
+	/**
+	 * Nuvem Roster Listener.
+	 */
+	private PresenceListener listener;
+
+	public RosterListenerAdapter(PresenceListener listener) {
+		this.listener = listener;
+	}
+
+	@Override
+	public void entriesAdded(Collection<String> arg0) {
+
+	}
+
+	@Override
+	public void entriesDeleted(Collection<String> arg0) {
+
+	}
+
+	@Override
+	public void entriesUpdated(Collection<String> arg0) {
+
+	}
+
+	@Override
+	public void presenceChanged(org.jivesoftware.smack.packet.Presence presence) {
+		listener.listen(PresenceAdapter
+				.toNuvemPresence(presence));
+	}
+}
\ No newline at end of file

Copied: incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/StatusAdapter.java (from r1086399, incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/SmackStatusAdapter.java)
URL: http://svn.apache.org/viewvc/incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/StatusAdapter.java?p2=incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/StatusAdapter.java&p1=incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/SmackStatusAdapter.java&r1=1086399&r2=1098849&rev=1098849&view=diff
==============================================================================
--- incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/SmackStatusAdapter.java (original)
+++ incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/java/org/apache/nuvem/xmpp/client/StatusAdapter.java Mon May  2 23:13:22 2011
@@ -31,7 +31,7 @@ import org.jivesoftware.smack.packet.XMP
  * Acts as an adapter to transform the status recieved by the the send API to
  * the form compatible with nuvem.
  */
-public class SmackStatusAdapter {
+public class StatusAdapter {
 
 	/**
 	 * converstion map.

Modified: incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/resources/nuvemxmpp.composite
URL: http://svn.apache.org/viewvc/incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/resources/nuvemxmpp.composite?rev=1098849&r1=1098848&r2=1098849&view=diff
==============================================================================
--- incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/resources/nuvemxmpp.composite (original)
+++ incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/resources/nuvemxmpp.composite Mon May  2 23:13:22 2011
@@ -1,22 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!--
-    * Licensed to the Apache Software Foundation (ASF) under one
-    * or more contributor license agreements.  See the NOTICE file
-    * distributed with this work for additional information
-    * regarding copyright ownership.  The ASF licenses this file
-    * to you 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.    
--->
+	<!--
+		* Licensed to the Apache Software Foundation (ASF) under one * or more
+		contributor license agreements. See the NOTICE file * distributed with
+		this work for additional information * regarding copyright ownership.
+		The ASF licenses this file * to you 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.
+	-->
 <composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
 	xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
 	targetNamespace="http://nuvemxmpp" name="xmpp">
@@ -31,11 +27,24 @@
 		<reference name="connector" target="SimpleConnector/XMPPConnector">
 			<interface.java interface="org.apache.nuvem.cloud.xmpp.api.XMPPConnector" />
 		</reference>
+		<reference name="presenceManager" target="PresenceComponent/PresenceManager">
+            <interface.java interface="org.apache.nuvem.cloud.xmpp.api.presence.PresenceManager" />
+        </reference>
 	</component>
 
-	<component name="SimpleConnector">
+	<component name="PresenceComponent">
 		<implementation.java
-			class="org.apache.nuvem.xmpp.client.SimpleConnector" />
+			class="org.apache.nuvem.xmpp.client.DefaultPresenceManager" />
+		<service name="PresenceManager">
+			<interface.java interface="org.apache.nuvem.cloud.xmpp.api.presence.PresenceManager" />
+		</service>
+		<reference name="connector" target="SimpleConnector/XMPPConnector">
+			<interface.java interface="org.apache.nuvem.cloud.xmpp.api.XMPPConnector" />
+		</reference>
+	</component>
+	
+	<component name="SimpleConnector">
+		<implementation.java class="org.apache.nuvem.xmpp.client.SimpleConnector" />
 		<service name="XMPPConnector">
 			<interface.java interface="org.apache.nuvem.cloud.xmpp.api.XMPPConnector" />
 		</service>
@@ -43,16 +52,15 @@
 		<property name="clientPassword">password</property>
 	</component>
 
-    <component name="SSLConnector">
-        <implementation.java
-            class="org.apache.nuvem.xmpp.client.SSLConnector" />
-        <service name="XMPPConnector">
-            <interface.java interface="org.apache.nuvem.cloud.xmpp.api.XMPPConnector" />
-        </service>
-        <property name="clientJID">nuvem@localhost</property>
-        <property name="clientPassword">password</property>
-        <property name="trustStorePath">truststorepath</property>
-        <property name="trustStorePassword">changeit</property>
-    </component>
+	<component name="SSLConnector">
+		<implementation.java class="org.apache.nuvem.xmpp.client.SSLConnector" />
+		<service name="XMPPConnector">
+			<interface.java interface="org.apache.nuvem.cloud.xmpp.api.XMPPConnector" />
+		</service>
+		<property name="clientJID">nuvem@localhost</property>
+		<property name="clientPassword">password</property>
+		<property name="trustStorePath">truststorepath</property>
+		<property name="trustStorePassword">changeit</property>
+	</component>
 
 </composite>

Modified: incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/resources/testnuvemxmpp.composite
URL: http://svn.apache.org/viewvc/incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/resources/testnuvemxmpp.composite?rev=1098849&r1=1098848&r2=1098849&view=diff
==============================================================================
--- incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/resources/testnuvemxmpp.composite (original)
+++ incubator/nuvem/trunk/nuvem-standalone-xmpp/src/main/resources/testnuvemxmpp.composite Mon May  2 23:13:22 2011
@@ -27,6 +27,21 @@
 		<reference name="connector" target="TestSimpleSenderConnector/XMPPConnector">
 			<interface.java interface="org.apache.nuvem.cloud.xmpp.api.XMPPConnector" />
 		</reference>
+		<reference name="presenceManager" target="TestSenderPresenceComponent/PresenceManager">
+            <interface.java interface="org.apache.nuvem.cloud.xmpp.api.presence.PresenceManager" />
+        </reference>
+	</component>
+
+	<component name="TestSenderPresenceComponent">
+		<implementation.java
+			class="org.apache.nuvem.xmpp.client.DefaultPresenceManager" />
+		<service name="PresenceManager">
+			<interface.java
+				interface="org.apache.nuvem.cloud.xmpp.api.presence.PresenceManager" />
+		</service>
+		<reference name="connector" target="TestSimpleSenderConnector/XMPPConnector">
+            <interface.java interface="org.apache.nuvem.cloud.xmpp.api.XMPPConnector" />
+        </reference>
 	</component>
 
 	<component name="TestSSLConnector">
@@ -49,8 +64,24 @@
 		<reference name="connector" target="TestSimpleRecieverConnector/XMPPConnector">
 			<interface.java interface="org.apache.nuvem.cloud.xmpp.api.XMPPConnector" />
 		</reference>
+		<reference name="presenceManager" target="TestRecieverPresenceComponent/PresenceManager">
+            <interface.java interface="org.apache.nuvem.cloud.xmpp.api.presence.PresenceManager" />
+        </reference>
 	</component>
 
+    <component name="TestRecieverPresenceComponent">
+        <implementation.java
+            class="org.apache.nuvem.xmpp.client.DefaultPresenceManager" />
+        <service name="PresenceManager">
+            <interface.java
+                interface="org.apache.nuvem.cloud.xmpp.api.presence.PresenceManager" />
+        </service>
+        <reference name="connector" target="TestSimpleRecieverConnector/XMPPConnector">
+            <interface.java interface="org.apache.nuvem.cloud.xmpp.api.XMPPConnector" />
+        </reference>
+    </component>
+
+
 	<component name="TestSimpleRecieverConnector">
 		<implementation.java class="org.apache.nuvem.xmpp.client.SimpleConnector" />
 		<service name="XMPPConnector">

Modified: incubator/nuvem/trunk/nuvem-standalone-xmpp/src/test/java/org/apache/nuvem/xmpp/client/DefaultXMPPEndPointTestCase.java
URL: http://svn.apache.org/viewvc/incubator/nuvem/trunk/nuvem-standalone-xmpp/src/test/java/org/apache/nuvem/xmpp/client/DefaultXMPPEndPointTestCase.java?rev=1098849&r1=1098848&r2=1098849&view=diff
==============================================================================
--- incubator/nuvem/trunk/nuvem-standalone-xmpp/src/test/java/org/apache/nuvem/xmpp/client/DefaultXMPPEndPointTestCase.java (original)
+++ incubator/nuvem/trunk/nuvem-standalone-xmpp/src/test/java/org/apache/nuvem/xmpp/client/DefaultXMPPEndPointTestCase.java Mon May  2 23:13:22 2011
@@ -75,7 +75,7 @@ public class DefaultXMPPEndPointTestCase
 		expect(connection.getChatManager()).andReturn(chatManager);
 		expect(
 				chatManager.createChat(isA(String.class),
-						isA(SmackMessageListenerAdapter.class)))
+						isA(MessageListenerAdapter.class)))
 				.andReturn(chat);
 		chat.sendMessage(MESSAGE);
 		expectLastCall();
@@ -95,7 +95,7 @@ public class DefaultXMPPEndPointTestCase
 		expect(connection.getChatManager()).andReturn(chatManager);
 		expect(
 				chatManager.createChat(isA(String.class),
-						isA(SmackMessageListenerAdapter.class)))
+						isA(MessageListenerAdapter.class)))
 				.andReturn(chat);
 		chat.sendMessage(MESSAGE);
 		expectLastCall().andThrow(

Modified: incubator/nuvem/trunk/nuvem-standalone-xmpp/src/test/java/org/apache/nuvem/xmpp/client/XMPPEndPointIntegrationTest.java
URL: http://svn.apache.org/viewvc/incubator/nuvem/trunk/nuvem-standalone-xmpp/src/test/java/org/apache/nuvem/xmpp/client/XMPPEndPointIntegrationTest.java?rev=1098849&r1=1098848&r2=1098849&view=diff
==============================================================================
--- incubator/nuvem/trunk/nuvem-standalone-xmpp/src/test/java/org/apache/nuvem/xmpp/client/XMPPEndPointIntegrationTest.java (original)
+++ incubator/nuvem/trunk/nuvem-standalone-xmpp/src/test/java/org/apache/nuvem/xmpp/client/XMPPEndPointIntegrationTest.java Mon May  2 23:13:22 2011
@@ -22,10 +22,10 @@ package org.apache.nuvem.xmpp.client;
 import junit.framework.Assert;
 
 import org.apache.nuvem.cloud.xmpp.api.JID;
-import org.apache.nuvem.cloud.xmpp.api.Message;
-import org.apache.nuvem.cloud.xmpp.api.MessageListener;
 import org.apache.nuvem.cloud.xmpp.api.XMPPEndPoint;
 import org.apache.nuvem.cloud.xmpp.api.XMPPServer;
+import org.apache.nuvem.cloud.xmpp.api.message.Message;
+import org.apache.nuvem.cloud.xmpp.api.message.MessageListener;
 import org.apache.nuvem.xmpp.server.DefaultXMPPServer;
 import org.apache.tuscany.sca.node.Node;
 import org.apache.tuscany.sca.node.NodeFactory;