javamanager/javainstaller/installer/src.s60/applicationregistrator/sifregistrator.cpp
branchRCL_3
changeset 60 6c158198356e
parent 25 9ac0a0a7da70
child 83 26b2b12093af
--- a/javamanager/javainstaller/installer/src.s60/applicationregistrator/sifregistrator.cpp	Thu Jul 15 18:31:06 2010 +0300
+++ b/javamanager/javainstaller/installer/src.s60/applicationregistrator/sifregistrator.cpp	Thu Aug 19 09:48:13 2010 +0300
@@ -24,6 +24,7 @@
 #include <w32std.h>
 
 #include "com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator.h"
+#include "com_nokia_mj_impl_utils_InstallerErrorMessage.h"
 #include "javacommonutils.h"
 #include "javasymbianoslayer.h" // for CleanupResetAndDestroyPushL
 #include "logger.h"
@@ -31,53 +32,39 @@
 // SCR usage is enabled if this macro has been defined.
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 
-#include <qservicemanager.h>
-#include <qurl.h>
 #include <usif/scr/scr.h>
 #include <usif/scr/screntries.h>
-#ifdef RD_JAVA_USIF_APP_REG
 #include <usif/scr/appreginfo.h>
-#endif // RD_JAVA_USIF_APP_REG
+#include <usif/usiferror.h>
+#include <xqappmgr.h>
 
 // Helper macro for logging a TDesC.
 #define LOG_TDESC_L(compIdParam, logLevelParam, msgParam, tdescParam) \
