Example usage for com.liferay.portal.kernel.systemevent SystemEventHierarchyEntryThreadLocal pop

List of usage examples for com.liferay.portal.kernel.systemevent SystemEventHierarchyEntryThreadLocal pop

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.systemevent SystemEventHierarchyEntryThreadLocal pop.

Prototype

public static SystemEventHierarchyEntry pop(String className, long classPK) 

Source Link

Usage

From source file:com.liferay.assetlayouts.service.impl.AssetLayoutsLayoutLocalServiceImpl.java

License:Open Source License

@Override
public void deleteLayout(Layout layout, boolean updateLayoutSet, ServiceContext serviceContext)
        throws PortalException, SystemException {

    super.deleteLayout(layout, updateLayoutSet, serviceContext);

    // Asset/*w  w w  .jav a2  s  .co  m*/

    SystemEventHierarchyEntryThreadLocal.pop(Layout.class, layout.getPrimaryKey());

    try {
        AssetEntryLocalServiceUtil.deleteEntry(Layout.class.getName(), layout.getPrimaryKey());
    } finally {
        SystemEventHierarchyEntryThreadLocal.push(Layout.class, layout.getPrimaryKey());
    }
}

From source file:com.liferay.wiki.service.impl.WikiPageLocalServiceImpl.java

License:Open Source License

@Override
@SystemEvent(action = SystemEventConstants.ACTION_SKIP, send = false, type = SystemEventConstants.TYPE_DELETE)
public void deletePage(WikiPage page) throws PortalException {

    // Child pages

    List<WikiPage> childPages = wikiPagePersistence.findByN_P(page.getNodeId(), page.getTitle());

    for (WikiPage childPage : childPages) {
        if (childPage.isApproved() || childPage.isInTrashImplicitly()) {
            wikiPageLocalService.deletePage(childPage);
        } else {//from w  w w.  j  av a  2s  .  c  o m
            childPage.setParentTitle(StringPool.BLANK);

            wikiPagePersistence.update(childPage);
        }
    }

    List<WikiPage> redirectorPages = getRedirectorPages(page.getNodeId(), page.getTitle());

    for (WikiPage redirectorPage : redirectorPages) {
        if (redirectorPage.isApproved() || redirectorPage.isInTrashImplicitly()) {

            wikiPageLocalService.deletePage(redirectorPage);
        } else {
            redirectorPage.setRedirectTitle(StringPool.BLANK);

            wikiPagePersistence.update(redirectorPage);
        }
    }

    List<WikiPage> versionPages = wikiPagePersistence.findByN_T(page.getNodeId(), page.getTitle());

    wikiPagePersistence.removeByN_T(page.getNodeId(), page.getTitle());

    // References

    wikiPagePersistence.removeByN_R(page.getNodeId(), page.getTitle());

    // Resources

    resourceLocalService.deleteResource(page.getCompanyId(), WikiPage.class.getName(),
            ResourceConstants.SCOPE_INDIVIDUAL, page.getResourcePrimKey());

    // Resource

    WikiPageResource pageResource = wikiPageResourceLocalService.fetchPageResource(page.getNodeId(),
            page.getTitle());

    if (pageResource != null) {
        wikiPageResourceLocalService.deleteWikiPageResource(pageResource);
    }

    // Attachments

    long folderId = page.getAttachmentsFolderId();

    if (folderId != DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
        PortletFileRepositoryUtil.deletePortletFolder(folderId);
    }

    // Subscriptions

    subscriptionLocalService.deleteSubscriptions(page.getCompanyId(), WikiPage.class.getName(),
            page.getResourcePrimKey());

    // Asset

    SystemEventHierarchyEntryThreadLocal.pop(page.getModelClass(), page.getPageId());

    try {
        for (WikiPage versionPage : versionPages) {
            assetEntryLocalService.deleteEntry(WikiPage.class.getName(), versionPage.getPrimaryKey());
        }
    } finally {
        SystemEventHierarchyEntryThreadLocal.push(page.getModelClass(), page.getPageId());
    }

    assetEntryLocalService.deleteEntry(WikiPage.class.getName(), page.getResourcePrimKey());

    // Comment

    CommentManagerUtil.deleteDiscussion(WikiPage.class.getName(), page.getResourcePrimKey());

    // Expando

    expandoRowLocalService.deleteRows(page.getPrimaryKey());

    // Ratings

    ratingsStatsLocalService.deleteStats(WikiPage.class.getName(), page.getResourcePrimKey());

    // Trash

    if (page.isInTrash()) {
        if (page.isInTrashExplicitly()) {
            page.setTitle(TrashUtil.getOriginalTitle(page.getTitle()));

            trashEntryLocalService.deleteEntry(WikiPage.class.getName(), page.getResourcePrimKey());
        } else {
            for (WikiPage versionPage : versionPages) {
                trashVersionLocalService.deleteTrashVersion(WikiPage.class.getName(), versionPage.getPageId());
            }
        }
    }

    // Indexer

    Indexer<WikiPage> indexer = IndexerRegistryUtil.nullSafeGetIndexer(WikiPage.class);

    indexer.delete(page);

    // Cache

    clearPageCache(page);

    // Version pages

    for (WikiPage versionPage : versionPages) {

        // Workflow

        workflowInstanceLinkLocalService.deleteWorkflowInstanceLinks(versionPage.getCompanyId(),
                versionPage.getGroupId(), WikiPage.class.getName(), versionPage.getPageId());
    }

    if (pageResource != null) {
        systemEventLocalService.addSystemEvent(0, page.getGroupId(), page.getModelClassName(),
                page.getPrimaryKey(), pageResource.getUuid(), null, SystemEventConstants.TYPE_DELETE,
                StringPool.BLANK);
    }
}