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

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

Introduction

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

Prototype

public static SystemEventHierarchyEntry push(Class<?> clazz, 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//from  ww  w  . ja  v a 2 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 a  v a  2  s .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);
    }
}