-    {                                                               \
-        HBufC8* tdescBuf = HBufC8::NewLC(tdescParam.Length() + 1);  \
-        TPtr8 tdescPtr(tdescBuf->Des());                            \
-        tdescPtr.Append(tdescParam);                                \
-        LOG1(compIdParam, logLevelParam, msgParam, tdescPtr.PtrZ());\
-        CleanupStack::PopAndDestroy(tdescBuf);                      \
+    {                                                                 \
+        std::wstring ws((wchar_t*)tdescParam.Ptr(), tdescParam.Length()); \
+        LOG1(compIdParam, logLevelParam, msgParam, ws.c_str());       \
     }
 
 // NAMESPACE DECLARATION
-QTM_USE_NAMESPACE
 using namespace java;
 using namespace Usif;
 
 IMPORT_C HBufC* CreateHBufCFromJavaStringLC(JNIEnv* aEnv, jstring aString);
 
-// Java MIME types.
-_LIT(KMimeTypeAppDescriptor, "text/vnd.sun.j2me.app-descriptor");
-_LIT(KMimeTypeJava, "application/java");
-_LIT(KMimeTypeJavaArchive, "application/java-archive");
-_LIT(KMimeTypeXJavaArchive, "application/x-java-archive");
-
 // Properties registered to SCR.
-_LIT(KMIDletName, "MIDlet-Name");
 _LIT(KUid, "Uid");
 _LIT(KMediaId, "Media-Id");
 _LIT(KMIDletInfoURL, "MIDlet-Info-URL");
 _LIT(KMIDletDescription, "MIDlet-Description");
 _LIT(KDownloadURL, "Download-URL");
+_LIT(KUpdateURL, "Update-URL");
 _LIT(KSettingsPlugin, "SettingsName");
 _LIT(KSettingsPluginValue, "javaapplicationsettingsview");
 
-#ifdef RD_JAVA_USIF_APP_REG
 // Symbian file path separator.
 _LIT(KPathSeperator, "\\");
 // Postfix for the fake application name generated for AppArc.
 _LIT(KAppPostfix, ".fakeapp");
-#endif // RD_JAVA_USIF_APP_REG
 
 /**
  * Internal helper method for checking if specified application
@@ -187,7 +174,6 @@
  * See JNI method __1notifyAppChange.
  * This method makes calls that may leave (the actual registering).
  */
-#ifdef RD_JAVA_USIF_NOTIFY_APP_ARC
 void NotifyAppChangeL(JNIEnv *aEnv, jintArray aAppUids, jint aAppChange)
 {
     RApaLsSession apaSession;
@@ -220,11 +206,6 @@
     CleanupStack::PopAndDestroy(&apaSession);
     LOG(EJavaInstaller, EInfo, "NotifyAppChangeL completed");
 }
-#else
-void NotifyAppChangeL(JNIEnv *, jintArray, jint)
-{
-}
-#endif // RD_JAVA_USIF_NOTIFY_APP_ARC
 
 /*
  * Class:     com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator
@@ -235,12 +216,6 @@
 (JNIEnv *aEnv, jclass, jintArray aAppUids, jint aAppChange)
 {
     TRAPD(err, NotifyAppChangeL(aEnv, aAppUids, aAppChange));
-    if (KErrNone != err)
-    {
-        ELOG1(EJavaInstaller,
-              "notifyAppChange: notifying AppArc failed, error %d",
-              err);
-    }
     return err;
 }
 
@@ -254,86 +229,47 @@
 {
     TInt err = KErrNone;
 
-    QServiceManager serviceManager;
-    QObject* activityManager =
-        serviceManager.loadInterface("com.nokia.qt.activities.ActivityManager");
-    if (!activityManager)
+    CActiveScheduler* newScheduler = 0;
+    if (0 == CActiveScheduler::Current())
     {
-        err = serviceManager.error();
-        ELOG1(EJavaInstaller,
-              "launchAppView: loading ActivityManager failed, error %d", err);
-        return KErrCouldNotConnect;
-    }
-    // URL for launching AppLib.
-    QUrl url(QString("appto://20022F35?activityname=AppLibRecentView"));
-    QMetaObject::invokeMethod(activityManager, "launchActivity",
-                              Q_ARG(QString, url.toString()));
-    err = serviceManager.error();
-    delete activityManager;
-    if (QServiceManager::NoError != err)
-    {
-        ELOG1(EJavaInstaller,
-              "launchAppView: launching AppLib activity failed, error %d",
-              err);
-        return KErrCouldNotConnect;
+        // Create ActiveScheduler as it does not yet exist.
+        newScheduler = new CActiveScheduler;
+        CActiveScheduler::Install(newScheduler);
     }
 
-    // Start AppLib and bring it to foreground.
-    const TUid KAppLibUid = { 0x20022F35 };
-    TRAP(err, StartAppL(KAppLibUid));
-    return err;
-}
-
-/**
- * See JNI method __1registerJavaSoftwareType.
- * This method makes calls that may leave (the actual registering).
- */
-void RegisterJavaSoftwareTypeL(RSoftwareComponentRegistry *aScr, TBool aRegister = ETrue)
-{
-    RPointerArray<HBufC> javaMimeTypes;
-    CleanupResetAndDestroyPushL(javaMimeTypes);
-    javaMimeTypes.AppendL(KMimeTypeAppDescriptor().AllocL());
-    javaMimeTypes.AppendL(KMimeTypeJava().AllocL());
-    javaMimeTypes.AppendL(KMimeTypeJavaArchive().AllocL());
-    javaMimeTypes.AppendL(KMimeTypeXJavaArchive().AllocL());
-    if (aRegister)
-    {
-        TUid javaSifPluginUid = TUid::Uid(0x2002bc70);
-        _LIT_SECURE_ID(KJavaInstallerSid, 0x102033E6);
-        aScr->AddSoftwareTypeL(
-            Usif::KSoftwareTypeJava, javaSifPluginUid,
-            KJavaInstallerSid, KJavaInstallerSid, javaMimeTypes);
-    }
-    else
+    QUrl openRecentView("appto://20022F35?activityname=AppLibRecentView");
+    XQApplicationManager applicationManager;
+    XQAiwRequest *request = applicationManager.create(openRecentView);
+    if (request)
     {
-        aScr->DeleteSoftwareTypeL(Usif::KSoftwareTypeJava, javaMimeTypes);
+        LOG(EJavaInstaller, EInfo, "launchAppView: launching AppLib");
+        bool result = request->send();
+        if (!result)
+        {
+            int error = request->lastError();
+            ELOG1(EJavaInstaller,
+                  "launchAppView: launching AppLib failed, error %d", error);
+            err = KErrGeneral;
+        }
+        else
+        {
+            LOG(EJavaInstaller, EInfo, "launchAppView: launching AppLib succeeded");
+        }
+        delete request;
     }
-    CleanupStack::PopAndDestroy(&javaMimeTypes);
-}
 
-/*
- * Class:     com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator
- * Method:    _registerJavaSoftwareType
- * Signature: (Z)I
- */
-JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1registerJavaSoftwareType
-(JNIEnv *, jclass, jboolean aRegister)
-{
-    RSoftwareComponentRegistry *pScr = NULL;
-    TRAPD(err, pScr = CreateScrL());
-    if (KErrNone != err)
+    if (newScheduler)
     {
-        return err;
+        delete newScheduler;
+        newScheduler = 0;
     }
-    TRAP(err, RegisterJavaSoftwareTypeL(pScr, aRegister));
-    if (KErrNone != err)
+
+    if (KErrNone == err)
     {
-        ELOG1(EJavaInstaller,
-              "registerJavaSoftwareType: registration failed, error %d",
-              err);
+        // Start AppLib and bring it to foreground.
+        const TUid KAppLibUid = { 0x20022F35 };
+        TRAP(err, StartAppL(KAppLibUid));
     }
-    pScr->Close();
-    delete pScr;
     return err;
 }
 
@@ -408,12 +344,6 @@
     TRAPD(err, pScr->RollbackTransactionL());
     pScr->Close();
     delete pScr;
-    if (KErrNone != err)
-    {
-        ELOG1(EJavaInstaller,
-              "rollbackSession: Rolling back transaction failed, error %d",
-              err);
-    }
     return err;
 }
 
