From c461dd3f1e2cc41b28d437d335f742250e3efc17 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Wed, 22 May 2013 16:04:59 +0200 Subject: [PATCH] update linphone factory to handle LinphoneAddress parsing error --- src/org/linphone/ChatListFragment.java | 10 +++++++++- src/org/linphone/HistoryDetailFragment.java | 10 +++++++++- src/org/linphone/InCallActivity.java | 8 +++++++- src/org/linphone/LinphoneActivity.java | 16 ++++++++++++++-- src/org/linphone/LinphoneService.java | 8 +++++++- src/org/linphone/LinphoneUtils.java | 8 +++++++- submodules/linphone | 2 +- tests/.classpath | 6 +----- .../linphone/test/AudioAndVideoCodecsTest.java | 2 +- tests/src/org/linphone/test/SignalingTest.java | 2 +- 10 files changed, 57 insertions(+), 15 deletions(-) diff --git a/src/org/linphone/ChatListFragment.java b/src/org/linphone/ChatListFragment.java index 4f0a4a224..7a31c9182 100644 --- a/src/org/linphone/ChatListFragment.java +++ b/src/org/linphone/ChatListFragment.java @@ -20,7 +20,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. import java.util.List; import org.linphone.core.LinphoneAddress; +import org.linphone.core.LinphoneCoreException; import org.linphone.core.LinphoneCoreFactory; +import org.linphone.mediastream.Log; import android.os.Bundle; import android.os.Handler; @@ -234,7 +236,13 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte view.setTag(contact); int unreadMessagesCount = LinphoneActivity.instance().getChatStorage().getUnreadMessageCount(contact); - LinphoneAddress address = LinphoneCoreFactory.instance().createLinphoneAddress(contact); + LinphoneAddress address; + try { + address = LinphoneCoreFactory.instance().createLinphoneAddress(contact); + } catch (LinphoneCoreException e) { + Log.e("Chat view cannot parse address",e); + return view; + } LinphoneUtils.findUriPictureOfContactAndSetDisplayName(address, view.getContext().getContentResolver()); List messages = LinphoneActivity.instance().getChatMessages(contact); diff --git a/src/org/linphone/HistoryDetailFragment.java b/src/org/linphone/HistoryDetailFragment.java index 429426ebf..921b89f9d 100644 --- a/src/org/linphone/HistoryDetailFragment.java +++ b/src/org/linphone/HistoryDetailFragment.java @@ -21,7 +21,9 @@ import java.text.SimpleDateFormat; import java.util.Calendar; import org.linphone.core.LinphoneAddress; +import org.linphone.core.LinphoneCoreException; import org.linphone.core.LinphoneCoreFactory; +import org.linphone.mediastream.Log; import org.linphone.ui.AvatarWithShadow; import android.annotation.SuppressLint; @@ -104,7 +106,13 @@ public class HistoryDetailFragment extends Fragment implements OnClickListener { time.setText(callTime == null ? "" : callTime); date.setText(timestampToHumanDate(callDate)); - LinphoneAddress lAddress = LinphoneCoreFactory.instance().createLinphoneAddress(sipUri); + LinphoneAddress lAddress; + try { + lAddress = LinphoneCoreFactory.instance().createLinphoneAddress(sipUri); + } catch (LinphoneCoreException e) { + Log.e("History details error",e); + return; + } LinphoneUtils.findUriPictureOfContactAndSetDisplayName(lAddress, view.getContext().getContentResolver()); String displayName = lAddress.getDisplayName(); if (displayName != null) { diff --git a/src/org/linphone/InCallActivity.java b/src/org/linphone/InCallActivity.java index 975cd5f50..2e23a38f9 100644 --- a/src/org/linphone/InCallActivity.java +++ b/src/org/linphone/InCallActivity.java @@ -1270,7 +1270,13 @@ public class InCallActivity extends FragmentActivity implements private void displayCall(Resources resources, LinphoneCall call, int index) { String sipUri = call.getRemoteAddress().asStringUriOnly(); - LinphoneAddress lAddress = LinphoneCoreFactory.instance().createLinphoneAddress(sipUri); + LinphoneAddress lAddress; + try { + lAddress = LinphoneCoreFactory.instance().createLinphoneAddress(sipUri); + } catch (LinphoneCoreException e) { + Log.e("Incall activity cannot parse remote address",e); + lAddress= LinphoneCoreFactory.instance().createLinphoneAddress("uknown","unknown","unkonown"); + } // Control Row LinearLayout callView = (LinearLayout) inflater.inflate(R.layout.active_call_control_row, container, false); diff --git a/src/org/linphone/LinphoneActivity.java b/src/org/linphone/LinphoneActivity.java index 0f0f23927..d38498726 100644 --- a/src/org/linphone/LinphoneActivity.java +++ b/src/org/linphone/LinphoneActivity.java @@ -430,7 +430,13 @@ public class LinphoneActivity extends FragmentActivity implements } public void displayHistoryDetail(String sipUri, LinphoneCallLog log) { - LinphoneAddress lAddress = LinphoneCoreFactory.instance().createLinphoneAddress(sipUri); + LinphoneAddress lAddress; + try { + lAddress = LinphoneCoreFactory.instance().createLinphoneAddress(sipUri); + } catch (LinphoneCoreException e) { + Log.e("Cannot display history details",e); + return; + } Uri uri = LinphoneUtils.findUriPictureOfContactAndSetDisplayName(lAddress, getContentResolver()); String displayName = lAddress.getDisplayName(); @@ -517,7 +523,13 @@ public class LinphoneActivity extends FragmentActivity implements return; } - LinphoneAddress lAddress = LinphoneCoreFactory.instance().createLinphoneAddress(sipUri); + LinphoneAddress lAddress; + try { + lAddress = LinphoneCoreFactory.instance().createLinphoneAddress(sipUri); + } catch (LinphoneCoreException e) { + Log.e("Cannot display chat",e); + return; + } Uri uri = LinphoneUtils.findUriPictureOfContactAndSetDisplayName(lAddress, getContentResolver()); String displayName = lAddress.getDisplayName(); String pictureUri = uri == null ? null : uri.toString(); diff --git a/src/org/linphone/LinphoneService.java b/src/org/linphone/LinphoneService.java index d7e62fdb1..dac5682b5 100644 --- a/src/org/linphone/LinphoneService.java +++ b/src/org/linphone/LinphoneService.java @@ -323,7 +323,13 @@ public final class LinphoneService extends Service implements LinphoneServiceLis mMsgNotifCount++; } - Uri pictureUri = LinphoneUtils.findUriPictureOfContactAndSetDisplayName(LinphoneCoreFactoryImpl.instance().createLinphoneAddress(fromSipUri), getContentResolver()); + Uri pictureUri; + try { + pictureUri = LinphoneUtils.findUriPictureOfContactAndSetDisplayName(LinphoneCoreFactoryImpl.instance().createLinphoneAddress(fromSipUri), getContentResolver()); + } catch (LinphoneCoreException e1) { + Log.e("Cannot parse from address",e1); + pictureUri=null; + } Bitmap bm = null; try { bm = MediaStore.Images.Media.getBitmap(getContentResolver(), pictureUri); diff --git a/src/org/linphone/LinphoneUtils.java b/src/org/linphone/LinphoneUtils.java index 97af9bda3..187aa4524 100644 --- a/src/org/linphone/LinphoneUtils.java +++ b/src/org/linphone/LinphoneUtils.java @@ -34,6 +34,7 @@ import org.linphone.core.LinphoneAddress; import org.linphone.core.LinphoneCall; import org.linphone.core.LinphoneCall.State; import org.linphone.core.LinphoneCore; +import org.linphone.core.LinphoneCoreException; import org.linphone.core.LinphoneCoreFactory; import org.linphone.mediastream.Log; import org.linphone.mediastream.Version; @@ -71,7 +72,12 @@ public final class LinphoneUtils { //private static final String strictSipAddressRegExp = "^sip:(\\+)?[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\\.-][a-z0-9]+)*)+\\.[a-z]{2,}$"; public static boolean isSipAddress(String numberOrAddress) { - return LinphoneCoreFactory.instance().createLinphoneAddress(numberOrAddress) != null; + try { + LinphoneCoreFactory.instance().createLinphoneAddress(numberOrAddress); + return true; + } catch (LinphoneCoreException e) { + return false; + } } public static boolean isStrictSipAddress(String numberOrAddress) { diff --git a/submodules/linphone b/submodules/linphone index 249c4d986..da87ffc3e 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 249c4d986954243e03a4c3e7044a772aca27090c +Subproject commit da87ffc3e63942ee29ac00da674afdc216e19774 diff --git a/tests/.classpath b/tests/.classpath index a11770fd6..a64829987 100644 --- a/tests/.classpath +++ b/tests/.classpath @@ -4,11 +4,7 @@ - - - - - + diff --git a/tests/src/org/linphone/test/AudioAndVideoCodecsTest.java b/tests/src/org/linphone/test/AudioAndVideoCodecsTest.java index ea6b87e7f..8fb836886 100644 --- a/tests/src/org/linphone/test/AudioAndVideoCodecsTest.java +++ b/tests/src/org/linphone/test/AudioAndVideoCodecsTest.java @@ -17,7 +17,7 @@ import android.widget.ListView; import com.jayway.android.robotium.solo.Solo; public class AudioAndVideoCodecsTest extends ActivityInstrumentationTestCase2 { - private static final String sipAdressToCall = "cotcot@sip.linphone.org"; + private static final String sipAdressToCall = "macmini@sip.linphone.org"; private Solo solo; @SuppressWarnings("deprecation") diff --git a/tests/src/org/linphone/test/SignalingTest.java b/tests/src/org/linphone/test/SignalingTest.java index 83e962ab1..143811b9a 100644 --- a/tests/src/org/linphone/test/SignalingTest.java +++ b/tests/src/org/linphone/test/SignalingTest.java @@ -14,7 +14,7 @@ import android.widget.ListView; import com.jayway.android.robotium.solo.Solo; public class SignalingTest extends ActivityInstrumentationTestCase2 { - private static final String sipAdressToCall = "cotcot@sip.linphone.org"; + private static final String sipAdressToCall = "macmini@sip.linphone.org"; private Solo solo; @SuppressWarnings("deprecation")