/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.portal.security.permission; import com.liferay.portal.kernel.model.BaseModelListener; import com.liferay.portal.kernel.model.ResourcePermission; import com.liferay.portal.model.impl.ResourcePermissionModelImpl; /** * @author Preston Crary */ public class ResourcePermissionModelListener extends BaseModelListener<ResourcePermission> { @Override public void onAfterCreate(ResourcePermission resourcePermission) { _clearCache(resourcePermission); } @Override public void onAfterRemove(ResourcePermission resourcePermission) { _clearCache(resourcePermission); } @Override public void onAfterUpdate(ResourcePermission resourcePermission) { _clearCache(resourcePermission); } @Override public void onBeforeUpdate(ResourcePermission resourcePermission) { ResourcePermissionModelImpl resourcePermissionModelImpl = (ResourcePermissionModelImpl)resourcePermission; long columnBitmask = resourcePermissionModelImpl.getColumnBitmask(); if ((columnBitmask & _CLEAR_ON_BEFORE_BITMASK) != 0) { PermissionCacheUtil.clearResourcePermissionCache( resourcePermissionModelImpl.getOriginalScope(), resourcePermissionModelImpl.getOriginalName(), resourcePermissionModelImpl.getOriginalPrimKey()); } } private void _clearCache(ResourcePermission resourcePermission) { if (resourcePermission != null) { PermissionCacheUtil.clearResourcePermissionCache( resourcePermission.getScope(), resourcePermission.getName(), resourcePermission.getPrimKey()); } } private static final long _CLEAR_ON_BEFORE_BITMASK = ResourcePermissionModelImpl.NAME_COLUMN_BITMASK | ResourcePermissionModelImpl.PRIMKEY_COLUMN_BITMASK; }