@@ -443,9 +373,9 @@
         HBufC *valueBuf = CreateHBufCFromJavaStringLC(aEnv, aValue);
         aScr->SetComponentPropertyL(aComponentId, aName, *valueBuf);
         //LOG_TDESC_L(EJavaInstaller, EInfo,
-        //            "SetComponentPropertyL: name %s", aName);
+        //            "SetComponentPropertyL: name %S", aName);
         //LOG_TDESC_L(EJavaInstaller, EInfo,
-        //            "SetComponentPropertyL: value %s", valueBuf->Des());
+        //            "SetComponentPropertyL: value %S", valueBuf->Des());
         CleanupStack::PopAndDestroy(valueBuf);
     }
 }
@@ -456,23 +386,14 @@
  */
 TComponentId RegisterComponentL(
     JNIEnv *aEnv, RSoftwareComponentRegistry *aScr, jint aUid,
-    jstring aSuiteName, jstring aVendor, jstring aVersion,
-    jstring aName, jstring aGlobalId,
+    jstring aSuiteName, jstring aVendor, jstring aVersion, jstring aGlobalId,
     jobjectArray aComponentFiles, TInt64 aComponentSize,
     TBool aIsRemovable, TBool aIsDrmProtected,
     TBool aIsOriginVerified, TBool aIsUpdate, jint aMediaId,
-    jstring aMidletInfoUrl, jstring aMidletDescription, jstring aDownloadUrl)
+    jstring aMidletInfoUrl, jstring aMidletDescription,
+    jstring aDownloadUrl, jstring aUpdateUrl)
 {
-    HBufC *name = NULL;
-    if (NULL == aName)
-    {
-        // If name is not specified, use suite name.
-        name = CreateHBufCFromJavaStringLC(aEnv, aSuiteName);
-    }
-    else
-    {
-        name = CreateHBufCFromJavaStringLC(aEnv, aName);
-    }
+    HBufC *name = CreateHBufCFromJavaStringLC(aEnv, aSuiteName);
     HBufC *vendor = CreateHBufCFromJavaStringLC(aEnv, aVendor);
     HBufC *version = CreateHBufCFromJavaStringLC(aEnv, aVersion);
     HBufC *globalId = CreateHBufCFromJavaStringLC(aEnv, aGlobalId);
@@ -499,14 +420,10 @@
     aScr->SetComponentPropertyL(componentId, KSettingsPlugin(), KSettingsPluginValue());
     //LOG(EJavaInstaller, EInfo, "RegisterComponentL: Settings plugin property set");
 
-    if (NULL != aName)
-    {
-        // If name is specified, store suite name as property.
-        SetComponentPropertyL(aEnv, aScr, componentId, KMIDletName(), aSuiteName);
-    }
     SetComponentPropertyL(aEnv, aScr, componentId, KMIDletInfoURL(), aMidletInfoUrl);
     SetComponentPropertyL(aEnv, aScr, componentId, KMIDletDescription(), aMidletDescription);
     SetComponentPropertyL(aEnv, aScr, componentId, KDownloadURL(), aDownloadUrl);
+    SetComponentPropertyL(aEnv, aScr, componentId, KUpdateURL(), aUpdateUrl);
 
     CleanupStack::PopAndDestroy(globalId);
     CleanupStack::PopAndDestroy(version);
@@ -532,22 +449,23 @@
  */
 JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1registerComponent
 (JNIEnv *aEnv, jclass, jint aSessionHandle, jint aUid, jstring aSuiteName,
- jstring aVendor, jstring aVersion, jstring aName, jstring aGlobalId,
+ jstring aVendor, jstring aVersion, jstring aGlobalId,
  jobjectArray aComponentFiles, jlong aComponentSize, jboolean aIsRemovable,
  jboolean aIsDrmProtected, jboolean aIsOriginVerified, jboolean aIsUpdate,
  jint aMediaId, jstring aMidletInfoUrl, jstring aMidletDescription,
- jstring aDownloadUrl, jobject aComponentId)
+ jstring aDownloadUrl, jstring aUpdateUrl, jobject aComponentId)
 {
-    //__UHEAP_MARK;
+    __UHEAP_MARK;
     RSoftwareComponentRegistry *pScr =
         reinterpret_cast<RSoftwareComponentRegistry*>(aSessionHandle<<2);
     TComponentId componentId = -1;
     TRAPD(err, componentId = RegisterComponentL(
-                                 aEnv, pScr, aUid, aSuiteName, aVendor, aVersion, aName, aGlobalId,
+                                 aEnv, pScr, aUid, aSuiteName, aVendor, aVersion, aGlobalId,
                                  aComponentFiles, aComponentSize, aIsRemovable,
                                  aIsDrmProtected, aIsOriginVerified, aIsUpdate, aMediaId,
-                                 aMidletInfoUrl, aMidletDescription, aDownloadUrl));
-    //__UHEAP_MARKEND;
+                                 aMidletInfoUrl, aMidletDescription,
+                                 aDownloadUrl, aUpdateUrl));
+    __UHEAP_MARKEND;
     if (KErrNone == err)
     {
         jclass clazz = aEnv->GetObjectClass(aComponentId);
@@ -565,18 +483,16 @@
 JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1unregisterComponent
 (JNIEnv *, jclass, jint aSessionHandle, jint aComponentId)
 {
-    //__UHEAP_MARK;
+    __UHEAP_MARK;
     RSoftwareComponentRegistry *pScr =
         reinterpret_cast<RSoftwareComponentRegistry*>(aSessionHandle<<2);
     TInt err = KErrNone;
-#ifdef RD_JAVA_USIF_APP_REG
     TRAP(err, pScr->DeleteApplicationEntriesL(aComponentId));
-#endif // RD_JAVA_USIF_APP_REG
     if (KErrNone == err)
     {
         TRAP(err, pScr->DeleteComponentL(aComponentId));
     }
-    //__UHEAP_MARKEND;
+    __UHEAP_MARKEND;
     return err;
 }
 
@@ -584,7 +500,6 @@
  * See JNI method __1registerApplication.
  * This method makes calls that may leave.
  */
-#ifdef RD_JAVA_USIF_APP_REG
 void RegisterApplicationL(
     JNIEnv *aEnv, RSoftwareComponentRegistry *aScr,
     jint aComponentId, jint aAppUid,
@@ -652,47 +567,36 @@
     RPointerArray<HBufC> captionsArray;
     CleanupResetAndDestroyPushL(captionsArray);
     TInt langCount = aEnv->GetArrayLength(aLanguages);
-    TInt captionCount = aEnv->GetArrayLength(aAppNames);
-    if (langCount == captionCount)
+    jint* languages = aEnv->GetIntArrayElements(aLanguages, NULL);
+    for (TInt i = 0; i < langCount; i++)
     {
-        jint* languages = aEnv->GetIntArrayElements(aLanguages, NULL);
-        for (TInt i = 0; i < langCount; i++)
-        {
-            TLanguage tmpLanguage = (TLanguage)languages[i];
-            HBufC *tmpCaption =
-                CreateHBufCFromJavaStringLC(
-                    aEnv, (jstring)aEnv->GetObjectArrayElement(aAppNames, i));
-            captionsArray.AppendL(tmpCaption);
-            CleanupStack::Pop(tmpCaption);
-            //LOG1(EJavaInstaller, EInfo,
-            //     "RegisterApplicationL: language %d", tmpLanguage);
-            //LOG_TDESC_L(EJavaInstaller, EInfo,
-            //            "RegisterApplicationL: caption %s", tmpCaption->Des());
-            CCaptionAndIconInfo *tmpCaptionAndIconInfo =
-                CCaptionAndIconInfo::NewLC(
-                    /*aCaption=*/ *tmpCaption,
-                    /*aIconFileName=*/ KNullDesC,
-                    /*aNumOfAppIcons=*/ 0);
-            CLocalizableAppInfo *tmpLocAppInfo =
-                CLocalizableAppInfo::NewLC(
-                    /*aShortCaption=*/ KNullDesC,
-                    /*aApplicationLanguage=*/ tmpLanguage,
-                    /*aGroupName=*/ KNullDesC,
-                    /*aCaptionAndIconInfo=*/ tmpCaptionAndIconInfo,
-                    /*aViewDataList=*/ viewDataList);
-            localizableAppInfoList.AppendL(tmpLocAppInfo);
-            CleanupStack::Pop(tmpLocAppInfo);
-            CleanupStack::Pop(tmpCaptionAndIconInfo);
-        }
-        aEnv->ReleaseIntArrayElements(aLanguages, languages, 0);
+        TLanguage tmpLanguage = (TLanguage)languages[i];
+        HBufC *tmpCaption =
+            CreateHBufCFromJavaStringLC(
+                aEnv, (jstring)aEnv->GetObjectArrayElement(aAppNames, i));
+        captionsArray.AppendL(tmpCaption);
+        CleanupStack::Pop(tmpCaption);
+        //LOG1(EJavaInstaller, EInfo,
+        //     "RegisterApplicationL: language %d", tmpLanguage);
+        //LOG_TDESC_L(EJavaInstaller, EInfo,
+        //            "RegisterApplicationL: caption %S", tmpCaption->Des());
+        CCaptionAndIconInfo *tmpCaptionAndIconInfo =
+            CCaptionAndIconInfo::NewLC(
+                /*aCaption=*/ *tmpCaption,
+                /*aIconFileName=*/ KNullDesC,
+                /*aNumOfAppIcons=*/ 0);
+        CLocalizableAppInfo *tmpLocAppInfo =
+            CLocalizableAppInfo::NewLC(
+                /*aShortCaption=*/ KNullDesC,
+                /*aApplicationLanguage=*/ tmpLanguage,
+                /*aGroupName=*/ KNullDesC,
+                /*aCaptionAndIconInfo=*/ tmpCaptionAndIconInfo,
+                /*aViewDataList=*/ viewDataList);
+        localizableAppInfoList.AppendL(tmpLocAppInfo);
+        CleanupStack::Pop(tmpLocAppInfo);
+        CleanupStack::Pop(tmpCaptionAndIconInfo);
     }
-    else
-    {
-        WLOG2(EJavaInstaller,
-              "RegisterApplicationL: localisation not made because language " \
-              "count does not match to caption count (%d != %d)",
-              langCount, captionCount);
-    }
+    aEnv->ReleaseIntArrayElements(aLanguages, languages, 0);
 
     // Create application registration data objects.
     TApplicationCharacteristics appCharacteristics;
@@ -728,13 +632,6 @@
     CleanupStack::PopAndDestroy(caption);
     __UHEAP_MARKEND;
 }
-#else
-void RegisterApplicationL(
-    JNIEnv *, RSoftwareComponentRegistry *, jint, jint, jstring,
-    jstring, jstring, jstring, jint, jintArray, jobjectArray)
-{
-}
-#endif // RD_JAVA_USIF_APP_REG
 
 /*
  * Class:     com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator
@@ -764,19 +661,13 @@
     JNIEnv *aEnv, RSoftwareComponentRegistry *aScr, jint aComponentId,
     jstring aName, jstring aVendor, jint aLanguage)
 {
-    if (NULL != aName)
-    {
-        HBufC *name = CreateHBufCFromJavaStringLC(aEnv, aName);
-        aScr->SetComponentNameL(aComponentId, *name, (TLanguage)aLanguage);
-        CleanupStack::PopAndDestroy(name);
-    }
+    HBufC *name = CreateHBufCFromJavaStringLC(aEnv, aName);
+    aScr->SetComponentNameL(aComponentId, *name, (TLanguage)aLanguage);
+    CleanupStack::PopAndDestroy(name);
 
-    if (NULL != aVendor)
-    {
-        HBufC *vendor = CreateHBufCFromJavaStringLC(aEnv, aVendor);
-        aScr->SetVendorNameL(aComponentId, *vendor, (TLanguage)aLanguage);
-        CleanupStack::PopAndDestroy(vendor);
-    }
+    HBufC *vendor = CreateHBufCFromJavaStringLC(aEnv, aVendor);
+    aScr->SetVendorNameL(aComponentId, *vendor, (TLanguage)aLanguage);
+    CleanupStack::PopAndDestroy(vendor);
 }
 
 /*
@@ -881,7 +772,6 @@
  * Method:    _getComponentIdForApp
  * Signature: (IILcom/nokia/mj/impl/installer/applicationregistrator/ComponentId;)I
  */
-#ifdef RD_JAVA_USIF_APP_REG
 JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1getComponentIdForApp
 (JNIEnv *aEnv, jclass, jint aSessionHandle, jint aAppUid, jobject aComponentId)
 {
@@ -901,13 +791,6 @@
     }
     return err;
 }
