From b77f50c3e30b74e48f168e02aee67777f7ccdc90 Mon Sep 17 00:00:00 2001 From: rdavidek Date: Wed, 18 Feb 2026 14:38:26 +0100 Subject: [PATCH] credentials decoder fixes --- .gitignore | 3 +- .../impl/v45/ExportApisToWso2FromV32.java | 29 +++++++++++++------ .../mapper/ApiDefinitionMapper32to45.java | 12 ++++---- .../migration/util/CredentialsDecoder.java | 2 +- 4 files changed, 29 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index da6a13b..30d18ed 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,5 @@ bin /api.yaml *.zip apis -tmp \ No newline at end of file +tmp +apicurio-migrator.yaml \ No newline at end of file diff --git a/src/main/java/cz/trask/migration/impl/v45/ExportApisToWso2FromV32.java b/src/main/java/cz/trask/migration/impl/v45/ExportApisToWso2FromV32.java index ff5bdb1..c648f90 100644 --- a/src/main/java/cz/trask/migration/impl/v45/ExportApisToWso2FromV32.java +++ b/src/main/java/cz/trask/migration/impl/v45/ExportApisToWso2FromV32.java @@ -57,22 +57,33 @@ public class ExportApisToWso2FromV32 extends AbstractProcess { TokenResponse token = authenticateToWso2AndGetToken(config.getTarget()); ArtifactSearchResults apis = client.searchArtifacts(config.getApicurio().getDefaultApiGroup(), null, null, - null, null, SortBy.name, SortOrder.asc, null, null); + null, null, SortBy.name, SortOrder.asc, null, 9999); + + List sortedArtifacts = apis.getArtifacts().stream() + .sorted(Comparator.comparing(SearchedArtifact::getId)) + .collect(Collectors.toList()); - log.info("Found {} APIs", apis.getCount()); + log.info("Found {} APIs", sortedArtifacts.size()); int maxThreads = config.getMaxThreads(); - ExecutorService executor = Executors.newFixedThreadPool(maxThreads); + //ExecutorService executor = Executors.newFixedThreadPool(maxThreads); + + int skipCount = 0; - for (SearchedArtifact api : apis.getArtifacts()) { + for (SearchedArtifact api : sortedArtifacts) { final int index = apiCounter.getAndIncrement(); - executor.submit(() -> processApi(api, token, index, apis.getCount())); + if (index <= skipCount) { + log.info("Skipping API {} of {}: {}", index, apis.getCount(), api.getName()); + continue; + } + //executor.submit(() -> processApi(api, token, index, apis.getCount())); + processApi(api, token, index, apis.getCount()); } - executor.shutdown(); - if (!executor.awaitTermination(10, TimeUnit.MINUTES)) { - log.warn("Timeout waiting for API import tasks to finish"); - } +// executor.shutdown(); +// if (!executor.awaitTermination(10, TimeUnit.MINUTES)) { +// log.warn("Timeout waiting for API import tasks to finish"); +// } log.info("Finished processing APIs."); } catch (Exception e) { log.error("Error while exporting APIs.", e); diff --git a/src/main/java/cz/trask/migration/mapper/ApiDefinitionMapper32to45.java b/src/main/java/cz/trask/migration/mapper/ApiDefinitionMapper32to45.java index fd0eb36..5495419 100644 --- a/src/main/java/cz/trask/migration/mapper/ApiDefinitionMapper32to45.java +++ b/src/main/java/cz/trask/migration/mapper/ApiDefinitionMapper32to45.java @@ -202,20 +202,20 @@ public class ApiDefinitionMapper32to45 { String encodedSecret = production.get("clientSecret").toString(); production.put("clientSecret", CredentialsDecoder.decodeCredentials(encodedSecret)); } - if (sandbox != null && sandbox.containsKey("customParameters") && sandbox.get("customParameters") != null) { - String customParamsStr = sandbox.get("customParameters").toString(); + if (sandbox != null && sandbox.containsKey("customParameters")) { try { + String customParamsStr = sandbox.get("customParameters").toString(); Map customParams = AbstractProcess.mapperYaml.readValue(customParamsStr, Map.class); - sandbox.put("customParameters", customParams); + sandbox.put("customParameters", customParams!=null?customParams:Collections.emptyMap()); } catch (Exception e) { sandbox.put("customParameters", Collections.emptyMap()); } } - if (production != null && production.containsKey("customParameters") && production.get("customParameters") != null) { - String customParamsStr = production.get("customParameters").toString(); + if (production != null && production.containsKey("customParameters")) { try { + String customParamsStr = production.get("customParameters").toString(); Map customParams = AbstractProcess.mapperYaml.readValue(customParamsStr, Map.class); - production.put("customParameters", customParams); + production.put("customParameters", customParams!=null?customParams:Collections.emptyMap()); } catch (Exception e) { production.put("customParameters", Collections.emptyMap()); } diff --git a/src/main/java/cz/trask/migration/util/CredentialsDecoder.java b/src/main/java/cz/trask/migration/util/CredentialsDecoder.java index 49b3790..f5afdc5 100644 --- a/src/main/java/cz/trask/migration/util/CredentialsDecoder.java +++ b/src/main/java/cz/trask/migration/util/CredentialsDecoder.java @@ -55,7 +55,7 @@ public class CredentialsDecoder { return decryptedText; } catch (Exception e) { log.error("Error decoding credentials: ", e); - return null; + return credentials; // Return original if decoding fails } } }