Skip to content

Commit 51c21bf

Browse files
committed
added jsonMapper to saas auth
1 parent df12ccd commit 51c21bf

10 files changed

+91
-30
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
package io.camunda.zeebe.spring.client;
22

3+
import static com.fasterxml.jackson.databind.DeserializationFeature.ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT;
4+
import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;
5+
36
import com.fasterxml.jackson.databind.ObjectMapper;
7+
import io.camunda.common.json.SdkObjectMapper;
48
import io.camunda.zeebe.client.ZeebeClient;
59
import io.camunda.zeebe.client.api.JsonMapper;
610
import io.camunda.zeebe.client.impl.ZeebeObjectMapper;
711
import io.camunda.zeebe.spring.client.configuration.*;
812
import io.camunda.zeebe.spring.client.event.ZeebeLifecycleEventProducer;
913
import io.camunda.zeebe.spring.client.testsupport.SpringZeebeTestContext;
14+
import java.lang.invoke.MethodHandles;
1015
import org.slf4j.Logger;
1116
import org.slf4j.LoggerFactory;
1217
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
@@ -17,15 +22,7 @@
1722
import org.springframework.context.annotation.Bean;
1823
import org.springframework.context.annotation.Configuration;
1924

20-
import java.lang.invoke.MethodHandles;
21-
22-
import static com.fasterxml.jackson.databind.DeserializationFeature.ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT;
23-
import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;
24-
25-
/**
26-
*
27-
* Enabled by META-INF of Spring Boot Starter to provide beans for Camunda Clients
28-
*/
25+
/** Enabled by META-INF of Spring Boot Starter to provide beans for Camunda Clients */
2926
@Configuration
3027
@ImportAutoConfiguration({
3128
ZeebeClientProdAutoConfiguration.class,
@@ -35,34 +32,49 @@
3532
ZeebeActuatorConfiguration.class,
3633
MetricsDefaultConfiguration.class
3734
})
38-
@AutoConfigureAfter(JacksonAutoConfiguration.class) // make sure Spring created ObjectMapper is preferred if available
35+
@AutoConfigureAfter(
36+
JacksonAutoConfiguration
37+
.class) // make sure Spring created ObjectMapper is preferred if available
3938
public class CamundaAutoConfiguration {
4039

40+
public static final ObjectMapper DEFAULT_OBJECT_MAPPER =
41+
new ObjectMapper()
42+
.configure(FAIL_ON_UNKNOWN_PROPERTIES, false)
43+
.configure(ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT, true);
4144
private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
4245

43-
public static final ObjectMapper DEFAULT_OBJECT_MAPPER = new ObjectMapper()
44-
.configure(FAIL_ON_UNKNOWN_PROPERTIES, false)
45-
.configure(ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT, true);
46-
4746
@Bean
48-
@ConditionalOnMissingBean(SpringZeebeTestContext.class) // only run if we are not running in a test case - as otherwise the the lifecycle is controlled by the test
49-
public ZeebeLifecycleEventProducer zeebeLifecycleEventProducer(final ZeebeClient client, final ApplicationEventPublisher publisher) {
47+
@ConditionalOnMissingBean(
48+
SpringZeebeTestContext
49+
.class) // only run if we are not running in a test case - as otherwise the the lifecycle
50+
// is controlled by the test
51+
public ZeebeLifecycleEventProducer zeebeLifecycleEventProducer(
52+
final ZeebeClient client, final ApplicationEventPublisher publisher) {
5053
return new ZeebeLifecycleEventProducer(client, publisher);
5154
}
5255

5356
/**
54-
* Registering a JsonMapper bean when there is none already exists in {@link org.springframework.beans.factory.BeanFactory}.
57+
* Registering a JsonMapper bean when there is none already exists in {@link
58+
* org.springframework.beans.factory.BeanFactory}.
5559
*
56-
* NOTE: This method SHOULD NOT be explicitly called as it might lead to unexpected behaviour due to the
57-
* {@link ConditionalOnMissingBean} annotation. i.e. Calling this method when another JsonMapper bean is defined in the context
58-
* might throw {@link org.springframework.beans.factory.NoSuchBeanDefinitionException}
60+
* <p>NOTE: This method SHOULD NOT be explicitly called as it might lead to unexpected behaviour
61+
* due to the {@link ConditionalOnMissingBean} annotation. i.e. Calling this method when another
62+
* JsonMapper bean is defined in the context might throw {@link
63+
* org.springframework.beans.factory.NoSuchBeanDefinitionException}
5964
*
60-
* @return a new JsonMapper bean if none already exists in {@link org.springframework.beans.factory.BeanFactory}
65+
* @return a new JsonMapper bean if none already exists in {@link
66+
* org.springframework.beans.factory.BeanFactory}
6167
*/
6268
@Bean(name = "zeebeJsonMapper")
6369
@ConditionalOnMissingBean
6470
public JsonMapper jsonMapper(ObjectMapper objectMapper) {
6571
return new ZeebeObjectMapper(objectMapper);
6672
}
6773

74+
75+
@Bean(name = "commonJsonMapper")
76+
@ConditionalOnMissingBean
77+
public io.camunda.common.json.JsonMapper commonJsonMapper(ObjectMapper objectMapper) {
78+
return new SdkObjectMapper(objectMapper);
79+
}
6880
}

spring-boot-starter-camunda/src/main/java/io/camunda/zeebe/spring/client/configuration/CommonClientConfiguration.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import io.camunda.common.auth.identity.IdentityContainer;
55
import io.camunda.common.auth.identity.IdentityConfig;
66
import io.camunda.common.exception.SdkException;
7+
import io.camunda.common.json.JsonMapper;
78
import io.camunda.identity.sdk.IdentityConfiguration;
89
import io.camunda.identity.sdk.Identity;
910
import io.camunda.zeebe.spring.client.properties.*;
@@ -42,14 +43,15 @@ public class CommonClientConfiguration {
4243
private IdentityConfiguration identityConfigurationFromProperties;
4344

4445
@Bean
45-
public Authentication authentication() {
46+
public Authentication authentication(JsonMapper jsonMapper) {
4647

4748
// TODO: Refactor
4849
if (zeebeClientConfigurationProperties != null) {
4950
// check if Zeebe has clusterId provided, then must be SaaS
5051
if (zeebeClientConfigurationProperties.getCloud().getClusterId() != null) {
5152
return SaaSAuthentication.builder()
5253
.withJwtConfig(configureJwtConfig())
54+
.withJsonMapper(jsonMapper)
5355
.build();
5456
} else if (zeebeClientConfigurationProperties.getBroker().getGatewayAddress() != null || zeebeSelfManagedProperties.getGatewayAddress() != null) {
5557
// figure out if Self-Managed JWT or Self-Managed Basic

spring-boot-starter-camunda/src/test/java/io/camunda/zeebe/spring/client/config/ZeebeClientStarterAutoConfigurationCustomJsonMapperTest.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import com.fasterxml.jackson.databind.DeserializationFeature;
44
import com.fasterxml.jackson.databind.ObjectMapper;
5+
import io.camunda.common.json.JsonMapper;
6+
import io.camunda.common.json.SdkObjectMapper;
57
import io.camunda.zeebe.client.ZeebeClient;
68
import io.camunda.zeebe.client.impl.ZeebeObjectMapper;
79
import io.camunda.zeebe.spring.client.CamundaAutoConfiguration;
@@ -44,7 +46,10 @@
4446
public class ZeebeClientStarterAutoConfigurationCustomJsonMapperTest {
4547

4648
public static class TestConfig {
47-
49+
@Bean
50+
public io.camunda.common.json.JsonMapper commonJsonMapper(){
51+
return new SdkObjectMapper();
52+
}
4853
@Primary
4954
@Bean(name = "overridingJsonMapper")
5055
public io.camunda.zeebe.client.api.JsonMapper zeebeJsonMapper() {

spring-boot-starter-camunda/src/test/java/io/camunda/zeebe/spring/client/config/authentication/OperateSaasOperateCredentialTest.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import io.camunda.common.auth.JwtCredential;
55
import io.camunda.common.auth.Product;
66
import io.camunda.common.auth.SaaSAuthentication;
7+
import io.camunda.common.json.JsonMapper;
8+
import io.camunda.common.json.SdkObjectMapper;
79
import io.camunda.operate.CamundaOperateClient;
810
import io.camunda.zeebe.spring.client.configuration.CommonClientConfiguration;
911
import io.camunda.zeebe.spring.client.configuration.OperateClientConfiguration;
@@ -13,6 +15,7 @@
1315
import org.springframework.beans.factory.annotation.Autowired;
1416
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
1517
import org.springframework.boot.context.properties.EnableConfigurationProperties;
18+
import org.springframework.context.annotation.Bean;
1619
import org.springframework.test.context.ContextConfiguration;
1720
import org.springframework.test.context.TestPropertySource;
1821
import org.springframework.test.context.junit.jupiter.SpringExtension;
@@ -37,7 +40,10 @@ public class OperateSaasOperateCredentialTest {
3740
@ImportAutoConfiguration({CommonClientConfiguration.class, OperateClientConfiguration.class})
3841
@EnableConfigurationProperties(ZeebeClientConfigurationProperties.class)
3942
public static class TestConfig {
40-
43+
@Bean
44+
public JsonMapper commonJsonMapper(){
45+
return new SdkObjectMapper();
46+
}
4147
}
4248

4349
@Autowired

spring-boot-starter-camunda/src/test/java/io/camunda/zeebe/spring/client/config/authentication/OperateSaasZeebeCredentialTest.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package io.camunda.zeebe.spring.client.config.authentication;
22

33
import io.camunda.common.auth.*;
4+
import io.camunda.common.json.JsonMapper;
5+
import io.camunda.common.json.SdkObjectMapper;
46
import io.camunda.operate.CamundaOperateClient;
57
import io.camunda.zeebe.spring.client.configuration.CommonClientConfiguration;
68
import io.camunda.zeebe.spring.client.configuration.OperateClientConfiguration;
@@ -10,6 +12,7 @@
1012
import org.springframework.beans.factory.annotation.Autowired;
1113
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
1214
import org.springframework.boot.context.properties.EnableConfigurationProperties;
15+
import org.springframework.context.annotation.Bean;
1316
import org.springframework.test.context.ContextConfiguration;
1417
import org.springframework.test.context.TestPropertySource;
1518
import org.springframework.test.context.junit.jupiter.SpringExtension;
@@ -32,7 +35,10 @@ public class OperateSaasZeebeCredentialTest {
3235
@ImportAutoConfiguration({CommonClientConfiguration.class, OperateClientConfiguration.class})
3336
@EnableConfigurationProperties(ZeebeClientConfigurationProperties.class)
3437
public static class TestConfig {
35-
38+
@Bean
39+
public JsonMapper commonJsonMapper(){
40+
return new SdkObjectMapper();
41+
}
3642
}
3743

3844
@Autowired

spring-boot-starter-camunda/src/test/java/io/camunda/zeebe/spring/client/config/authentication/OperateSelfManagedBasicTest.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import io.camunda.common.auth.Product;
55
import io.camunda.common.auth.SimpleAuthentication;
66
import io.camunda.common.auth.SimpleCredential;
7+
import io.camunda.common.json.JsonMapper;
8+
import io.camunda.common.json.SdkObjectMapper;
79
import io.camunda.identity.autoconfigure.IdentityAutoConfiguration;
810
import io.camunda.operate.CamundaOperateClient;
911
import io.camunda.zeebe.spring.client.configuration.CommonClientConfiguration;
@@ -14,6 +16,7 @@
1416
import org.springframework.beans.factory.annotation.Autowired;
1517
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
1618
import org.springframework.boot.context.properties.EnableConfigurationProperties;
19+
import org.springframework.context.annotation.Bean;
1720
import org.springframework.test.context.ContextConfiguration;
1821
import org.springframework.test.context.TestPropertySource;
1922
import org.springframework.test.context.junit.jupiter.SpringExtension;
@@ -35,7 +38,10 @@ public class OperateSelfManagedBasicTest {
3538
@ImportAutoConfiguration({CommonClientConfiguration.class, OperateClientConfiguration.class, IdentityAutoConfiguration.class})
3639
@EnableConfigurationProperties(ZeebeClientConfigurationProperties.class)
3740
public static class TestConfig {
38-
41+
@Bean
42+
public JsonMapper commonJsonMapper(){
43+
return new SdkObjectMapper();
44+
}
3945
}
4046

4147
@Autowired

spring-boot-starter-camunda/src/test/java/io/camunda/zeebe/spring/client/config/authentication/OperateSelfManagedBasicWithZeebeCredentialsTest.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import io.camunda.common.auth.Product;
55
import io.camunda.common.auth.SimpleAuthentication;
66
import io.camunda.common.auth.SimpleCredential;
7+
import io.camunda.common.json.JsonMapper;
8+
import io.camunda.common.json.SdkObjectMapper;
79
import io.camunda.identity.autoconfigure.IdentityAutoConfiguration;
810
import io.camunda.operate.CamundaOperateClient;
911
import io.camunda.zeebe.spring.client.configuration.CommonClientConfiguration;
@@ -14,6 +16,7 @@
1416
import org.springframework.beans.factory.annotation.Autowired;
1517
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
1618
import org.springframework.boot.context.properties.EnableConfigurationProperties;
19+
import org.springframework.context.annotation.Bean;
1720
import org.springframework.test.context.ContextConfiguration;
1821
import org.springframework.test.context.TestPropertySource;
1922
import org.springframework.test.context.junit.jupiter.SpringExtension;
@@ -39,7 +42,10 @@ public class OperateSelfManagedBasicWithZeebeCredentialsTest {
3942
@ImportAutoConfiguration({CommonClientConfiguration.class, OperateClientConfiguration.class, IdentityAutoConfiguration.class})
4043
@EnableConfigurationProperties(ZeebeClientConfigurationProperties.class)
4144
public static class TestConfig {
42-
45+
@Bean
46+
public JsonMapper commonJsonMapper(){
47+
return new SdkObjectMapper();
48+
}
4349
}
4450

4551
@Autowired

spring-boot-starter-camunda/src/test/java/io/camunda/zeebe/spring/client/config/authentication/OperateSelfManagedIdentityTest.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package io.camunda.zeebe.spring.client.config.authentication;
22

33
import io.camunda.common.auth.*;
4+
import io.camunda.common.json.JsonMapper;
5+
import io.camunda.common.json.SdkObjectMapper;
46
import io.camunda.identity.autoconfigure.IdentityAutoConfiguration;
57
import io.camunda.operate.CamundaOperateClient;
68
import io.camunda.zeebe.spring.client.configuration.CommonClientConfiguration;
@@ -11,6 +13,7 @@
1113
import org.springframework.beans.factory.annotation.Autowired;
1214
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
1315
import org.springframework.boot.context.properties.EnableConfigurationProperties;
16+
import org.springframework.context.annotation.Bean;
1417
import org.springframework.test.context.ContextConfiguration;
1518
import org.springframework.test.context.TestPropertySource;
1619
import org.springframework.test.context.junit.jupiter.SpringExtension;
@@ -40,7 +43,10 @@ public class OperateSelfManagedIdentityTest {
4043
@ImportAutoConfiguration({CommonClientConfiguration.class, OperateClientConfiguration.class, IdentityAutoConfiguration.class})
4144
@EnableConfigurationProperties(ZeebeClientConfigurationProperties.class)
4245
public static class TestConfig {
43-
46+
@Bean
47+
public JsonMapper commonJsonMapper(){
48+
return new SdkObjectMapper();
49+
}
4450
}
4551

4652
@Autowired

spring-boot-starter-camunda/src/test/java/io/camunda/zeebe/spring/client/config/authentication/OperateSelfManagedKeycloakTokenUrlTest.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package io.camunda.zeebe.spring.client.config.authentication;
22

33
import io.camunda.common.auth.*;
4+
import io.camunda.common.json.JsonMapper;
5+
import io.camunda.common.json.SdkObjectMapper;
46
import io.camunda.identity.autoconfigure.IdentityAutoConfiguration;
57
import io.camunda.operate.CamundaOperateClient;
68
import io.camunda.zeebe.spring.client.configuration.CommonClientConfiguration;
@@ -11,6 +13,7 @@
1113
import org.springframework.beans.factory.annotation.Autowired;
1214
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
1315
import org.springframework.boot.context.properties.EnableConfigurationProperties;
16+
import org.springframework.context.annotation.Bean;
1417
import org.springframework.test.context.ContextConfiguration;
1518
import org.springframework.test.context.TestPropertySource;
1619
import org.springframework.test.context.junit.jupiter.SpringExtension;
@@ -35,7 +38,10 @@ public class OperateSelfManagedKeycloakTokenUrlTest {
3538
@ImportAutoConfiguration({CommonClientConfiguration.class, OperateClientConfiguration.class, IdentityAutoConfiguration.class})
3639
@EnableConfigurationProperties(ZeebeClientConfigurationProperties.class)
3740
public static class TestConfig {
38-
41+
@Bean
42+
public JsonMapper commonJsonMapper(){
43+
return new SdkObjectMapper();
44+
}
3945
}
4046

4147
@Autowired

spring-boot-starter-camunda/src/test/java/io/camunda/zeebe/spring/client/config/authentication/OperateSelfManagedKeycloakUrlTest.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import io.camunda.common.auth.JwtCredential;
55
import io.camunda.common.auth.Product;
66
import io.camunda.common.auth.SelfManagedAuthentication;
7+
import io.camunda.common.json.JsonMapper;
8+
import io.camunda.common.json.SdkObjectMapper;
79
import io.camunda.identity.autoconfigure.IdentityAutoConfiguration;
810
import io.camunda.operate.CamundaOperateClient;
911
import io.camunda.zeebe.spring.client.configuration.CommonClientConfiguration;
@@ -14,6 +16,7 @@
1416
import org.springframework.beans.factory.annotation.Autowired;
1517
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
1618
import org.springframework.boot.context.properties.EnableConfigurationProperties;
19+
import org.springframework.context.annotation.Bean;
1720
import org.springframework.test.context.ContextConfiguration;
1821
import org.springframework.test.context.TestPropertySource;
1922
import org.springframework.test.context.junit.jupiter.SpringExtension;
@@ -38,7 +41,10 @@ public class OperateSelfManagedKeycloakUrlTest {
3841
@ImportAutoConfiguration({CommonClientConfiguration.class, OperateClientConfiguration.class, IdentityAutoConfiguration.class})
3942
@EnableConfigurationProperties(ZeebeClientConfigurationProperties.class)
4043
public static class TestConfig {
41-
44+
@Bean
45+
public JsonMapper commonJsonMapper(){
46+
return new SdkObjectMapper();
47+
}
4248
}
4349

4450
@Autowired

0 commit comments

Comments
 (0)