Skip to content

Commit

Permalink
Feauter/archunit hexagonal (#1811)
Browse files Browse the repository at this point in the history
* example-integration refactor streaming response

* unit-test lib init new hexagonal ArchUnit test

* example integration add hex ArchUnit test

* unit-test lib init hex ArchUnit adapters not depending on each other

* address-integration refactor for ArchUnit

* alw-integration refactor for ArchUnit

* cosys-integration refactor for ArchUnit

* dms-integration refactor for ArchUnit

* email-integration refactor for ArchUnit

* cosys-integration refactor for ArchUnit

* okewo-integration refactor for ArchUnit

* ticket-integration refactor for ArchUnit

* openai-integration refactor for ArchUnit

* connector refactor for ArchUnit

* integrations unit test lib as parent dependency

* connector refactor for ArchUnit

* integration fix naming from refactoring for ArchUnit

* integration fix test packages after ArchUnit refactoring

* integration fix test packages after ArchUnit refactoring

* integration fix test packages after ArchUnit refactoring
  • Loading branch information
simonhir authored Jul 4, 2024
1 parent d1174c6 commit 652acf3
Show file tree
Hide file tree
Showing 201 changed files with 1,399 additions and 2,170 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package de.muenchen.oss.digiwf.connector;

import com.tngtech.archunit.junit.AnalyzeClasses;
import com.tngtech.archunit.junit.ArchTest;
import com.tngtech.archunit.junit.ArchTests;
import de.muenchen.oss.digiwf.archunit.HexagonalArchitectureTest;

@AnalyzeClasses
public class ArchitectureTest {
@ArchTest
static final ArchTests hexagonalArchitecture = ArchTests.in(HexagonalArchitectureTest.class);
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package de.muenchen.oss.digiwf.connector.adapter.camunda.rest.in;
package de.muenchen.oss.digiwf.connector.adapter.in.camunda.rest;

import de.muenchen.oss.digiwf.connector.adapter.camunda.rest.mapper.EngineDataSerializer;
import de.muenchen.oss.digiwf.connector.core.application.port.in.ExecuteTaskInPort;
import de.muenchen.oss.digiwf.connector.core.application.port.in.ExecuteTaskInPort.ExecuteTaskCommand;
import de.muenchen.oss.digiwf.connector.core.domain.IntegrationNameConfigException;
Expand All @@ -22,7 +21,7 @@ public class CamundaClient implements ExternalTaskHandler {

private final ExecuteTaskInPort executeTaskInPort;
private final CamundaClientConfiguration outputConfiguration;
private final EngineDataSerializer serializer;
private final FromEngineDataMapper mapper;

@Override
public void execute(final ExternalTask externalTask, final ExternalTaskService externalTaskService) {
Expand Down Expand Up @@ -54,7 +53,7 @@ public void execute(final ExternalTask externalTask, final ExternalTaskService e
} catch (final ProcessDefinitionLoadingException e) {
externalTaskService.handleFailure(externalTask, e.getMessage(), e.getDetailedMessage(), 0, 0);
} catch (final Exception e) {
externalTaskService.handleFailure(externalTask, e.getMessage(), ExceptionUtils.getStackTrace(e),0, 0);
externalTaskService.handleFailure(externalTask, e.getMessage(), ExceptionUtils.getStackTrace(e), 0, 0);
}
}

Expand All @@ -67,7 +66,7 @@ private Map<String, Object> filterVariables(final Map<String, Object> variables)
}

private Map<String, Object> getData(final ExternalTask externalTask) {
return this.serializer.fromEngineData(externalTask.getAllVariablesTyped());
return this.mapper.fromEngineData(externalTask.getAllVariablesTyped());
}


Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package de.muenchen.oss.digiwf.connector.adapter.camunda.rest.in;
package de.muenchen.oss.digiwf.connector.adapter.in.camunda.rest;

import lombok.RequiredArgsConstructor;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
package de.muenchen.oss.digiwf.connector.adapter.camunda.rest.mapper;
package de.muenchen.oss.digiwf.connector.adapter.in.camunda.rest;

import org.camunda.bpm.engine.variable.VariableMap;
import org.camunda.bpm.engine.variable.value.TypedValue;
import org.camunda.community.rest.client.model.VariableValueDto;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.stereotype.Component;
Expand All @@ -12,18 +11,7 @@


@Component
public class EngineDataSerializer {

public Map<String, VariableValueDto> toEngineData(final Map<String, Object> data) {
final JSONObject jsonData = new JSONObject(data);
final Map<String, VariableValueDto> variables = new HashMap<>();
jsonData.keySet().forEach(key -> {
final Object value = jsonData.get(key);
variables.put(key, this.toEngineData(value));
}
);
return variables;
}
public class FromEngineDataMapper {

public Map<String, Object> fromEngineData(final VariableMap variables) {
final Map<String, Object> data = new HashMap<>();
Expand All @@ -39,17 +27,6 @@ public Map<String, Object> fromEngineData(final VariableMap variables) {
return data;
}

public VariableValueDto toEngineData(final Object value) {
final VariableValueDto variableValueDto = new VariableValueDto();
if (value instanceof JSONObject || value instanceof JSONArray) {
variableValueDto.setValue(value.toString());
variableValueDto.setType("json");
} else {
variableValueDto.setValue(value);
}
return variableValueDto;
}

//---------------------------------- helper methods ----------------------------------//

private Object fromEngineData(final Object value) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package de.muenchen.oss.digiwf.connector.adapter.camunda.rest.out;
package de.muenchen.oss.digiwf.connector.adapter.out.camunda.rest;


import de.muenchen.oss.digiwf.connector.adapter.camunda.rest.mapper.EngineDataSerializer;
import de.muenchen.oss.digiwf.connector.core.application.port.out.CreateBpmnErrorOutPort;
import de.muenchen.oss.digiwf.connector.core.domain.BpmnError;
import lombok.RequiredArgsConstructor;
Expand All @@ -20,7 +19,7 @@ public class BpmnErrorAdapter implements CreateBpmnErrorOutPort {
public static final String VARIABLEKEY_ERROR_MESSAGE = "errorMessage";

private final MessageApi messageApi;
private final EngineDataSerializer serializer;
private final ToEngineDataMapper mapper;

@Override
public void createBpmnError(final BpmnError bpmnError) {
Expand All @@ -34,11 +33,11 @@ public void createBpmnError(final BpmnError bpmnError) {
}

if (StringUtils.isNotBlank(bpmnError.getErrorCode())) {
correlationMessageDto.putProcessVariablesItem(VARIABLEKEY_ERROR_CODE, this.serializer.toEngineData(bpmnError.getErrorCode()));
correlationMessageDto.putProcessVariablesItem(VARIABLEKEY_ERROR_CODE, this.mapper.toEngineData(bpmnError.getErrorCode()));
}

if (StringUtils.isNotBlank(bpmnError.getErrorMessage())) {
correlationMessageDto.putProcessVariablesItem(VARIABLEKEY_ERROR_MESSAGE, this.serializer.toEngineData(bpmnError.getErrorMessage()));
correlationMessageDto.putProcessVariablesItem(VARIABLEKEY_ERROR_MESSAGE, this.mapper.toEngineData(bpmnError.getErrorMessage()));
}

this.messageApi.deliverMessage(correlationMessageDto);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package de.muenchen.oss.digiwf.connector.adapter.camunda.rest.out;
package de.muenchen.oss.digiwf.connector.adapter.out.camunda.rest;

import de.muenchen.oss.digiwf.connector.core.application.port.out.CreateIncidentOutPort;
import lombok.RequiredArgsConstructor;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package de.muenchen.oss.digiwf.connector.adapter.camunda.rest.out;
package de.muenchen.oss.digiwf.connector.adapter.out.camunda.rest;


import de.muenchen.oss.digiwf.connector.adapter.camunda.rest.mapper.EngineDataSerializer;
import de.muenchen.oss.digiwf.connector.core.application.port.out.CorrelateMessageOutPort;
import de.muenchen.oss.digiwf.connector.core.domain.MessageCorrelation;
import lombok.RequiredArgsConstructor;
Expand All @@ -20,7 +19,7 @@
public class MessageAdapter implements CorrelateMessageOutPort {

private final MessageApi messageApi;
private final EngineDataSerializer serializer;
private final ToEngineDataMapper mapper;

@Override
public void correlateMessage(final MessageCorrelation messageCorrelation) {
Expand All @@ -30,12 +29,12 @@ public void correlateMessage(final MessageCorrelation messageCorrelation) {
correlationMessageDto.setMessageName(messageCorrelation.getMessageName());

if (messageCorrelation.getPayloadVariables() != null && !messageCorrelation.getPayloadVariables().isEmpty()) {
final Map<String, VariableValueDto> variables = this.serializer.toEngineData(messageCorrelation.getPayloadVariables());
final Map<String, VariableValueDto> variables = this.mapper.toEngineData(messageCorrelation.getPayloadVariables());
correlationMessageDto.setProcessVariables(variables);
}

if (messageCorrelation.getPayloadVariablesLocal() != null && !messageCorrelation.getPayloadVariablesLocal().isEmpty()) {
final Map<String, VariableValueDto> variables = this.serializer.toEngineData(messageCorrelation.getPayloadVariablesLocal());
final Map<String, VariableValueDto> variables = this.mapper.toEngineData(messageCorrelation.getPayloadVariablesLocal());
correlationMessageDto.setProcessVariablesLocal(variables);
}

Expand All @@ -46,7 +45,7 @@ public void correlateMessage(final MessageCorrelation messageCorrelation) {
if (StringUtils.isNotBlank(messageCorrelation.getBusinessKey())) {
correlationMessageDto.setBusinessKey(messageCorrelation.getBusinessKey());
}

this.messageApi.deliverMessage(correlationMessageDto);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package de.muenchen.oss.digiwf.connector.adapter.out.camunda.rest;

import org.camunda.community.rest.client.model.VariableValueDto;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;


@Component
public class ToEngineDataMapper {

public Map<String, VariableValueDto> toEngineData(final Map<String, Object> data) {
final JSONObject jsonData = new JSONObject(data);
final Map<String, VariableValueDto> variables = new HashMap<>();
jsonData.keySet().forEach(key -> {
final Object value = jsonData.get(key);
variables.put(key, this.toEngineData(value));
}
);
return variables;
}

public VariableValueDto toEngineData(final Object value) {
final VariableValueDto variableValueDto = new VariableValueDto();
if (value instanceof JSONObject || value instanceof JSONArray) {
variableValueDto.setValue(value.toString());
variableValueDto.setType("json");
} else {
variableValueDto.setValue(value);
}
return variableValueDto;
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package de.muenchen.oss.digiwf.connector.adapter.camunda.rest.out.processdefinition;
package de.muenchen.oss.digiwf.connector.adapter.out.camunda.rest.processdefinition;

import de.muenchen.oss.digiwf.connector.core.application.port.out.ProcessOutPort;
import de.muenchen.oss.digiwf.connector.core.domain.ProcessDefinitionLoadingException;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package de.muenchen.oss.digiwf.connector.adapter.camunda.rest.out.processdefinition;
package de.muenchen.oss.digiwf.connector.adapter.out.camunda.rest.processdefinition;

import de.muenchen.oss.digiwf.spring.security.client.DigiwfFeignOauthClientConfig;
import org.springframework.cloud.openfeign.FeignClient;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package de.muenchen.oss.digiwf.connector.adapter.camunda.rest.out.processdefinition;
package de.muenchen.oss.digiwf.connector.adapter.out.camunda.rest.processdefinition;

import lombok.AllArgsConstructor;
import lombok.Builder;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package de.muenchen.oss.digiwf.connector.adapter.camunda.rest;
package de.muenchen.oss.digiwf.connector.camunda.rest;

import de.muenchen.oss.digiwf.connector.adapter.camunda.rest.in.CamundaClient;
import de.muenchen.oss.digiwf.connector.adapter.camunda.rest.in.CamundaClientConfiguration;
import de.muenchen.oss.digiwf.connector.adapter.camunda.rest.mapper.EngineDataSerializer;
import de.muenchen.oss.digiwf.connector.core.adapter.out.EventEmitterAdapter;
import de.muenchen.oss.digiwf.connector.adapter.in.camunda.rest.CamundaClient;
import de.muenchen.oss.digiwf.connector.adapter.in.camunda.rest.CamundaClientConfiguration;
import de.muenchen.oss.digiwf.connector.adapter.in.camunda.rest.FromEngineDataMapper;
import de.muenchen.oss.digiwf.connector.core.adapter.out.streaming.EventEmitterAdapter;
import de.muenchen.oss.digiwf.connector.core.application.port.in.ExecuteTaskInPort;
import de.muenchen.oss.digiwf.connector.core.application.port.out.EmitEventOutPort;
import lombok.RequiredArgsConstructor;
Expand All @@ -22,9 +22,9 @@


@RequiredArgsConstructor
@ComponentScan(basePackages = "de.muenchen.oss.digiwf.connector.adapter.camunda.rest")
@ComponentScan(basePackages = "de.muenchen.oss.digiwf.connector.adapter.*.camunda.rest")
@EnableConfigurationProperties(DigiWFCamundaConnectorProperties.class)
@EnableFeignClients(basePackages = "de.muenchen.oss.digiwf.connector.adapter.camunda.rest.out")
@EnableFeignClients(basePackages = "de.muenchen.oss.digiwf.connector.adapter.out.camunda.rest")
public class DigiWFCamundaConnectorAutoConfiguration {


Expand All @@ -44,8 +44,9 @@ public EmitEventOutPort outputService(final Sinks.Many<Message<Map<String, Objec

@Bean
@ExternalTaskSubscription("generic-output")
public CamundaClient camundaOutputClient(final ExecuteTaskInPort executeTaskInPort, final CamundaClientConfiguration camundaOutputConfiguration, final EngineDataSerializer engineDataSerializer) {
return new CamundaClient(executeTaskInPort, camundaOutputConfiguration, engineDataSerializer);
public CamundaClient camundaOutputClient(final ExecuteTaskInPort executeTaskInPort, final CamundaClientConfiguration camundaOutputConfiguration, final
FromEngineDataMapper fromEngineDataMapper) {
return new CamundaClient(executeTaskInPort, camundaOutputConfiguration, fromEngineDataMapper);
}

}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package de.muenchen.oss.digiwf.connector.adapter.camunda.rest;
package de.muenchen.oss.digiwf.connector.camunda.rest;

import lombok.Getter;
import lombok.Setter;
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1 @@
de.muenchen.oss.digiwf.connector.adapter.camunda.rest.DigiWFCamundaConnectorAutoConfiguration
de.muenchen.oss.digiwf.connector.camunda.rest.DigiWFCamundaConnectorAutoConfiguration

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package de.muenchen.oss.digiwf.connector.adapter.camunda.rest.in;
package de.muenchen.oss.digiwf.connector.adapter.in.camunda.rest;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package de.muenchen.oss.digiwf.connector.adapter.camunda.rest.in;
package de.muenchen.oss.digiwf.connector.adapter.in.camunda.rest;

import de.muenchen.oss.digiwf.connector.adapter.camunda.rest.mapper.EngineDataSerializer;
import de.muenchen.oss.digiwf.connector.core.application.port.in.ExecuteTaskInPort;
import org.camunda.bpm.client.task.ExternalTask;
import org.camunda.bpm.client.task.ExternalTaskService;
Expand All @@ -27,7 +26,7 @@ class CamundaClientTest {
private CamundaClientConfiguration clientConfiguration;

@Mock
private EngineDataSerializer serializer;
private FromEngineDataMapper serializer;

@Mock
private ExternalTask externalTask;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
package de.muenchen.oss.digiwf.connector.adapter.camunda.rest.out;
package de.muenchen.oss.digiwf.connector.adapter.out.camunda.rest;


import de.muenchen.oss.digiwf.connector.adapter.BaseSpringTest;
import de.muenchen.oss.digiwf.connector.adapter.camunda.rest.mapper.EngineDataSerializer;
import de.muenchen.oss.digiwf.connector.core.domain.BpmnError;
import org.camunda.community.rest.client.api.MessageApi;
import org.junit.jupiter.api.*;
Expand All @@ -14,21 +13,21 @@
import static org.mockito.Mockito.verify;

@DisplayName("Bpmn error Service Test")
@Import({EngineDataSerializer.class})
@Import({ToEngineDataMapper.class})
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class BpmnErrorAdapterTest extends BaseSpringTest {

@Mock
private MessageApi messageApi;

@Autowired
private EngineDataSerializer engineDataSerializer;
private ToEngineDataMapper toEngineDataMapper;

private BpmnErrorAdapter bpmnErrorService;

@BeforeEach
private void initTests() {
this.bpmnErrorService = new BpmnErrorAdapter(this.messageApi, this.engineDataSerializer);
this.bpmnErrorService = new BpmnErrorAdapter(this.messageApi, this.toEngineDataMapper);
}

@Order(1)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package de.muenchen.oss.digiwf.connector.adapter.camunda.rest.out;
package de.muenchen.oss.digiwf.connector.adapter.out.camunda.rest;

import org.camunda.community.rest.client.api.EventSubscriptionApi;
import org.camunda.community.rest.client.api.ExecutionApi;
Expand Down
Loading

0 comments on commit 652acf3

Please sign in to comment.