mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Fixed EMM-1034
This commit is contained in:
parent
b5a6280c8d
commit
30e8dc885c
@ -28,7 +28,6 @@ import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorization
|
|||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException;
|
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManager;
|
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManager;
|
||||||
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
|
|
||||||
import org.wso2.carbon.device.mgt.core.DeviceManagementConstants;
|
import org.wso2.carbon.device.mgt.core.DeviceManagementConstants;
|
||||||
import org.wso2.carbon.device.mgt.core.dao.DeviceDAO;
|
import org.wso2.carbon.device.mgt.core.dao.DeviceDAO;
|
||||||
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException;
|
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException;
|
||||||
|
|||||||
@ -41,6 +41,7 @@ import org.wso2.carbon.policy.mgt.core.util.PolicyManagementConstants;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
public class PolicyAdministratorPointImpl implements PolicyAdministratorPoint {
|
public class PolicyAdministratorPointImpl implements PolicyAdministratorPoint {
|
||||||
|
|
||||||
@ -123,36 +124,49 @@ public class PolicyAdministratorPointImpl implements PolicyAdministratorPoint {
|
|||||||
try {
|
try {
|
||||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||||
TaskService taskService = PolicyManagementDataHolder.getInstance().getTaskService();
|
TaskService taskService = PolicyManagementDataHolder.getInstance().getTaskService();
|
||||||
taskService.registerTaskType(PolicyManagementConstants.DELEGATION_TASK_TYPE);
|
|
||||||
|
|
||||||
if (log.isDebugEnabled()) {
|
if (log.isDebugEnabled()) {
|
||||||
log.debug("Policy delegations task is started for the tenant id " + tenantId);
|
log.debug("Policy delegations task is started for the tenant id " + tenantId);
|
||||||
}
|
}
|
||||||
|
|
||||||
TaskManager taskManager = taskService.getTaskManager(PolicyManagementConstants.DELEGATION_TASK_TYPE);
|
TaskManager taskManager = taskService.getTaskManager(PolicyManagementConstants.DELEGATION_TASK_TYPE);
|
||||||
|
|
||||||
TaskInfo.TriggerInfo triggerInfo = new TaskInfo.TriggerInfo();
|
TaskInfo.TriggerInfo triggerInfo = new TaskInfo.TriggerInfo();
|
||||||
|
|
||||||
triggerInfo.setRepeatCount(0);
|
triggerInfo.setRepeatCount(0);
|
||||||
|
|
||||||
Map<String, String> properties = new HashMap<>();
|
Map<String, String> properties = new HashMap<>();
|
||||||
properties.put(PolicyManagementConstants.TENANT_ID, String.valueOf(tenantId));
|
properties.put(PolicyManagementConstants.TENANT_ID, String.valueOf(tenantId));
|
||||||
|
|
||||||
String taskName = PolicyManagementConstants.DELEGATION_TASK_NAME + "_" + String.valueOf(tenantId);
|
String taskName = PolicyManagementConstants.DELEGATION_TASK_NAME + "_" + String.valueOf(tenantId);
|
||||||
|
|
||||||
if (!taskManager.isTaskScheduled(taskName)) {
|
Set<String> registeredTaskTypes = taskService.getRegisteredTaskTypes();
|
||||||
|
//Check whether the TaskType is already registered. If not we'll register it here.
|
||||||
|
if (!registeredTaskTypes.contains(PolicyManagementConstants.DELEGATION_TASK_TYPE)) {
|
||||||
|
taskService.registerTaskType(PolicyManagementConstants.DELEGATION_TASK_TYPE);
|
||||||
|
TaskInfo registeredTaskInfo = null;
|
||||||
|
// getTask method will throw a TaskException if the task is not registered. Hence we'll handle the
|
||||||
|
// exception and register the task.
|
||||||
|
try {
|
||||||
|
registeredTaskInfo = taskManager.getTask(taskName);
|
||||||
|
} catch (TaskException e) {
|
||||||
|
// No need of any specific logic to handle this exception as it is thrown if the task is not registered.
|
||||||
|
} finally {
|
||||||
|
// If registeredTaskInfo is null that means there's no registered delegation-task.
|
||||||
|
if (registeredTaskInfo == null) {
|
||||||
TaskInfo taskInfo = new TaskInfo(taskName, PolicyManagementConstants.DELEGATION_TASK_CLAZZ,
|
TaskInfo taskInfo = new TaskInfo(taskName, PolicyManagementConstants.DELEGATION_TASK_CLAZZ,
|
||||||
properties, triggerInfo);
|
properties, triggerInfo);
|
||||||
|
|
||||||
taskManager.registerTask(taskInfo);
|
taskManager.registerTask(taskInfo);
|
||||||
taskManager.rescheduleTask(taskInfo.getName());
|
taskManager.scheduleTask(taskInfo.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!taskManager.isTaskScheduled(taskName)) {
|
||||||
|
TaskInfo taskInfo = new TaskInfo(taskName, PolicyManagementConstants.DELEGATION_TASK_CLAZZ,
|
||||||
|
properties, triggerInfo);
|
||||||
|
taskManager.scheduleTask(taskInfo.getName());
|
||||||
} else {
|
} else {
|
||||||
throw new PolicyManagementException("There is a task already running for policy changes. Please try " +
|
throw new PolicyManagementException("There is a task already running for policy changes. Please try " +
|
||||||
"to apply " +
|
"to apply " +
|
||||||
"changes after few minutes.");
|
"changes after few minutes.");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} catch (TaskException e) {
|
} catch (TaskException e) {
|
||||||
String msg = "Error occurred while creating the policy delegation task for tenant " +
|
String msg = "Error occurred while creating the policy delegation task for tenant " +
|
||||||
PrivilegedCarbonContext.
|
PrivilegedCarbonContext.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user