-#else
-JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1getComponentIdForApp
-(JNIEnv *, jclass, jint, jint, jobject)
-{
-    return KErrNone;
-}
-#endif // RD_JAVA_USIF_APP_REG
 
 /**
  * See JNI method __1getuid.
@@ -920,20 +803,8 @@
     CleanupClosePushL(*pScr);
     TInt uid = 0;
     CPropertyEntry *property = pScr->GetComponentPropertyL(aCid, KUid());
-    if (NULL != property)
-    {
-        if (property->PropertyType() == CPropertyEntry::EIntProperty)
-        {
-            uid = ((CIntPropertyEntry*)property)->IntValue();
-        }
-        else
-        {
-            ELOG2(EJavaInstaller,
-                  "GetUidL: Incorrect property type %d for cid %d",
-                  property->PropertyType(), aCid);
-        }
-        delete property;
-    }
+    uid = ((CIntPropertyEntry*)property)->IntValue();
+    delete property;
     // Close and delete the temporary RSoftwareComponentRegistry.
     CleanupStack::PopAndDestroy(pScr);
     delete pScr; // For some reason PopAndDestroy does not delete this.
@@ -970,23 +841,16 @@
     HBufC *globalId = CreateHBufCFromJavaStringLC(aEnv, aGlobalId);
     CComponentEntry *componentEntry =
         aScr->GetComponentL(*globalId, Usif::KSoftwareTypeJava, aLanguage);
-    if (NULL == componentEntry)
-    {
-        //LOG_TDESC_L(EJavaInstaller, EInfo,
-        //            "Component not found for GlobalId %s", globalId->Des());
-        CleanupStack::PopAndDestroy(globalId);
-        return;
-    }
     CleanupStack::PopAndDestroy(globalId);
 
     // Log component entry.
     TComponentId componentId = componentEntry->ComponentId();
-    LOG_TDESC_L(EJavaInstaller, EInfo, "GlobalId: %s", componentEntry->GlobalId());
+    LOG_TDESC_L(EJavaInstaller, EInfo, "GlobalId: %S", componentEntry->GlobalId());
     LOG1(EJavaInstaller, EInfo, "ComponentId: %d", componentId);
-    LOG_TDESC_L(EJavaInstaller, EInfo, "SoftwareType: %s", componentEntry->SoftwareType());
-    LOG_TDESC_L(EJavaInstaller, EInfo, "Name: %s", componentEntry->Name());
-    LOG_TDESC_L(EJavaInstaller, EInfo, "Vendor: %s", componentEntry->Vendor());
-    LOG_TDESC_L(EJavaInstaller, EInfo, "Version: %s", componentEntry->Version());
+    LOG_TDESC_L(EJavaInstaller, EInfo, "SoftwareType: %S", componentEntry->SoftwareType());
+    LOG_TDESC_L(EJavaInstaller, EInfo, "Name: %S", componentEntry->Name());
+    LOG_TDESC_L(EJavaInstaller, EInfo, "Vendor: %S", componentEntry->Vendor());
+    LOG_TDESC_L(EJavaInstaller, EInfo, "Version: %S", componentEntry->Version());
     LOG1(EJavaInstaller, EInfo, "ComponentSize: %d", componentEntry->ComponentSize());
     LOG1(EJavaInstaller, EInfo, "ScomoState: %d", componentEntry->ScomoState());
     LOG1(EJavaInstaller, EInfo, "IsDrmProtected: %d", componentEntry->IsDrmProtected());
@@ -1014,42 +878,37 @@
         switch (propertyEntry->PropertyType())
         {
         case CPropertyEntry::EBinaryProperty:
-            LOG_TDESC_L(EJavaInstaller, EInfo, "BinaryProperty: %s",
+            LOG_TDESC_L(EJavaInstaller, EInfo, "BinaryProperty: %S",
                         propertyEntry->PropertyName());
             break;
         case CPropertyEntry::EIntProperty:
-            LOG_TDESC_L(EJavaInstaller, EInfo, "IntProperty: %s",
+            LOG_TDESC_L(EJavaInstaller, EInfo, "IntProperty: %S",
                         propertyEntry->PropertyName());
             LOG2(EJavaInstaller, EInfo, "  = 0x%x (%d)",
                  ((CIntPropertyEntry*)propertyEntry)->IntValue(),
                  ((CIntPropertyEntry*)propertyEntry)->IntValue());
             break;
         case CPropertyEntry::ELocalizedProperty:
-            LOG_TDESC_L(EJavaInstaller, EInfo, "LocalizedProperty: %s",
+            LOG_TDESC_L(EJavaInstaller, EInfo, "LocalizedProperty: %S",
                         propertyEntry->PropertyName());
-            LOG_TDESC_L(EJavaInstaller, EInfo, " = %s",
+            LOG_TDESC_L(EJavaInstaller, EInfo, " = %S",
                         ((CLocalizablePropertyEntry*)propertyEntry)->StrValue());
             break;
         }
     }
     CleanupStack::PopAndDestroy(&properties);
 
-#ifdef RD_JAVA_USIF_APP_REG
     // Log uids of applications associated to component.
     RArray<TUid> appUids;
     CleanupClosePushL(appUids);
     aScr->GetAppUidsForComponentL(componentId, appUids);
-    if (appUids.Count() == 0)
-    {
-        LOG(EJavaInstaller, EInfo, "No component appUids found from SCR");
-    }
+    LOG1(EJavaInstaller, EInfo, "Number of AppUids found: %d", appUids.Count());
     for (TInt i = 0; i < appUids.Count(); i++)
     {
         LOG2(EJavaInstaller, EInfo, "AppUid [%x] (%d)",
              appUids[i].iUid, appUids[i].iUid);
     }
     CleanupStack::PopAndDestroy(&appUids);
-#endif // RD_JAVA_USIF_APP_REG
 }
 
 /**
@@ -1085,11 +944,11 @@
 JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1logComponent
 (JNIEnv *aEnv, jclass, jint aSessionHandle, jstring aGlobalId)
 {
-    __UHEAP_MARK;
+    //__UHEAP_MARK;
     RSoftwareComponentRegistry *pScr =
         reinterpret_cast<RSoftwareComponentRegistry*>(aSessionHandle<<2);
     TRAPD(err, LogComponentL(aEnv, pScr, aGlobalId));
-    __UHEAP_MARKEND;
+    //__UHEAP_MARKEND;
     return err;
 }
 
@@ -1101,11 +960,51 @@
 JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1getUsifMode
 (JNIEnv *, jclass)
 {
-#ifdef RD_JAVA_USIF_APP_REG
     return 1;
-#else
-    return 0;
-#endif // RD_JAVA_USIF_APP_REG
+}
+
+/*
+ * Class:     com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator
+ * Method:    _getErrorCategory
+ * Signature: (I)I
+ */
+JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1getErrorCategory
+(JNIEnv *, jclass, jint aErrorId)
+{
+    int errorCategory = Usif::EUnexpectedError;
+    switch (aErrorId)
+    {
+    case com_nokia_mj_impl_utils_InstallerErrorMessage_INST_NO_MEM:
+        errorCategory = Usif::ELowDiskSpace;
+        break;
+    case com_nokia_mj_impl_utils_InstallerErrorMessage_INST_NO_NET:
+        errorCategory = Usif::ENetworkUnavailable;
+        break;
+    case com_nokia_mj_impl_utils_InstallerErrorMessage_INST_CORRUPT_PKG:
+        errorCategory = Usif::ECorruptedPackage;
+        break;
+    case com_nokia_mj_impl_utils_InstallerErrorMessage_INST_COMPAT_ERR:
+        errorCategory = Usif::EApplicationNotCompatible;
+        break;
+    case com_nokia_mj_impl_utils_InstallerErrorMessage_INST_AUTHORIZATION_ERR:
+    case com_nokia_mj_impl_utils_InstallerErrorMessage_INST_AUTHENTICATION_ERR:
+        errorCategory = Usif::ESecurityError;
+        break;
+    case com_nokia_mj_impl_utils_InstallerErrorMessage_INST_PUSH_REG_ERR:
+    case com_nokia_mj_impl_utils_InstallerErrorMessage_INST_UNEXPECTED_ERR:
+    case com_nokia_mj_impl_utils_InstallerErrorMessage_UNINST_UNEXPECTED_ERR:
+    case com_nokia_mj_impl_utils_InstallerErrorMessage_OTHER_UNEXPECTED_ERR:
+        errorCategory = Usif::EUnexpectedError;
+        break;
+    case com_nokia_mj_impl_utils_InstallerErrorMessage_INST_CANCEL:
+    case com_nokia_mj_impl_utils_InstallerErrorMessage_UNINST_CANCEL:
+        errorCategory = Usif::EUserCancelled;
+        break;
+    case com_nokia_mj_impl_utils_InstallerErrorMessage_UNINST_NOT_ALLOWED:
+        errorCategory = Usif::EUninstallationBlocked;
+        break;
+    }
+    return errorCategory;
 }
 
 #else // SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
