javaextensions/centralrepository/src/javacentralrepositoryjni.cpp
branchRCL_3
changeset 77 7cee158cb8cd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javaextensions/centralrepository/src/javacentralrepositoryjni.cpp	Wed Sep 15 12:05:25 2010 +0300
@@ -0,0 +1,277 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <centralrepository.h>      // KMaxUnicodeStringLength
+
+#include "com_nokia_mj_impl_cenrep_CentralRepositoryImpl.h"
+#include "cjavacentralrepository.h"
+#include "centrepfunctionserver.h"
+#include "javajniutils.h"
+#include "jstringutils.h"
+#include "s60commonutils.h"
+#include "logger.h"
+#include "fs_methodcall.h"
+
+using namespace java::util;
+/*
+ * Class:     com_nokia_mj_impl_cenrep_CentralRepositoryImpl
+ * Method:    _createFunctionSource
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_cenrep_CentralRepositoryImpl__1createFunctionSource
+(JNIEnv *aJni, jobject /*aPeer*/)
+{
+    JELOG2(EJavaCentrep);
+    java::centrep::CentrepFunctionServer* mFunctionServer;
+    mFunctionServer = new java::centrep::CentrepFunctionServer();
+    TInt handle = reinterpret_cast<jint>(mFunctionServer);
+    if (handle < KErrNone)
+    {
+        JniUtils::throwNewException(aJni, "com/nokia/mid/cenrep/CentralRepositoryException" ,
+                                    JavaCommonUtils::intToString(handle));
+    }
+    return handle;
+}
+
+/**
+ * CreateCentralRepositoryL
+ */
+void CreateCentralRepositoryL(CJavaCentralRepository*& aCenRep,
+                              TUid aRepositoryId)
+{
+    CJavaCentralRepository* cenrep =
+        CJavaCentralRepository::NewL(aRepositoryId);
+    aCenRep = cenrep;
+}
+
+/*
+ * Class:     com_nokia_mj_impl_cenrep_CentralRepositoryImpl
+ * Method:    _createNativePeer
+ * Signature: (II)I
+ */
+JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_cenrep_CentralRepositoryImpl__1createNativePeer
+(JNIEnv *aJni, jobject, jint aFunctionSourceHandle, jint aRepositoryId)
+{
+    java::centrep::CentrepFunctionServer* mFunctionServer =
+        reinterpret_cast< java::centrep::CentrepFunctionServer*>(aFunctionSourceHandle);
+
+    CJavaCentralRepository* cenrep = NULL;
+
+    TUid uid = TUid::Uid(aRepositoryId);
+    TRAPD(err,CallMethodL(CreateCentralRepositoryL, cenrep, uid, mFunctionServer));
+
+    if (err != KErrNone)
+    {
+        JniUtils::throwNewException(aJni, "com/nokia/mid/cenrep/CentralRepositoryException" ,
+                                    JavaCommonUtils::intToString(err));
+    }
+    return reinterpret_cast<jint>(cenrep);
+}
+
+/**
+ * Close
+ */
+void CloseCentralRepository(CJavaCentralRepository* aCenRep)
+{
+    aCenRep->Close();
+}
+
+/*
+ * Class:     com_nokia_mj_impl_cenrep_CentralRepositoryImpl
+ * Method:    _close
+ * Signature: (II)I
+ */
+JNIEXPORT void JNICALL Java_com_nokia_mj_impl_cenrep_CentralRepositoryImpl__1close
+(JNIEnv *, jobject, jint aFunctionSourceHandle, jint aCenrepHandle)
+{
+    java::centrep::CentrepFunctionServer* mFunctionServer =
+        reinterpret_cast< java::centrep::CentrepFunctionServer*>(
+            aFunctionSourceHandle);
+
+    CJavaCentralRepository* cenrep =
+        reinterpret_cast<CJavaCentralRepository *>(aCenrepHandle);
+
+    CallMethod(CloseCentralRepository, cenrep, mFunctionServer);
+}
+
+/**
+ * Dispose
+ */
+void Dispose(CJavaCentralRepository* aCenRep)
+{
+    delete aCenRep;
+    aCenRep = NULL;
+}
+
+/*
+ * Class:     com_nokia_mj_impl_cenrep_CentralRepositoryImpl
+ * Method:    _dispose
+ * Signature: (II)V
+ */
+JNIEXPORT void JNICALL Java_com_nokia_mj_impl_cenrep_CentralRepositoryImpl__1dispose
+(JNIEnv *, jobject, jint aFunctionSourceHandle, jint aCenrepHandle)
+{
+    java::centrep::CentrepFunctionServer* mFunctionServer =
+        reinterpret_cast< java::centrep::CentrepFunctionServer*>(
+            aFunctionSourceHandle);
+
+    CJavaCentralRepository* cenrep =
+        reinterpret_cast<CJavaCentralRepository *>(aCenrepHandle);
+
+    CallMethod(Dispose, cenrep, mFunctionServer);
+    delete mFunctionServer;
+}
+
+/*
+ * Class:     com_nokia_mj_impl_cenrep_CentralRepositoryImpl
+ * Method:    _getString
+ * Signature: (IIJLcom/nokia/mj/impl/cenrep/CentralRepositoryImpl$StringValue;)I
+ */
+JNIEXPORT jstring JNICALL Java_com_nokia_mj_impl_cenrep_CentralRepositoryImpl__1getString
+(JNIEnv * aJni, jobject, jint aFunctionSourceHandle, jint aCenrepHandle,
+ jlong aKey)
+{
+    java::centrep::CentrepFunctionServer* mFunctionServer =
+        reinterpret_cast< java::centrep::CentrepFunctionServer*>(
+            aFunctionSourceHandle);
+
+    CJavaCentralRepository* cenrep =
+        reinterpret_cast<CJavaCentralRepository *>(aCenrepHandle);
+
+    HBufC* buf = NULL;
+
+    TUint32 key = (TUint32)aKey;
+    TRAPD(err, CallMethodL(buf, cenrep, &CJavaCentralRepository::GetStringL, key, mFunctionServer));
+
+    jstring val = NULL;
+    if (err == KErrNone && buf)
+    {
+        val = java::util::S60CommonUtils::NativeToJavaString(*aJni, *buf);
+    }
+    else
+    {
+        JniUtils::throwNewException(aJni, "com/nokia/mid/cenrep/CentralRepositoryException" ,
+                                    JavaCommonUtils::intToString(err));
+    }
+
+    delete buf;
+    return val;
+}
+
+
+/*
+ * Class:     com_nokia_mj_impl_cenrep_CentralRepositoryImpl
+ * Method:    _getInt
+ * Signature: (IIJLcom/nokia/mj/impl/cenrep/CentralRepositoryImpl$IntValue;)I
+ */
+JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_cenrep_CentralRepositoryImpl__1getInt
+(JNIEnv * aJni, jobject, jint aFunctionSourceHandle, jint aCenrepHandle,
+ jlong aKey)
+{
+    java::centrep::CentrepFunctionServer* mFunctionServer =
+        reinterpret_cast< java::centrep::CentrepFunctionServer*>(
+            aFunctionSourceHandle);
+
+    CJavaCentralRepository* cenrep =
+        reinterpret_cast<CJavaCentralRepository *>(aCenrepHandle);
+
+    TInt val = 0;
+    TUint32 key = (TUint32)aKey;
+
+    TRAPD(err, CallMethodL(val, cenrep, &CJavaCentralRepository::GetIntL, key, mFunctionServer));
+
+    if (err != KErrNone)
+    {
+        JniUtils::throwNewException(aJni, "com/nokia/mid/cenrep/CentralRepositoryException" ,
+                                    JavaCommonUtils::intToString(err));
+    }
+    return val;
+}
+
+/**
+ * SetStringL
+ */
+void SetStringL(CJavaCentralRepository* aCenRep, TUint32 aKey, TDesC* aValue)
+{
+    aCenRep->SetL(aKey, *aValue);
+}
+
+/*
+ * Class:     com_nokia_mj_impl_cenrep_CentralRepositoryImpl
+ * Method:    _setString
+ * Signature: (IIJLjava/lang/String;)I
+ */
+JNIEXPORT void JNICALL Java_com_nokia_mj_impl_cenrep_CentralRepositoryImpl__1setString
+(JNIEnv *aJni, jobject, jint aFunctionSourceHandle, jint aCenrepHandle,
+ jlong aKey, jstring aValue)
+{
+    java::centrep::CentrepFunctionServer* mFunctionServer =
+        reinterpret_cast< java::centrep::CentrepFunctionServer*>(
+            aFunctionSourceHandle);
+
+    CJavaCentralRepository* cenrep =
+        reinterpret_cast<CJavaCentralRepository *>(aCenrepHandle);
+
+    JStringUtils string(*aJni, aValue);
+    TUint32 key = (TUint32)aKey;
+
+    TDesC* tstring = (TDesC*) &string;
+    TRAPD(err, CallMethodL(SetStringL, cenrep, key, tstring, mFunctionServer));
+
+    if (err != KErrNone)
+    {
+        JniUtils::throwNewException(aJni, "com/nokia/mid/cenrep/CentralRepositoryException" ,
+                                    JavaCommonUtils::intToString(err));
+    }
+}
+
+/**
+ * SetIntL
+ */
+void SetIntL(CJavaCentralRepository* aCenRep, TUint32 aKey, TInt aValue)
+{
+    aCenRep->SetL(aKey, aValue);
+}
+
+/*
+ * Class:     com_nokia_mj_impl_cenrep_CentralRepositoryImpl
+ * Method:    _setInt
+ * Signature: (IIJI)I
+ */
+JNIEXPORT void JNICALL Java_com_nokia_mj_impl_cenrep_CentralRepositoryImpl__1setInt
+(JNIEnv *aJni, jobject, jint aFunctionSourceHandle, jint aCenrepHandle,
+ jlong aKey, jint aValue)
+{
+    java::centrep::CentrepFunctionServer* mFunctionServer =
+        reinterpret_cast< java::centrep::CentrepFunctionServer*>(
+            aFunctionSourceHandle);
+
+    CJavaCentralRepository* cenrep =
+        reinterpret_cast<CJavaCentralRepository *>(aCenrepHandle);
+
+    TUint32 key = (TUint32)aKey;
+    TInt value = (TInt)aValue;
+
+    TRAPD(err, CallMethodL(SetIntL, cenrep, key, value, mFunctionServer));
+    if (err != KErrNone)
+    {
+        JniUtils::throwNewException(aJni, "com/nokia/mid/cenrep/CentralRepositoryException" ,
+                                    JavaCommonUtils::intToString(err));
+    }
+}
+
+