diff -r 773449708c84 -r 4ad59aaee882 javaextensions/centralrepository/src/javacentralrepositoryjni.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javaextensions/centralrepository/src/javacentralrepositoryjni.cpp Fri Sep 17 08:28:21 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 // 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(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(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(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(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(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(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(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(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)); + } +} + +