@@ -1134,17 +1033,6 @@
 
 /*
  * Class:     com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator
- * Method:    _registerJavaSoftwareType
- * Signature: (Z)I
- */
-JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1registerJavaSoftwareType
-(JNIEnv *, jclass, jboolean)
-{
-    return KErrNone;
-}
-
-/*
- * Class:     com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator
  * Method:    _startSession
  * Signature: ()I
  */
@@ -1192,9 +1080,9 @@
  * Signature: (ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;JZZZZLcom/nokia/mj/impl/installer/applicationregistrator/ComponentId;)I
  */
 JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1registerComponent
-(JNIEnv *, jclass, jint, jint, jstring, jstring, jstring, jstring, jstring,
- jobjectArray, jlong, jboolean, jboolean, jboolean, jboolean, jint, jstring,
- jstring, jstring, jobject)
+(JNIEnv *, jclass, jint, jint, jstring, jstring, jstring, jstring,
+ jobjectArray, jlong, jboolean, jboolean, jboolean, jboolean, jint,
+ jstring, jstring, jstring, jstring, jobject)
 {
     return KErrNone;
 }
@@ -1298,4 +1186,15 @@
     return 0;
 }
 
+/*
+ * Class:     com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator
+ * Method:    _getErrorCategory
+ * Signature: (I)I
+ */
+JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1getErrorCategory
+(JNIEnv *, jclass, jint)
+{
+    return 0;
+}
+
 #endif // SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK