1 /*
2 * Copyright (c) 2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "core/common/resource/resource_manager.h"
17
18 namespace OHOS::Ace {
19 namespace {
20 const std::string DEFAULT_BUNDLE_NAME = "";
21 const std::string DEFAULT_MODULE_NAME = "";
22 } // namespace
23
GetInstance()24 ResourceManager& ResourceManager::GetInstance()
25 {
26 static ResourceManager instance;
27 return instance;
28 }
29
GetOrCreateResourceAdapter(RefPtr<ResourceObject> & resourceObject)30 RefPtr<ResourceAdapter> ResourceManager::GetOrCreateResourceAdapter(RefPtr<ResourceObject>& resourceObject)
31 {
32 std::string bundleName = resourceObject->GetBundleName();
33 std::string moduleName = resourceObject->GetModuleName();
34
35 auto resourceAdapter = GetResourceAdapter(bundleName, moduleName);
36 if (resourceAdapter == nullptr) {
37 resourceAdapter = ResourceAdapter::CreateNewResourceAdapter(bundleName, moduleName);
38 if (!resourceAdapter) {
39 return GetResourceAdapter(DEFAULT_BUNDLE_NAME, DEFAULT_MODULE_NAME);
40 }
41 AddResourceAdapter(bundleName, moduleName, resourceAdapter);
42 }
43 return resourceAdapter;
44 }
45
RegisterMainResourceAdapter(const std::string & bundleName,const std::string & moduleName,const RefPtr<ResourceAdapter> & resAdapter)46 void ResourceManager::RegisterMainResourceAdapter(
47 const std::string& bundleName, const std::string& moduleName, const RefPtr<ResourceAdapter>& resAdapter)
48 {
49 std::unique_lock<std::shared_mutex> lock(mutex_);
50 auto key = MakeCacheKey(bundleName, moduleName);
51 resourceAdapters_.emplace(key, resAdapter);
52 }
53 } // namespace OHOS::Ace
54