Skip to content

Commit 4b72826

Browse files
committed
feat: refactor module update process to use ModuleDTO and enhance decryption handling
1 parent 9dc1296 commit 4b72826

File tree

5 files changed

+47
-33
lines changed

5 files changed

+47
-33
lines changed

backend/src/main/java/com/park/utmstack/event_processor/EventProcessorManagerService.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import com.park.utmstack.domain.application_modules.UtmModule;
55
import com.park.utmstack.domain.application_modules.UtmModuleGroup;
66
import com.park.utmstack.domain.application_modules.enums.ModuleName;
7+
import com.park.utmstack.service.dto.application_modules.ModuleDTO;
8+
import com.park.utmstack.service.dto.application_modules.UtmModuleMapper;
79
import com.park.utmstack.service.web_clients.rest_template.RestTemplateService;
810
import com.park.utmstack.util.CipherUtil;
911
import lombok.RequiredArgsConstructor;
@@ -34,7 +36,7 @@ public class EventProcessorManagerService {
3436
System.getenv(Constants.ENV_EVENT_PROCESSOR_HOST) + ":" +
3537
System.getenv(Constants.ENV_EVENT_PROCESSOR_PORT);
3638

37-
public void updateModule(UtmModule module) {
39+
public void updateModule(ModuleDTO module) {
3840
final String ctx = CLASSNAME + ".updateModule";
3941

4042
String url = UriComponentsBuilder
@@ -60,10 +62,19 @@ public void updateModule(UtmModule module) {
6062

6163
public void decryptModuleConfig (UtmModule module){
6264
Set<UtmModuleGroup> groups = module.getModuleGroups();
65+
decryptModuleGroupsConfig(groups, module.getModuleName());
66+
}
67+
68+
public void decryptModuleConfig (ModuleDTO moduleDTO){
69+
Set<UtmModuleGroup> groups = moduleDTO.getModuleGroups();
70+
decryptModuleGroupsConfig(groups, moduleDTO.getModuleName());
71+
}
72+
73+
private void decryptModuleGroupsConfig(Set<UtmModuleGroup> groups, ModuleName moduleName) {
6374
groups.forEach((gp) -> {
6475
gp.getModuleGroupConfigurations().forEach((gpc) -> {
6576
if ((gpc.getConfDataType().equals(Constants.CONF_TYPE_PASSWORD) && StringUtils.hasText(gpc.getConfValue()))
66-
|| (gpc.getConfDataType().equals(Constants.CONF_TYPE_FILE) && StringUtils.hasText(gpc.getConfValue())) && typeFileNeedsDecryptList.contains(module.getModuleName())) {
77+
|| (gpc.getConfDataType().equals(Constants.CONF_TYPE_FILE) && StringUtils.hasText(gpc.getConfValue())) && typeFileNeedsDecryptList.contains(moduleName)) {
6778
gpc.setConfValue(CipherUtil.decrypt(gpc.getConfValue(), System.getenv(Constants.ENV_ENCRYPTION_KEY)));
6879
}
6980
});

backend/src/main/java/com/park/utmstack/service/application_modules/UtmModuleGroupConfigurationService.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@
88
import com.park.utmstack.repository.application_modules.UtmModuleRepository;
99
import com.park.utmstack.event_processor.EventProcessorManagerService;
1010
import com.park.utmstack.util.CipherUtil;
11+
import com.park.utmstack.util.exceptions.ApiException;
1112
import lombok.RequiredArgsConstructor;
12-
import org.apache.commons.lang3.SerializationUtils;
13+
import org.springframework.http.HttpStatus;
1314
import org.springframework.stereotype.Service;
1415
import org.springframework.transaction.annotation.Transactional;
1516
import org.springframework.util.CollectionUtils;
@@ -53,11 +54,11 @@ public void createConfigurationKeys(List<UtmModuleGroupConfiguration> keys) thro
5354
* @param keys List of configuration keys to save
5455
* @throws Exception In case of any error
5556
*/
56-
public void updateConfigurationKeys(Long moduleId, List<UtmModuleGroupConfiguration> keys) throws Exception {
57+
public UtmModule updateConfigurationKeys(Long moduleId, List<UtmModuleGroupConfiguration> keys) throws Exception {
5758
final String ctx = CLASSNAME + ".updateConfigurationKeys";
5859
try {
5960
if (CollectionUtils.isEmpty(keys))
60-
return;
61+
throw new ApiException("No configuration keys were provided to update", HttpStatus.BAD_REQUEST);
6162
for (UtmModuleGroupConfiguration key : keys) {
6263
if (key.getConfRequired() && !StringUtils.hasText(key.getConfValue()))
6364
throw new Exception(String.format("No value was found for required configuration: %1$s (%2$s)", key.getConfName(), key.getConfKey()));
@@ -67,14 +68,14 @@ public void updateConfigurationKeys(Long moduleId, List<UtmModuleGroupConfigurat
6768
moduleConfigurationRepository.saveAll(keys);
6869

6970
List<ModuleName> needRestartModules = Arrays.asList(ModuleName.AWS_IAM_USER, ModuleName.AZURE,
70-
ModuleName.GCP, ModuleName.SOPHOS);
71+
ModuleName.GCP, ModuleName.SOPHOS);
7172

72-
moduleRepository.findById(moduleId).ifPresent(module -> {
73-
module.setNeedsRestart(needRestartModules.contains(module.getModuleName()));
74-
moduleRepository.save(module);
75-
UtmModule detached = SerializationUtils.clone(module);
76-
eventProcessorManagerService.updateModule(detached);
77-
});
73+
return moduleRepository.findById(moduleId)
74+
.map(module -> {
75+
module.setNeedsRestart(needRestartModules.contains(module.getModuleName()));
76+
return moduleRepository.save(module);
77+
})
78+
.orElseThrow(() -> new ApiException(String.format("Module with ID %1$s not found", moduleId), HttpStatus.NOT_FOUND));
7879
} catch (Exception e) {
7980
throw new Exception(ctx + ": " + e.getMessage());
8081
}

backend/src/main/java/com/park/utmstack/service/application_modules/UtmModuleService.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,10 @@
88
import com.park.utmstack.repository.UtmModuleGroupRepository;
99
import com.park.utmstack.repository.application_modules.UtmModuleRepository;
1010
import com.park.utmstack.service.UtmMenuService;
11-
import com.park.utmstack.event_processor.EventProcessorManagerService;
1211
import com.park.utmstack.service.dto.application_modules.ModuleActivationDTO;
1312
import com.park.utmstack.service.index_pattern.UtmIndexPatternService;
1413
import com.park.utmstack.service.logstash_filter.UtmLogstashFilterService;
1514
import lombok.RequiredArgsConstructor;
16-
import org.apache.commons.lang3.SerializationUtils;
1715
import org.slf4j.Logger;
1816
import org.slf4j.LoggerFactory;
1917
import org.springframework.data.domain.Page;
@@ -24,7 +22,6 @@
2422

2523
import java.util.List;
2624
import java.util.NoSuchElementException;
27-
import java.util.Objects;
2825
import java.util.Optional;
2926

3027
/**
@@ -43,7 +40,6 @@ public class UtmModuleService {
4340
private final UtmIndexPatternService indexPatternService;
4441
private final UtmLogstashFilterService logstashFilterService;
4542
private final UtmModuleGroupRepository moduleGroupRepository;
46-
private final EventProcessorManagerService eventProcessorManagerService;
4743

4844

4945
/**
@@ -74,9 +70,6 @@ public UtmModule activateDeactivate(ModuleActivationDTO moduleActivationDTO) {
7470
enableDisableModuleIndexPatterns(nameShort, activationStatus);
7571
enableDisableModuleFilter(nameShort, activationStatus);
7672

77-
UtmModule detached = SerializationUtils.clone(module);
78-
eventProcessorManagerService.updateModule(detached);
79-
8073
return module;
8174
})
8275
.orElseThrow(() -> new NoSuchElementException(

backend/src/main/java/com/park/utmstack/web/rest/application_modules/UtmModuleGroupConfigurationResource.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,14 @@
22

33
import com.park.utmstack.aop.logging.AuditEvent;
44
import com.park.utmstack.domain.application_events.enums.ApplicationEventType;
5+
import com.park.utmstack.domain.application_modules.UtmModule;
56
import com.park.utmstack.domain.application_modules.UtmModuleGroupConfiguration;
7+
import com.park.utmstack.event_processor.EventProcessorManagerService;
68
import com.park.utmstack.service.application_events.ApplicationEventService;
79
import com.park.utmstack.service.application_modules.UtmModuleGroupConfigurationService;
810
import com.park.utmstack.service.dto.application_modules.GroupConfigurationDTO;
11+
import com.park.utmstack.service.dto.application_modules.ModuleDTO;
12+
import com.park.utmstack.service.dto.application_modules.UtmModuleMapper;
913
import com.park.utmstack.web.rest.util.HeaderUtil;
1014
import lombok.RequiredArgsConstructor;
1115
import org.slf4j.Logger;
@@ -27,6 +31,8 @@ public class UtmModuleGroupConfigurationResource {
2731
private final Logger log = LoggerFactory.getLogger(UtmModuleGroupConfigurationResource.class);
2832
private final UtmModuleGroupConfigurationService moduleGroupConfigurationService;
2933
private final ApplicationEventService applicationEventService;
34+
private final UtmModuleMapper utmModuleMapper;
35+
private final EventProcessorManagerService eventProcessorManagerService;
3036

3137

3238
@PutMapping("/module-group-configurations/update")
@@ -39,7 +45,10 @@ public class UtmModuleGroupConfigurationResource {
3945
public ResponseEntity<Void> updateConfiguration(@Valid @RequestBody GroupConfigurationDTO body) {
4046
final String ctx = CLASSNAME + ".updateConfiguration";
4147
try {
42-
moduleGroupConfigurationService.updateConfigurationKeys(body.getModuleId(), body.getKeys());
48+
UtmModule module = moduleGroupConfigurationService.updateConfigurationKeys(body.getModuleId(), body.getKeys());
49+
ModuleDTO moduleDTO = utmModuleMapper.toDto(module, false);
50+
eventProcessorManagerService.updateModule(moduleDTO);
51+
4352
return ResponseEntity.ok().build();
4453
} catch (Exception e) {
4554
String msg = ctx + ": " + e.getMessage();

backend/src/main/java/com/park/utmstack/web/rest/application_modules/UtmModuleResource.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,10 @@
1313
import com.park.utmstack.service.application_modules.UtmModuleQueryService;
1414
import com.park.utmstack.service.application_modules.UtmModuleService;
1515
import com.park.utmstack.event_processor.EventProcessorManagerService;
16-
import com.park.utmstack.service.dto.application_modules.CheckRequirementsResponse;
17-
import com.park.utmstack.service.dto.application_modules.ModuleActivationDTO;
18-
import com.park.utmstack.service.dto.application_modules.ModuleDTO;
19-
import com.park.utmstack.service.dto.application_modules.UtmModuleCriteria;
16+
import com.park.utmstack.service.dto.application_modules.*;
2017
import com.park.utmstack.util.ResponseUtil;
2118
import com.park.utmstack.web.rest.util.PaginationUtil;
22-
import lombok.Getter;
2319
import lombok.RequiredArgsConstructor;
24-
import lombok.Setter;
2520
import org.slf4j.Logger;
2621
import org.slf4j.LoggerFactory;
2722
import org.springframework.data.domain.Page;
@@ -48,8 +43,8 @@ public class UtmModuleResource {
4843
private final UtmModuleQueryService utmModuleQueryService;
4944
private final ApplicationEventService eventService;
5045
private final UtmServerRepository utmServerRepository;
51-
// List of configurations of type 'file' that needs content decryption
5246
private final EventProcessorManagerService eventProcessorManagerService;
47+
private final UtmModuleMapper utmModuleMapper;
5348

5449

5550

@@ -60,14 +55,19 @@ public class UtmModuleResource {
6055
successMessage = "Module activated/deactivated successfully"
6156
)
6257
@PutMapping("/utm-modules/activateDeactivate")
63-
public ResponseEntity<UtmModule> activateDeactivate(@RequestParam Long serverId,
58+
public ResponseEntity<ModuleDTO> activateDeactivate(@RequestParam Long serverId,
6459
@RequestParam ModuleName nameShort,
6560
@RequestParam Boolean activationStatus) {
66-
return ResponseEntity.ok(moduleService.activateDeactivate(ModuleActivationDTO.builder()
67-
.serverId(serverId)
68-
.moduleName(nameShort)
69-
.activationStatus(activationStatus)
70-
.build()));
61+
62+
UtmModule module = moduleService.activateDeactivate(ModuleActivationDTO.builder()
63+
.serverId(serverId)
64+
.moduleName(nameShort)
65+
.activationStatus(activationStatus)
66+
.build());
67+
ModuleDTO moduleDTO = utmModuleMapper.toDto(module, false);
68+
eventProcessorManagerService.updateModule(moduleDTO);
69+
70+
return ResponseEntity.ok(moduleDTO);
7171
}
7272

7373
/**

0 commit comments

Comments
 (0)