Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,17 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v1
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew build
- name: Codecov
uses: codecov/codecov-action@v1.0.6
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
5 changes: 3 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,11 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v1
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
- name: Grant execute permission for gradlew
run: chmod +x gradlew
Expand Down
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,14 @@ Dadata API client based on non-blocking HTTP client of Spring WebClient. Support

## [Release notes](ReleaseNotes.md)

## Compatibility

| dadata-client | Spring Boot |
|---------------|-------------|
| 5.x | 4.x |
| 4.x | 3.x |
| 2.x / 3.x | 2.x |

## Add a dependency

Gradle:
Expand Down
5 changes: 5 additions & 0 deletions ReleaseNotes.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# 5.0.0

- Обновлены зависимости до версии spring boot 4.1.0
- Осуществлён переход с Jackson 2 на Jackson 3

# 4.0.0

- Обновлены зависимости до версии spring boot 3.0.4
Expand Down
10 changes: 6 additions & 4 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ plugins {
apply from: 'gradle/publish.gradle'

group = 'com.github.kuliginstepan'
version = '4.0.0'
version = '5.0.0'
sourceCompatibility = JavaVersion.VERSION_17

def nexusUsername = System.getenv("NEXUS_USERNAME") ?: (project.findProperty("NEXUS_USERNAME") ?: "")
Expand Down Expand Up @@ -60,13 +60,13 @@ configurations {
}

dependencies {
internal platform('org.springframework.boot:spring-boot-dependencies:3.0.4')
internal platform('org.springframework.boot:spring-boot-dependencies:4.1.0')
implementation 'org.springframework.boot:spring-boot'
implementation 'org.springframework.boot:spring-boot-autoconfigure'
implementation 'org.springframework:spring-webflux'
implementation 'io.projectreactor.netty:reactor-netty'
implementation 'com.fasterxml.jackson.core:jackson-databind'
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
implementation 'tools.jackson.core:jackson-databind'
implementation 'com.fasterxml.jackson.core:jackson-annotations'
implementation 'org.slf4j:slf4j-api'
implementation 'jakarta.validation:jakarta.validation-api'
implementation 'org.hibernate.validator:hibernate-validator'
Expand All @@ -77,6 +77,8 @@ dependencies {
annotationProcessor 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.boot:spring-boot-jackson'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

test {
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.5-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
2 changes: 2 additions & 0 deletions lombok.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
config.stopBubbling = true
lombok.jacksonized.jacksonVersion += 3
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package com.kuliginstepan.dadata.client;

import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@AutoConfiguration
@EnableConfigurationProperties(DadataClientProperties.class)
public class DadataClientAutoConfiguration {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.kuliginstepan.dadata.client.domain.fms;

import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import tools.jackson.databind.annotation.JsonDeserialize;
import com.kuliginstepan.dadata.client.domain.AdditionalProps;
import lombok.EqualsAndHashCode;
import lombok.Value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.annotation.JsonSerialize;
import lombok.Builder;
import lombok.Data;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
package com.kuliginstepan.dadata.client.domain.fms;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import java.io.IOException;
import tools.jackson.core.JsonParser;
import tools.jackson.databind.DeserializationContext;
import tools.jackson.databind.ValueDeserializer;

public class UnitTypeDeserializer extends JsonDeserializer<UnitType> {
public class UnitTypeDeserializer extends ValueDeserializer<UnitType> {

@Override
public UnitType deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
return UnitType.values()[Integer.parseInt(p.getText())];
public UnitType deserialize(JsonParser p, DeserializationContext ctxt) {
return UnitType.values()[Integer.parseInt(p.getString())];
}
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
package com.kuliginstepan.dadata.client.domain.fms;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import tools.jackson.core.JsonGenerator;
import tools.jackson.databind.SerializationContext;
import tools.jackson.databind.ValueSerializer;

public class UnitTypeSerializer extends JsonSerializer<UnitType> {
public class UnitTypeSerializer extends ValueSerializer<UnitType> {

@Override
public void serialize(UnitType value, JsonGenerator gen, SerializerProvider provider) throws IOException {
public void serialize(UnitType value, JsonGenerator gen, SerializationContext ctxt) {
gen.writeString(String.valueOf(value.ordinal()));
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.kuliginstepan.dadata.client.domain.organization;

import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import tools.jackson.databind.annotation.JsonDeserialize;
import com.kuliginstepan.dadata.client.json.LocalDateDeserializer;
import java.time.LocalDate;
import lombok.Builder;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.kuliginstepan.dadata.client.domain.organization;

import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import tools.jackson.databind.annotation.JsonDeserialize;
import com.kuliginstepan.dadata.client.json.LocalDateDeserializer;
import java.time.LocalDate;
import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.kuliginstepan.dadata.client.domain.organization;

import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import tools.jackson.databind.annotation.JsonDeserialize;
import com.kuliginstepan.dadata.client.domain.AdditionalProps;
import com.kuliginstepan.dadata.client.domain.Suggestion;
import com.kuliginstepan.dadata.client.domain.address.Address;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.kuliginstepan.dadata.client.domain.organization;

import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import tools.jackson.databind.annotation.JsonDeserialize;
import com.kuliginstepan.dadata.client.domain.OrganizationStatus;
import com.kuliginstepan.dadata.client.json.LocalDateDeserializer;
import java.time.LocalDate;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,16 @@
package com.kuliginstepan.dadata.client.json;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import java.io.IOException;
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import tools.jackson.core.JsonParser;
import tools.jackson.databind.DeserializationContext;
import tools.jackson.databind.ValueDeserializer;

public class LocalDateDeserializer extends JsonDeserializer<LocalDate> {
public class LocalDateDeserializer extends ValueDeserializer<LocalDate> {

@Override
public LocalDate deserialize(JsonParser p, DeserializationContext ctxt)
throws IOException {
public LocalDate deserialize(JsonParser p, DeserializationContext ctxt) {
long epochMillis = p.getLongValue();
return Instant.ofEpochMilli(epochMillis).atZone(ZoneId.of("UTC")).toLocalDate();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,11 @@ public void findBankByBicTest() {
@Test
public void rangingSuggestBankTest() {
List<Suggestion<Bank>> suggestions = TestUtils.CLIENT
.suggestBank(BankRequestBuilder.create("сбербанк").locationBoost("4402400100000").build()).collectList()
.suggestBank(BankRequestBuilder.create("сбербанк").locationBoost("3800000100000").build()).collectList()
.block();
assertNotNull(suggestions);
assertFalse(suggestions.isEmpty());
assertTrue(suggestions.get(0).getData().getAddress().getData().getRegionKladrId().startsWith("44"));
assertTrue(suggestions.get(0).getData().getAddress().getData().getRegionKladrId().startsWith("38"));
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public void findDeliveryByIdTest() {
assertNotNull(suggestion);

Delivery delivery = suggestion.getData();
assertEquals("01929", delivery.getBoxberryId());
assertEquals("7720193", delivery.getBoxberryId());
assertEquals("344", delivery.getCdekId());
assertEquals("196006461", delivery.getDpdId());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,25 +35,25 @@ public void suggestFnsUnitWithFilterTest() {
List<Suggestion<FnsUnit>> suggestions = TestUtils.CLIENT.suggestFnsUnit(
FnsUnitRequest.builder()
.query("ленинск")
.regionCode("58")
.regionCode("66")
.build())
.collectList().block();

assertNotNull(suggestions);
assertFalse(suggestions.isEmpty());

suggestions.forEach(suggestion -> assertTrue(suggestion.getData().getCode().startsWith("58")));
suggestions.forEach(suggestion -> assertTrue(suggestion.getData().getCode().startsWith("66")));
}

@Test
public void findFnsUnitByIdTest() {
Suggestion<FnsUnit> suggestion = TestUtils.CLIENT.findFnsUnitById("5836").block();
Suggestion<FnsUnit> suggestion = TestUtils.CLIENT.findFnsUnitById("6671").block();

assertNotNull(suggestion);

FnsUnit fnsUnit = suggestion.getData();
assertEquals("5836", fnsUnit.getCode());
assertEquals("5836010018", fnsUnit.getInn());
assertEquals("6671", fnsUnit.getCode());
assertEquals("7727406020", fnsUnit.getInn());
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public void iplocateTest() {

assertThat(suggestion)
.isNotNull()
.hasFieldOrPropertyWithValue("value", "г Краснодар");
.hasFieldOrPropertyWithValue("value", "г Москва");
}
@Test
public void iplocateNullTest() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public void suggestOrganizationByFioTest() {
.collectList().block();

assertThat(suggestions)
.hasSize(7)
.hasSize(8)
.extracting(Suggestion::getValue)
.contains("ИП Коварский Станислав Альбертович", "ООО \"ВЕГА\"");
}
Expand All @@ -66,7 +66,7 @@ public void suggestOrganizationWithLocationTest() {

assertNotNull(suggestions);
assertFalse(suggestions.isEmpty());
assertEquals(4, suggestions.size());
assertEquals(5, suggestions.size());
assertEquals(1, regionKladrIds.size());
assertTrue(regionKladrIds.get(0).startsWith("77"));
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,7 @@
package com.kuliginstepan.dadata.client.domain.fms;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.any;

import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import java.io.StringWriter;
import java.util.Map;
import org.junit.jupiter.api.Test;
Expand All @@ -15,6 +10,9 @@
import org.springframework.boot.test.autoconfigure.json.JsonTest;
import org.springframework.boot.test.json.JacksonTester;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import tools.jackson.core.JsonGenerator;
import tools.jackson.core.ObjectWriteContext;
import tools.jackson.core.json.JsonFactory;

@JsonTest
@ExtendWith(SpringExtension.class)
Expand All @@ -24,23 +22,22 @@ public class UnitTypeSerializerTest {
private JacksonTester<Map<String, UnitType>> json;

@Test
public void shouldDeserializeFromOrdinal() throws IOException {
public void shouldDeserializeFromOrdinal() throws Exception {
json.parse("{\"type\": 0}").assertThat().asMap().containsValue(UnitType.FMS);
}

@Test
public void shouldSerializeToOrdinal() throws IOException {
public void shouldSerializeToOrdinal() throws Exception {
UnitType unitType = UnitType.FMS;

StringWriter out = new StringWriter();
JsonFactory jsonFactory = new JsonFactory();
JsonGenerator jsonGenerator = jsonFactory.createGenerator(out);
JsonGenerator jsonGenerator = new JsonFactory().createGenerator(ObjectWriteContext.empty(), out);
UnitTypeSerializer serializer = new UnitTypeSerializer();

serializer.serialize(unitType, jsonGenerator, any(SerializerProvider.class));
serializer.serialize(unitType, jsonGenerator, null);
jsonGenerator.flush();

assertEquals("\"" + unitType.ordinal() + "\"", out.toString());
}

}
}
Loading