applicationmanagement/server/src/ApplicationManagementJavaUtility.cpp
author hgs
Tue, 13 Jul 2010 04:01:20 +0530
changeset 47 d316aecb87fd
permissions -rw-r--r--
201025_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     1
/*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     2
 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     3
 * All rights reserved.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     8
 *
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     9
 * Initial Contributors:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    11
 *
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    12
 * Contributors:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    13
 *
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    14
 * Description: Implementation of applicationmanagement components
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    15
 *
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    16
 */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    17
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    18
//	CLASS HEADER
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    19
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    20
#include <e32property.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    21
#include <javadomainpskeys.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    22
#include <javaregistryincludes.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    23
#include <appversion.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    24
#include "ApplicationManagementJavaUtility.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    25
#include "debug.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    26
//  INTERNAL INCLUDES
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    27
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    28
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    29
using namespace NApplicationManagement;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    30
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    31
//----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    32
// 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    33
//----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    34
// CONSTRUCTION
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    35
CApplicationManagementJavaUtility* CApplicationManagementJavaUtility::NewL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    36
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    37
    CApplicationManagementJavaUtility* self =
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    38
            CApplicationManagementJavaUtility::NewLC();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    39
    CleanupStack::Pop();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    40
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    41
    return self;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    42
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    43
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    44
//----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    45
// 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    46
//----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    47
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    48
CApplicationManagementJavaUtility* CApplicationManagementJavaUtility::NewLC()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    49
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    50
    CApplicationManagementJavaUtility* self = new( ELeave ) CApplicationManagementJavaUtility();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    51
    CleanupStack::PushL(self);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    52
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    53
    self->ConstructL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    54
    return self;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    55
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    56
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    57
//----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    58
// 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    59
//----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    60
// Destructor (virtual by CBase)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    61
CApplicationManagementJavaUtility::~CApplicationManagementJavaUtility()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    62
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    63
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    64
    if (iJavaRegistry)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    65
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    66
        delete iJavaRegistry;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    67
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    68
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    69
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    70
//----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    71
// 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    72
//----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    73
// Default constructor
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    74
CApplicationManagementJavaUtility::CApplicationManagementJavaUtility()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    75
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    76
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    77
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    78
//----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    79
// 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    80
//----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    81
// Second phase construct
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    82
void CApplicationManagementJavaUtility::ConstructL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    83
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    84
    RefreshJavaRegistryL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    85
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    86
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    87
//  METHODS
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    88
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    89
//----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    90
// 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    91
//----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    92
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    93
TBool CApplicationManagementJavaUtility::FindInstalledJavaUidL(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    94
        const TUid &aUid) const
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    95
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    96
    TBool ret;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    97
    ret = iJavaRegistry->RegistryEntryExistsL(aUid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    98
    return ret;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    99
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   100
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   101
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   102
//----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   103
// 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   104
//----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   105
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   106
void CApplicationManagementJavaUtility::InstalledSuiteUidsL(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   107
        RArray <TUid>& aUids)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   108
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   109
    iJavaRegistry->GetRegistryEntryUidsL(aUids);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   110
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   111
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   112
//----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   113
// 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   114
//----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   115
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   116
void CApplicationManagementJavaUtility::JavaUidsL(RArray<TUid> &aUids)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   117
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   118
    iJavaRegistry->GetRegistryEntryUidsL(aUids);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   119
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   120
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   121
//----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   122
// 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   123
//----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   124
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   125
void CApplicationManagementJavaUtility::RefreshJavaRegistryL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   126
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   127
    if (iJavaRegistry)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   128
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   129
        delete iJavaRegistry;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   130
        iJavaRegistry = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   131
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   132
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   133
    iJavaRegistry = CJavaRegistry::NewL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   134
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   135
void CApplicationManagementJavaUtility::GetInstalledMidletParametersL(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   136
        TMidletParameters& aMidletParameters)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   137
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   138
    RDEBUG( "CApplicationManagementJavaUtility::GetInstalledMidletParametersL: Start");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   139
    TInt suiteUid = 0;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   140
    // Get UID for the latest installed Midlet suite
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   141
    // KPSUidJavaLatestInstallation = 0x10282567
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   142
    RProperty::Get(KUidSystemCategory, KPSUidJavaLatestInstallation, suiteUid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   143
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   144
    if ( !suiteUid)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   145
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   146
        User::Leave(KErrNotFound);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   147
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   148
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   149
    RArray<TUid> uids;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   150
    CleanupClosePushL(uids);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   151
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   152
    Java::CJavaRegistry* javaRegistry;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   153
    javaRegistry = Java::CJavaRegistry::NewLC();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   154
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   155
    Java::CJavaRegistryEntry* regEntry =
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   156
            javaRegistry->RegistryEntryL(TUid::Uid(suiteUid) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   157
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   158
    if (regEntry)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   159
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   160
        CleanupStack::PushL(regEntry);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   161
        Java::TJavaRegistryEntryType entryType = regEntry->Type();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   162
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   163
        if ( (entryType >= Java::EGeneralPackage ) && (entryType
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   164
                < Java::EGeneralApplication))
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   165
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   166
            //package entry
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   167
            Java::CJavaRegistryPackageEntry * regPackageEntry =
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   168
                    static_cast<Java::CJavaRegistryPackageEntry*>(regEntry );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   169
            regPackageEntry->GetEmbeddedEntries(uids);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   170
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   171
            aMidletParameters.iMidletUid = uids[0]; // conidered the first application from the suite
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   172
            aMidletParameters.iMidletName.Copy(regPackageEntry->Name());
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   173
            aMidletParameters.iMidletVenorName.Copy(regPackageEntry->Vendor());
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   174
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   175
            TAppVersion version;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   176
            version = regPackageEntry->Version();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   177
            _LIT8(KDot,".");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   178
            aMidletParameters.bufVersion.Num(version.iMajor);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   179
            aMidletParameters.bufVersion.Append(KDot);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   180
            aMidletParameters.bufVersion.AppendNum(version.iMinor);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   181
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   182
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   183
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   184
            //application entry
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   185
            uids.AppendL(regEntry->Uid() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   186
            aMidletParameters.iMidletUid = regEntry->Uid();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   187
            aMidletParameters.iMidletName.Copy(regEntry->Name());
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   188
            //How to get Vendor& version name for java application
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   189
            aMidletParameters.iMidletVenorName.Copy(KNullDesC8);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   190
            TAppVersion version(0,0,0);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   191
            _LIT8(KDot,".");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   192
            aMidletParameters.bufVersion.Num(version.iMajor);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   193
            aMidletParameters.bufVersion.Append(KDot);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   194
            aMidletParameters.bufVersion.AppendNum(version.iMinor);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   195
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   196
        CleanupStack::PopAndDestroy(regEntry);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   197
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   198
    CleanupStack::PopAndDestroy(javaRegistry);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   199
    CleanupStack::PopAndDestroy( &uids);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   200
    RDEBUG( "CApplicationManagementJavaUtility::GetInstalledMidletParametersL: End");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   201
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   202
//  END OF FILE