refactoring: 09_TbResourceController: fix bug test save resource
This commit is contained in:
parent
cc8cbc5005
commit
38e6286430
@ -40,7 +40,7 @@ import org.thingsboard.server.common.data.page.PageData;
|
|||||||
import org.thingsboard.server.common.data.page.PageLink;
|
import org.thingsboard.server.common.data.page.PageLink;
|
||||||
import org.thingsboard.server.common.data.security.Authority;
|
import org.thingsboard.server.common.data.security.Authority;
|
||||||
import org.thingsboard.server.queue.util.TbCoreComponent;
|
import org.thingsboard.server.queue.util.TbCoreComponent;
|
||||||
import org.thingsboard.server.service.resource.TbResourceService;
|
import org.thingsboard.server.service.entitiy.resource.TbResourceNotifyService;
|
||||||
import org.thingsboard.server.service.security.permission.Operation;
|
import org.thingsboard.server.service.security.permission.Operation;
|
||||||
import org.thingsboard.server.service.security.permission.Resource;
|
import org.thingsboard.server.service.security.permission.Resource;
|
||||||
|
|
||||||
@ -71,7 +71,7 @@ import static org.thingsboard.server.controller.ControllerConstants.UUID_WIKI_LI
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class TbResourceController extends BaseController {
|
public class TbResourceController extends BaseController {
|
||||||
|
|
||||||
private final TbResourceService tbResourceService;
|
private final TbResourceNotifyService tbResourceService;
|
||||||
|
|
||||||
public static final String RESOURCE_ID = "resourceId";
|
public static final String RESOURCE_ID = "resourceId";
|
||||||
|
|
||||||
|
|||||||
@ -65,6 +65,7 @@ import org.thingsboard.server.service.edge.EdgeNotificationService;
|
|||||||
import org.thingsboard.server.service.executors.DbCallbackExecutorService;
|
import org.thingsboard.server.service.executors.DbCallbackExecutorService;
|
||||||
import org.thingsboard.server.service.install.InstallScripts;
|
import org.thingsboard.server.service.install.InstallScripts;
|
||||||
import org.thingsboard.server.service.ota.OtaPackageStateService;
|
import org.thingsboard.server.service.ota.OtaPackageStateService;
|
||||||
|
import org.thingsboard.server.service.resource.TbResourceService;
|
||||||
import org.thingsboard.server.service.rule.TbRuleChainService;
|
import org.thingsboard.server.service.rule.TbRuleChainService;
|
||||||
import org.thingsboard.server.service.security.permission.AccessControlService;
|
import org.thingsboard.server.service.security.permission.AccessControlService;
|
||||||
import org.thingsboard.server.service.telemetry.TelemetrySubscriptionService;
|
import org.thingsboard.server.service.telemetry.TelemetrySubscriptionService;
|
||||||
@ -144,6 +145,8 @@ public abstract class AbstractTbEntityService {
|
|||||||
protected InstallScripts installScripts;
|
protected InstallScripts installScripts;
|
||||||
@Autowired
|
@Autowired
|
||||||
protected UserService userService;
|
protected UserService userService;
|
||||||
|
@Autowired
|
||||||
|
protected TbResourceService resourceService;
|
||||||
|
|
||||||
protected ListenableFuture<Void> removeAlarmsByEntityId(TenantId tenantId, EntityId entityId) {
|
protected ListenableFuture<Void> removeAlarmsByEntityId(TenantId tenantId, EntityId entityId) {
|
||||||
ListenableFuture<PageData<AlarmInfo>> alarmsFuture =
|
ListenableFuture<PageData<AlarmInfo>> alarmsFuture =
|
||||||
|
|||||||
@ -0,0 +1,71 @@
|
|||||||
|
/**
|
||||||
|
* Copyright © 2016-2022 The Thingsboard Authors
|
||||||
|
*
|
||||||
|
* Licensed 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 org.thingsboard.server.service.entitiy.resource;
|
||||||
|
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.thingsboard.server.common.data.EntityType;
|
||||||
|
import org.thingsboard.server.common.data.TbResource;
|
||||||
|
import org.thingsboard.server.common.data.audit.ActionType;
|
||||||
|
import org.thingsboard.server.common.data.exception.ThingsboardException;
|
||||||
|
import org.thingsboard.server.common.data.id.TbResourceId;
|
||||||
|
import org.thingsboard.server.common.data.id.TenantId;
|
||||||
|
import org.thingsboard.server.queue.util.TbCoreComponent;
|
||||||
|
import org.thingsboard.server.service.entitiy.AbstractTbEntityService;
|
||||||
|
import org.thingsboard.server.service.security.model.SecurityUser;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@TbCoreComponent
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Slf4j
|
||||||
|
public class DefaultTbResourceNotifyService extends AbstractTbEntityService implements TbResourceNotifyService {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TbResource save(TbResource tbResource, SecurityUser user) throws ThingsboardException {
|
||||||
|
ActionType actionType = tbResource.getId() == null ? ActionType.ADDED : ActionType.UPDATED;
|
||||||
|
TenantId tenantId = tbResource.getTenantId();
|
||||||
|
try {
|
||||||
|
|
||||||
|
TbResource savedResource = checkNotNull(resourceService.saveResource(tbResource));
|
||||||
|
tbClusterService.onResourceChange(savedResource, null);
|
||||||
|
notificationEntityService.notifyCreateOrUpdateOrDelete(tenantId, null, savedResource.getId(),
|
||||||
|
savedResource, user, actionType, false, null);
|
||||||
|
return savedResource;
|
||||||
|
} catch (Exception e) {
|
||||||
|
notificationEntityService.notifyCreateOrUpdateOrDelete(tenantId, null, emptyId(EntityType.TB_RESOURCE),
|
||||||
|
tbResource, user, actionType, false, e);
|
||||||
|
throw handleException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void delete(TbResource tbResource, SecurityUser user) throws ThingsboardException {
|
||||||
|
TbResourceId resourceId = tbResource.getId();
|
||||||
|
TenantId tenantId = tbResource.getTenantId();
|
||||||
|
try {
|
||||||
|
resourceService.deleteResource(tenantId, resourceId);
|
||||||
|
tbClusterService.onResourceDeleted(tbResource, null);
|
||||||
|
notificationEntityService.notifyCreateOrUpdateOrDelete(tenantId, null, resourceId, tbResource, user, ActionType.DELETED,
|
||||||
|
false, null, resourceId.toString());
|
||||||
|
} catch (Exception e) {
|
||||||
|
notificationEntityService.notifyCreateOrUpdateOrDelete(tenantId, null, emptyId(EntityType.TB_RESOURCE), null, user, ActionType.DELETED,
|
||||||
|
false, e, resourceId.toString());
|
||||||
|
throw handleException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
/**
|
||||||
|
* Copyright © 2016-2022 The Thingsboard Authors
|
||||||
|
*
|
||||||
|
* Licensed 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 org.thingsboard.server.service.entitiy.resource;
|
||||||
|
|
||||||
|
import org.thingsboard.server.common.data.TbResource;
|
||||||
|
import org.thingsboard.server.service.entitiy.SimpleTbEntityService;
|
||||||
|
|
||||||
|
public interface TbResourceNotifyService extends SimpleTbEntityService<TbResource> {
|
||||||
|
}
|
||||||
@ -22,11 +22,9 @@ import org.eclipse.leshan.core.model.DefaultDDFFileValidator;
|
|||||||
import org.eclipse.leshan.core.model.InvalidDDFFileException;
|
import org.eclipse.leshan.core.model.InvalidDDFFileException;
|
||||||
import org.eclipse.leshan.core.model.ObjectModel;
|
import org.eclipse.leshan.core.model.ObjectModel;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.thingsboard.server.common.data.EntityType;
|
|
||||||
import org.thingsboard.server.common.data.ResourceType;
|
import org.thingsboard.server.common.data.ResourceType;
|
||||||
import org.thingsboard.server.common.data.TbResource;
|
import org.thingsboard.server.common.data.TbResource;
|
||||||
import org.thingsboard.server.common.data.TbResourceInfo;
|
import org.thingsboard.server.common.data.TbResourceInfo;
|
||||||
import org.thingsboard.server.common.data.audit.ActionType;
|
|
||||||
import org.thingsboard.server.common.data.exception.ThingsboardErrorCode;
|
import org.thingsboard.server.common.data.exception.ThingsboardErrorCode;
|
||||||
import org.thingsboard.server.common.data.exception.ThingsboardException;
|
import org.thingsboard.server.common.data.exception.ThingsboardException;
|
||||||
import org.thingsboard.server.common.data.id.TbResourceId;
|
import org.thingsboard.server.common.data.id.TbResourceId;
|
||||||
@ -38,8 +36,6 @@ import org.thingsboard.server.common.data.page.PageData;
|
|||||||
import org.thingsboard.server.common.data.page.PageLink;
|
import org.thingsboard.server.common.data.page.PageLink;
|
||||||
import org.thingsboard.server.dao.exception.DataValidationException;
|
import org.thingsboard.server.dao.exception.DataValidationException;
|
||||||
import org.thingsboard.server.dao.resource.ResourceService;
|
import org.thingsboard.server.dao.resource.ResourceService;
|
||||||
import org.thingsboard.server.service.entitiy.AbstractTbEntityService;
|
|
||||||
import org.thingsboard.server.service.security.model.SecurityUser;
|
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -57,7 +53,7 @@ import static org.thingsboard.server.dao.service.Validator.validateId;
|
|||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
public class DefaultTbResourceService extends AbstractTbEntityService implements TbResourceService {
|
public class DefaultTbResourceService implements TbResourceService {
|
||||||
|
|
||||||
private final ResourceService resourceService;
|
private final ResourceService resourceService;
|
||||||
private final DDFFileParser ddfFileParser;
|
private final DDFFileParser ddfFileParser;
|
||||||
@ -219,38 +215,4 @@ public class DefaultTbResourceService extends AbstractTbEntityService implements
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public TbResource save(TbResource tbResource, SecurityUser user) throws ThingsboardException {
|
|
||||||
ActionType actionType = tbResource.getId() == null ? ActionType.ADDED : ActionType.UPDATED;
|
|
||||||
TenantId tenantId = tbResource.getTenantId();
|
|
||||||
try {
|
|
||||||
|
|
||||||
TbResource savedResource = checkNotNull(resourceService.saveResource(tbResource));
|
|
||||||
tbClusterService.onResourceChange(savedResource, null);
|
|
||||||
notificationEntityService.notifyCreateOrUpdateOrDelete(tenantId, null, savedResource.getId(),
|
|
||||||
savedResource, user, actionType, false, null);
|
|
||||||
return savedResource;
|
|
||||||
} catch (Exception e) {
|
|
||||||
notificationEntityService.notifyCreateOrUpdateOrDelete(tenantId, null, emptyId(EntityType.TB_RESOURCE),
|
|
||||||
tbResource, user, actionType, false, e);
|
|
||||||
throw handleException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void delete(TbResource tbResource, SecurityUser user) throws ThingsboardException {
|
|
||||||
TbResourceId resourceId = tbResource.getId();
|
|
||||||
TenantId tenantId = tbResource.getTenantId();
|
|
||||||
try {
|
|
||||||
resourceService.deleteResource(tenantId, resourceId);
|
|
||||||
tbClusterService.onResourceDeleted(tbResource, null);
|
|
||||||
notificationEntityService.notifyCreateOrUpdateOrDelete(tenantId, null, resourceId, tbResource, user, ActionType.DELETED,
|
|
||||||
false, null, resourceId.toString());
|
|
||||||
} catch (Exception e) {
|
|
||||||
notificationEntityService.notifyCreateOrUpdateOrDelete(tenantId, null, emptyId(EntityType.TB_RESOURCE), null, user, ActionType.DELETED,
|
|
||||||
false, e, resourceId.toString());
|
|
||||||
throw handleException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,11 +24,10 @@ import org.thingsboard.server.common.data.id.TenantId;
|
|||||||
import org.thingsboard.server.common.data.lwm2m.LwM2mObject;
|
import org.thingsboard.server.common.data.lwm2m.LwM2mObject;
|
||||||
import org.thingsboard.server.common.data.page.PageData;
|
import org.thingsboard.server.common.data.page.PageData;
|
||||||
import org.thingsboard.server.common.data.page.PageLink;
|
import org.thingsboard.server.common.data.page.PageLink;
|
||||||
import org.thingsboard.server.service.entitiy.SimpleTbEntityService;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface TbResourceService extends SimpleTbEntityService<TbResource> {
|
public interface TbResourceService {
|
||||||
|
|
||||||
TbResource saveResource(TbResource resource) throws ThingsboardException;
|
TbResource saveResource(TbResource resource) throws ThingsboardException;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user