Skip to content

Commit 6710c85

Browse files
committed
release 3.0.15
1 parent a550bf2 commit 6710c85

17 files changed

Lines changed: 493 additions & 43 deletions

RELEASE_NOTES.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1763,3 +1763,41 @@
17631763
| 🔧 zmienione | 3 |
17641764
| ➖ usunięte | 0 |
17651765

1766+
1767+
# Changelog zmian - `## 3.0.15 (2026-02-12)`- `API: 2.0.1`
1768+
1769+
## 1. ksef-client
1770+
1771+
### 1.1 api
1772+
- **DefaultKsefClient.java**: 🔧 dodanie obsługi parsowania odpowiedzi dla status http 429 (Too Many Requests)
1773+
1774+
### 1.2 client
1775+
- **ExceptionDetails.java**: 🔧 dodanie opisów pól i metody `toString`
1776+
- **Headers.java**: 🔧 dodanie pola `String RETRY_AFTER = "Retry-After"`
1777+
1778+
### 1.3 client.model
1779+
- **ApiException.java**: 🔧 dodanie metody `toString`
1780+
- **ExceptionObject.java**: 🔧 dodanie opisów pól i metody `toString`
1781+
- **ExceptionResponse.java**: 🔧 dodanie opisów pól i metody `toString`, dodatkowo dodano pole dla obiektu z http status 429 `TooManyRequestsResponse status`
1782+
- **HttpStatus.java**: 🔧 dodanie enuma `TOO_MANY_REQUESTS(429)`
1783+
- **TooManyRequestsResponse.java**: ➕ dodanie klasy z modelem dla status http 429
1784+
- **lighthouse/Categories.java**: 🔧 zmiana klasy na enuma
1785+
- **lighthouse/Statuses.java**: 🔧 zmiana klasy na enuma
1786+
1787+
## 2. demo-web-app
1788+
1789+
### 2.1 integrationTest
1790+
- **BaseIntegrationTest.java**: 🔧 wydłużenie timeoutu przy oczekiwanie na konkretny status/proces
1791+
- **KsefTokenIntegrationTest.java**: 🔧 wydłużenie timeoutu przy oczekiwanie na konkretny status/proces
1792+
- **DuplicateInvoiceIntegrationTest.java**: 🔧 użycie `getContinuationToken` w scenariuszu przy pobieraniu błednie przetworzonych faktur
1793+
- **TechnicalCorrectionIntegrationTest.java**: ➕ dodanie scenariuszy testowych dla funkcjonalności korekty technicznej faktur
1794+
1795+
---
1796+
## 3. Podsumowanie
1797+
1798+
| Typ zmiany | Liczba plików |
1799+
|-------------|---------------|
1800+
| ➕ dodane | 2 |
1801+
| 🔧 zmienione | 12 |
1802+
| ➖ usunięte | 0 |
1803+

demo-web-app/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ plugins {
88
}
99

1010
group = "pl.akmf.ksef"
11-
version = "3.0.14"
11+
version = "3.0.15"
1212

1313
java {
1414
toolchain {

demo-web-app/src/integrationTest/java/pl/akmf/ksef/sdk/DuplicateInvoiceIntegrationTest.java

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package pl.akmf.ksef.sdk;
22

33
import jakarta.xml.bind.JAXBException;
4+
import org.apache.logging.log4j.util.Strings;
45
import org.junit.jupiter.api.Assertions;
56
import org.junit.jupiter.params.ParameterizedTest;
67
import org.junit.jupiter.params.provider.Arguments;
@@ -37,13 +38,13 @@
3738
import java.io.InputStream;
3839
import java.nio.charset.StandardCharsets;
3940
import java.time.LocalDate;
41+
import java.util.ArrayList;
4042
import java.util.Base64;
4143
import java.util.HashMap;
4244
import java.util.List;
4345
import java.util.Map;
4446
import java.util.Objects;
4547
import java.util.UUID;
46-
import java.util.concurrent.atomic.AtomicReference;
4748
import java.util.stream.Stream;
4849

4950
import static java.util.concurrent.TimeUnit.SECONDS;
@@ -89,9 +90,9 @@ void duplicateInvoiceEndToEndFailedListContainsDuplicate(SystemCode systemCode,
8990
checkSessionStatus(onlineSessionRef, accessToken, 100, null, 1);
9091

9192
// 5. Pobranie nieudanych faktur /invoices/failed (duplikat)
92-
SessionInvoicesResponse failedInvoices = getFailedInvoices(onlineSessionRef, accessToken);
93+
List<SessionInvoiceStatusResponse> failedInvoices = getFailedInvoicesList(onlineSessionRef, accessToken);
9394

94-
SessionInvoiceStatusResponse failed = failedInvoices.getInvoices().getFirst();
95+
SessionInvoiceStatusResponse failed = failedInvoices.getFirst();
9596
Assertions.assertNotNull(failed.getStatus());
9697
Assertions.assertNotNull(failed.getStatus().getCode());
9798
int duplicateInvoice = 440;
@@ -122,9 +123,9 @@ void duplicateInvoiceOnlineFirstBatchFailedListContainsDuplicate(SystemCode syst
122123
checkSessionStatus(batchSessionRef, accessToken, 445, 0, 1);
123124

124125
// 3. Pobranie nieudanych faktur sesji wsadowej (polling aż dostępne)
125-
SessionInvoicesResponse failedBatchInvoices = getFailedInvoices(batchSessionRef, accessToken);
126+
List<SessionInvoiceStatusResponse> failedBatchInvoices = getFailedInvoicesList(batchSessionRef, accessToken);
126127

127-
SessionInvoiceStatusResponse failed = failedBatchInvoices.getInvoices().getFirst();
128+
SessionInvoiceStatusResponse failed = failedBatchInvoices.getFirst();
128129
Assertions.assertNotNull(failed.getStatus());
129130
Assertions.assertNotNull(failed.getStatus().getCode());
130131
int duplicateInvoice = 440;
@@ -197,9 +198,9 @@ private void checkSessionStatus(String sessionReferenceNumber, String accessToke
197198
.until(() -> {
198199
SessionStatusResponse statusResponse = ksefClient.getSessionStatus(sessionReferenceNumber, accessToken);
199200
return statusResponse.getStatus() != null
200-
&& statusResponse.getStatus().getCode() == expectedStatus
201-
&& Objects.equals(statusResponse.getSuccessfulInvoiceCount(), expectedSuccessfulInvoice)
202-
&& Objects.equals(statusResponse.getFailedInvoiceCount(), expectedFailedInvoice);
201+
&& statusResponse.getStatus().getCode() == expectedStatus
202+
&& Objects.equals(statusResponse.getSuccessfulInvoiceCount(), expectedSuccessfulInvoice)
203+
&& Objects.equals(statusResponse.getFailedInvoiceCount(), expectedFailedInvoice);
203204
});
204205
}
205206

@@ -242,17 +243,25 @@ private String openOnlineSessionAndSendInvoice(EncryptionData encryptionData, St
242243
return openOnlineSessionResponse.getReferenceNumber();
243244
}
244245

245-
private SessionInvoicesResponse getFailedInvoices(String sessionRef, String accessToken) {
246-
AtomicReference<SessionInvoicesResponse> failedInvoicesResponse = new AtomicReference<>();
246+
private List<SessionInvoiceStatusResponse> getFailedInvoicesList(String sessionRef, String accessToken) {
247+
List<SessionInvoiceStatusResponse> failedInvoicesList = new ArrayList<>();
248+
247249
await().atMost(120, SECONDS)
248250
.pollInterval(2, SECONDS)
249251
.until(() -> {
250-
SessionInvoicesResponse failedBatchInvoices = ksefClient.getSessionFailedInvoices(sessionRef, null, 10, accessToken);
251-
failedInvoicesResponse.set(failedBatchInvoices);
252-
return failedBatchInvoices.getInvoices() != null
253-
&& !failedBatchInvoices.getInvoices().isEmpty();
252+
SessionInvoicesResponse failedInvoices = ksefClient.getSessionFailedInvoices(sessionRef, null, 10, accessToken);
253+
if (failedInvoices.getInvoices() != null && !failedInvoices.getInvoices().isEmpty()) {
254+
failedInvoicesList.addAll(failedInvoices.getInvoices());
255+
}
256+
while (Strings.isNotBlank(failedInvoices.getContinuationToken())) {
257+
failedInvoices = ksefClient.getSessionFailedInvoices(sessionRef, failedInvoices.getContinuationToken(), 10, accessToken);
258+
if (failedInvoices.getInvoices() != null && !failedInvoices.getInvoices().isEmpty()) {
259+
failedInvoicesList.addAll(failedInvoices.getInvoices());
260+
}
261+
}
262+
return !failedInvoicesList.isEmpty();
254263
});
255264

256-
return failedInvoicesResponse.get();
265+
return failedInvoicesList;
257266
}
258267
}

demo-web-app/src/integrationTest/java/pl/akmf/ksef/sdk/KsefTokenIntegrationTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ public void tokenTest(EncryptionMethod encryptionMethod) throws JAXBException, I
136136

137137
SignatureResponse response = ksefClient.authenticateByKSeFToken(authTokenRequest);
138138

139-
await().atMost(30, SECONDS)
139+
await().atMost(60, SECONDS)
140140
.pollInterval(2, SECONDS)
141141
.until(() -> isAuthStatusReady(response.getReferenceNumber(), response.getAuthenticationToken().getToken()));
142142

0 commit comments

Comments
 (0)