Skip to content
Snippets Groups Projects
Commit 5de56a26 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-5387 don't throw exception when building ozg config object

parent 3c21247e
No related branches found
No related tags found
No related merge requests found
......@@ -36,10 +36,7 @@ public class OzgCloudConfig implements Serializable {
private static final long serialVersionUID = 1L;
public static final String KEY_EINGANGSADAPTER_URL = "eingangsAdapterUrl";
public static final String KEY_PLUGIN_VERSION = "pluginVersion";
// TODO pluginVersion soll hier wieder raus und z.B. direkt in de.ozgcloud.formcycle.errorhandling.NodeThrewExceptionFactory eingebaut werden
private String pluginVersion;
private String eingangsAdapterUrl;
private ProxyConfig proxyConfig;
......
......@@ -67,6 +67,7 @@ public final class OzgCloudPlugin
implements IPluginActionNodeHandler<OzgPluginWorkflowNodeProperties>, IKeyValueSummarizableNode<OzgPluginWorkflowNodeProperties> {
static final String VORGANGNUMMER_PROPERTY_KEY = "vorgangnummer";
public static final String KEY_PLUGIN_VERSION = "pluginVersion";
private final transient PortParser portParser = new PortParser();
private final transient BuildProperties buildProperties = new BuildProperties();
......@@ -172,25 +173,16 @@ public final class OzgCloudPlugin
}
OzgCloudFormDataHttpClient createOzgCloudClient(INodeExecutionParams<OzgPluginWorkflowNodeProperties> params) {
return new OzgCloudFormDataHttpClient(buildOzgCloudConfig(params.getData()), new SystemPropertiesProvider(), portParser,
var ozgCloudConfig = buildOzgCloudConfig(params.getData());
validateOzgCloudConfig(ozgCloudConfig);
return new OzgCloudFormDataHttpClient(ozgCloudConfig, new SystemPropertiesProvider(), portParser,
new OzgCloudResponseHandler(new ObjectMapper()));
}
OzgCloudConfig buildOzgCloudConfig(OzgPluginWorkflowNodeProperties formProperties) {
var ozgCloudConfigBuilder = OzgCloudConfig.builder().pluginVersion(pluginVersion).eingangsAdapterUrl(getEingangsAdapterUrl(formProperties));
ozgPluginPropertiesSupplier.getProxyProperties().ifPresent(ozgCloudConfigBuilder::proxyConfig);
return ozgCloudConfigBuilder.build();
}
String getEingangsAdapterUrl(OzgPluginWorkflowNodeProperties formProperties) {
var eingangsAdapterUrl = formProperties.isUseCustomEingangsAdapterUrl()
? formProperties.getEingangsAdapterUrl()
: ozgPluginPropertiesSupplier.getEingangsAdapterUrl();
if (isBlank(eingangsAdapterUrl)) {
void validateOzgCloudConfig(OzgCloudConfig ozgCloudConfig) {
if (isBlank(ozgCloudConfig.getEingangsAdapterUrl())) {
throw new TechnicalException("Eingangsadapter URL cannot be blank");
}
return eingangsAdapterUrl;
}
PluginFormDataAdapter createFormDataAdapter(INodeExecutionParams<OzgPluginWorkflowNodeProperties> params) {
......@@ -203,7 +195,19 @@ public final class OzgCloudPlugin
}
NodeThrewExceptionFactory createExceptionFactory(INodeExecutionParams<OzgPluginWorkflowNodeProperties> params) {
return new NodeThrewExceptionFactory(params.throwingException(), buildOzgCloudConfig(params.getData()));
return new NodeThrewExceptionFactory(params.throwingException(), pluginVersion, buildOzgCloudConfig(params.getData()));
}
OzgCloudConfig buildOzgCloudConfig(OzgPluginWorkflowNodeProperties formProperties) {
var ozgCloudConfigBuilder = OzgCloudConfig.builder().eingangsAdapterUrl(getEingangsAdapterUrl(formProperties));
ozgPluginPropertiesSupplier.getProxyProperties().ifPresent(ozgCloudConfigBuilder::proxyConfig);
return ozgCloudConfigBuilder.build();
}
String getEingangsAdapterUrl(OzgPluginWorkflowNodeProperties formProperties) {
return formProperties.isUseCustomEingangsAdapterUrl()
? formProperties.getEingangsAdapterUrl()
: ozgPluginPropertiesSupplier.getEingangsAdapterUrl();
}
INormalCompletionResult buildSuccessResult(ExecutionResult pluginExecutionResult, INodeExecutionParams<OzgPluginWorkflowNodeProperties> params) {
......
......@@ -9,17 +9,21 @@ import java.util.Optional;
import org.apache.commons.lang3.StringUtils;
import de.ozgcloud.formcycle.OzgCloudConfig;
import de.ozgcloud.formcycle.OzgCloudPlugin;
import de.xima.fc.exceptions.NodeThrewException;
import de.xima.fc.interfaces.workflow.params.INodeThrewExceptionBuilder;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
@AllArgsConstructor
public class NodeThrewExceptionFactory {
public static final String KEY_EXCEPTION_ID = "exceptionId";
private final INodeThrewExceptionBuilder exceptionBuilder;
private final OzgCloudConfig pluginConfig;
private final String pluginVersion;
private OzgCloudConfig pluginConfig;
public NodeThrewException createInternalException(TechnicalException e) {
return exceptionBuilder
......@@ -48,11 +52,13 @@ public class NodeThrewExceptionFactory {
String formatWithPluginConfig(String message) {
var builder = StringUtils.isBlank(message) ? new StringBuilder("An error happened.") : new StringBuilder(message);
builder.append("\nPlugin configuration:")
.append("\n\t").append(OzgCloudConfig.KEY_PLUGIN_VERSION).append(": ").append(pluginConfig.getPluginVersion())
.append("\n\t").append(OzgCloudConfig.KEY_EINGANGSADAPTER_URL).append(": ").append(pluginConfig.getEingangsAdapterUrl());
.append("\n\t").append(OzgCloudPlugin.KEY_PLUGIN_VERSION).append(": ").append(pluginVersion);
if (nonNull(pluginConfig)) {
builder.append("\n\t").append(OzgCloudConfig.KEY_EINGANGSADAPTER_URL).append(": ").append(pluginConfig.getEingangsAdapterUrl());
if (nonNull(pluginConfig.getProxyConfig())) {
builder.append("\n\t").append(pluginConfig.getProxyConfig());
}
}
return builder.toString();
}
}
......@@ -76,78 +76,68 @@ class OzgCloudPluginTest {
}
@Nested
class TestCreateOzgClient {
class TestCreateOzgCloudClient {
@Mock
private OzgPluginWorkflowNodeProperties formProperties;
@Mock
private NodeThrewExceptionFactory exceptionFactory;
private OzgCloudConfig ozgCloudConfig;
@BeforeEach
void init() {
doNothing().when(plugin).validateOzgCloudConfig(any());
}
@Test
@SneakyThrows
void shouldCallBuildOzgCloudConfig() {
when(invocationParameters.getData()).thenReturn(formProperties);
doReturn("").when(plugin).getEingangsAdapterUrl(any());
plugin.createOzgCloudClient(invocationParameters);
verify(plugin).buildOzgCloudConfig(formProperties);
}
@Nested
class TestEingangsAdapterUrl {
private static final String CUSTOM_URL = "http://custom.url";
@Test
void shouldReturnCustomUrl() {
when(formProperties.getEingangsAdapterUrl()).thenReturn(CUSTOM_URL);
when(formProperties.isUseCustomEingangsAdapterUrl()).thenReturn(true);
void shouldCallValidateOzgCloudConfig() {
doReturn(ozgCloudConfig).when(plugin).buildOzgCloudConfig(any());
var eingangsAdapterUrl = plugin.getEingangsAdapterUrl(formProperties);
plugin.createOzgCloudClient(invocationParameters);
assertThat(eingangsAdapterUrl).isEqualTo(CUSTOM_URL);
verify(plugin).validateOzgCloudConfig(ozgCloudConfig);
}
@Test
void shouldReturnDefaultUrl() {
when(formProperties.isUseCustomEingangsAdapterUrl()).thenReturn(false);
when(propertiesMapper.getEingangsAdapterUrl()).thenReturn(PropertiesTestFactory.EINGANGSADAPTER_URL);
}
var eingangsAdapterUrl = plugin.getEingangsAdapterUrl(formProperties);
@Nested
class TestValidateOzgCloudConfig {
assertThat(eingangsAdapterUrl).isEqualTo(PropertiesTestFactory.EINGANGSADAPTER_URL);
@Test
void shouldValidateEingangsAdapterUrl() {
var ozgCloudConfig = OzgCloudConfigTestFactory.create();
assertDoesNotThrow(() -> plugin.validateOzgCloudConfig(ozgCloudConfig));
}
@Test
void shouldThrowExceptionIfNoUrl() {
when(formProperties.isUseCustomEingangsAdapterUrl()).thenReturn(false);
void shouldThrowExceptionWhenMissingEngangsadapterUrl() {
var ozgCloudConfig = OzgCloudConfig.builder().build();
assertThrows(TechnicalException.class, () -> plugin.getEingangsAdapterUrl(formProperties));
assertThrows(TechnicalException.class, () -> plugin.validateOzgCloudConfig(ozgCloudConfig));
}
}
@Nested
class TestBuildOzgClientConfig {
@Mock
private Properties properties;
private OzgPluginWorkflowNodeProperties formProperties;
@BeforeEach
void init() {
when(propertiesMapper.getEingangsAdapterUrl()).thenReturn(PropertiesTestFactory.EINGANGSADAPTER_URL);
}
@Test
void shouldSetPluginVersion() {
var pluginVersion = "version";
setPluginVersion(pluginVersion);
var ozgClientConfig = buildOzgCloudConfig();
assertThat(ozgClientConfig.getPluginVersion()).isEqualTo(pluginVersion);
}
@Test
void shouldSetEingangsAdapterUrl() {
var ozgClientConfig = buildOzgCloudConfig();
......@@ -170,13 +160,34 @@ class OzgCloudPluginTest {
private OzgCloudConfig buildOzgCloudConfig() {
return plugin.buildOzgCloudConfig(formProperties);
}
}
@SneakyThrows
private void setPluginVersion(String pluginVersion) {
var pluginVersionField = OzgCloudPlugin.class.getDeclaredField("pluginVersion");
pluginVersionField.setAccessible(true);
pluginVersionField.set(plugin, pluginVersion);
@Nested
class TestGetEingangsAdapterUrl {
private static final String CUSTOM_URL = "http://custom.url";
@Mock
private OzgPluginWorkflowNodeProperties formProperties;
@Test
void shouldReturnCustomUrl() {
when(formProperties.getEingangsAdapterUrl()).thenReturn(CUSTOM_URL);
when(formProperties.isUseCustomEingangsAdapterUrl()).thenReturn(true);
var eingangsAdapterUrl = plugin.getEingangsAdapterUrl(formProperties);
assertThat(eingangsAdapterUrl).isEqualTo(CUSTOM_URL);
}
@Test
void shouldReturnDefaultUrl() {
when(formProperties.isUseCustomEingangsAdapterUrl()).thenReturn(false);
when(propertiesMapper.getEingangsAdapterUrl()).thenReturn(PropertiesTestFactory.EINGANGSADAPTER_URL);
var eingangsAdapterUrl = plugin.getEingangsAdapterUrl(formProperties);
assertThat(eingangsAdapterUrl).isEqualTo(PropertiesTestFactory.EINGANGSADAPTER_URL);
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment