001
014
015 package com.liferay.portal.security.permission;
016
017 import com.liferay.portal.kernel.log.Log;
018 import com.liferay.portal.kernel.log.LogFactoryUtil;
019 import com.liferay.portal.kernel.model.User;
020 import com.liferay.portal.kernel.security.auth.CompanyThreadLocal;
021 import com.liferay.portal.kernel.security.auth.PrincipalThreadLocal;
022 import com.liferay.portal.kernel.security.permission.PermissionChecker;
023 import com.liferay.portal.kernel.security.permission.PermissionCheckerFactoryUtil;
024 import com.liferay.portal.kernel.security.permission.PermissionThreadLocal;
025 import com.liferay.portal.kernel.service.UserLocalServiceUtil;
026 import com.liferay.portal.kernel.test.util.TestPropsValues;
027
028
031 public abstract class DoAsUserThread extends Thread {
032
033 public DoAsUserThread(long userId) {
034 this(userId, 1);
035 }
036
037 public DoAsUserThread(long userId, int retries) {
038 _userId = userId;
039
040 _retries = retries;
041 }
042
043 public boolean isSuccess() {
044 return _success;
045 }
046
047 @Override
048 public void run() {
049 for (int i = 0; i < _retries; i++) {
050 try {
051 CompanyThreadLocal.setCompanyId(TestPropsValues.getCompanyId());
052
053 PrincipalThreadLocal.setName(_userId);
054
055 User user = UserLocalServiceUtil.getUserById(_userId);
056
057 PermissionChecker permissionChecker =
058 PermissionCheckerFactoryUtil.create(user);
059
060 PermissionThreadLocal.setPermissionChecker(permissionChecker);
061
062 doRun();
063
064 _success = true;
065
066 return;
067 }
068 catch (Exception e) {
069 _log.error(e, e);
070 }
071 finally {
072 PrincipalThreadLocal.setName(null);
073 PermissionThreadLocal.setPermissionChecker(null);
074 }
075 }
076 }
077
078 protected abstract void doRun() throws Exception;
079
080 private static final Log _log = LogFactoryUtil.getLog(DoAsUserThread.class);
081
082 private final int _retries;
083 private boolean _success;
084 private final long _userId;
085
086 }