diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc
index 4c595cd0e50ee9a7f6f117895ce8924b9db26c65..390c56232e78c38e0d975f715325cc33de983fd3 100644
--- a/coreapi/linphonecore_jni.cc
+++ b/coreapi/linphonecore_jni.cc
@@ -352,16 +352,38 @@ extern "C" void Java_org_linphone_core_LinphoneProxyConfigImpl_setIdentity(JNIEn
 	linphone_proxy_config_set_identity((LinphoneProxyConfig*)proxyCfg,identity);
 	env->ReleaseStringUTFChars(jidentity, identity);
 }
+extern "C" jstring Java_org_linphone_core_LinphoneProxyConfigImpl_getIdentity(JNIEnv* env,jobject thiz,jlong proxyCfg) {
+	const char* identity = linphone_proxy_config_get_identity((LinphoneProxyConfig*)proxyCfg);
+	if (identity) {
+		return env->NewStringUTF(identity);
+	} else {
+		return NULL;
+	}
+}
 extern "C" int Java_org_linphone_core_LinphoneProxyConfigImpl_setProxy(JNIEnv* env,jobject thiz,jlong proxyCfg,jstring jproxy) {
 	const char* proxy = env->GetStringUTFChars(jproxy, NULL);
 	int err=linphone_proxy_config_set_server_addr((LinphoneProxyConfig*)proxyCfg,proxy);
 	env->ReleaseStringUTFChars(jproxy, proxy);
 	return err;
 }
+extern "C" jstring Java_org_linphone_core_LinphoneProxyConfigImpl_getProxy(JNIEnv* env,jobject thiz,jlong proxyCfg) {
+	const char* proxy = linphone_proxy_config_get_addr((LinphoneProxyConfig*)proxyCfg);
+	if (proxy) {
+		return env->NewStringUTF(proxy);
+	} else {
+		return NULL;
+	}
+}
 
 extern "C" void Java_org_linphone_core_LinphoneProxyConfigImpl_enableRegister(JNIEnv* env,jobject thiz,jlong proxyCfg,jboolean enableRegister) {
 	linphone_proxy_config_enable_register((LinphoneProxyConfig*)proxyCfg,enableRegister);
 }
+extern "C" jboolean Java_org_linphone_core_LinphoneProxyConfigImpl_isRegistered(JNIEnv* env,jobject thiz,jlong proxyCfg) {
+	return linphone_proxy_config_is_registered((LinphoneProxyConfig*)proxyCfg);
+}
+extern "C" jboolean Java_org_linphone_core_LinphoneProxyConfigImpl_isRegisterEnabled(JNIEnv* env,jobject thiz,jlong proxyCfg) {
+	return linphone_proxy_config_register_enabled((LinphoneProxyConfig*)proxyCfg);
+}
 extern "C" void Java_org_linphone_core_LinphoneProxyConfigImpl_edit(JNIEnv* env,jobject thiz,jlong proxyCfg) {
 	linphone_proxy_config_edit((LinphoneProxyConfig*)proxyCfg);
 }
