
com.liferay.site.initializer.extender.internal.SiteInitializerExtender Maven / Gradle / Ivy
/**
* SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
* SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
*/
package com.liferay.site.initializer.extender.internal;
import com.liferay.account.service.AccountEntryLocalService;
import com.liferay.account.service.AccountEntryOrganizationRelLocalService;
import com.liferay.account.service.AccountGroupLocalService;
import com.liferay.account.service.AccountGroupRelService;
import com.liferay.account.service.AccountRoleLocalService;
import com.liferay.asset.kernel.service.AssetCategoryLocalService;
import com.liferay.asset.kernel.service.AssetEntryLocalService;
import com.liferay.asset.link.service.AssetLinkLocalService;
import com.liferay.asset.list.service.AssetListEntryLocalService;
import com.liferay.client.extension.service.ClientExtensionEntryLocalService;
import com.liferay.client.extension.type.manager.CETManager;
import com.liferay.data.engine.rest.resource.v2_0.DataDefinitionResource;
import com.liferay.depot.service.DepotEntryGroupRelLocalService;
import com.liferay.depot.service.DepotEntryLocalService;
import com.liferay.document.library.kernel.service.DLFileEntryTypeLocalService;
import com.liferay.document.library.util.DLURLHelper;
import com.liferay.dynamic.data.mapping.service.DDMStructureLocalService;
import com.liferay.dynamic.data.mapping.service.DDMTemplateLocalService;
import com.liferay.dynamic.data.mapping.util.DefaultDDMStructureHelper;
import com.liferay.expando.kernel.service.ExpandoValueLocalService;
import com.liferay.fragment.importer.FragmentsImporter;
import com.liferay.headless.admin.list.type.resource.v1_0.ListTypeDefinitionResource;
import com.liferay.headless.admin.list.type.resource.v1_0.ListTypeEntryResource;
import com.liferay.headless.admin.taxonomy.resource.v1_0.KeywordResource;
import com.liferay.headless.admin.taxonomy.resource.v1_0.TaxonomyCategoryResource;
import com.liferay.headless.admin.taxonomy.resource.v1_0.TaxonomyVocabularyResource;
import com.liferay.headless.admin.user.resource.v1_0.AccountResource;
import com.liferay.headless.admin.user.resource.v1_0.AccountRoleResource;
import com.liferay.headless.admin.user.resource.v1_0.OrganizationResource;
import com.liferay.headless.admin.user.resource.v1_0.UserAccountResource;
import com.liferay.headless.admin.workflow.resource.v1_0.WorkflowDefinitionResource;
import com.liferay.headless.delivery.resource.v1_0.BlogPostingResource;
import com.liferay.headless.delivery.resource.v1_0.DocumentFolderResource;
import com.liferay.headless.delivery.resource.v1_0.DocumentResource;
import com.liferay.headless.delivery.resource.v1_0.KnowledgeBaseArticleResource;
import com.liferay.headless.delivery.resource.v1_0.KnowledgeBaseFolderResource;
import com.liferay.headless.delivery.resource.v1_0.StructuredContentFolderResource;
import com.liferay.journal.service.JournalArticleLocalService;
import com.liferay.layout.importer.LayoutsImporter;
import com.liferay.layout.page.template.service.LayoutPageTemplateEntryLocalService;
import com.liferay.layout.page.template.service.LayoutPageTemplateStructureLocalService;
import com.liferay.layout.page.template.service.LayoutPageTemplateStructureRelLocalService;
import com.liferay.layout.utility.page.service.LayoutUtilityPageEntryLocalService;
import com.liferay.list.type.service.ListTypeEntryLocalService;
import com.liferay.notification.rest.resource.v1_0.NotificationTemplateResource;
import com.liferay.object.admin.rest.resource.v1_0.ObjectDefinitionResource;
import com.liferay.object.admin.rest.resource.v1_0.ObjectFieldResource;
import com.liferay.object.admin.rest.resource.v1_0.ObjectFolderResource;
import com.liferay.object.admin.rest.resource.v1_0.ObjectRelationshipResource;
import com.liferay.object.rest.manager.v1_0.ObjectEntryManager;
import com.liferay.object.service.ObjectActionLocalService;
import com.liferay.object.service.ObjectDefinitionLocalService;
import com.liferay.object.service.ObjectEntryLocalService;
import com.liferay.object.service.ObjectFieldLocalService;
import com.liferay.object.service.ObjectRelationshipLocalService;
import com.liferay.portal.configuration.module.configuration.ConfigurationProvider;
import com.liferay.portal.kernel.json.JSONFactory;
import com.liferay.portal.kernel.service.CompanyLocalService;
import com.liferay.portal.kernel.service.GroupLocalService;
import com.liferay.portal.kernel.service.LayoutLocalService;
import com.liferay.portal.kernel.service.LayoutSetLocalService;
import com.liferay.portal.kernel.service.OrganizationLocalService;
import com.liferay.portal.kernel.service.PortletPreferencesLocalService;
import com.liferay.portal.kernel.service.ResourceActionLocalService;
import com.liferay.portal.kernel.service.ResourcePermissionLocalService;
import com.liferay.portal.kernel.service.RoleLocalService;
import com.liferay.portal.kernel.service.ThemeLocalService;
import com.liferay.portal.kernel.service.UserGroupLocalService;
import com.liferay.portal.kernel.service.UserLocalService;
import com.liferay.portal.kernel.service.WorkflowDefinitionLinkLocalService;
import com.liferay.portal.kernel.settings.ArchivedSettingsFactory;
import com.liferay.portal.kernel.util.ListUtil;
import com.liferay.portal.kernel.util.Portal;
import com.liferay.portal.kernel.util.ProxyUtil;
import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.kernel.zip.ZipWriterFactory;
import com.liferay.portal.language.override.service.PLOEntryLocalService;
import com.liferay.portal.security.service.access.policy.service.SAPEntryLocalService;
import com.liferay.portal.util.PropsValues;
import com.liferay.segments.service.SegmentsEntryLocalService;
import com.liferay.segments.service.SegmentsExperienceLocalService;
import com.liferay.site.initializer.extender.internal.file.backed.osgi.FileBackedBundleDelegate;
import com.liferay.site.initializer.extender.internal.file.backed.servlet.FileBackedServletContextDelegate;
import com.liferay.site.navigation.service.SiteNavigationMenuItemLocalService;
import com.liferay.site.navigation.service.SiteNavigationMenuLocalService;
import com.liferay.site.navigation.type.SiteNavigationMenuItemTypeRegistry;
import com.liferay.style.book.zip.processor.StyleBookEntryZipProcessor;
import com.liferay.template.service.TemplateEntryLocalService;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletContext;
import org.apache.felix.dm.DependencyManager;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.BundleEvent;
import org.osgi.framework.wiring.BundleCapability;
import org.osgi.framework.wiring.BundleWiring;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Deactivate;
import org.osgi.service.component.annotations.Reference;
import org.osgi.util.tracker.BundleTracker;
import org.osgi.util.tracker.BundleTrackerCustomizer;
/**
* @author Brian Wing Shun Chan
*/
@Component(service = SiteInitializerExtender.class)
public class SiteInitializerExtender
implements BundleTrackerCustomizer {
@Override
public SiteInitializerExtension addingBundle(
Bundle bundle, BundleEvent bundleEvent) {
BundleWiring bundleWiring = bundle.adapt(BundleWiring.class);
List bundleCapabilities =
bundleWiring.getCapabilities("liferay.site.initializer");
if (ListUtil.isEmpty(bundleCapabilities)) {
return null;
}
SiteInitializerExtension siteInitializerExtension =
new SiteInitializerExtension(
_accountEntryLocalService,
_accountEntryOrganizationRelLocalService,
_accountGroupLocalService, _accountGroupRelService,
_accountResourceFactory, _accountRoleLocalService,
_accountRoleResourceFactory, _assetCategoryLocalService,
_assetEntryLocalService, _assetLinkLocalService,
_assetListEntryLocalService, _blogPostingResourceFactory,
bundle, _cetManager, _clientExtensionEntryLocalService,
_companyLocalService, _configurationProvider,
_dataDefinitionResourceFactory, _ddmStructureLocalService,
_ddmTemplateLocalService, _defaultDDMStructureHelper,
_dependencyManager, _depotEntryGroupRelLocalService,
_depotEntryLocalService, _dlFileEntryTypeLocalService,
_dlURLHelper, _documentFolderResourceFactory,
_documentResourceFactory, _expandoValueLocalService,
_fragmentsImporter, _groupLocalService,
_journalArticleLocalService, _jsonFactory,
_keywordResourceFactory, _knowledgeBaseArticleResourceFactory,
_knowledgeBaseFolderResourceFactory, _layoutLocalService,
_layoutPageTemplateEntryLocalService,
_layoutPageTemplateStructureLocalService,
_layoutPageTemplateStructureRelLocalService,
_layoutSetLocalService, _layoutsImporter,
_layoutUtilityPageEntryLocalService,
_listTypeDefinitionResource, _listTypeDefinitionResourceFactory,
_listTypeEntryLocalService, _listTypeEntryResource,
_listTypeEntryResourceFactory,
_notificationTemplateResourceFactory, _objectActionLocalService,
_objectDefinitionLocalService, _objectDefinitionResourceFactory,
_objectEntryLocalService, _objectEntryManager,
_objectFieldLocalService, _objectFieldResourceFactory,
_objectFolderResourceFactory, _objectRelationshipLocalService,
_objectRelationshipResourceFactory, _organizationLocalService,
_organizationResourceFactory, _ploEntryLocalService, _portal,
_portletPreferencesLocalService, _resourceActionLocalService,
_resourcePermissionLocalService, _roleLocalService,
_sapEntryLocalService, _segmentsEntryLocalService,
_segmentsExperienceLocalService, null, _archivedSettingsFactory,
_siteNavigationMenuItemLocalService,
_siteNavigationMenuItemTypeRegistry,
_siteNavigationMenuLocalService,
_structuredContentFolderResourceFactory,
_styleBookEntryZipProcessor, _taxonomyCategoryResourceFactory,
_taxonomyVocabularyResourceFactory, _templateEntryLocalService,
_themeLocalService, _userAccountResourceFactory,
_userGroupLocalService, _userLocalService,
_workflowDefinitionLinkLocalService,
_workflowDefinitionResourceFactory, _zipWriterFactory);
siteInitializerExtension.start();
return siteInitializerExtension;
}
public File getFile(String fileKey) {
return _files.get(fileKey);
}
@Override
public void modifiedBundle(
Bundle bundle, BundleEvent bundleEvent,
SiteInitializerExtension siteInitializerExtension) {
}
@Override
public void removedBundle(
Bundle bundle, BundleEvent bundleEvent,
SiteInitializerExtension siteInitializerExtension) {
siteInitializerExtension.destroy();
}
@Activate
protected void activate(BundleContext bundleContext) throws Exception {
_bundleContext = bundleContext;
_dependencyManager = new DependencyManager(bundleContext);
_bundleTracker = new BundleTracker<>(
bundleContext, Bundle.ACTIVE, this);
_bundleTracker.open();
File siteInitializersDirectoryFile = new File(
PropsValues.LIFERAY_HOME, "site-initializers");
if (siteInitializersDirectoryFile.isDirectory()) {
for (File file : siteInitializersDirectoryFile.listFiles()) {
_addFile(file);
}
}
}
@Deactivate
protected void deactivate() {
_bundleTracker.close();
_files.clear();
for (SiteInitializerExtension siteInitializerExtension :
_fileSiteInitializerExtensions) {
siteInitializerExtension.destroy();
}
_fileSiteInitializerExtensions.clear();
}
private void _addFile(File file) throws Exception {
if (!file.isDirectory()) {
return;
}
String fileKey = StringUtil.randomString(16);
_files.put(fileKey, file);
String symbolicName = "Liferay Site Initializer - File - " + fileKey;
SiteInitializerExtension siteInitializerExtension =
new SiteInitializerExtension(
_accountEntryLocalService,
_accountEntryOrganizationRelLocalService,
_accountGroupLocalService, _accountGroupRelService,
_accountResourceFactory, _accountRoleLocalService,
_accountRoleResourceFactory, _assetCategoryLocalService,
_assetEntryLocalService, _assetLinkLocalService,
_assetListEntryLocalService, _blogPostingResourceFactory,
ProxyUtil.newDelegateProxyInstance(
Bundle.class.getClassLoader(), Bundle.class,
new FileBackedBundleDelegate(
_bundleContext, file, _jsonFactory, symbolicName),
null),
_cetManager, _clientExtensionEntryLocalService,
_companyLocalService, _configurationProvider,
_dataDefinitionResourceFactory, _ddmStructureLocalService,
_ddmTemplateLocalService, _defaultDDMStructureHelper,
_dependencyManager, _depotEntryGroupRelLocalService,
_depotEntryLocalService, _dlFileEntryTypeLocalService,
_dlURLHelper, _documentFolderResourceFactory,
_documentResourceFactory, _expandoValueLocalService,
_fragmentsImporter, _groupLocalService,
_journalArticleLocalService, _jsonFactory,
_keywordResourceFactory, _knowledgeBaseArticleResourceFactory,
_knowledgeBaseFolderResourceFactory, _layoutLocalService,
_layoutPageTemplateEntryLocalService,
_layoutPageTemplateStructureLocalService,
_layoutPageTemplateStructureRelLocalService,
_layoutSetLocalService, _layoutsImporter,
_layoutUtilityPageEntryLocalService,
_listTypeDefinitionResource, _listTypeDefinitionResourceFactory,
_listTypeEntryLocalService, _listTypeEntryResource,
_listTypeEntryResourceFactory,
_notificationTemplateResourceFactory, _objectActionLocalService,
_objectDefinitionLocalService, _objectDefinitionResourceFactory,
_objectEntryLocalService, _objectEntryManager,
_objectFieldLocalService, _objectFieldResourceFactory,
_objectFolderResourceFactory, _objectRelationshipLocalService,
_objectRelationshipResourceFactory, _organizationLocalService,
_organizationResourceFactory, _ploEntryLocalService, _portal,
_portletPreferencesLocalService, _resourceActionLocalService,
_resourcePermissionLocalService, _roleLocalService,
_sapEntryLocalService, _segmentsEntryLocalService,
_segmentsExperienceLocalService,
ProxyUtil.newDelegateProxyInstance(
ServletContext.class.getClassLoader(), ServletContext.class,
new FileBackedServletContextDelegate(
file, fileKey, symbolicName),
null),
_archivedSettingsFactory, _siteNavigationMenuItemLocalService,
_siteNavigationMenuItemTypeRegistry,
_siteNavigationMenuLocalService,
_structuredContentFolderResourceFactory,
_styleBookEntryZipProcessor, _taxonomyCategoryResourceFactory,
_taxonomyVocabularyResourceFactory, _templateEntryLocalService,
_themeLocalService, _userAccountResourceFactory,
_userGroupLocalService, _userLocalService,
_workflowDefinitionLinkLocalService,
_workflowDefinitionResourceFactory, _zipWriterFactory);
siteInitializerExtension.start();
_fileSiteInitializerExtensions.add(siteInitializerExtension);
}
@Reference
private AccountEntryLocalService _accountEntryLocalService;
@Reference
private AccountEntryOrganizationRelLocalService
_accountEntryOrganizationRelLocalService;
@Reference
private AccountGroupLocalService _accountGroupLocalService;
@Reference
private AccountGroupRelService _accountGroupRelService;
@Reference
private AccountResource.Factory _accountResourceFactory;
@Reference
private AccountRoleLocalService _accountRoleLocalService;
@Reference
private AccountRoleResource.Factory _accountRoleResourceFactory;
@Reference
private ArchivedSettingsFactory _archivedSettingsFactory;
@Reference
private AssetCategoryLocalService _assetCategoryLocalService;
@Reference
private AssetEntryLocalService _assetEntryLocalService;
@Reference
private AssetLinkLocalService _assetLinkLocalService;
@Reference
private AssetListEntryLocalService _assetListEntryLocalService;
@Reference
private BlogPostingResource.Factory _blogPostingResourceFactory;
private BundleContext _bundleContext;
private BundleTracker> _bundleTracker;
@Reference
private CETManager _cetManager;
@Reference
private ClientExtensionEntryLocalService _clientExtensionEntryLocalService;
@Reference
private CompanyLocalService _companyLocalService;
@Reference
private ConfigurationProvider _configurationProvider;
@Reference
private DataDefinitionResource.Factory _dataDefinitionResourceFactory;
@Reference
private DDMStructureLocalService _ddmStructureLocalService;
@Reference
private DDMTemplateLocalService _ddmTemplateLocalService;
@Reference
private DefaultDDMStructureHelper _defaultDDMStructureHelper;
private DependencyManager _dependencyManager;
@Reference
private DepotEntryGroupRelLocalService _depotEntryGroupRelLocalService;
@Reference
private DepotEntryLocalService _depotEntryLocalService;
@Reference
private DLFileEntryTypeLocalService _dlFileEntryTypeLocalService;
@Reference
private DLURLHelper _dlURLHelper;
@Reference
private DocumentFolderResource.Factory _documentFolderResourceFactory;
@Reference
private DocumentResource.Factory _documentResourceFactory;
@Reference
private ExpandoValueLocalService _expandoValueLocalService;
private final Map _files = new HashMap<>();
private final List
_fileSiteInitializerExtensions = new ArrayList<>();
@Reference
private FragmentsImporter _fragmentsImporter;
@Reference
private GroupLocalService _groupLocalService;
@Reference
private JournalArticleLocalService _journalArticleLocalService;
@Reference
private JSONFactory _jsonFactory;
@Reference
private KeywordResource.Factory _keywordResourceFactory;
@Reference
private KnowledgeBaseArticleResource.Factory
_knowledgeBaseArticleResourceFactory;
@Reference
private KnowledgeBaseFolderResource.Factory
_knowledgeBaseFolderResourceFactory;
@Reference
private LayoutLocalService _layoutLocalService;
@Reference
private LayoutPageTemplateEntryLocalService
_layoutPageTemplateEntryLocalService;
@Reference
private LayoutPageTemplateStructureLocalService
_layoutPageTemplateStructureLocalService;
@Reference
private LayoutPageTemplateStructureRelLocalService
_layoutPageTemplateStructureRelLocalService;
@Reference
private LayoutSetLocalService _layoutSetLocalService;
@Reference
private LayoutsImporter _layoutsImporter;
@Reference
private LayoutUtilityPageEntryLocalService
_layoutUtilityPageEntryLocalService;
@Reference
private ListTypeDefinitionResource _listTypeDefinitionResource;
@Reference
private ListTypeDefinitionResource.Factory
_listTypeDefinitionResourceFactory;
@Reference
private ListTypeEntryLocalService _listTypeEntryLocalService;
@Reference
private ListTypeEntryResource _listTypeEntryResource;
@Reference
private ListTypeEntryResource.Factory _listTypeEntryResourceFactory;
@Reference
private NotificationTemplateResource.Factory
_notificationTemplateResourceFactory;
@Reference
private ObjectActionLocalService _objectActionLocalService;
@Reference
private ObjectDefinitionLocalService _objectDefinitionLocalService;
@Reference
private ObjectDefinitionResource.Factory _objectDefinitionResourceFactory;
@Reference
private ObjectEntryLocalService _objectEntryLocalService;
@Reference(target = "(object.entry.manager.storage.type=default)")
private ObjectEntryManager _objectEntryManager;
@Reference
private ObjectFieldLocalService _objectFieldLocalService;
@Reference
private ObjectFieldResource.Factory _objectFieldResourceFactory;
@Reference
private ObjectFolderResource.Factory _objectFolderResourceFactory;
@Reference
private ObjectRelationshipLocalService _objectRelationshipLocalService;
@Reference
private ObjectRelationshipResource.Factory
_objectRelationshipResourceFactory;
@Reference
private OrganizationLocalService _organizationLocalService;
@Reference
private OrganizationResource.Factory _organizationResourceFactory;
@Reference
private PLOEntryLocalService _ploEntryLocalService;
@Reference
private Portal _portal;
@Reference
private PortletPreferencesLocalService _portletPreferencesLocalService;
@Reference
private ResourceActionLocalService _resourceActionLocalService;
@Reference
private ResourcePermissionLocalService _resourcePermissionLocalService;
@Reference
private RoleLocalService _roleLocalService;
@Reference
private SAPEntryLocalService _sapEntryLocalService;
@Reference
private SegmentsEntryLocalService _segmentsEntryLocalService;
@Reference
private SegmentsExperienceLocalService _segmentsExperienceLocalService;
@Reference
private SiteNavigationMenuItemLocalService
_siteNavigationMenuItemLocalService;
@Reference
private SiteNavigationMenuItemTypeRegistry
_siteNavigationMenuItemTypeRegistry;
@Reference
private SiteNavigationMenuLocalService _siteNavigationMenuLocalService;
@Reference
private StructuredContentFolderResource.Factory
_structuredContentFolderResourceFactory;
@Reference
private StyleBookEntryZipProcessor _styleBookEntryZipProcessor;
@Reference
private TaxonomyCategoryResource.Factory _taxonomyCategoryResourceFactory;
@Reference
private TaxonomyVocabularyResource.Factory
_taxonomyVocabularyResourceFactory;
@Reference
private TemplateEntryLocalService _templateEntryLocalService;
@Reference
private ThemeLocalService _themeLocalService;
@Reference
private UserAccountResource.Factory _userAccountResourceFactory;
@Reference
private UserGroupLocalService _userGroupLocalService;
@Reference
private UserLocalService _userLocalService;
@Reference
private WorkflowDefinitionLinkLocalService
_workflowDefinitionLinkLocalService;
@Reference
private WorkflowDefinitionResource.Factory
_workflowDefinitionResourceFactory;
@Reference
private ZipWriterFactory _zipWriterFactory;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy