diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index a654702..dbb1a95 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -7,4 +7,4 @@ on:
jobs:
build:
- uses: valitydev/java-workflow/.github/workflows/maven-service-build.yml@v1
+ uses: valitydev/java-workflow/.github/workflows/maven-service-build.yml@v3
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index cfeee39..bcc177c 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -8,7 +8,7 @@ on:
jobs:
deploy:
- uses: valitydev/java-workflow/.github/workflows/maven-service-deploy.yml@v1
+ uses: valitydev/java-workflow/.github/workflows/maven-service-deploy.yml@v3
secrets:
github-token: ${{ secrets.GITHUB_TOKEN }}
mm-webhook-url: ${{ secrets.MATTERMOST_WEBHOOK_URL }}
diff --git a/pom.xml b/pom.xml
index 192249c..9a640dc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
dev.vality
service-parent-pom
- 1.0.19
+ 3.1.1
binbase
@@ -29,8 +29,8 @@
postgres
postgres
binbase
- 1.568-9362c08
- 1.4.3
+ 1.655-5ca4f4a
+ 3.1.1
@@ -52,7 +52,7 @@
dev.vality
cds-proto
- 1.66-01353ce
+ 1.70-5227377
@@ -78,6 +78,10 @@
org.flywaydb
flyway-core
+
+ org.flywaydb
+ flyway-database-postgresql
+
com.zaxxer
HikariCP
@@ -95,25 +99,20 @@
17.0.0
- javax.xml.bind
- jaxb-api
- 2.3.0
+ jakarta.xml.bind
+ jakarta.xml.bind-api
+ 3.0.1
org.glassfish.jaxb
jaxb-runtime
- 2.3.0
+ 3.0.2
runtime
-
- javax.activation
- javax.activation-api
- 1.2.0
-
commons-io
commons-io
- 1.3.2
+ 2.11.0
com.google.guava
@@ -150,9 +149,9 @@
test
- javax.xml.ws
- jaxws-api
- 2.3.0
+ jakarta.xml.ws
+ jakarta.xml.ws-api
+ 3.0.0
test
diff --git a/src/main/java/dev/vality/binbase/batch/BinBaseXmlData.java b/src/main/java/dev/vality/binbase/batch/BinBaseXmlData.java
index 1577aa5..febcdca 100644
--- a/src/main/java/dev/vality/binbase/batch/BinBaseXmlData.java
+++ b/src/main/java/dev/vality/binbase/batch/BinBaseXmlData.java
@@ -4,7 +4,7 @@
import lombok.Data;
import lombok.NoArgsConstructor;
-import javax.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlRootElement;
@Data
@NoArgsConstructor
diff --git a/src/main/java/dev/vality/binbase/batch/listener/DefaultChunkListener.java b/src/main/java/dev/vality/binbase/batch/listener/DefaultChunkListener.java
index 1eed799..dc991f9 100644
--- a/src/main/java/dev/vality/binbase/batch/listener/DefaultChunkListener.java
+++ b/src/main/java/dev/vality/binbase/batch/listener/DefaultChunkListener.java
@@ -16,7 +16,7 @@ public void beforeChunk(ChunkContext context) {
@Override
public void afterChunk(ChunkContext context) {
- int readCount = context.getStepContext().getStepExecution().getReadCount();
+ long readCount = context.getStepContext().getStepExecution().getReadCount();
if (readCount > 0 && readCount % loggingInterval == 0) {
log.info("{} rows processed", readCount);
}
diff --git a/src/main/java/dev/vality/binbase/batch/writer/BinRangeWriter.java b/src/main/java/dev/vality/binbase/batch/writer/BinRangeWriter.java
index 52d839e..795d030 100644
--- a/src/main/java/dev/vality/binbase/batch/writer/BinRangeWriter.java
+++ b/src/main/java/dev/vality/binbase/batch/writer/BinRangeWriter.java
@@ -4,10 +4,10 @@
import dev.vality.binbase.domain.BinData;
import dev.vality.binbase.service.BinbaseService;
import lombok.RequiredArgsConstructor;
+import org.springframework.batch.item.Chunk;
import org.springframework.batch.item.ItemWriter;
import org.springframework.stereotype.Component;
-import java.util.List;
import java.util.Map;
@Component
@@ -17,7 +17,7 @@ public class BinRangeWriter implements ItemWriter
private final BinbaseService binbaseService;
@Override
- public void write(List extends Map.Entry>> binDataRanges) throws Exception {
+ public void write(Chunk extends Map.Entry>> binDataRanges) throws Exception {
binDataRanges.forEach(binDataRange -> binbaseService.saveRange(binDataRange.getKey(), binDataRange.getValue()));
}
diff --git a/src/main/java/dev/vality/binbase/config/BatchConfig.java b/src/main/java/dev/vality/binbase/config/BatchConfig.java
index 08e07c2..c49b3d5 100644
--- a/src/main/java/dev/vality/binbase/config/BatchConfig.java
+++ b/src/main/java/dev/vality/binbase/config/BatchConfig.java
@@ -15,10 +15,10 @@
import lombok.RequiredArgsConstructor;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
-import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
-import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
-import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepScope;
+import org.springframework.batch.core.job.builder.JobBuilder;
+import org.springframework.batch.core.repository.JobRepository;
+import org.springframework.batch.core.step.builder.StepBuilder;
import org.springframework.batch.item.file.FlatFileItemReader;
import org.springframework.batch.item.file.MultiResourceItemReader;
import org.springframework.batch.item.file.builder.MultiResourceItemReaderBuilder;
@@ -29,17 +29,15 @@
import org.springframework.batch.item.support.builder.ClassifierCompositeItemProcessorBuilder;
import org.springframework.batch.item.xml.StaxEventItemReader;
import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.oxm.jaxb.Jaxb2Marshaller;
+import org.springframework.transaction.PlatformTransactionManager;
import java.util.Map;
@Configuration
-@EnableBatchProcessing
-@EnableAutoConfiguration
@RequiredArgsConstructor
public class BatchConfig {
@@ -49,8 +47,8 @@ public class BatchConfig {
"isonumber", "url", "phone", "bin_length", "affiliation", "mark"
};
- private final JobBuilderFactory jobBuilderFactory;
- private final StepBuilderFactory stepBuilderFactory;
+ private final JobRepository jobRepository;
+ private final PlatformTransactionManager transactionManager;
private final BinbaseService binbaseService;
@Value("${batch.strict_mode}")
@@ -115,9 +113,8 @@ public FlatFileItemReader buildBinBasePsbCsvReader() {
@Bean
public Job binBaseJob(Step step) {
- return jobBuilderFactory.get("binBaseJob")
- .flow(step)
- .end()
+ return new JobBuilder("binBaseJob", jobRepository)
+ .start(step)
.build();
}
@@ -128,10 +125,11 @@ public ClassifierCompositeItemProcessor compositeProcessor() {
.build();
}
+
@Bean
- public Step step(MultiResourceItemReader multiResourceItemReader) {
- return stepBuilderFactory.get("binBaseStep")
- .>>chunk(1000)
+ public Step step(MultiResourceItemReader multiResourceItemReader) {
+ return new StepBuilder("binBaseStep", jobRepository)
+ .>>chunk(1000, transactionManager)
.reader(multiResourceItemReader)
.processor(compositeProcessor())
.writer(new BinRangeWriter(binbaseService))
diff --git a/src/main/java/dev/vality/binbase/endpoint/BinbaseServlet.java b/src/main/java/dev/vality/binbase/endpoint/BinbaseServlet.java
index 911fb22..725a87d 100644
--- a/src/main/java/dev/vality/binbase/endpoint/BinbaseServlet.java
+++ b/src/main/java/dev/vality/binbase/endpoint/BinbaseServlet.java
@@ -4,8 +4,8 @@
import dev.vality.woody.thrift.impl.http.THServiceBuilder;
import org.springframework.beans.factory.annotation.Autowired;
-import javax.servlet.*;
-import javax.servlet.annotation.WebServlet;
+import jakarta.servlet.*;
+import jakarta.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/v1/binbase")
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 907e0d2..11005bb 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,16 +1,16 @@
server:
- port: '@server.port@'
+ port: ${server.port}
spring:
application:
- name: '@name@'
- description: '@description@'
+ name: ${name}
+ description: ${description}
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: org.postgresql.Driver
- url: '@db.url@'
- username: '@db.user@'
- password: '@db.password@'
+ url: ${db.url}
+ username: ${db.user}
+ password: ${db.password}
batch:
jdbc:
initialize-schema: always
@@ -22,11 +22,8 @@ batch:
management:
server:
- port: '@management.port@'
+ port: ${management.port}
metrics:
- export:
- prometheus:
- enabled: false
tags:
application: wb-list-manager
endpoint:
@@ -40,6 +37,10 @@ management:
web:
exposure:
include: health,info,prometheus
+ prometheus:
+ metrics:
+ export:
+ enabled: false
client:
cds:
diff --git a/src/test/java/dev/vality/binbase/batch/BatchUploadTest.java b/src/test/java/dev/vality/binbase/batch/BatchUploadTest.java
index ea6d868..3335839 100644
--- a/src/test/java/dev/vality/binbase/batch/BatchUploadTest.java
+++ b/src/test/java/dev/vality/binbase/batch/BatchUploadTest.java
@@ -2,7 +2,12 @@
import dev.vality.binbase.config.PostgresqlTest;
import dev.vality.binbase.domain.CountryCode;
-import dev.vality.damsel.binbase.*;
+import dev.vality.damsel.binbase.BinNotFound;
+import dev.vality.damsel.binbase.BinbaseSrv;
+import dev.vality.damsel.binbase.CardType;
+import dev.vality.damsel.binbase.Last;
+import dev.vality.damsel.binbase.Reference;
+import dev.vality.damsel.binbase.ResponseData;
import dev.vality.woody.thrift.impl.http.THSpawnClientBuilder;
import org.apache.thrift.TException;
import org.junit.jupiter.api.BeforeEach;
@@ -14,7 +19,10 @@
import java.net.URI;
import java.net.URISyntaxException;
-import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT;
diff --git a/src/test/java/dev/vality/binbase/config/PostgresqlTest.java b/src/test/java/dev/vality/binbase/config/PostgresqlTest.java
index f01a49e..14904a6 100644
--- a/src/test/java/dev/vality/binbase/config/PostgresqlTest.java
+++ b/src/test/java/dev/vality/binbase/config/PostgresqlTest.java
@@ -9,6 +9,6 @@
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
-@PostgresqlTestcontainerSingleton
+@PostgresqlTestcontainerSingleton(truncateTables = false)
public @interface PostgresqlTest {
}