diff --git a/java/common/org/linphone/core/LinphoneCore.java b/java/common/org/linphone/core/LinphoneCore.java
index 2ca76e6432e16a1410f4c373b839ea1a8563b14f..927c9596e2c5a4517510795bc918394abddb139e 100644
--- a/java/common/org/linphone/core/LinphoneCore.java
+++ b/java/common/org/linphone/core/LinphoneCore.java
@@ -28,39 +28,44 @@ public interface LinphoneCore {
 	 * linphone core states
 	 */
 	static public class 	GeneralState {
-		  /* states for GSTATE_GROUP_POWER */
-	static public GeneralState GSTATE_POWER_OFF = new GeneralState(0);        /* initial state */
-	static public GeneralState GSTATE_POWER_STARTUP = new GeneralState(1);
-	static public GeneralState GSTATE_POWER_ON = new GeneralState(2);
-	static public GeneralState GSTATE_POWER_SHUTDOWN = new GeneralState(3);
-		  /* states for GSTATE_GROUP_REG */
-	static public GeneralState GSTATE_REG_NONE = new GeneralState(10);       /* initial state */
-	static public GeneralState GSTATE_REG_OK  = new GeneralState(11);
-	static public GeneralState GSTATE_REG_FAILED = new GeneralState(12);
-		  /* states for GSTATE_GROUP_CALL */
-	static public GeneralState GSTATE_CALL_IDLE = new GeneralState(20);      /* initial state */
-	static public GeneralState GSTATE_CALL_OUT_INVITE = new GeneralState(21);
-	static public GeneralState GSTATE_CALL_OUT_CONNECTED = new GeneralState(22);
-	static public GeneralState GSTATE_CALL_IN_INVITE = new GeneralState(23);
-	static public GeneralState GSTATE_CALL_IN_CONNECTED = new GeneralState(24);
-	static public GeneralState GSTATE_CALL_END = new GeneralState(25);
-	static public GeneralState GSTATE_CALL_ERROR = new GeneralState(26);
-	static public GeneralState GSTATE_INVALID = new GeneralState(27);
-	private final int mValue;
-	static private Vector values = new Vector();
-	
-	private GeneralState(int value) {
-		mValue = value;
-		values.addElement(this);
-	}
-	public static GeneralState fromInt(int value) {
-		
-		for (int i=0; i<values.size();i++) {
-			GeneralState state = (GeneralState) values.elementAt(i);
-			if (state.mValue == value) return state;
+		static private Vector values = new Vector();
+		/* states for GSTATE_GROUP_POWER */
+		static public GeneralState GSTATE_POWER_OFF = new GeneralState(0,"GSTATE_POWER_OFF");        /* initial state */
+		static public GeneralState GSTATE_POWER_STARTUP = new GeneralState(1,"GSTATE_POWER_STARTUP");
+		static public GeneralState GSTATE_POWER_ON = new GeneralState(2,"GSTATE_POWER_ON");
+		static public GeneralState GSTATE_POWER_SHUTDOWN = new GeneralState(3,"GSTATE_POWER_SHUTDOWN");
+		/* states for GSTATE_GROUP_REG */
+		static public GeneralState GSTATE_REG_NONE = new GeneralState(10,"GSTATE_REG_NONE");       /* initial state */
+		static public GeneralState GSTATE_REG_OK  = new GeneralState(11,"GSTATE_REG_OK");
+		static public GeneralState GSTATE_REG_FAILED = new GeneralState(12,"GSTATE_REG_FAILED");
+		/* states for GSTATE_GROUP_CALL */
+		static public GeneralState GSTATE_CALL_IDLE = new GeneralState(20,"GSTATE_CALL_IDLE");      /* initial state */
+		static public GeneralState GSTATE_CALL_OUT_INVITE = new GeneralState(21,"GSTATE_CALL_OUT_INVITE");
+		static public GeneralState GSTATE_CALL_OUT_CONNECTED = new GeneralState(22,"GSTATE_CALL_OUT_CONNECTED");
+		static public GeneralState GSTATE_CALL_IN_INVITE = new GeneralState(23,"GSTATE_CALL_IN_INVITE");
+		static public GeneralState GSTATE_CALL_IN_CONNECTED = new GeneralState(24,"GSTATE_CALL_IN_CONNECTED");
+		static public GeneralState GSTATE_CALL_END = new GeneralState(25,"GSTATE_CALL_END");
+		static public GeneralState GSTATE_CALL_ERROR = new GeneralState(26,"GSTATE_CALL_ERROR");
+		static public GeneralState GSTATE_INVALID = new GeneralState(27,"GSTATE_INVALID");
+		private final int mValue;
+		private final String mStringValue;
+
+		private GeneralState(int value,String stringValue) {
+			mValue = value;
+			values.addElement(this);
+			mStringValue=stringValue;
+		}
+		public static GeneralState fromInt(int value) {
+
+			for (int i=0; i<values.size();i++) {
+				GeneralState state = (GeneralState) values.elementAt(i);
+				if (state.mValue == value) return state;
+			}
+			throw new RuntimeException("state not found ["+value+"]");
+		}
+		public String toString() {
+			return mStringValue;
 		}
-		throw new RuntimeException("sate not found ["+value+"]");
-	}
 	}