fix some synchronisation problem with the server
authorDa Risk <darisk972@gmail.com>
Tue, 07 Apr 2009 01:18:19 +0200
changeset 76 144e837ee4a6
parent 75 b2500e2392f7
child 77 0f474a0c4e93
child 80 29f0d6a23321
fix some synchronisation problem with the server
src/com/beem/project/beem/BeemApplication.java
src/com/beem/project/beem/service/XmppConnectionAdapter.java
src/com/beem/project/beem/ui/ContactList.java
--- a/src/com/beem/project/beem/BeemApplication.java	Mon Apr 06 21:52:03 2009 +0200
+++ b/src/com/beem/project/beem/BeemApplication.java	Tue Apr 07 01:18:19 2009 +0200
@@ -68,12 +68,6 @@
 		// TODO Auto-generated catch block
 		e.printStackTrace();
 	    }
-	    synchronized (mQueue) {
-		for (Message msg : mQueue) {
-		    msg.sendToTarget();
-		}
-		mQueue.clear();
-	    }
 	}
     };
 
@@ -81,7 +75,7 @@
      * Constructor.
      */
     public BeemApplication() {
-	// TODO Auto-generated constructor stub
+	mIsConnected = false;
     }
 
     /**
@@ -135,13 +129,13 @@
     }
 
     /**
-     * Add a methode to execute when the application is connected to the Beem service.
+     * Add a methode to execute when the application is connected to the server.
      * @param target the handler which will execute the callback
      * @param callback the callback to execute
      */
-    public void callWhenServiceConnected(Handler target, Runnable callback) {
+    public void callWhenConnectedToServer(Handler target, Runnable callback) {
 	Message msg = Message.obtain(target, callback);
-	if (!mIsConnected) {
+	if (mIsConnected) {
 	    msg.sendToTarget();
 	} else {
 	    startBeemService();
@@ -198,6 +192,12 @@
 	    // TODO Auto-generated method stub
 	    mProgressDialog.dismiss();
 	    mFacade.changeStatus();
+	    synchronized (mQueue) {
+		for (Message msg : mQueue) {
+		    msg.sendToTarget();
+		}
+		mQueue.clear();
+	    }
 	}
 
 	/**
--- a/src/com/beem/project/beem/service/XmppConnectionAdapter.java	Mon Apr 06 21:52:03 2009 +0200
+++ b/src/com/beem/project/beem/service/XmppConnectionAdapter.java	Tue Apr 07 01:18:19 2009 +0200
@@ -73,20 +73,20 @@
      */
     @Override
     public boolean connectSync() throws RemoteException {
-	try {
-	    mAdaptee.connect();
-	    mAdaptee.addConnectionListener(mConListener);
-	    mAdaptee.login(mLogin, mPassword, "BEEM");
-	    mChatManager = new BeemChatManager(mAdaptee.getChatManager());
-	    // 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) {
-	    mLastException = new BeemException(e);
-	}
-	return false;
+	    try {
+		mAdaptee.connect();
+		mAdaptee.addConnectionListener(mConListener);
+		mAdaptee.login(mLogin, mPassword, "BEEM");
+		mChatManager = new BeemChatManager(mAdaptee.getChatManager());
+		// 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) {
+		mLastException = new BeemException(e);
+	    }
+	    return false;
     }
 
     /**
@@ -106,10 +106,10 @@
     public IRoster getRoster() throws RemoteException {
 	if (mRoster != null)
 	    return mRoster;
-	Roster adap = mAdaptee.getRoster();
-	if (adap == null)
-	    return null;
-	mRoster = new RosterAdapter(adap);
+	    Roster adap = mAdaptee.getRoster();
+	    if (adap == null)
+		return null;
+	    mRoster = new RosterAdapter(adap);
 	return mRoster;
     }
 
@@ -213,6 +213,7 @@
 	 */
 	@Override
 	public void connectionClosed() {
+	    mRoster = null;
 	    final int n = mRemoteConnListeners.beginBroadcast();
 
 	    for (int i = 0; i < n; i++) {
@@ -233,6 +234,7 @@
 	 */
 	@Override
 	public void connectionClosedOnError(Exception arg0) {
+	    mRoster = null;
 	    final int n = mRemoteConnListeners.beginBroadcast();
 
 	    for (int i = 0; i < n; i++) {
--- a/src/com/beem/project/beem/ui/ContactList.java	Mon Apr 06 21:52:03 2009 +0200
+++ b/src/com/beem/project/beem/ui/ContactList.java	Tue Apr 07 01:18:19 2009 +0200
@@ -88,7 +88,7 @@
     protected void onStart() {
 	super.onStart();
 	Log.i(TAG, "onStart");
-	//mBeemApplication.startBeemService();
+	mBeemApplication.startBeemService();
     }
 
     @Override
@@ -98,12 +98,8 @@
 	 * @TODO: A ameliorer apres listener de nikita
 	 */
 	Log.i(TAG, "onResume");
-	if (!mBeemApplication.isConnected())
-	    mBeemApplication.startBeemService();
-	else {
-	    callbackShowContactList();
-	}
-	mBeemApplication.callWhenServiceConnected(mHandler, new Runnable() {
+	mBeemApplication.startBeemService();
+	mBeemApplication.callWhenConnectedToServer(mHandler, new Runnable() {
 	    @Override
 	    public void run() {
 		callbackShowContactList();