We can now get the contact list of the user.
Need to complete the Contact class and try to get some information on the
mobile contact directory.
--- a/checkstyle.xml Mon Mar 23 16:54:42 2009 +0100
+++ b/checkstyle.xml Thu Mar 26 18:01:21 2009 +0100
@@ -189,7 +189,9 @@
<!-- Checks for class design -->
<!-- See http://checkstyle.sf.net/config_design.html -->
- <module name="DesignForExtension"/>
+ <!--
+ <module name="DesignForExtension"/>
+ -->
<module name="FinalClass"/>
<module name="HideUtilityClassConstructor"/>
<module name="InterfaceIsType"/>
--- a/src/com/beem/project/beem/BeemService.java Mon Mar 23 16:54:42 2009 +0100
+++ b/src/com/beem/project/beem/BeemService.java Thu Mar 26 18:01:21 2009 +0100
@@ -25,11 +25,14 @@
import android.widget.Toast;
import com.beem.project.beem.service.XMPPConnectionAdapter;
+import com.beem.project.beem.service.XMPPFacade;
+import com.beem.project.beem.service.aidl.IRoster;
import com.beem.project.beem.service.aidl.IXMPPConnection;
import com.beem.project.beem.service.aidl.IXMPPFacade;
/**
+ * This class is for the Beem service.
* @author darisk
- *
+ *
*/
public class BeemService extends Service {
@@ -41,30 +44,7 @@
private String mPassword;
private String mHost;
- private IXMPPFacade.Stub bind = new IXMPPFacade.Stub() {
-
- @Override
- public IXMPPConnection getXMPPConnection() throws RemoteException {
- return connection;
- }
-
- @Override
- public void disconnect() throws RemoteException {
- connection.disconnect();
- }
-
-
- @Override
- public void connectAsync() throws RemoteException {
- connection.connectAsync(mLogin, mPassword, "BEEM");
- }
-
-
- @Override
- public void connectSync() throws RemoteException {
- connection.connectSync(mLogin, mPassword, "BEEM");
- }
- };
+ private IXMPPFacade.Stub mBind;
/*
* (non-Javadoc)
@@ -74,7 +54,7 @@
@Override
public IBinder onBind(Intent intent) {
showBasicNotification(R.string.BeemServiceCreated);
- return bind;
+ return mBind;
// to forbid a client to bind
// return null;
}
@@ -89,9 +69,10 @@
getString(R.string.PreferencePasswordKey), "");
mHost = settings.getString(getString(R.string.PreferenceHostKey), "");
notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
- connection = new XMPPConnectionAdapter("10.0.2.2"); // address
+ connection = new XMPPConnectionAdapter("10.0.2.2", mLogin, mPassword); // address
+ mBind = new XMPPFacade((XMPPConnectionAdapter) connection);
}
-
+
private void showBasicNotification(int stringResource) {
String text = (String) getText(stringResource);
Notification notif = new Notification(R.drawable.logo, text, System
@@ -108,7 +89,7 @@
@Override
public void onStart(Intent intent, int startId) {
try {
- connection.connectSync(mLogin, mPassword, "BEEM");
+ connection.connectSync();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/service/Contact.java Thu Mar 26 18:01:21 2009 +0100
@@ -0,0 +1,93 @@
+/**
+ *
+ */
+package com.beem.project.beem.service;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * This class contains informations on a jabber contact.
+ * @author darisk
+ */
+public class Contact implements Parcelable {
+
+ /**
+ * Parcelable.Creator needs by Android.
+ */
+ public static final Parcelable.Creator<Contact> CREATOR = new Parcelable.Creator<Contact>() {
+
+ @Override
+ public Contact createFromParcel(Parcel source) {
+ return new Contact(source);
+ }
+
+ @Override
+ public Contact[] newArray(int size) {
+ return new Contact[size];
+ }
+ };
+
+ private String mJID;
+ private int mID;
+ private int mStatus;
+ private String mMsgState;
+
+ /**
+ * Constructor.
+ */
+ public Contact() {
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * Constructor.
+ * @param jid JID of the contact
+ */
+ public Contact(final String jid) {
+ mJID = jid;
+ }
+
+ /**
+ * Construct a contact from a parcel.
+ * @param in parcel to use for construction
+ */
+ private Contact(final Parcel in) {
+
+ }
+
+ /**
+ * Get the Jabber ID of the contact.
+ * @return the Jabber ID
+ */
+ public String getJID() {
+ return mJID;
+ }
+
+ /**
+ * Set the Jabber ID of the contact.
+ * @param mjid the jabber ID to set
+ */
+ public void setJID(String mjid) {
+ mJID = mjid;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public int describeContents() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ // TODO Auto-generated method stub
+ }
+
+
+}
--- a/src/com/beem/project/beem/service/RosterAdapter.java Mon Mar 23 16:54:42 2009 +0100
+++ b/src/com/beem/project/beem/service/RosterAdapter.java Thu Mar 26 18:01:21 2009 +0100
@@ -4,8 +4,9 @@
package com.beem.project.beem.service;
import java.util.ArrayList;
-import java.util.Collection;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.jivesoftware.smack.Roster;
import org.jivesoftware.smack.RosterEntry;
@@ -13,49 +14,76 @@
import android.os.RemoteException;
-import com.beem.project.beem.service.aidl.IRosterEntry;
-import com.beem.project.beem.service.aidl.IRoster.Stub;
-
/**
+ * This class implement a Roster adapter for BEEM.
* @author darisk
- *
*/
public class RosterAdapter extends com.beem.project.beem.service.aidl.IRoster.Stub {
- private Roster adaptee;
-
- public RosterAdapter(Roster roster) {
- adaptee = roster;
- }
-
- @Override
- public IRosterEntry createEntry(String user, String name, String[] groups)
- throws RemoteException {
- try {
- adaptee.createEntry(user, name, groups);
- } catch (XMPPException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
+ private Roster mAdaptee;
+ private Map<String, Contact> mContacts = new HashMap<String, Contact>();
+
+ /**
+ * Constructor.
+ * @param roster the roster to adapt
+ */
+ public RosterAdapter(final Roster roster) {
+ mAdaptee = roster;
+ for (RosterEntry entry : roster.getEntries()) {
+ String user = entry.getUser();
+ mContacts.put(user, new Contact(user));
}
- return null;
}
+ /**
+ * {@inheritDoc}
+ */
@Override
public void createGroup(String groupname) throws RemoteException {
// TODO Auto-generated method stub
- adaptee.createGroup(groupname);
+ mAdaptee.createGroup(groupname);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Contact addContact(String user, String name, String[] groups) throws RemoteException {
+ try {
+ mAdaptee.createEntry(user, name, groups);
+ Contact res = new Contact(user);
+ mContacts.put(user, res);
+ return res;
+ } catch (XMPPException e) {
+ return null;
+ }
}
+ /**
+ * {@inheritDoc}
+ */
@Override
- public List getEntries() throws RemoteException {
+ public void deleteContact(Contact contact) throws RemoteException {
// TODO Auto-generated method stub
- Collection<RosterEntry> col = adaptee.getEntries();
- ArrayList<IRosterEntry> result = new ArrayList<IRosterEntry>(col.size());
- for (RosterEntry rosterEntry : col ) {
- result.add(new RosterEntryAdapter(rosterEntry));
- }
- return result;
+
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Contact getContact(String jid) throws RemoteException {
+ return mContacts.get(jid);
}
-
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public List<Contact> getContactList() throws RemoteException {
+ List<Contact> res = new ArrayList<Contact>();
+ res.addAll(mContacts.values());
+ return res;
+ }
}
--- a/src/com/beem/project/beem/service/XMPPConnectionAdapter.java Mon Mar 23 16:54:42 2009 +0100
+++ b/src/com/beem/project/beem/service/XMPPConnectionAdapter.java Thu Mar 26 18:01:21 2009 +0100
@@ -1,10 +1,11 @@
/**
- *
+ *
*/
package com.beem.project.beem.service;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.ConnectionListener;
+import org.jivesoftware.smack.Roster;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smackx.ServiceDiscoveryManager;
@@ -12,6 +13,7 @@
import android.os.RemoteCallbackList;
import android.os.RemoteException;
+import android.util.Log;
import com.beem.project.beem.BeemException;
import com.beem.project.beem.service.aidl.IBeemConnectionListener;
@@ -19,147 +21,223 @@
import com.beem.project.beem.service.aidl.IXMPPConnection;
/**
+ * This class implements an adapter for XMPPConnection.
* @author darisk
- *
*/
public class XMPPConnectionAdapter extends IXMPPConnection.Stub {
- private XMPPConnection adaptee;
- private BeemException lastException;
+ private static final String TAG = "XMPPConnectionAdapter";
+ private XMPPConnection mAdaptee;
+ private BeemException mLastException;
+ private String mLogin;
+ private String mPassword;
+ private RosterAdapter mRoster;
- private RemoteCallbackList<IBeemConnectionListener> mRemoteConnListeners = new RemoteCallbackList<IBeemConnectionListener>();
+ private RemoteCallbackList<IBeemConnectionListener> mRemoteConnListeners =
+ new RemoteCallbackList<IBeemConnectionListener>();
private ConnexionListenerAdapter mConListener = new ConnexionListenerAdapter();
-
- public XMPPConnectionAdapter(XMPPConnection con) {
- adaptee = con;
-
+
+ /**
+ * Constructor.
+ * @param con The connection to adapt
+ * @param login The login to use
+ * @param password The password to use
+ */
+ public XMPPConnectionAdapter(final XMPPConnection con, final String login, final String password) {
+ mAdaptee = con;
+ mLogin = login;
+ mPassword = password;
}
- public XMPPConnectionAdapter(String serviceName) {
- this(new XMPPConnection(serviceName));
- }
-
- public XMPPConnectionAdapter(ConnectionConfiguration config) {
- this(new XMPPConnection(config));
+ /**
+ * Constructor.
+ * @param serviceName name of the service to connect to
+ * @param login login to use on connect
+ * @param password password to use on connect
+ */
+ public XMPPConnectionAdapter(final String serviceName, final String login, final String password) {
+ this(new XMPPConnection(serviceName), login, password);
}
+ /**
+ * Constructor.
+ * @param config Configuration to use in order to connect
+ * @param login login to use on connect
+ * @param password password to use on connect
+ */
+ public XMPPConnectionAdapter(final ConnectionConfiguration config, final String login, final String password) {
+ this(new XMPPConnection(config), login, password);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
@Override
- public boolean connectSync(String username, String password, String resource)
- throws RemoteException {
- try {
- adaptee.connect();
- this.initFeatures(); // pour declarer les features xmpp qu'on supporte
- adaptee.addConnectionListener(mConListener);
- adaptee.login(username, password, resource);
- lastException = null;
+ public boolean connectSync() throws RemoteException {
+ try {
+ mAdaptee.connect();
+ mAdaptee.addConnectionListener(mConListener);
+ mAdaptee.login(mLogin, mPassword, "BEEM");
+ // TODO find why this cause a null pointer exception
+ // this.initFeatures(); // pour declarer les features xmpp qu'on supporte
+ mLastException = null;
triggerAsynchronousConnectEvent();
return true;
} catch (XMPPException e) {
- lastException = new BeemException(e);
+ mLastException = new BeemException(e);
}
return false;
}
- public boolean disconnect() {
- adaptee.disconnect();
- lastException = null;
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean disconnect() {
+ mAdaptee.disconnect();
+ mLastException = null;
return true;
}
+ /**
+ * {@inheritDoc}
+ */
@Override
public IRoster getRoster() throws RemoteException {
- return new RosterAdapter(adaptee.getRoster());
+ if (mRoster != null)
+ return mRoster;
+ Roster adap = mAdaptee.getRoster();
+ if (adap == null)
+ return null;
+ mRoster = new RosterAdapter(adap);
+ return mRoster;
}
+ /**
+ * {@inheritDoc}
+ */
@Override
- public void connectAsync(final String username, final String password, final String resource)
- throws RemoteException {
+ public final void connectAsync() throws RemoteException {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
try {
- connectSync(username,password,resource);
+ connectSync();
} catch (RemoteException e) {
-
+ Log.e(TAG, "Error while connecting", e);
}
}
});
t.start();
}
+ /**
+ * {@inheritDoc}
+ */
@Override
- public void addConnectionListener(IBeemConnectionListener listen)
- throws RemoteException {
+ public void addConnectionListener(IBeemConnectionListener listen) throws RemoteException {
if (listen != null)
mRemoteConnListeners.register(listen);
}
+ /**
+ * {@inheritDoc}
+ */
@Override
- public void removeConnectionListener(IBeemConnectionListener listen)
- throws RemoteException {
+ public void removeConnectionListener(IBeemConnectionListener listen) throws RemoteException {
if (listen != null)
mRemoteConnListeners.unregister(listen);
}
+ /**
+ * Trigger Connection event.
+ */
private void triggerAsynchronousConnectEvent() {
mConListener.onConnect();
}
-
+
+ /**
+ * Listener for XMPP connection events.
+ * It will calls the remote listeners for connexion events.
+ * @author darisk
+ */
private class ConnexionListenerAdapter implements ConnectionListener {
+ /**
+ * Defaut constructor.
+ */
+ public ConnexionListenerAdapter() {
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * Method to execute when a connection event occurs.
+ */
public void onConnect() {
- final int N = mRemoteConnListeners.beginBroadcast();
+ final int n = mRemoteConnListeners.beginBroadcast();
- for (int i = 0; i < N; i++) {
+ for (int i = 0; i < n; i++) {
IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
try {
listener.onConnect();
} catch (RemoteException e) {
// The RemoteCallbackList will take care of removing the
// dead listeners.
+ Log.w(TAG, "Error while triggering remote connection listeners", e);
}
}
mRemoteConnListeners.finishBroadcast();
}
-
+
+ /**
+ * {@inheritDoc}
+ */
@Override
public void connectionClosed() {
- final int N = mRemoteConnListeners.beginBroadcast();
+ final int n = mRemoteConnListeners.beginBroadcast();
- for (int i = 0; i < N; i++) {
+ for (int i = 0; i < n; i++) {
IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
try {
listener.connectionClosed();
} catch (RemoteException e) {
// The RemoteCallbackList will take care of removing the
// dead listeners.
+ Log.w(TAG, "Error while triggering remote connection listeners", e);
}
}
mRemoteConnListeners.finishBroadcast();
}
+ /**
+ * {@inheritDoc}
+ */
@Override
public void connectionClosedOnError(Exception arg0) {
- final int N = mRemoteConnListeners.beginBroadcast();
+ final int n = mRemoteConnListeners.beginBroadcast();
- for (int i = 0; i < N; i++) {
+ for (int i = 0; i < n; i++) {
IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
try {
listener.connectionClosedOnError();
} catch (RemoteException e) {
// The RemoteCallbackList will take care of removing the
// dead listeners.
+ Log.w(TAG, "Error while triggering remote connection listeners", e);
}
}
mRemoteConnListeners.finishBroadcast();
}
+ /**
+ * {@inheritDoc}
+ */
@Override
public void reconnectingIn(int arg0) {
- final int N = mRemoteConnListeners.beginBroadcast();
+ final int n = mRemoteConnListeners.beginBroadcast();
- for (int i = 0; i < N; i++) {
+ for (int i = 0; i < n; i++) {
IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
try {
listener.reconnectingIn(arg0);
@@ -171,93 +249,75 @@
mRemoteConnListeners.finishBroadcast();
}
+ /**
+ * {@inheritDoc}
+ */
@Override
public void reconnectionFailed(Exception arg0) {
- final int N = mRemoteConnListeners.beginBroadcast();
+ final int r = mRemoteConnListeners.beginBroadcast();
- for (int i = 0; i < N; i++) {
+ for (int i = 0; i < r; i++) {
IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
try {
listener.reconnectionFailed();
} catch (RemoteException e) {
// The RemoteCallbackList will take care of removing the
// dead listeners.
+ Log.w(TAG, "Error while triggering remote connection listeners", e);
}
}
mRemoteConnListeners.finishBroadcast();
}
+ /**
+ * {@inheritDoc}
+ */
@Override
public void reconnectionSuccessful() {
- final int N = mRemoteConnListeners.beginBroadcast();
+ final int n = mRemoteConnListeners.beginBroadcast();
- for (int i = 0; i < N; i++) {
+ for (int i = 0; i < n; i++) {
IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
try {
listener.reconnectionSuccessful();
} catch (RemoteException e) {
// The RemoteCallbackList will take care of removing the
// dead listeners.
+ Log.w(TAG, "Error while triggering remote connection listeners", e);
}
}
mRemoteConnListeners.finishBroadcast();
}
-
+
}
- /**
- * @brief: enregistre les featues dispo dans notre version
- Liste de features que Telepathy supporte:
- "http://www.google.com/xmpp/protocol/session"
- "http://www.google.com/transport/p2p"
- "http://jabber.org/protocol/jingle"
- "http://jabber.org/protocol/chatstates"
- "http://jabber.org/protocol/nick"
- "http://jabber.org/protocol/nick+notify"
- "http://jabber.org/protocol/si"
- "ttp://jabber.org/protocol/ibb"
- "ttp://telepathy.freedesktop.org/xmpp/tubes"
- "http://www.google.com/xmpp/protocol/voice/v1"
- "http://jabber.org/protocol/jingle/description/audio"
- "http://jabber.org/protocol/jingle/description/video"
- Liste de features que pidgin `supporte' (on notera la cradence de l'annonce):
- "jabber:iq:last"
- "jabber:iq:oob"
- "jabber:iq:time"
- "jabber:iq:version"
- "jabber:x:conference"
- "urn:xmpp:attention:0"
- "urn:xmpp:bob"
- "urn:xmpp:ping"
- "xmpp:urn:time"
- "http://jabber.org/protocol/bytestreams"
- "http://jabber.org/protocol/disco#info"
- "http://jabber.org/protocol/disco#items"
- "http://jabber.org/protocol/ibb"
- "http://jabber.org/protocol/muc"
- "http://jabber.org/protocol/muc#user"
- "http://jabber.org/protocol/si"
- "http://jabber.org/protocol/si/profile/file-transfer"
- "http://jabber.org/protocol/xhtml-im"
- "http://www.xmpp.org/extensions/xep-0199.html#ns"
- "http://jabber.org/protocol/mood"
- "http://jabber.org/protocol/mood+notify"
- "http://jabber.org/protocol/nick"
- "http://jabber.org/protocol/nick+notify"
- "http://jabber.org/protocol/tune"
- "http://jabber.org/protocol/tune+notify"
- "http://www.xmpp.org/extensions/xep-0084.html#ns-metadata"
- "http://www.xmpp.org/extensions/xep-0084.html#ns-data"
- "http://www.xmpp.org/extensions/xep-0084.html#ns-metadata+notify"
- "http://www.xmpp.org/extensions/xep-0167.html#ns" << Jingle RTP Sessions
- */
- private void initFeatures() {
- JingleManager.setJingleServiceEnabled();
- ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(adaptee);
- sdm.addFeature("http://jabber.org/protocol/disco#info");
- //sdm.addFeature("http://jabber.org/protocol/nick");
+ /**
+ * enregistre les features dispo dans notre version Liste de features que Telepathy supporte.
+ * "http://www.google.com/xmpp/protocol/session" "http://www.google.com/transport/p2p"
+ * "http://jabber.org/protocol/jingle" "http://jabber.org/protocol/chatstates" "http://jabber.org/protocol/nick"
+ * "http://jabber.org/protocol/nick+notify" "http://jabber.org/protocol/si" "ttp://jabber.org/protocol/ibb"
+ * "ttp://telepathy.freedesktop.org/xmpp/tubes" "http://www.google.com/xmpp/protocol/voice/v1"
+ * "http://jabber.org/protocol/jingle/description/audio" "http://jabber.org/protocol/jingle/description/video" Liste
+ * de features que pidgin `supporte' (on notera la cradence de l'annonce): "jabber:iq:last" "jabber:iq:oob"
+ * "jabber:iq:time" "jabber:iq:version" "jabber:x:conference" "urn:xmpp:attention:0" "urn:xmpp:bob" "urn:xmpp:ping"
+ * "xmpp:urn:time" "http://jabber.org/protocol/bytestreams" "http://jabber.org/protocol/disco#info"
+ * "http://jabber.org/protocol/disco#items" "http://jabber.org/protocol/ibb" "http://jabber.org/protocol/muc"
+ * "http://jabber.org/protocol/muc#user" "http://jabber.org/protocol/si"
+ * "http://jabber.org/protocol/si/profile/file-transfer" "http://jabber.org/protocol/xhtml-im"
+ * "http://www.xmpp.org/extensions/xep-0199.html#ns" "http://jabber.org/protocol/mood"
+ * "http://jabber.org/protocol/mood+notify" "http://jabber.org/protocol/nick"
+ * "http://jabber.org/protocol/nick+notify" "http://jabber.org/protocol/tune"
+ * "http://jabber.org/protocol/tune+notify" "http://www.xmpp.org/extensions/xep-0084.html#ns-metadata"
+ * "http://www.xmpp.org/extensions/xep-0084.html#ns-data"
+ * "http://www.xmpp.org/extensions/xep-0084.html#ns-metadata+notify"
+ * "http://www.xmpp.org/extensions/xep-0167.html#ns" << Jingle RTP Sessions
+ */
+ private void initFeatures() {
+ JingleManager.setJingleServiceEnabled();
+ ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(mAdaptee);
+ sdm.addFeature("http://jabber.org/protocol/disco#info");
+ // sdm.addFeature("http://jabber.org/protocol/nick");
- }
-
+ }
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/service/XMPPFacade.java Thu Mar 26 18:01:21 2009 +0100
@@ -0,0 +1,55 @@
+/**
+ *
+ */
+package com.beem.project.beem.service;
+import android.os.RemoteException;
+
+import com.beem.project.beem.service.aidl.IRoster;
+import com.beem.project.beem.service.aidl.IXMPPConnection;
+import com.beem.project.beem.service.aidl.IXMPPFacade;
+/**
+ * @author darisk
+ *
+ */
+public class XMPPFacade extends IXMPPFacade.Stub {
+
+ private XMPPConnectionAdapter mConnexion;
+
+ /**
+ * Constructor for XMPPFacade.
+ * @param connection the connection use by the facade
+ */
+ public XMPPFacade(XMPPConnectionAdapter connection) {
+ this.mConnexion = connection;
+ }
+
+ @Override
+ public void connectAsync() throws RemoteException {
+ // TODO Auto-generated method stub
+ mConnexion.connectAsync();
+ }
+
+ @Override
+ public void connectSync() throws RemoteException {
+ // TODO Auto-generated method stub
+ mConnexion.connectSync();
+ }
+
+ @Override
+ public IXMPPConnection createConnection() throws RemoteException {
+ // TODO Auto-generated method stub
+ return mConnexion;
+ }
+
+ @Override
+ public void disconnect() throws RemoteException {
+ // TODO Auto-generated method stub
+ mConnexion.disconnect();
+ }
+
+ @Override
+ public IRoster getRoster() throws RemoteException {
+ return mConnexion.getRoster();
+ }
+
+}
--- a/src/com/beem/project/beem/service/aidl/IRoster.aidl Mon Mar 23 16:54:42 2009 +0100
+++ b/src/com/beem/project/beem/service/aidl/IRoster.aidl Thu Mar 26 18:01:21 2009 +0100
@@ -4,11 +4,14 @@
interface IRoster {
- IRosterEntry createEntry(in String user, in String name, in String[] groups);
+ Contact addContact(in String user, in String name, in String[] groups);
+ void deleteContact(in Contact contact);
+
+ Contact getContact(in String jid);
+
void createGroup(in String groupname);
- // List<IRosterEntry>
- List getEntries();
+ List<Contact> getContactList();
}
\ No newline at end of file
--- a/src/com/beem/project/beem/service/aidl/IXMPPConnection.aidl Mon Mar 23 16:54:42 2009 +0100
+++ b/src/com/beem/project/beem/service/aidl/IXMPPConnection.aidl Thu Mar 26 18:01:21 2009 +0100
@@ -5,14 +5,12 @@
interface IXMPPConnection {
- boolean connectSync(in String username, in String password, in String resource);
+ boolean connectSync();
- void connectAsync(in String username, in String password, in String resource);
+ void connectAsync();
boolean disconnect();
- // void login(String username, String password, String resource);
-
IRoster getRoster();
void addConnectionListener(in IBeemConnectionListener listen);
--- a/src/com/beem/project/beem/service/aidl/IXMPPFacade.aidl Mon Mar 23 16:54:42 2009 +0100
+++ b/src/com/beem/project/beem/service/aidl/IXMPPFacade.aidl Thu Mar 26 18:01:21 2009 +0100
@@ -1,10 +1,13 @@
package com.beem.project.beem.service.aidl;
import com.beem.project.beem.service.aidl.IXMPPConnection;
+import com.beem.project.beem.service.aidl.IRoster;
interface IXMPPFacade {
- IXMPPConnection getXMPPConnection();
+ IXMPPConnection createConnection();
+
+ IRoster getRoster();
void connectSync();
--- a/src/com/beem/project/beem/ui/Beem.java Mon Mar 23 16:54:42 2009 +0100
+++ b/src/com/beem/project/beem/ui/Beem.java Thu Mar 26 18:01:21 2009 +0100
@@ -29,7 +29,7 @@
*/
public Beem() {
super();
- mHandler= new Handler();
+ mHandler = new Handler();
}
/**
@@ -105,5 +105,4 @@
mButton.setText(jid);
}
-
}
--- a/src/com/beem/project/beem/ui/ContactList.java Mon Mar 23 16:54:42 2009 +0100
+++ b/src/com/beem/project/beem/ui/ContactList.java Thu Mar 26 18:01:21 2009 +0100
@@ -18,12 +18,16 @@
import com.beem.project.beem.BeemService;
import com.beem.project.beem.R;
+import com.beem.project.beem.service.Contact;
import com.beem.project.beem.service.aidl.IBeemConnectionListener;
+import com.beem.project.beem.service.aidl.IRoster;
import com.beem.project.beem.service.aidl.IXMPPConnection;
import com.beem.project.beem.service.aidl.IXMPPFacade;
public class ContactList extends ExpandableListActivity {
+ private static final String TAG = "CONTACTLIST_ACT";
+
private IXMPPFacade mService = null;
@Override
@@ -65,7 +69,7 @@
public void onServiceConnected(ComponentName name, IBinder service) {
mService = IXMPPFacade.Stub.asInterface(service);
try {
- IXMPPConnection con = mService.getXMPPConnection();
+ IXMPPConnection con = mService.createConnection();
con.addConnectionListener(new TestConnectionListener());
mService.connectSync();
Log.i("BEEM", "Connected !!!");
@@ -108,6 +112,10 @@
@Override
public void onConnect() throws RemoteException {
// TODO Auto-generated method stub
+ IRoster roster = mService.getRoster();
+ for (Contact contact : roster.getContactList()) {
+ Log.v(TAG,"Contact name " + contact.getJID() );
+ }
showContactList();
}