From fb21732c38217f81887684e0cd42a9ebf44ba2c5 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Mon, 6 Mar 2017 15:58:24 +0100 Subject: [PATCH] Add getRLSUri JNI --- coreapi/linphonecore_jni.cc | 7 ++++ .../org/linphone/core/LinphoneFriendList.java | 29 ++++++------- .../linphone/core/LinphoneFriendListImpl.java | 42 +++++++++++-------- 3 files changed, 47 insertions(+), 31 deletions(-) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index b461095b1..2e458282f 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -3868,6 +3868,13 @@ extern "C" void Java_org_linphone_core_LinphoneFriendListImpl_setRLSUri(JNIEnv* if (jrlsUri) ReleaseStringUTFChars(env, jrlsUri, uri); } +extern "C" jstring Java_org_linphone_core_LinphoneFriendListImpl_getRLSUri(JNIEnv* env + ,jobject thiz + ,jlong ptr) { + const char *uri = linphone_friend_list_get_rls_uri((LinphoneFriendList*)ptr); + return uri ? env->NewStringUTF(uri) : NULL; +} + extern "C" void Java_org_linphone_core_LinphoneFriendListImpl_setRLSAddress(JNIEnv* env ,jobject thiz ,jlong ptr diff --git a/java/common/org/linphone/core/LinphoneFriendList.java b/java/common/org/linphone/core/LinphoneFriendList.java index ef4ba579a..5f549e6cb 100644 --- a/java/common/org/linphone/core/LinphoneFriendList.java +++ b/java/common/org/linphone/core/LinphoneFriendList.java @@ -26,6 +26,7 @@ import org.linphone.core.LinphoneAddress; public interface LinphoneFriendList { public void setRLSAddress(LinphoneAddress addr); public void setRLSUri(String uri); + public String getRLSUri(); public void addFriend(LinphoneFriend friend); public void addLocalFriend(LinphoneFriend friend); public LinphoneFriend[] getFriendList(); @@ -40,51 +41,51 @@ public interface LinphoneFriendList { * @return the number of friend imported **/ public int importFriendsFromVCardFile(String file); - + /** * Imports LinphoneFriends from a vCard 4 buffer * @return the number of friend imported **/ public int importFriendsFromVCardBuffer(String buffer); - + /** * Exports LinphoneFriends to a vCard 4 file **/ public void exportFriendsToVCardFile(String file); - + long getNativePtr(); - + /** * Set the callbacks associated with the LinphoneFriendList. */ void setListener(LinphoneFriendList.LinphoneFriendListListener listener); - + interface LinphoneFriendListListener { void onLinphoneFriendCreated(LinphoneFriendList list, LinphoneFriend lf); - + void onLinphoneFriendUpdated(LinphoneFriendList list, LinphoneFriend newFriend, LinphoneFriend oldFriend); - + void onLinphoneFriendDeleted(LinphoneFriendList list, LinphoneFriend lf); - + void onLinphoneFriendSyncStatusChanged(LinphoneFriendList list, LinphoneFriendList.State status, String message); } public static class State { static private Vector values = new Vector(); public final int value() { return mValue; } - + private final int mValue; private final String mStringValue; - + public final static State SyncStarted = new State(0, "SyncStarted"); public final static State SyncSuccessful = new State(1, "SyncSuccessful"); public final static State SyncFailure = new State(2, "SyncFailure"); - + private State(int value,String stringValue) { mValue = value; values.addElement(this); mStringValue = stringValue; } - + public static State fromInt(int value) { for (int i = 0; i < values.size(); i++) { @@ -93,11 +94,11 @@ public interface LinphoneFriendList { } throw new RuntimeException("state not found [" + value + "]"); } - + public String toString() { return mStringValue; } - + public int toInt() { return mValue; } diff --git a/java/impl/org/linphone/core/LinphoneFriendListImpl.java b/java/impl/org/linphone/core/LinphoneFriendListImpl.java index 42172b607..68b2d7ff2 100644 --- a/java/impl/org/linphone/core/LinphoneFriendListImpl.java +++ b/java/impl/org/linphone/core/LinphoneFriendListImpl.java @@ -21,12 +21,13 @@ package org.linphone.core; import java.io.Serializable; class LinphoneFriendListImpl implements LinphoneFriendList, Serializable { - + protected final long nativePtr; private native void finalize(long nativePtr); private native long newLinphoneFriendList(long corePtr); private native void setRLSAddress(long nativePtr, long addrPtr); private native void setRLSUri(long nativePtr, String uri); + private native String getRLSUri(long nativePtr); private native void addFriend(long nativePtr, long friendPtr); private native void addLocalFriend(long nativePtr, long friendPtr); private native LinphoneFriend[] getFriendList(long nativePtr); @@ -53,49 +54,56 @@ class LinphoneFriendListImpl implements LinphoneFriendList, Serializable { setRLSUri(nativePtr, uri); } } - + @Override - public void addFriend(LinphoneFriend friend) { + public String getRLSUri() { + synchronized(getSyncObject()){ + return getRLSUri(nativePtr); + } + } + + @Override + public void addFriend(LinphoneFriend friend) { synchronized(getSyncObject()){ addFriend(nativePtr, friend.getNativePtr()); } } - + @Override - public void addLocalFriend(LinphoneFriend friend) { + public void addLocalFriend(LinphoneFriend friend) { synchronized(getSyncObject()){ addLocalFriend(nativePtr, friend.getNativePtr()); } } - + @Override public LinphoneFriend[] getFriendList() { synchronized(getSyncObject()){ return getFriendList(nativePtr); } } - + @Override public void updateSubscriptions() { synchronized(getSyncObject()){ updateSubscriptions(nativePtr); } } - + @Override public void enableSubscriptions(boolean enable) { synchronized(getSyncObject()) { enableSubscriptions(nativePtr, enable); } } - + @Override public LinphoneFriend findFriendByUri(String uri) { synchronized(getSyncObject()){ return findFriendByUri(nativePtr,uri); } } - + private native void setUri(long nativePtr, String uri); @Override public void setUri(String uri) { @@ -103,7 +111,7 @@ class LinphoneFriendListImpl implements LinphoneFriendList, Serializable { setUri(nativePtr, uri); } } - + private native void synchronizeFriendsFromServer(long nativePtr); @Override public void synchronizeFriendsFromServer() { @@ -111,30 +119,30 @@ class LinphoneFriendListImpl implements LinphoneFriendList, Serializable { synchronizeFriendsFromServer(nativePtr); } } - + private native int importFriendsFromVCardFile(long nativePtr, String file); @Override public int importFriendsFromVCardFile(String file) { return importFriendsFromVCardFile(nativePtr, file); } - + private native int importFriendsFromVCardBuffer(long nativePtr, String buffer); @Override public int importFriendsFromVCardBuffer(String buffer) { return importFriendsFromVCardBuffer(nativePtr, buffer); } - + private native void exportFriendsToVCardFile(long nativePtr, String file); @Override public void exportFriendsToVCardFile(String file) { exportFriendsToVCardFile(nativePtr, file); } - + @Override public void setListener(LinphoneFriendListListener listener) { setListener(nativePtr, listener); } - + /*reserved for JNI */ protected LinphoneFriendListImpl(long aNativePtr) { @@ -154,6 +162,6 @@ class LinphoneFriendListImpl implements LinphoneFriendList, Serializable { } private Object getSyncObject(){ return this; - } + } }