mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Get server startup handlers to a single point in device-mgt core
This commit is contained in:
parent
87b98a6cb5
commit
0272bda2ce
@ -100,7 +100,7 @@ public class DeviceManagementDataHolder {
|
||||
private DeviceStatusManagementService deviceStatusManagementService;
|
||||
private APIApplicationServices apiApplicationServices;
|
||||
private PublisherRESTAPIServices publisherRESTAPIServices;
|
||||
private OperationStartupHandler operationStartupHandler;
|
||||
private DeviceManagementStartupHandler deviceManagementStartupHandler;
|
||||
|
||||
private final Map<DeviceType, DeviceStatusTaskPluginConfig> deviceStatusTaskPluginConfigs = Collections.synchronizedMap(
|
||||
new HashMap<>());
|
||||
@ -459,11 +459,11 @@ public class DeviceManagementDataHolder {
|
||||
this.groupAccessAuthorizationService = groupAccessAuthorizationService;
|
||||
}
|
||||
|
||||
public OperationStartupHandler getOperationStartupHandler() {
|
||||
return operationStartupHandler;
|
||||
public DeviceManagementStartupHandler getDeviceManagementStartupHandler() {
|
||||
return deviceManagementStartupHandler;
|
||||
}
|
||||
|
||||
public void setOperationStartupHandler(OperationStartupHandler operationStartupHandler) {
|
||||
this.operationStartupHandler = operationStartupHandler;
|
||||
public void setDeviceManagementStartupHandler(DeviceManagementStartupHandler deviceManagementStartupHandler) {
|
||||
this.deviceManagementStartupHandler = deviceManagementStartupHandler;
|
||||
}
|
||||
}
|
||||
|
||||
@ -259,13 +259,10 @@ public class DeviceManagementServiceComponent {
|
||||
TenantCreateObserver listener = new TenantCreateObserver();
|
||||
bundleContext.registerService(Axis2ConfigurationContextObserver.class.getName(), listener, null);
|
||||
|
||||
UserRoleCreateObserver userRoleCreateObserver = new UserRoleCreateObserver();
|
||||
bundleContext.registerService(ServerStartupObserver.class.getName(), userRoleCreateObserver, null);
|
||||
|
||||
/* Registering Device Operation Management Startup Handler */
|
||||
OperationStartupHandler operationStartupHandler = new OperationStartupHandler();
|
||||
DeviceManagementDataHolder.getInstance().setOperationStartupHandler(operationStartupHandler);
|
||||
bundleContext.registerService(ServerStartupObserver.class.getName(), operationStartupHandler, null);
|
||||
/* Registering Device Management Startup Handler */
|
||||
DeviceManagementStartupHandler deviceManagementStartupHandler = new DeviceManagementStartupHandler();
|
||||
DeviceManagementDataHolder.getInstance().setDeviceManagementStartupHandler(deviceManagementStartupHandler);
|
||||
bundleContext.registerService(ServerStartupObserver.class.getName(), deviceManagementStartupHandler, null);
|
||||
|
||||
/* Registering Device Management Service */
|
||||
DeviceManagementProviderService deviceManagementProvider = new DeviceManagementProviderServiceImpl();
|
||||
|
||||
@ -15,7 +15,6 @@
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package io.entgra.device.mgt.core.device.mgt.core.internal;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
@ -23,19 +22,25 @@ import io.entgra.device.mgt.core.device.mgt.common.exceptions.MetadataManagement
|
||||
import io.entgra.device.mgt.core.device.mgt.common.exceptions.TransactionManagementException;
|
||||
import io.entgra.device.mgt.core.device.mgt.common.metadata.mgt.Metadata;
|
||||
import io.entgra.device.mgt.core.device.mgt.common.metadata.mgt.MetadataManagementService;
|
||||
import io.entgra.device.mgt.core.device.mgt.core.DeviceManagementConstants;
|
||||
import io.entgra.device.mgt.core.device.mgt.core.operation.change.status.task.dto.OperationConfig;
|
||||
import io.entgra.device.mgt.core.device.mgt.core.operation.mgt.dao.OperationDAO;
|
||||
import io.entgra.device.mgt.core.device.mgt.core.operation.mgt.dao.OperationManagementDAOException;
|
||||
import io.entgra.device.mgt.core.device.mgt.core.operation.mgt.dao.OperationManagementDAOFactory;
|
||||
import io.entgra.device.mgt.core.device.mgt.core.operation.change.status.task.dto.OperationConfig;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.core.ServerStartupObserver;
|
||||
import org.wso2.carbon.user.api.AuthorizationManager;
|
||||
import org.wso2.carbon.user.api.Permission;
|
||||
import org.wso2.carbon.user.api.UserStoreException;
|
||||
import org.wso2.carbon.user.api.UserStoreManager;
|
||||
import org.wso2.carbon.utils.multitenancy.MultitenantConstants;
|
||||
|
||||
public class OperationStartupHandler implements ServerStartupObserver {
|
||||
private static final Log log = LogFactory.getLog(OperationStartupHandler.class);
|
||||
public class DeviceManagementStartupHandler implements ServerStartupObserver {
|
||||
private static final Log log = LogFactory.getLog(DeviceManagementStartupHandler.class);
|
||||
private static final Gson gson = new Gson();
|
||||
private final OperationDAO operationDAO = OperationManagementDAOFactory.getOperationDAO();
|
||||
private static final String OPERATION_CONFIG = "OPERATION_CONFIG";
|
||||
private static final String tenantDomain = MultitenantConstants.SUPER_TENANT_DOMAIN_NAME;
|
||||
|
||||
@Override
|
||||
public void completingServerStartup() {
|
||||
@ -44,11 +49,66 @@ public class OperationStartupHandler implements ServerStartupObserver {
|
||||
|
||||
@Override
|
||||
public void completedServerStartup() {
|
||||
userRoleCreateObserver();
|
||||
operationStatusChangeObserver();
|
||||
}
|
||||
|
||||
MetadataManagementService metadataManagementService = DeviceManagementDataHolder.getInstance().getMetadataManagementService();
|
||||
private void userRoleCreateObserver() {
|
||||
try {
|
||||
UserStoreManager userStoreManager =
|
||||
DeviceManagementDataHolder.getInstance().getRealmService().getTenantUserRealm(
|
||||
MultitenantConstants.SUPER_TENANT_ID).getUserStoreManager();
|
||||
String tenantAdminName =
|
||||
DeviceManagementDataHolder.getInstance().getRealmService().getTenantUserRealm(
|
||||
MultitenantConstants.SUPER_TENANT_ID).getRealmConfiguration().getAdminUserName();
|
||||
AuthorizationManager authorizationManager = DeviceManagementDataHolder.getInstance().getRealmService()
|
||||
.getTenantUserRealm(MultitenantConstants.SUPER_TENANT_ID).getAuthorizationManager();
|
||||
|
||||
if (!userStoreManager.isExistingRole(DeviceManagementConstants.User.DEFAULT_DEVICE_ADMIN)) {
|
||||
userStoreManager.addRole(
|
||||
DeviceManagementConstants.User.DEFAULT_DEVICE_ADMIN,
|
||||
null,
|
||||
DeviceManagementConstants.User.PERMISSIONS_FOR_DEVICE_ADMIN);
|
||||
} else {
|
||||
for (Permission permission : DeviceManagementConstants.User.PERMISSIONS_FOR_DEVICE_ADMIN) {
|
||||
authorizationManager.authorizeRole(DeviceManagementConstants.User.DEFAULT_DEVICE_ADMIN,
|
||||
permission.getResourceId(), permission.getAction());
|
||||
}
|
||||
}
|
||||
if (!userStoreManager.isExistingRole(DeviceManagementConstants.User.DEFAULT_DEVICE_USER)) {
|
||||
userStoreManager.addRole(
|
||||
DeviceManagementConstants.User.DEFAULT_DEVICE_USER,
|
||||
null,
|
||||
DeviceManagementConstants.User.PERMISSIONS_FOR_DEVICE_USER);
|
||||
} else {
|
||||
for (Permission permission : DeviceManagementConstants.User.PERMISSIONS_FOR_DEVICE_USER) {
|
||||
authorizationManager.authorizeRole(DeviceManagementConstants.User.DEFAULT_DEVICE_USER,
|
||||
permission.getResourceId(), permission.getAction());
|
||||
}
|
||||
}
|
||||
userStoreManager.updateRoleListOfUser(tenantAdminName, null,
|
||||
new String[]{DeviceManagementConstants.User.DEFAULT_DEVICE_ADMIN,
|
||||
DeviceManagementConstants.User.DEFAULT_DEVICE_USER});
|
||||
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Device management roles: " + DeviceManagementConstants.User.DEFAULT_DEVICE_USER + ", " +
|
||||
DeviceManagementConstants.User.DEFAULT_DEVICE_ADMIN + " created for the tenant:" + tenantDomain + "."
|
||||
);
|
||||
log.debug("Tenant administrator: " + tenantAdminName + "@" + tenantDomain +
|
||||
" is assigned to the role:" + DeviceManagementConstants.User.DEFAULT_DEVICE_ADMIN + "."
|
||||
);
|
||||
}
|
||||
} catch (UserStoreException e) {
|
||||
log.error("Error occurred while creating roles for the tenant: " + tenantDomain + ".");
|
||||
}
|
||||
}
|
||||
|
||||
private void operationStatusChangeObserver () {
|
||||
MetadataManagementService metadataManagementService = DeviceManagementDataHolder
|
||||
.getInstance().getMetadataManagementService();
|
||||
OperationDAO operationDAO = OperationManagementDAOFactory.getOperationDAO();
|
||||
Metadata metadata;
|
||||
int numOfRecordsUpdated;
|
||||
|
||||
try {
|
||||
metadata = metadataManagementService.retrieveMetadata(OPERATION_CONFIG);
|
||||
if (metadata != null) {
|
||||
@ -57,7 +117,7 @@ public class OperationStartupHandler implements ServerStartupObserver {
|
||||
String initialOperationStatus = operationConfiguration.getInitialOperationStatus();
|
||||
String requiredStatusChange = operationConfiguration.getRequiredStatusChange();
|
||||
|
||||
for (String deviceType: deviceTypes) {
|
||||
for (String deviceType : deviceTypes) {
|
||||
try {
|
||||
OperationManagementDAOFactory.beginTransaction();
|
||||
try {
|
||||
@ -74,7 +134,7 @@ public class OperationStartupHandler implements ServerStartupObserver {
|
||||
} catch (TransactionManagementException e) {
|
||||
String msg = "Transactional error occurred while updating the operation status";
|
||||
log.error(msg, e);
|
||||
} finally {
|
||||
} finally {
|
||||
OperationManagementDAOFactory.closeConnection();
|
||||
}
|
||||
}
|
||||
@ -1,89 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package io.entgra.device.mgt.core.device.mgt.core.internal;
|
||||
|
||||
import io.entgra.device.mgt.core.device.mgt.core.DeviceManagementConstants;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.core.ServerStartupObserver;
|
||||
import org.wso2.carbon.user.api.AuthorizationManager;
|
||||
import org.wso2.carbon.user.api.Permission;
|
||||
import org.wso2.carbon.user.api.UserStoreException;
|
||||
import org.wso2.carbon.user.api.UserStoreManager;
|
||||
import org.wso2.carbon.utils.multitenancy.MultitenantConstants;
|
||||
|
||||
public class UserRoleCreateObserver implements ServerStartupObserver {
|
||||
private static final Log log = LogFactory.getLog(UserRoleCreateObserver.class);
|
||||
@Override
|
||||
public void completingServerStartup() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void completedServerStartup() {
|
||||
String tenantDomain = MultitenantConstants.SUPER_TENANT_DOMAIN_NAME;
|
||||
|
||||
try {
|
||||
UserStoreManager userStoreManager =
|
||||
DeviceManagementDataHolder.getInstance().getRealmService().getTenantUserRealm(
|
||||
MultitenantConstants.SUPER_TENANT_ID).getUserStoreManager();
|
||||
String tenantAdminName =
|
||||
DeviceManagementDataHolder.getInstance().getRealmService().getTenantUserRealm(
|
||||
MultitenantConstants.SUPER_TENANT_ID).getRealmConfiguration().getAdminUserName();
|
||||
AuthorizationManager authorizationManager = DeviceManagementDataHolder.getInstance().getRealmService()
|
||||
.getTenantUserRealm(MultitenantConstants.SUPER_TENANT_ID).getAuthorizationManager();
|
||||
|
||||
if (!userStoreManager.isExistingRole(DeviceManagementConstants.User.DEFAULT_DEVICE_ADMIN)) {
|
||||
userStoreManager.addRole(
|
||||
DeviceManagementConstants.User.DEFAULT_DEVICE_ADMIN,
|
||||
null,
|
||||
DeviceManagementConstants.User.PERMISSIONS_FOR_DEVICE_ADMIN);
|
||||
} else {
|
||||
for (Permission permission : DeviceManagementConstants.User.PERMISSIONS_FOR_DEVICE_ADMIN) {
|
||||
authorizationManager.authorizeRole(DeviceManagementConstants.User.DEFAULT_DEVICE_ADMIN,
|
||||
permission.getResourceId(), permission.getAction());
|
||||
}
|
||||
}
|
||||
if (!userStoreManager.isExistingRole(DeviceManagementConstants.User.DEFAULT_DEVICE_USER)) {
|
||||
userStoreManager.addRole(
|
||||
DeviceManagementConstants.User.DEFAULT_DEVICE_USER,
|
||||
null,
|
||||
DeviceManagementConstants.User.PERMISSIONS_FOR_DEVICE_USER);
|
||||
} else {
|
||||
for (Permission permission : DeviceManagementConstants.User.PERMISSIONS_FOR_DEVICE_USER) {
|
||||
authorizationManager.authorizeRole(DeviceManagementConstants.User.DEFAULT_DEVICE_USER,
|
||||
permission.getResourceId(), permission.getAction());
|
||||
}
|
||||
}
|
||||
userStoreManager.updateRoleListOfUser(tenantAdminName, null,
|
||||
new String[] {DeviceManagementConstants.User.DEFAULT_DEVICE_ADMIN,
|
||||
DeviceManagementConstants.User.DEFAULT_DEVICE_USER});
|
||||
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Device management roles: " + DeviceManagementConstants.User.DEFAULT_DEVICE_USER + ", " +
|
||||
DeviceManagementConstants.User.DEFAULT_DEVICE_ADMIN + " created for the tenant:" + tenantDomain + "."
|
||||
);
|
||||
log.debug("Tenant administrator: " + tenantAdminName + "@" + tenantDomain +
|
||||
" is assigned to the role:" + DeviceManagementConstants.User.DEFAULT_DEVICE_ADMIN + "."
|
||||
);
|
||||
}
|
||||
} catch (UserStoreException e) {
|
||||
log.error("Error occurred while creating roles for the tenant: " + tenantDomain + ".");
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user