Skip to content

Commit

Permalink
upgrade to aws sdk 2.x
Browse files Browse the repository at this point in the history
  • Loading branch information
tokarls committed Dec 4, 2023
1 parent 4924b43 commit 9a2f135
Show file tree
Hide file tree
Showing 11 changed files with 139 additions and 124 deletions.
4 changes: 2 additions & 2 deletions oppijanumerorekisteri-service/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -225,8 +225,8 @@
<artifactId>db-scheduler-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-sns</artifactId>
<groupId>software.amazon.awssdk</groupId>
<artifactId>sns</artifactId>
</dependency>
<dependency>
<groupId>io.hypersistence</groupId>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
package fi.vm.sade.oppijanumerorekisteri.clients.impl;

import com.amazonaws.services.sns.AmazonSNS;
import software.amazon.awssdk.services.sns.SnsClient;
import software.amazon.awssdk.services.sns.model.PublishRequest;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import fi.vm.sade.oppijanumerorekisteri.clients.HenkiloModifiedTopic;
import fi.vm.sade.oppijanumerorekisteri.configurations.AwsConfiguration;
import fi.vm.sade.oppijanumerorekisteri.models.Henkilo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.HashMap;
Expand All @@ -18,13 +19,12 @@
public class AwsSnsHenkiloModifiedTopic implements HenkiloModifiedTopic {
private static final Logger LOGGER = LoggerFactory.getLogger(AwsSnsHenkiloModifiedTopic.class);

private AmazonSNS client;
private SnsClient client;
private ObjectMapper objectMapper;
private String topicArn;
private boolean enabled;

@Autowired
public AwsSnsHenkiloModifiedTopic(AwsConfiguration configuration, AmazonSNS client, ObjectMapper objectMapper) {
public AwsSnsHenkiloModifiedTopic(AwsConfiguration configuration, SnsClient client, ObjectMapper objectMapper) {
this.client = client;
this.objectMapper = objectMapper;
this.topicArn = configuration.getHenkiloModifiedTopic().getTopicArn();
Expand All @@ -42,7 +42,11 @@ public void publish(Henkilo henkilo) {
Map<String, String> m = new HashMap<>();
m.put("oidHenkilo", henkilo.getOidHenkilo());
try {
this.client.publish(this.topicArn, this.objectMapper.writeValueAsString(m));
PublishRequest request = PublishRequest.builder()
.message(objectMapper.writeValueAsString(m))
.topicArn(topicArn)
.build();
client.publish(request);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
package fi.vm.sade.oppijanumerorekisteri.configurations;

import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
import com.amazonaws.services.sns.AmazonSNS;
import com.amazonaws.services.sns.AmazonSNSClientBuilder;
import lombok.Getter;
import lombok.Setter;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sns.SnsClient;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
Expand All @@ -27,16 +28,17 @@ public static class HenkiloModifiedTopic {
}

@Bean
AWSCredentialsProvider getAwsCredentialsProvider() {
return DefaultAWSCredentialsProviderChain.getInstance();
AwsCredentialsProvider getAwsCredentialsProvider() {
return DefaultCredentialsProvider.create();
}

@Bean
@Autowired
public AmazonSNS getAmazonSns(AWSCredentialsProvider credentialsProvider) {
return AmazonSNSClientBuilder.standard()
.withRegion(region)
.withCredentials(credentialsProvider)
SnsClient getSnsClient(AwsCredentialsProvider credentialsProvider) {
return SnsClient
.builder()
.region(Region.of(region))
.credentialsProvider(credentialsProvider)
.build();
}
}
Original file line number Diff line number Diff line change
@@ -1,25 +1,27 @@
package fi.vm.sade.oppijanumerorekisteri;

import com.amazonaws.services.sns.AmazonSNS;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;

import software.amazon.awssdk.services.sns.SnsClient;
import software.amazon.awssdk.services.sns.model.PublishRequest;

import org.mockito.ArgumentCaptor;

import java.util.Map;

import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.*;

public class AssertPublished {
public static void assertPublished(ObjectMapper objectMapper, AmazonSNS amazonSNS, int times, String... oids) {
public static void assertPublished(ObjectMapper objectMapper, SnsClient snsClient, int times, String... oids) {
if (times == 0) {
verifyNoInteractions(amazonSNS);
verifyNoInteractions(snsClient);
} else {
ArgumentCaptor<String> argumentCaptor = ArgumentCaptor.forClass(String.class);
verify(amazonSNS, times(times)).publish(anyString(), argumentCaptor.capture());
ArgumentCaptor<PublishRequest> argumentCaptor = ArgumentCaptor.forClass(PublishRequest.class);
verify(snsClient, times(times)).publish(argumentCaptor.capture());
assertThat(argumentCaptor.getAllValues())
.extracting(s -> objectMapper.<Map<String, String>>readValue(s, new TypeReference<Map<String, String>>() {})
.extracting(s -> objectMapper.<Map<String, String>>readValue(s.message(), new TypeReference<Map<String, String>>() {})
.get("oidHenkilo"))
.containsOnly(oids);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package fi.vm.sade.oppijanumerorekisteri.services;

import com.amazonaws.services.sns.AmazonSNS;
import com.fasterxml.jackson.databind.ObjectMapper;
import fi.vm.sade.koodisto.service.types.common.KoodiType;
import fi.vm.sade.oppijanumerorekisteri.IntegrationTest;
Expand All @@ -11,6 +10,8 @@
import fi.vm.sade.oppijanumerorekisteri.repositories.HenkiloRepository;
import fi.vm.sade.oppijanumerorekisteri.repositories.HenkiloViiteRepository;
import fi.vm.sade.oppijanumerorekisteri.repositories.YksilointitietoRepository;
import software.amazon.awssdk.services.sns.SnsClient;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
Expand Down Expand Up @@ -53,7 +54,7 @@ public class HenkiloModificationServiceIntegrationTest {
private KayttooikeusClient kayttooikeusClient;

@MockBean
private AmazonSNS amazonSNS;
private SnsClient snsClient;

@Autowired
private HenkiloRepository henkiloRepository;
Expand Down Expand Up @@ -98,7 +99,7 @@ public void updateVtjYksiloityHetuAndVtjYksiloityHasHenkiloHasNewHetu() {
.flatExtracting(HenkiloViite::getMasterOid, HenkiloViite::getSlaveOid)
.containsExactly("VTJYKSILOITY1", "VTJYKSILOITY2");

assertPublished(objectMapper, amazonSNS, 2, "VTJYKSILOITY1", "VTJYKSILOITY2");
assertPublished(objectMapper, snsClient, 2, "VTJYKSILOITY1", "VTJYKSILOITY2");
}

@Test
Expand All @@ -113,7 +114,7 @@ public void updateHenkiloTallentaaKutsumanimimuutoksen() {

assertThat(readDto.getEtunimet()).isEqualTo("Teppo Taneli");
assertThat(readDto.getKutsumanimi()).isEqualTo("Taneli");
assertPublished(objectMapper, amazonSNS, 1, updateDto.getOidHenkilo());
assertPublished(objectMapper, snsClient, 1, updateDto.getOidHenkilo());
}

@Test
Expand All @@ -132,7 +133,7 @@ public void kaikkiHetutAdded() {
.extracting(Henkilo::getOidHenkilo, Henkilo::getHetu, Henkilo::isYksilointiYritetty)
.containsExactly("VTJYKSILOITY1", "111111-985K", false);
assertThat(henkilo.getKaikkiHetut()).containsExactlyInAnyOrder("111111-985K", "170775-973B");
assertPublished(objectMapper, amazonSNS, 1, henkilo.getOidHenkilo());
assertPublished(objectMapper, snsClient, 1, henkilo.getOidHenkilo());
}

@Test
Expand All @@ -151,7 +152,7 @@ public void kaikkiHetutNotModified() {
.extracting(Henkilo::getOidHenkilo, Henkilo::getHetu, Henkilo::isYksilointiYritetty)
.containsExactly("VTJYKSILOITY1", "111111-985K", false);
assertThat(henkilo.getKaikkiHetut()).containsExactlyInAnyOrder("111111-985K");
assertPublished(objectMapper, amazonSNS, 1, henkilo.getOidHenkilo());
assertPublished(objectMapper, snsClient, 1, henkilo.getOidHenkilo());
}

@Test
Expand All @@ -170,7 +171,7 @@ public void kaikkiHetutAddedOnHetuChange() {
.extracting(Henkilo::getOidHenkilo, Henkilo::getHetu, Henkilo::isYksilointiYritetty)
.containsExactly("VTJYKSILOITY1", "170775-973B", false);
assertThat(henkilo.getKaikkiHetut()).containsExactlyInAnyOrder("111111-985K", "170775-973B");
assertPublished(objectMapper, amazonSNS, 1, henkilo.getOidHenkilo());
assertPublished(objectMapper, snsClient, 1, henkilo.getOidHenkilo());
}

@Test
Expand All @@ -189,7 +190,7 @@ public void yksilointivirheRemovedOnHetuChange() {
.extracting(Henkilo::getOidHenkilo, Henkilo::getHetu, Henkilo::isYksilointiYritetty)
.containsExactly("YKSILOINNISSAVIRHE", "170775-941A", false);
assertThat(henkilo.getYksilointivirheet()).isEmpty();
assertPublished(objectMapper, amazonSNS, 1, henkilo.getOidHenkilo());
assertPublished(objectMapper, snsClient, 1, henkilo.getOidHenkilo());
}

@Test
Expand All @@ -208,7 +209,7 @@ public void yksilointivirheRemovedOnHetuToEmpty() {
.extracting(Henkilo::getOidHenkilo, Henkilo::getHetu, Henkilo::isYksilointiYritetty)
.containsExactly("YKSILOINNISSAVIRHE", null, false);
assertThat(henkilo.getYksilointivirheet()).isEmpty();
assertPublished(objectMapper, amazonSNS, 1, henkilo.getOidHenkilo());
assertPublished(objectMapper, snsClient, 1, henkilo.getOidHenkilo());
}

@Test
Expand All @@ -227,7 +228,7 @@ public void yksilointivirheRemainsOnHetuToNull() {
.extracting(Henkilo::getOidHenkilo, Henkilo::getHetu, Henkilo::isYksilointiYritetty)
.containsExactly("YKSILOINNISSAVIRHE", "170798-9330", true);
assertThat(henkilo.getYksilointivirheet()).hasSize(1);
assertPublished(objectMapper, amazonSNS, 1, henkilo.getOidHenkilo());
assertPublished(objectMapper, snsClient, 1, henkilo.getOidHenkilo());
}

@Test
Expand All @@ -246,7 +247,7 @@ public void yksilointitietoRemovedOnHetuChange() {
.extracting(Henkilo::getOidHenkilo, Henkilo::getHetu, Henkilo::isYksilointiYritetty)
.containsExactly("YKSILOINNISSANIMIPIELESSA", "170775-989V", false);
assertThat(yksilointitietoRepository.findByHenkilo(henkilo)).isEmpty();
assertPublished(objectMapper, amazonSNS, 1, henkilo.getOidHenkilo());
assertPublished(objectMapper, snsClient, 1, henkilo.getOidHenkilo());
}

@Test
Expand All @@ -265,7 +266,7 @@ public void yksilointitietoRemovedOnHetuToEmpty() {
.extracting(Henkilo::getOidHenkilo, Henkilo::getHetu, Henkilo::isYksilointiYritetty)
.containsExactly("YKSILOINNISSANIMIPIELESSA", null, false);
assertThat(yksilointitietoRepository.findByHenkilo(henkilo)).isEmpty();
assertPublished(objectMapper, amazonSNS, 1, henkilo.getOidHenkilo());
assertPublished(objectMapper, snsClient, 1, henkilo.getOidHenkilo());
}

@Test
Expand All @@ -284,7 +285,7 @@ public void yksilointitietoRemainsOnHetuToNull() {
.extracting(Henkilo::getOidHenkilo, Henkilo::getHetu, Henkilo::isYksilointiYritetty)
.containsExactly("YKSILOINNISSANIMIPIELESSA", "170798-915D", true);
assertThat(yksilointitietoRepository.findByHenkilo(henkilo)).isNotEmpty();
assertPublished(objectMapper, amazonSNS, 1, henkilo.getOidHenkilo());
assertPublished(objectMapper, snsClient, 1, henkilo.getOidHenkilo());
}

@Test
Expand All @@ -297,7 +298,7 @@ public void updateHenkiloValidoiKutsumanimimuutoksen() {
Throwable throwable = catchThrowable(() -> henkiloModificationService.updateHenkilo(updateDto));

assertThat(throwable).isInstanceOf(UnprocessableEntityException.class);
assertPublished(objectMapper, amazonSNS, 0);
assertPublished(objectMapper, snsClient, 0);
}

@Test
Expand All @@ -311,7 +312,7 @@ public void forceUpdateHenkiloTallentaaKutsumanimimuutoksen() {

assertThat(readDto.getEtunimet()).isEqualTo("Teppo Taneli");
assertThat(readDto.getKutsumanimi()).isEqualTo("Taneli");
assertPublished(objectMapper, amazonSNS, 1, updateDto.getOidHenkilo());
assertPublished(objectMapper, snsClient, 1, updateDto.getOidHenkilo());
}

@Test
Expand All @@ -324,7 +325,7 @@ public void forceUpdateHenkiloValidoiKutsumanimimuutoksen() {
Throwable throwable = catchThrowable(() -> henkiloModificationService.forceUpdateHenkilo(updateDto));

assertThat(throwable).isInstanceOf(UnprocessableEntityException.class);
assertPublished(objectMapper, amazonSNS, 0);
assertPublished(objectMapper, snsClient, 0);
}

@Test
Expand Down Expand Up @@ -352,7 +353,7 @@ public void forceUpdateHenkiloPalauttaaHuoltajanJaPaivittaaSuhteen() {
.containsExactly(huoltaja1.getHetu());
assertThat(suhde.getUpdated())
.isNotNull();
assertPublished(objectMapper, amazonSNS, 2, "YKSILOINNISSANIMIPIELESSA", "HUOLTAJA");
assertPublished(objectMapper, snsClient, 2, "YKSILOINNISSANIMIPIELESSA", "HUOLTAJA");
}

@Test
Expand All @@ -378,7 +379,7 @@ public void huoltajaCreateValidoiHuoltajanHuoltajatyyppi() {
Throwable throwable = catchThrowable(() -> henkiloModificationService.createHenkilo(huoltajaCreateDto));

assertThat(throwable).isInstanceOf(UnprocessableEntityException.class);
assertPublished(objectMapper, amazonSNS, 0);
assertPublished(objectMapper, snsClient, 0);
}

@Test
Expand All @@ -396,7 +397,7 @@ public void huoltajaCreateValidoiHuoltajanKansalaisuus() {
Throwable throwable = catchThrowable(() -> henkiloModificationService.createHenkilo(huoltajaCreateDto));

assertThat(throwable).isInstanceOf(UnprocessableEntityException.class);
assertPublished(objectMapper, amazonSNS, 0);
assertPublished(objectMapper, snsClient, 0);
}

@Test
Expand All @@ -414,7 +415,7 @@ public void huoltajaCreate() {
Henkilo huoltaja = henkiloModificationService.createHenkilo(huoltajaCreateDto);
assertThat(huoltaja).extracting(Henkilo::getHetu).isEqualTo("271198-9197");
assertThat(huoltaja.getKansalaisuus()).extracting(Kansalaisuus::getKansalaisuusKoodi).containsExactly("246");
assertPublished(objectMapper, amazonSNS, 1, huoltaja.getOidHenkilo());
assertPublished(objectMapper, snsClient, 1, huoltaja.getOidHenkilo());
}

@Test
Expand Down Expand Up @@ -447,7 +448,7 @@ public void huoltajaUpdateExisting() {
.flatExtracting(YhteystiedotRyhma::getYhteystieto)
.extracting(Yhteystieto::getYhteystietoArvo)
.containsExactlyInAnyOrder("Y");
assertPublished(objectMapper, amazonSNS, 1, huoltaja.getOidHenkilo());
assertPublished(objectMapper, snsClient, 1, huoltaja.getOidHenkilo());
}

@Test
Expand All @@ -471,6 +472,6 @@ public void huoltajaCreateWithEmptyHetu() {
.extracting(Henkilo::getHetu, Henkilo::getEtunimet, Henkilo::getKutsumanimi, Henkilo::getSukunimi, Henkilo::getSyntymaaika)
.containsExactly(null, "huoltaja", "huoltaja", "tyhjallahetulla", LocalDate.of(1950, 2, 2));
assertThat(huoltaja.getKansalaisuus()).extracting(Kansalaisuus::getKansalaisuusKoodi).containsExactly("246");
assertPublished(objectMapper, amazonSNS, 1, huoltaja.getOidHenkilo());
assertPublished(objectMapper, snsClient, 1, huoltaja.getOidHenkilo());
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package fi.vm.sade.oppijanumerorekisteri.services;

import com.amazonaws.services.sns.AmazonSNS;
import fi.vm.sade.oppijanumerorekisteri.DatabaseService;
import fi.vm.sade.oppijanumerorekisteri.IntegrationTest;
import fi.vm.sade.oppijanumerorekisteri.KoodiTypeListBuilder;
Expand All @@ -15,6 +14,8 @@
import fi.vm.sade.oppijanumerorekisteri.repositories.HenkiloRepository;
import fi.vm.sade.oppijanumerorekisteri.repositories.IdentificationRepository;
import fi.vm.sade.oppijanumerorekisteri.utils.YhteystietoryhmaUtils;
import software.amazon.awssdk.services.sns.SnsClient;

import org.junit.After;
import org.junit.Test;
import org.junit.runner.RunWith;
Expand Down Expand Up @@ -51,7 +52,7 @@ public class HenkiloModificationServiceTest {
@Autowired
private IdentificationRepository identificationRepository;
@MockBean
private AmazonSNS amazonSns;
private SnsClient snsClient;
@MockBean
private KayttooikeusClient kayttooikeusClient;
@MockBean
Expand Down
Loading

0 comments on commit 9a2f135

Please sign in to comment.