From 03ad7c5cf47a0e5cef79e81656035ad9c818c6c1 Mon Sep 17 00:00:00 2001 From: Radek Davidek Date: Fri, 7 Nov 2025 11:33:30 +0100 Subject: [PATCH] refactor --- .../cz/trask/migration/AbstractProcess.java | 30 +- .../impl/v32/Wso2AppsToApicurio.java | 225 +++++---- .../impl/v45/ExportApisToWso2FromV32.java | 3 +- .../impl/v45/ExportAppsToWso2FromV32.java | 443 +++++++++--------- .../mapper/ApiDefinitionMapper32to45.java | 13 +- .../model/v32/ApplicationDetail.java | 188 ++++---- .../migration/model/v32/ApplicationList.java | 28 +- .../migration/model/v32/Documents32.java | 21 +- .../migration/model/v32/Subscriptions.java | 1 + .../model/v45/ApplicationCreateRequest.java | 86 ++-- .../model/v45/ApplicationCreateResponse.java | 155 +++--- .../v45/ApplicationKeyMappingRequest45.java | 23 +- .../v45/ApplicationKeyMappingResponse45.java | 82 ++-- .../model/v45/ApplicationListResponse45.java | 54 +-- .../migration/model/v45/Documents45.java | 8 +- 15 files changed, 670 insertions(+), 690 deletions(-) diff --git a/src/main/java/cz/trask/migration/AbstractProcess.java b/src/main/java/cz/trask/migration/AbstractProcess.java index 79ef974..f064dc8 100644 --- a/src/main/java/cz/trask/migration/AbstractProcess.java +++ b/src/main/java/cz/trask/migration/AbstractProcess.java @@ -101,8 +101,7 @@ public abstract class AbstractProcess { System.setProperty("javax.net.ssl.trustStorePassword", config.getTrustStore().getPassword()); } - private SSLContext createSSLContext(String trustStorePath, String trustStorePassword) - throws Exception { + private SSLContext createSSLContext(String trustStorePath, String trustStorePassword) throws Exception { // Vytvoříme TrustStore KeyStore trustStore = KeyStore.getInstance("JKS"); try (FileInputStream fis = new FileInputStream(trustStorePath)) { @@ -120,10 +119,8 @@ public abstract class AbstractProcess { return sslContext; } - protected void configureHttpsConnection(HttpsURLConnection connection) - throws Exception { - SSLContext sslContext = createSSLContext( - System.getProperty("javax.net.ssl.trustStore"), + protected void configureHttpsConnection(HttpsURLConnection connection) throws Exception { + SSLContext sslContext = createSSLContext(System.getProperty("javax.net.ssl.trustStore"), System.getProperty("javax.net.ssl.trustStorePassword")); connection.setSSLSocketFactory(sslContext.getSocketFactory()); } @@ -134,15 +131,14 @@ public abstract class AbstractProcess { String clientId = register.getClientId(); log.info("Registered with clientId: {}", clientId); - TokenResponse token = getToken(endpoints.getPublisherTokenUrl(), endpoints.getWso2User(), - register, - "apim:api_view apim:api_create apim:api_manage apim:api_delete apim:api_publish apim:subscription_view apim:subscription_block "+ - "apim:subscription_manage apim:external_services_discover apim:threat_protection_policy_create apim:threat_protection_policy_manage "+ - "apim:document_create apim:document_manage apim:mediation_policy_view apim:mediation_policy_create apim:mediation_policy_manage "+ - "apim:client_certificates_view apim:client_certificates_add apim:client_certificates_update apim:ep_certificates_view apim:ep_certificates_add "+ - "apim:ep_certificates_update apim:publisher_settings apim:pub_alert_manage apim:shared_scope_manage apim:app_import_export apim:api_import_export "+ - "apim:api_product_import_export apim:api_generate_key apim:common_operation_policy_view apim:common_operation_policy_manage apim:comment_write "+ - "apim:comment_view apim:admin apim:subscribe apim:api_key apim:app_manage apim:sub_manage apim:store_settings apim:sub_alert_manage"); + TokenResponse token = getToken(endpoints.getPublisherTokenUrl(), endpoints.getWso2User(), register, + "apim:api_view apim:api_create apim:api_manage apim:api_delete apim:api_publish apim:subscription_view apim:subscription_block " + + "apim:subscription_manage apim:external_services_discover apim:threat_protection_policy_create apim:threat_protection_policy_manage " + + "apim:document_create apim:document_manage apim:mediation_policy_view apim:mediation_policy_create apim:mediation_policy_manage " + + "apim:client_certificates_view apim:client_certificates_add apim:client_certificates_update apim:ep_certificates_view apim:ep_certificates_add " + + "apim:ep_certificates_update apim:publisher_settings apim:pub_alert_manage apim:shared_scope_manage apim:app_import_export apim:api_import_export " + + "apim:api_product_import_export apim:api_generate_key apim:common_operation_policy_view apim:common_operation_policy_manage apim:comment_write " + + "apim:comment_view apim:admin apim:subscribe apim:api_key apim:app_manage apim:sub_manage apim:store_settings apim:sub_alert_manage"); log.debug("Access token received – {}", token.getAccess_token()); @@ -516,8 +512,8 @@ public abstract class AbstractProcess { String username = decodedstringparts[0]; String password = decodedstringparts[1]; - httpHeaders.put("Authorization", "Basic ".concat(Base64.getEncoder() - .encodeToString(username.concat(":").concat(password).getBytes()))); + httpHeaders.put("Authorization", + "Basic ".concat(Base64.getEncoder().encodeToString(username.concat(":").concat(password).getBytes()))); return httpHeaders; } } diff --git a/src/main/java/cz/trask/migration/impl/v32/Wso2AppsToApicurio.java b/src/main/java/cz/trask/migration/impl/v32/Wso2AppsToApicurio.java index a70319d..600ebfe 100644 --- a/src/main/java/cz/trask/migration/impl/v32/Wso2AppsToApicurio.java +++ b/src/main/java/cz/trask/migration/impl/v32/Wso2AppsToApicurio.java @@ -27,152 +27,147 @@ import lombok.extern.log4j.Log4j2; @Log4j2 public class Wso2AppsToApicurio extends AbstractProcess { - private final AtomicInteger appCounter = new AtomicInteger(1); + private final AtomicInteger appCounter = new AtomicInteger(1); - private final RegistryClient client; + private final RegistryClient client; - public Wso2AppsToApicurio() throws Exception { - this.client = RegistryClientFactory.create(config.getApicurio().getApiUrl()); - } + public Wso2AppsToApicurio() throws Exception { + this.client = RegistryClientFactory.create(config.getApicurio().getApiUrl()); + } - /** - * Main entry point for the import process. - * - * @throws RuntimeException if any error occurs - */ - public void process() { - try { - log.info("Starting API import to Apicurio from WSO2..."); + /** + * Main entry point for the import process. + * + * @throws RuntimeException if any error occurs + */ + public void process() { + try { + log.info("Starting API import to Apicurio from WSO2..."); - TokenResponse token = authenticateToWso2AndGetToken(config.getSource()); + TokenResponse token = authenticateToWso2AndGetToken(config.getSource()); - ApplicationList apps = getApplicationList(config.getSource().getAdminApiUrl(), token); + ApplicationList apps = getApplicationList(config.getSource().getAdminApiUrl(), token); - if (apps == null || apps.getList() == null || apps.getList().size() == 0) { - throw new IllegalStateException( - "No Applications to export that match your criteria! Check the name of the Application you want to export."); - } + if (apps == null || apps.getList() == null || apps.getList().size() == 0) { + throw new IllegalStateException( + "No Applications to export that match your criteria! Check the name of the Application you want to export."); + } - log.info("Found {} Applications", apps.getCount()); + log.info("Found {} Applications", apps.getCount()); - int maxThreads = config.getMaxThreads(); - ExecutorService executor = Executors.newFixedThreadPool(maxThreads); + int maxThreads = config.getMaxThreads(); + ExecutorService executor = Executors.newFixedThreadPool(maxThreads); - for (ApplicationInfo app : apps.getList()) { - final int index = appCounter.getAndIncrement(); - executor.submit(() -> processApplication(app, token, index, apps.getCount())); - } + for (ApplicationInfo app : apps.getList()) { + final int index = appCounter.getAndIncrement(); + executor.submit(() -> processApplication(app, token, index, apps.getCount())); + } - executor.shutdown(); - if (!executor.awaitTermination(10, TimeUnit.MINUTES)) { - log.warn("Timeout waiting for API import tasks to finish"); - } - log.info("Finished processing Applications."); - } catch (Exception e) { - log.error("Error while exporting Applications.", e); - throw new RuntimeException("Export failed", e); - } - } + executor.shutdown(); + if (!executor.awaitTermination(10, TimeUnit.MINUTES)) { + log.warn("Timeout waiting for API import tasks to finish"); + } + log.info("Finished processing Applications."); + } catch (Exception e) { + log.error("Error while exporting Applications.", e); + throw new RuntimeException("Export failed", e); + } + } - private void processApplication(ApplicationInfo app, TokenResponse tokenResponse, int index, int total) { - long start = System.currentTimeMillis(); + private void processApplication(ApplicationInfo app, TokenResponse tokenResponse, int index, int total) { + long start = System.currentTimeMillis(); - try { - log.info("Processing API {} of {}", index, total); + try { + log.info("Processing API {} of {}", index, total); - Map httpHeaders = Collections.singletonMap("Authorization", - "Bearer " + tokenResponse.getAccess_token()); + Map httpHeaders = Collections.singletonMap("Authorization", + "Bearer " + tokenResponse.getAccess_token()); - HttpResponse exportedZip = makeRequest("GET", - config.getSource().getAdminApiUrl() + "/export/applications?appName=" + app.getName() + "&appOwner=" - + app.getOwner() + "&withKeys=true", - httpHeaders, - Collections.emptyMap(), true); + HttpResponse exportedZip = makeRequest( + "GET", config.getSource().getAdminApiUrl() + "/export/applications?appName=" + app.getName() + + "&appOwner=" + app.getOwner() + "&withKeys=true", + httpHeaders, Collections.emptyMap(), true); - List zipEntries = ZipUtils.extractFilesFromZip(exportedZip.getResponseBytes()); + List zipEntries = ZipUtils.extractFilesFromZip(exportedZip.getResponseBytes()); - for (ZipEntryData entry : zipEntries) { - ApplicationDetail appDetail = mapper.readValue(entry.getContent(), ApplicationDetail.class); + for (ZipEntryData entry : zipEntries) { + ApplicationDetail appDetail = mapper.readValue(entry.getContent(), ApplicationDetail.class); - String group = ARTIFACT_GROUP_APPLICATIONS; - String mainArtifactId = appDetail.getName() + "(" + appDetail.getOwner() + ")"; + String group = ARTIFACT_GROUP_APPLICATIONS; + String mainArtifactId = appDetail.getName() + "(" + appDetail.getOwner() + ")"; - VersionSearchResults existingArtifacts; - try { - existingArtifacts = client.listArtifactVersions(group, mainArtifactId, 0, Integer.MAX_VALUE); - } catch (Exception e) { - log.debug("No Application {} exists – will create it", mainArtifactId); - existingArtifacts = null; - } + VersionSearchResults existingArtifacts; + try { + existingArtifacts = client.listArtifactVersions(group, mainArtifactId, 0, Integer.MAX_VALUE); + } catch (Exception e) { + log.debug("No Application {} exists – will create it", mainArtifactId); + existingArtifacts = null; + } - if (existingArtifacts == null || existingArtifacts.getCount() == 0) { - createApplicationInApicurio(appDetail, group, mainArtifactId, entry.getContent()); - } else if (existingArtifacts != null && existingArtifacts.getCount() > 0 - && config.getApicurio().isOverwriteExistingApplication()) { - try { - log.info("Deleting existing Application in Apicurio '{}' ({}).", appDetail.getName(), - appDetail.getOwner()); - client.deleteArtifact(group, mainArtifactId); - createApplicationInApicurio(appDetail, group, mainArtifactId, entry.getContent()); - } catch (Exception e) { - log.error("Error deleting existing Application '{}' ({}): {}", appDetail.getName(), - appDetail.getOwner(), e.getMessage()); - } - } - } + if (existingArtifacts == null || existingArtifacts.getCount() == 0) { + createApplicationInApicurio(appDetail, group, mainArtifactId, entry.getContent()); + } else if (existingArtifacts != null && existingArtifacts.getCount() > 0 + && config.getApicurio().isOverwriteExistingApplication()) { + try { + log.info("Deleting existing Application in Apicurio '{}' ({}).", appDetail.getName(), + appDetail.getOwner()); + client.deleteArtifact(group, mainArtifactId); + createApplicationInApicurio(appDetail, group, mainArtifactId, entry.getContent()); + } catch (Exception e) { + log.error("Error deleting existing Application '{}' ({}): {}", appDetail.getName(), + appDetail.getOwner(), e.getMessage()); + } + } + } - log.info("Successfully imported Application '{}' ({}). Took {} ms", app.getName(), app.getOwner(), - System.currentTimeMillis() - start); - } catch (Exception e) { - log.error("Error processing Application {} of {}: {}", index, total, e.getMessage()); - } - } + log.info("Successfully imported Application '{}' ({}). Took {} ms", app.getName(), app.getOwner(), + System.currentTimeMillis() - start); + } catch (Exception e) { + log.error("Error processing Application {} of {}: {}", index, total, e.getMessage()); + } + } - private void createApplicationInApicurio(ApplicationDetail appDetail, String group, String mainArtifactId, - byte[] content) - throws Exception { - log.info("Creating new Application to Apicurio '{}' ({}).", appDetail.getName(), - appDetail.getOwner()); - // Create new artifact - ArtifactMetaData meta = client.createArtifact(group, mainArtifactId, - ARTIFACT_APPLICATION_DEFAULT_VERSION, null, null, - null, - appDetail.getName(), appDetail.getName(), null, null, null, - new ByteArrayInputStream(content), null); + private void createApplicationInApicurio(ApplicationDetail appDetail, String group, String mainArtifactId, + byte[] content) throws Exception { + log.info("Creating new Application to Apicurio '{}' ({}).", appDetail.getName(), appDetail.getOwner()); + // Create new artifact + ArtifactMetaData meta = client.createArtifact(group, mainArtifactId, ARTIFACT_APPLICATION_DEFAULT_VERSION, null, + null, null, appDetail.getName(), appDetail.getName(), null, null, null, + new ByteArrayInputStream(content), null); - // Create the three required rules - createRule(meta, "NONE", RuleType.COMPATIBILITY); - createRule(meta, "NONE", RuleType.VALIDITY); - createRule(meta, "NONE", RuleType.INTEGRITY); - } + // Create the three required rules + createRule(meta, "NONE", RuleType.COMPATIBILITY); + createRule(meta, "NONE", RuleType.VALIDITY); + createRule(meta, "NONE", RuleType.INTEGRITY); + } - private ApplicationList getApplicationList(String adminApiUrl, TokenResponse tokenResponse) throws Exception { + private ApplicationList getApplicationList(String adminApiUrl, TokenResponse tokenResponse) throws Exception { - ApplicationList listOfApps = null; + ApplicationList listOfApps = null; - try { - String url = adminApiUrl.concat(String.format("/applications")); + try { + String url = adminApiUrl.concat(String.format("/applications")); - log.debug("Getting Applications with token: '" + tokenResponse.getAccess_token() + "' URL: " + url); + log.debug("Getting Applications with token: '" + tokenResponse.getAccess_token() + "' URL: " + url); - Map httpHeaders = new HashMap<>(); - Map params = new HashMap<>(); + Map httpHeaders = new HashMap<>(); + Map params = new HashMap<>(); - httpHeaders.put("Authorization", "Bearer ".concat(tokenResponse.getAccess_token())); + httpHeaders.put("Authorization", "Bearer ".concat(tokenResponse.getAccess_token())); - HttpResponse response = makeRequest("GET", url, httpHeaders, params); + HttpResponse response = makeRequest("GET", url, httpHeaders, params); - log.debug("Listing APIs: HTTP Code " + response.getResponseCode() + " Data: " + response.getResponse()); + log.debug("Listing APIs: HTTP Code " + response.getResponseCode() + " Data: " + response.getResponse()); - listOfApps = mapper.readValue(response.getResponse(), ApplicationList.class); + listOfApps = mapper.readValue(response.getResponse(), ApplicationList.class); - if (response.getResponseCode() != 200) - log.error("Cannot list API. Something bad happened."); - } catch (Exception e) { - log.error("Cannot list API:" + e); - throw new Exception("Cannot list API:" + e.getMessage()); - } - return listOfApps; - } + if (response.getResponseCode() != 200) + log.error("Cannot list API. Something bad happened."); + } catch (Exception e) { + log.error("Cannot list API:" + e); + throw new Exception("Cannot list API:" + e.getMessage()); + } + return listOfApps; + } } 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 1aad8b1..9691986 100644 --- a/src/main/java/cz/trask/migration/impl/v45/ExportApisToWso2FromV32.java +++ b/src/main/java/cz/trask/migration/impl/v45/ExportApisToWso2FromV32.java @@ -148,8 +148,7 @@ public class ExportApisToWso2FromV32 extends AbstractProcess { return responseCode; } - public byte[] prepareApiZipFile32to45(SearchedVersion ver, List ref) - throws Exception { + public byte[] prepareApiZipFile32to45(SearchedVersion ver, List ref) throws Exception { String baseDir = ver.getName() + "-" + ver.getVersion() + "/"; diff --git a/src/main/java/cz/trask/migration/impl/v45/ExportAppsToWso2FromV32.java b/src/main/java/cz/trask/migration/impl/v45/ExportAppsToWso2FromV32.java index a142e20..fbd80aa 100644 --- a/src/main/java/cz/trask/migration/impl/v45/ExportAppsToWso2FromV32.java +++ b/src/main/java/cz/trask/migration/impl/v45/ExportAppsToWso2FromV32.java @@ -28,285 +28,280 @@ import lombok.extern.log4j.Log4j2; @Log4j2 public class ExportAppsToWso2FromV32 extends AbstractProcess { - private static final int DEFAULT_TIMEOUT_MINUTES = 10; - private static final String APPLICATIONS_ENDPOINT_PATH = "/applications"; - private static final String CHANGE_OWNER_PATH = "/change-owner"; + private static final int DEFAULT_TIMEOUT_MINUTES = 10; + private static final String APPLICATIONS_ENDPOINT_PATH = "/applications"; + private static final String CHANGE_OWNER_PATH = "/change-owner"; - private final AtomicInteger appCounter = new AtomicInteger(1); - private SearchedArtifact adminsDefaultApplication; + private final AtomicInteger appCounter = new AtomicInteger(1); + private SearchedArtifact adminsDefaultApplication; - /** - * Main entry point for the export process. - * - * @throws RuntimeException if any error occurs - */ - public void process() { - try { - log.info("Starting App export to WSO2 from Apicurio..."); + /** + * Main entry point for the export process. + * + * @throws RuntimeException if any error occurs + */ + public void process() { + try { + log.info("Starting App export to WSO2 from Apicurio..."); - TokenResponse token = authenticateToWso2AndGetToken(config.getTarget()); + TokenResponse token = authenticateToWso2AndGetToken(config.getTarget()); - ArtifactSearchResults apps = client.searchArtifacts(ARTIFACT_GROUP_APPLICATIONS, null, null, - null, null, null, null, null, null); + ArtifactSearchResults apps = client.searchArtifacts(ARTIFACT_GROUP_APPLICATIONS, null, null, null, null, + null, null, null, null); - log.info("Found {} Apps", apps.getCount()); + log.info("Found {} Apps", apps.getCount()); - processApplications(apps, token); + processApplications(apps, token); - if (adminsDefaultApplication != null) { - log.info("Found default application for admin: {}", adminsDefaultApplication.getName()); - processApp(adminsDefaultApplication, token, 1, 1, true); - } - } catch (Exception e) { - log.error("Error while exporting Apps.", e); - throw new RuntimeException("Export failed", e); - } - } + if (adminsDefaultApplication != null) { + log.info("Found default application for admin: {}", adminsDefaultApplication.getName()); + processApp(adminsDefaultApplication, token, 1, 1, true); + } + } catch (Exception e) { + log.error("Error while exporting Apps.", e); + throw new RuntimeException("Export failed", e); + } + } - private void processApplications(ArtifactSearchResults apps, TokenResponse token) throws InterruptedException { - int maxThreads = config.getMaxThreads(); - ExecutorService executor = Executors.newFixedThreadPool(maxThreads); + private void processApplications(ArtifactSearchResults apps, TokenResponse token) throws InterruptedException { + int maxThreads = config.getMaxThreads(); + ExecutorService executor = Executors.newFixedThreadPool(maxThreads); - for (SearchedArtifact app : apps.getArtifacts()) { - final int index = appCounter.getAndIncrement(); - executor.submit(() -> processApp(app, token, index, apps.getCount(), false)); - } + for (SearchedArtifact app : apps.getArtifacts()) { + final int index = appCounter.getAndIncrement(); + executor.submit(() -> processApp(app, token, index, apps.getCount(), false)); + } - executor.shutdown(); - if (!executor.awaitTermination(DEFAULT_TIMEOUT_MINUTES, TimeUnit.MINUTES)) { - log.warn("Timeout waiting for App export tasks to finish"); - } - log.info("Finished processing Apps."); - } + executor.shutdown(); + if (!executor.awaitTermination(DEFAULT_TIMEOUT_MINUTES, TimeUnit.MINUTES)) { + log.warn("Timeout waiting for App export tasks to finish"); + } + log.info("Finished processing Apps."); + } - private void processApp(SearchedArtifact app, TokenResponse tokenResponse, int index, int total, - boolean createAdminApp) { - long start = System.currentTimeMillis(); + private void processApp(SearchedArtifact app, TokenResponse tokenResponse, int index, int total, + boolean createAdminApp) { + long start = System.currentTimeMillis(); - try { - log.info("Processing App {} of {}", index, total); + try { + log.info("Processing App {} of {}", index, total); - VersionSearchResults versions = client.listArtifactVersions(ARTIFACT_GROUP_APPLICATIONS, - app.getId(), null, null); + VersionSearchResults versions = client.listArtifactVersions(ARTIFACT_GROUP_APPLICATIONS, app.getId(), null, + null); - for (SearchedVersion ver : versions.getVersions()) { - processAppVersion(app, tokenResponse, ver, createAdminApp); - } + for (SearchedVersion ver : versions.getVersions()) { + processAppVersion(app, tokenResponse, ver, createAdminApp); + } - long end = System.currentTimeMillis(); - log.info("Finished processing App {} of {} in {} ms", index, total, (end - start)); - } catch (Exception e) { - log.error("IO error while importing App {}: {}", app.getId(), e.getMessage(), e); - } - } + long end = System.currentTimeMillis(); + log.info("Finished processing App {} of {} in {} ms", index, total, (end - start)); + } catch (Exception e) { + log.error("IO error while importing App {}: {}", app.getId(), e.getMessage(), e); + } + } - private void processAppVersion(SearchedArtifact app, TokenResponse tokenResponse, SearchedVersion version, - boolean createAdminApp) { - try { - log.info(" - Found version: {}", version.getVersion()); + private void processAppVersion(SearchedArtifact app, TokenResponse tokenResponse, SearchedVersion version, + boolean createAdminApp) { + try { + log.info(" - Found version: {}", version.getVersion()); - ArtifactMetaData amd = client.getArtifactMetaData(app.getGroupId(), app.getId()); - byte[] content = client.getContentByGlobalId(amd.getGlobalId()).readAllBytes(); + ArtifactMetaData amd = client.getArtifactMetaData(app.getGroupId(), app.getId()); + byte[] content = client.getContentByGlobalId(amd.getGlobalId()).readAllBytes(); - if (content != null && content.length > 0) { - ApplicationDetail appDetail = mapper.readValue(content, ApplicationDetail.class); + if (content != null && content.length > 0) { + ApplicationDetail appDetail = mapper.readValue(content, ApplicationDetail.class); - // Skip default admin application unless explicitly requested - if (DEFAULT_APPLICATION_NAME.equals(appDetail.getName()) - && ADMIN_USERNAME.equals(appDetail.getOwner()) && !createAdminApp) { - adminsDefaultApplication = app; - deleteWso2ApplicationIfExists(appDetail, tokenResponse); - log.info(" - Skipping import of admins-default-application for now."); - return; - } + // Skip default admin application unless explicitly requested + if (DEFAULT_APPLICATION_NAME.equals(appDetail.getName()) && ADMIN_USERNAME.equals(appDetail.getOwner()) + && !createAdminApp) { + adminsDefaultApplication = app; + deleteWso2ApplicationIfExists(appDetail, tokenResponse); + log.info(" - Skipping import of admins-default-application for now."); + return; + } - ApplicationCreateRequest appCreateRequest = mapAppDetailToCreateRequest(appDetail); - byte[] data = mapper.writeValueAsBytes(appCreateRequest); - log.info(" - Application {} with owner {} prepared for WSO2 export", appDetail.getName(), - appDetail.getOwner()); + ApplicationCreateRequest appCreateRequest = mapAppDetailToCreateRequest(appDetail); + byte[] data = mapper.writeValueAsBytes(appCreateRequest); + log.info(" - Application {} with owner {} prepared for WSO2 export", appDetail.getName(), + appDetail.getOwner()); - deleteWso2ApplicationIfExists(appDetail, tokenResponse); + deleteWso2ApplicationIfExists(appDetail, tokenResponse); - HttpResponse response = publishAppToWso2(appDetail.getName(), data, tokenResponse); + HttpResponse response = publishAppToWso2(appDetail.getName(), data, tokenResponse); - if (response.getResponseCode() == 200 || response.getResponseCode() == 201) { - log.info(" - Application {} imported successfully", appDetail.getName()); + if (response.getResponseCode() == 200 || response.getResponseCode() == 201) { + log.info(" - Application {} imported successfully", appDetail.getName()); - ApplicationCreateResponse createdApp = mapper.readValue(response.getResponse(), - ApplicationCreateResponse.class); - log.info(" - Created Application ID in WSO2: {}", createdApp.getApplicationId()); + ApplicationCreateResponse createdApp = mapper.readValue(response.getResponse(), + ApplicationCreateResponse.class); + log.info(" - Created Application ID in WSO2: {}", createdApp.getApplicationId()); - if (appDetail.getKeyManagerWiseOAuthApp() != null - && !appDetail.getKeyManagerWiseOAuthApp().isEmpty()) { - log.info(" - Application {} has {} Key Mappings to create", - appDetail.getName(), appDetail.getKeyManagerWiseOAuthApp().size()); - for (Entry> entry : appDetail - .getKeyManagerWiseOAuthApp().entrySet()) { - String keyType = entry.getKey(); + if (appDetail.getKeyManagerWiseOAuthApp() != null + && !appDetail.getKeyManagerWiseOAuthApp().isEmpty()) { + log.info(" - Application {} has {} Key Mappings to create", appDetail.getName(), + appDetail.getKeyManagerWiseOAuthApp().size()); + for (Entry> entry : appDetail.getKeyManagerWiseOAuthApp() + .entrySet()) { + String keyType = entry.getKey(); - Map keyManagerApp = entry.getValue(); + Map keyManagerApp = entry.getValue(); - for (Entry kmEntry : keyManagerApp.entrySet()) { - String keyManager = kmEntry.getKey(); - KeyManagerApp oauthInfo = kmEntry.getValue(); + for (Entry kmEntry : keyManagerApp.entrySet()) { + String keyManager = kmEntry.getKey(); + KeyManagerApp oauthInfo = kmEntry.getValue(); - log.info(" - Creating Key Mapping for Key Manager: {}", keyManager); - // Map to v4.5 request - ApplicationKeyMappingRequest45 keyMappingRequest = ApplicationKeyMappingRequest45 - .builder() - .consumerKey(oauthInfo.getClientId()) - .consumerSecret(oauthInfo.getClientSecret()) - .keyManager(keyManager) - .keyType(ApplicationKeyMappingRequest45.KeyType - .valueOf(keyType)) - .build(); + log.info(" - Creating Key Mapping for Key Manager: {}", keyManager); + // Map to v4.5 request + ApplicationKeyMappingRequest45 keyMappingRequest = ApplicationKeyMappingRequest45 + .builder().consumerKey(oauthInfo.getClientId()) + .consumerSecret(oauthInfo.getClientSecret()).keyManager(keyManager) + .keyType(ApplicationKeyMappingRequest45.KeyType.valueOf(keyType)).build(); - byte[] kmData = mapper.writeValueAsBytes(keyMappingRequest); - publishApplicationKeyMappingToWso2(createdApp.getApplicationId(), kmData, - tokenResponse); - } - } - } + byte[] kmData = mapper.writeValueAsBytes(keyMappingRequest); + publishApplicationKeyMappingToWso2(createdApp.getApplicationId(), kmData, + tokenResponse); + } + } + } - if (!createdApp.getOwner().equals(appDetail.getOwner())) { - log.info(" - Changing owner of Application {} to {}", createdApp.getApplicationId(), - appDetail.getOwner()); - changeApplicationOwner(createdApp, appDetail.getOwner(), tokenResponse); - } + if (!createdApp.getOwner().equals(appDetail.getOwner())) { + log.info(" - Changing owner of Application {} to {}", createdApp.getApplicationId(), + appDetail.getOwner()); + changeApplicationOwner(createdApp, appDetail.getOwner(), tokenResponse); + } - } - } - } catch (Exception e) { - log.error("Error processing application version: {}", e.getMessage(), e); - } - } + } + } + } catch (Exception e) { + log.error("Error processing application version: {}", e.getMessage(), e); + } + } - private void publishApplicationKeyMappingToWso2(String applicationId, byte[] kmData, TokenResponse tokenResponse) { - try { - // Publish the application key mapping data to WSO2 - Map httpHeaders = createBearerAuthHeaders(tokenResponse); - httpHeaders.put("Content-Type", "application/json"); + private void publishApplicationKeyMappingToWso2(String applicationId, byte[] kmData, TokenResponse tokenResponse) { + try { + // Publish the application key mapping data to WSO2 + Map httpHeaders = createBearerAuthHeaders(tokenResponse); + httpHeaders.put("Content-Type", "application/json"); - String endpoint = config.getTarget().getDevPortalApiUrl() + "/v3/applications/" + applicationId - + "/map-keys"; + String endpoint = config.getTarget().getDevPortalApiUrl() + "/v3/applications/" + applicationId + + "/map-keys"; - HttpResponse response = makeDataRequest(endpoint, httpHeaders, kmData); + HttpResponse response = makeDataRequest(endpoint, httpHeaders, kmData); - if (response.getResponseCode() == 200 || response.getResponseCode() == 201) { - log.info(" - Key Mapping for Application {} created successfully in WSO2", applicationId); - } else { - log.warn(" - Key Mapping for Application {} creation in WSO2 failed with response code {}", - applicationId, response.getResponseCode()); - } - } catch (Exception e) { - log.error("IO error while creating Key Mapping for Application {}: {}", applicationId, - e.getMessage(), e); - } - } + if (response.getResponseCode() == 200 || response.getResponseCode() == 201) { + log.info(" - Key Mapping for Application {} created successfully in WSO2", applicationId); + } else { + log.warn(" - Key Mapping for Application {} creation in WSO2 failed with response code {}", + applicationId, response.getResponseCode()); + } + } catch (Exception e) { + log.error("IO error while creating Key Mapping for Application {}: {}", applicationId, e.getMessage(), e); + } + } - private void deleteWso2ApplicationIfExists(ApplicationDetail appDetail, TokenResponse tokenResponse) { - // Resolve application id by name first (WSO2 Admin API works with applicationId - // in paths) - String resolvedAppId = getExistingApplicationId(config.getTarget().getAdminApiUrl(), appDetail, tokenResponse); + private void deleteWso2ApplicationIfExists(ApplicationDetail appDetail, TokenResponse tokenResponse) { + // Resolve application id by name first (WSO2 Admin API works with applicationId + // in paths) + String resolvedAppId = getExistingApplicationId(config.getTarget().getAdminApiUrl(), appDetail, tokenResponse); - if (resolvedAppId == null) { - log.warn(" - Application {} not found in WSO2, cannot delete", appDetail.getName()); - return; - } + if (resolvedAppId == null) { + log.warn(" - Application {} not found in WSO2, cannot delete", appDetail.getName()); + return; + } - String endpoint = config.getTarget().getAdminApiUrl() + APPLICATIONS_ENDPOINT_PATH + "/" + resolvedAppId; + String endpoint = config.getTarget().getAdminApiUrl() + APPLICATIONS_ENDPOINT_PATH + "/" + resolvedAppId; - try { - Map httpHeaders = createBearerAuthHeaders(tokenResponse); + try { + Map httpHeaders = createBearerAuthHeaders(tokenResponse); - HttpResponse response = makeRequest("DELETE", endpoint, httpHeaders, null); + HttpResponse response = makeRequest("DELETE", endpoint, httpHeaders, null); - if (response.getResponseCode() == 200 || response.getResponseCode() == 204) { - log.info(" - Application {} (id={}) deleted successfully from WSO2", appDetail.getName(), - resolvedAppId); - } else { - log.info(" - Application {} (id={}) deletion from WSO2 returned response code {}", - appDetail.getName(), resolvedAppId, response.getResponseCode()); - } - } catch (Exception e) { - log.error("IO error while deleting Application {} (id={}): {}", appDetail.getName(), resolvedAppId, - e.getMessage(), e); - } - } + if (response.getResponseCode() == 200 || response.getResponseCode() == 204) { + log.info(" - Application {} (id={}) deleted successfully from WSO2", appDetail.getName(), + resolvedAppId); + } else { + log.info(" - Application {} (id={}) deletion from WSO2 returned response code {}", appDetail.getName(), + resolvedAppId, response.getResponseCode()); + } + } catch (Exception e) { + log.error("IO error while deleting Application {} (id={}): {}", appDetail.getName(), resolvedAppId, + e.getMessage(), e); + } + } - private String getExistingApplicationId(String adminApiUrl, ApplicationDetail appDetail, - TokenResponse tokenResponse) { - try { - String url = adminApiUrl.concat(APPLICATIONS_ENDPOINT_PATH); + private String getExistingApplicationId(String adminApiUrl, ApplicationDetail appDetail, + TokenResponse tokenResponse) { + try { + String url = adminApiUrl.concat(APPLICATIONS_ENDPOINT_PATH); - Map httpHeaders = createBearerAuthHeaders(tokenResponse); - Map params = new HashMap<>(); + Map httpHeaders = createBearerAuthHeaders(tokenResponse); + Map params = new HashMap<>(); - HttpResponse response = makeRequest("GET", url, httpHeaders, params); + HttpResponse response = makeRequest("GET", url, httpHeaders, params); - if (response.getResponseCode() != 200) { - log.warn("Cannot list Applications (HTTP {}). Will not attempt delete.", response.getResponseCode()); - return null; - } + if (response.getResponseCode() != 200) { + log.warn("Cannot list Applications (HTTP {}). Will not attempt delete.", response.getResponseCode()); + return null; + } - ApplicationListResponse45 listOfApps = mapper.readValue(response.getResponse(), - ApplicationListResponse45.class); + ApplicationListResponse45 listOfApps = mapper.readValue(response.getResponse(), + ApplicationListResponse45.class); - if (listOfApps != null && listOfApps.getList() != null) { - for (ApplicationListResponse45.Application info : listOfApps.getList()) { - if (appDetail.getName().equals(info.getName()) && appDetail.getOwner().equals(info.getOwner())) { - return info.getApplicationId(); - } - } - } - } catch (Exception e) { - log.error("Error while resolving Application id for name {}: {}", appDetail.getName(), e.getMessage(), e); - } + if (listOfApps != null && listOfApps.getList() != null) { + for (ApplicationListResponse45.Application info : listOfApps.getList()) { + if (appDetail.getName().equals(info.getName()) && appDetail.getOwner().equals(info.getOwner())) { + return info.getApplicationId(); + } + } + } + } catch (Exception e) { + log.error("Error while resolving Application id for name {}: {}", appDetail.getName(), e.getMessage(), e); + } - return null; - } + return null; + } - private HttpResponse publishAppToWso2(String name, byte[] data, TokenResponse tokenResponse) throws Exception { - // Publish the application data to WSO2 - Map httpHeaders = createBasicAuthHeaders(config.getTarget().getWso2User()); - httpHeaders.put("Content-Type", "application/json"); + private HttpResponse publishAppToWso2(String name, byte[] data, TokenResponse tokenResponse) throws Exception { + // Publish the application data to WSO2 + Map httpHeaders = createBasicAuthHeaders(config.getTarget().getWso2User()); + httpHeaders.put("Content-Type", "application/json"); - String endpoint = config.getTarget().getDevPortalApiUrl() + "/v3/applications"; + String endpoint = config.getTarget().getDevPortalApiUrl() + "/v3/applications"; - return makeDataRequest(endpoint, httpHeaders, data); - } + return makeDataRequest(endpoint, httpHeaders, data); + } - private void changeApplicationOwner(ApplicationCreateResponse createdApp, String origOwner, - TokenResponse tokenResponse) { - String endpoint = config.getTarget().getAdminApiUrl() + APPLICATIONS_ENDPOINT_PATH + "/" - + createdApp.getApplicationId() + CHANGE_OWNER_PATH + "?owner=" + origOwner; + private void changeApplicationOwner(ApplicationCreateResponse createdApp, String origOwner, + TokenResponse tokenResponse) { + String endpoint = config.getTarget().getAdminApiUrl() + APPLICATIONS_ENDPOINT_PATH + "/" + + createdApp.getApplicationId() + CHANGE_OWNER_PATH + "?owner=" + origOwner; - try { - Map httpHeaders = createBearerAuthHeaders(tokenResponse); + try { + Map httpHeaders = createBearerAuthHeaders(tokenResponse); - HttpResponse response = makeRequest("POST", endpoint, httpHeaders, null); + HttpResponse response = makeRequest("POST", endpoint, httpHeaders, null); - if (response.getResponseCode() == 200 || response.getResponseCode() == 201) { - log.info(" - Application {} owner changed successfully to {}", createdApp.getApplicationId(), - origOwner); - } else { - log.warn(" - Application {} owner change to {} failed with response code {}", - createdApp.getApplicationId(), origOwner, response.getResponseCode()); - } - } catch (Exception e) { - log.error("IO error while changing owner of Application {}: {}", createdApp.getApplicationId(), - e.getMessage(), e); - } - } + if (response.getResponseCode() == 200 || response.getResponseCode() == 201) { + log.info(" - Application {} owner changed successfully to {}", createdApp.getApplicationId(), + origOwner); + } else { + log.warn(" - Application {} owner change to {} failed with response code {}", + createdApp.getApplicationId(), origOwner, response.getResponseCode()); + } + } catch (Exception e) { + log.error("IO error while changing owner of Application {}: {}", createdApp.getApplicationId(), + e.getMessage(), e); + } + } - private ApplicationCreateRequest mapAppDetailToCreateRequest(ApplicationDetail appDetail) { - ApplicationCreateRequest request = new ApplicationCreateRequest(); - request.setName(appDetail.getName()); - request.setDescription(appDetail.getDescription()); - request.setThrottlingPolicy(appDetail.getTier()); - request.setTokenType(appDetail.getTokenType()); - request.setGroups(List.of(appDetail.getGroupId())); + private ApplicationCreateRequest mapAppDetailToCreateRequest(ApplicationDetail appDetail) { + ApplicationCreateRequest request = new ApplicationCreateRequest(); + request.setName(appDetail.getName()); + request.setDescription(appDetail.getDescription()); + request.setThrottlingPolicy(appDetail.getTier()); + request.setTokenType(appDetail.getTokenType()); + request.setGroups(List.of(appDetail.getGroupId())); - return request; - } + return request; + } } \ No newline at end of file diff --git a/src/main/java/cz/trask/migration/mapper/ApiDefinitionMapper32to45.java b/src/main/java/cz/trask/migration/mapper/ApiDefinitionMapper32to45.java index 9574380..6688152 100644 --- a/src/main/java/cz/trask/migration/mapper/ApiDefinitionMapper32to45.java +++ b/src/main/java/cz/trask/migration/mapper/ApiDefinitionMapper32to45.java @@ -42,7 +42,8 @@ public class ApiDefinitionMapper32to45 { : ""); data.setVersion(oldApi.getId() != null ? oldApi.getId().getVersion() : null); data.setProvider(oldApi.getId() != null ? oldApi.getId().getProviderName() : null); - //data.setContext(swaggerData.get("basePath") != null ? swaggerData.get("basePath").toString() : ""); + // data.setContext(swaggerData.get("basePath") != null ? + // swaggerData.get("basePath").toString() : ""); data.setContext(oldApi.getContext()); data.setLifeCycleStatus(oldApi.getStatus()); data.setDefaultVersion(oldApi.isDefaultVersion()); @@ -129,7 +130,7 @@ public class ApiDefinitionMapper32to45 { data.getBusinessInformation().put("businessOwnerEmail", oldApi.getBusinessOwnerEmail()); data.getBusinessInformation().put("technicalOwner", oldApi.getTechnicalOwner()); data.getBusinessInformation().put("technicalOwnerEmail", oldApi.getTechnicalOwnerEmail()); - + // ---------- additional properties ---------- data.setAdditionalProperties(mapAdditionalProperties(oldApi.getAdditionalProperties())); data.setAdditionalPropertiesMap(mapAdditionalPropertiesMap(oldApi.getAdditionalProperties())); @@ -156,13 +157,13 @@ public class ApiDefinitionMapper32to45 { if (additionalProperties != null && !additionalProperties.isEmpty()) { List list = new ArrayList<>(); for (Map.Entry entry : additionalProperties.entrySet()) { - Map map = new HashMap<>(); - map.put("name", entry.getKey()); + Map map = new HashMap<>(); + map.put("name", entry.getKey()); map.put("value", entry.getValue()); - map.put("display", "false"); + map.put("display", "false"); list.add(map); } - return list; + return list; } return null; } diff --git a/src/main/java/cz/trask/migration/model/v32/ApplicationDetail.java b/src/main/java/cz/trask/migration/model/v32/ApplicationDetail.java index 8884e6a..f43dd0f 100644 --- a/src/main/java/cz/trask/migration/model/v32/ApplicationDetail.java +++ b/src/main/java/cz/trask/migration/model/v32/ApplicationDetail.java @@ -1,111 +1,111 @@ package cz.trask.migration.model.v32; -import lombok.Data; -import lombok.AllArgsConstructor; -import lombok.NoArgsConstructor; - import java.util.HashMap; import java.util.List; import java.util.Map; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + @Data @AllArgsConstructor @NoArgsConstructor public class ApplicationDetail { - private int id; - private String name; - private String uuid; - private Subscriber subscriber; - private List subscribedAPIs; - private List keys; - private Map> keyManagerWiseOAuthApp; - private String tier; - private String description; - private String status; - private String groupId; - private String owner; - private Map applicationAttributes; - private String tokenType; - private int subscriptionCount; + private int id; + private String name; + private String uuid; + private Subscriber subscriber; + private List subscribedAPIs; + private List keys; + private Map> keyManagerWiseOAuthApp; + private String tier; + private String description; + private String status; + private String groupId; + private String owner; + private Map applicationAttributes; + private String tokenType; + private int subscriptionCount; - @Data - @AllArgsConstructor - @NoArgsConstructor - public static class Subscriber { - private String name; - private int id; - private int tenantId; - } + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class Subscriber { + private String name; + private int id; + private int tenantId; + } - @Data - @AllArgsConstructor - @NoArgsConstructor - public static class SubscribedAPI { - private int subscriptionId; - private Tier tier; - private Subscriber subscriber; - private ApiId apiId; - private Application application; - private String subStatus; - private String subCreatedStatus; - private List keys; - private String uuid; - private boolean isBlocked; + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class SubscribedAPI { + private int subscriptionId; + private Tier tier; + private Subscriber subscriber; + private ApiId apiId; + private Application application; + private String subStatus; + private String subCreatedStatus; + private List keys; + private String uuid; + private boolean isBlocked; - @Data - @AllArgsConstructor - @NoArgsConstructor - public static class Tier { - private String name; - private String displayName; - private int requestsPerMin; - private int requestCount; - private int unitTime; - private String timeUnit; - private boolean stopOnQuotaReached; - } + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class Tier { + private String name; + private String displayName; + private int requestsPerMin; + private int requestCount; + private int unitTime; + private String timeUnit; + private boolean stopOnQuotaReached; + } - @Data - @AllArgsConstructor - @NoArgsConstructor - public static class ApiId { - private String providerName; - private String apiName; - private String version; - private int id; - } + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class ApiId { + private String providerName; + private String apiName; + private String version; + private int id; + } - @Data - @AllArgsConstructor - @NoArgsConstructor - public static class Application { - private int id; - private String name; - private String uuid; - private Subscriber subscriber; - private List subscribedAPIs; - private List keys; - private Map keyManagerWiseOAuthApp; - private Map applicationAttributes; - private int subscriptionCount; - } - } + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class Application { + private int id; + private String name; + private String uuid; + private Subscriber subscriber; + private List subscribedAPIs; + private List keys; + private Map keyManagerWiseOAuthApp; + private Map applicationAttributes; + private int subscriptionCount; + } + } - @Data - @AllArgsConstructor - @NoArgsConstructor - public static class KeyManagerApp { - private String clientId; - private String clientName; - private String callBackURL; - private String clientSecret; - private Map parameters = new HashMap(); - private boolean isSaasApplication; - private String appOwner; - private String jsonString; - private Map appAttributes = new HashMap<>(); - private String jsonAppAttribute; - private String applicationUUID; - private String tokenType; - } + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class KeyManagerApp { + private String clientId; + private String clientName; + private String callBackURL; + private String clientSecret; + private Map parameters = new HashMap(); + private boolean isSaasApplication; + private String appOwner; + private String jsonString; + private Map appAttributes = new HashMap<>(); + private String jsonAppAttribute; + private String applicationUUID; + private String tokenType; + } } diff --git a/src/main/java/cz/trask/migration/model/v32/ApplicationList.java b/src/main/java/cz/trask/migration/model/v32/ApplicationList.java index 6d75a20..127bc68 100644 --- a/src/main/java/cz/trask/migration/model/v32/ApplicationList.java +++ b/src/main/java/cz/trask/migration/model/v32/ApplicationList.java @@ -10,19 +10,19 @@ import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor public class ApplicationList { - private int count; - private String next; - private String previous; - private List list; + private int count; + private String next; + private String previous; + private List list; - @Data - @AllArgsConstructor - @NoArgsConstructor - public static class ApplicationInfo { - private String applicationId; - private String name; - private String owner; - private String status; - private Object groupId; - } + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class ApplicationInfo { + private String applicationId; + private String name; + private String owner; + private String status; + private Object groupId; + } } diff --git a/src/main/java/cz/trask/migration/model/v32/Documents32.java b/src/main/java/cz/trask/migration/model/v32/Documents32.java index 33fb783..71ce547 100644 --- a/src/main/java/cz/trask/migration/model/v32/Documents32.java +++ b/src/main/java/cz/trask/migration/model/v32/Documents32.java @@ -24,30 +24,17 @@ public class Documents32 { private String createdBy = null; private String lastUpdatedTime = null; private String lastUpdatedBy = null; - + public enum TypeEnum { - HOWTO, - SAMPLES, - PUBLIC_FORUM, - SUPPORT_FORUM, - API_MESSAGE_FORMAT, - SWAGGER_DOC, - OTHER + HOWTO, SAMPLES, PUBLIC_FORUM, SUPPORT_FORUM, API_MESSAGE_FORMAT, SWAGGER_DOC, OTHER } public enum SourceTypeEnum { - INLINE, - MARKDOWN, - URL, - FILE + INLINE, MARKDOWN, URL, FILE } - - public enum VisibilityEnum { - OWNER_ONLY, - PRIVATE, - API_LEVEL + OWNER_ONLY, PRIVATE, API_LEVEL } @Override diff --git a/src/main/java/cz/trask/migration/model/v32/Subscriptions.java b/src/main/java/cz/trask/migration/model/v32/Subscriptions.java index 76a6c4f..ef9a2a2 100644 --- a/src/main/java/cz/trask/migration/model/v32/Subscriptions.java +++ b/src/main/java/cz/trask/migration/model/v32/Subscriptions.java @@ -3,6 +3,7 @@ package cz.trask.migration.model.v32; import java.util.List; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + import lombok.Data; @Data diff --git a/src/main/java/cz/trask/migration/model/v45/ApplicationCreateRequest.java b/src/main/java/cz/trask/migration/model/v45/ApplicationCreateRequest.java index 7ca3e3d..95d8f99 100644 --- a/src/main/java/cz/trask/migration/model/v45/ApplicationCreateRequest.java +++ b/src/main/java/cz/trask/migration/model/v45/ApplicationCreateRequest.java @@ -1,51 +1,55 @@ package cz.trask.migration.model.v45; -import lombok.Data; -import lombok.AllArgsConstructor; -import lombok.NoArgsConstructor; -import javax.validation.constraints.*; import java.util.List; import java.util.Map; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Pattern; +import javax.validation.constraints.Size; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + @Data @AllArgsConstructor @NoArgsConstructor public class ApplicationCreateRequest { - - @NotNull - @Size(min = 1, max = 100) - private String name; - - @NotNull - private String throttlingPolicy; - - @Size(max = 512) - private String description; - - @Pattern(regexp = "JWT|OAUTH") - private String tokenType = "JWT"; - - private List groups; - - private Map attributes; - - private List subscriptionScopes; - - @Pattern(regexp = "PRIVATE|SHARED_WITH_ORG") - private String visibility; - - @Data - @AllArgsConstructor - @NoArgsConstructor - public static class SubscriptionScope { - @NotNull - private String key; - - @NotNull - private String name; - - private List roles; - - private String description; - } + + @NotNull + @Size(min = 1, max = 100) + private String name; + + @NotNull + private String throttlingPolicy; + + @Size(max = 512) + private String description; + + @Pattern(regexp = "JWT|OAUTH") + private String tokenType = "JWT"; + + private List groups; + + private Map attributes; + + private List subscriptionScopes; + + @Pattern(regexp = "PRIVATE|SHARED_WITH_ORG") + private String visibility; + + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class SubscriptionScope { + @NotNull + private String key; + + @NotNull + private String name; + + private List roles; + + private String description; + } } diff --git a/src/main/java/cz/trask/migration/model/v45/ApplicationCreateResponse.java b/src/main/java/cz/trask/migration/model/v45/ApplicationCreateResponse.java index 95cc8cf..30e30c0 100644 --- a/src/main/java/cz/trask/migration/model/v45/ApplicationCreateResponse.java +++ b/src/main/java/cz/trask/migration/model/v45/ApplicationCreateResponse.java @@ -1,87 +1,88 @@ package cz.trask.migration.model.v45; -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; -import lombok.AllArgsConstructor; -import lombok.NoArgsConstructor; - import java.util.List; import java.util.Map; +import com.fasterxml.jackson.annotation.JsonProperty; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + @Data @NoArgsConstructor @AllArgsConstructor public class ApplicationCreateResponse { - @JsonProperty("applicationId") - private String applicationId; - - @JsonProperty("name") - private String name; - - @JsonProperty("throttlingPolicy") - private String throttlingPolicy; - - @JsonProperty("description") - private String description; - - @JsonProperty("tokenType") - private String tokenType = "JWT"; - - @JsonProperty("status") - private String status = ""; - - @JsonProperty("groups") - private List groups; - - @JsonProperty("subscriptionCount") - private Integer subscriptionCount; - - @JsonProperty("keys") - private List keys; - - @JsonProperty("attributes") - private Map attributes; - - @JsonProperty("subscriptionScopes") - private List subscriptionScopes; - - @JsonProperty("owner") - private String owner; - - @JsonProperty("hashEnabled") - private Boolean hashEnabled; - - @JsonProperty("createdTime") - private String createdTime; - - @JsonProperty("updatedTime") - private String updatedTime; - - @JsonProperty("visibility") - private String visibility; - - @Data - @NoArgsConstructor - @AllArgsConstructor - public static class ApplicationKey { - @JsonProperty("key") - private String key; - - @JsonProperty("keyType") - private String keyType; - - @JsonProperty("state") - private String state; - } - - @Data - @NoArgsConstructor - @AllArgsConstructor - public static class SubscriptionScope { - @JsonProperty("name") - private String name; - - @JsonProperty("description") - private String description; - } + @JsonProperty("applicationId") + private String applicationId; + + @JsonProperty("name") + private String name; + + @JsonProperty("throttlingPolicy") + private String throttlingPolicy; + + @JsonProperty("description") + private String description; + + @JsonProperty("tokenType") + private String tokenType = "JWT"; + + @JsonProperty("status") + private String status = ""; + + @JsonProperty("groups") + private List groups; + + @JsonProperty("subscriptionCount") + private Integer subscriptionCount; + + @JsonProperty("keys") + private List keys; + + @JsonProperty("attributes") + private Map attributes; + + @JsonProperty("subscriptionScopes") + private List subscriptionScopes; + + @JsonProperty("owner") + private String owner; + + @JsonProperty("hashEnabled") + private Boolean hashEnabled; + + @JsonProperty("createdTime") + private String createdTime; + + @JsonProperty("updatedTime") + private String updatedTime; + + @JsonProperty("visibility") + private String visibility; + + @Data + @NoArgsConstructor + @AllArgsConstructor + public static class ApplicationKey { + @JsonProperty("key") + private String key; + + @JsonProperty("keyType") + private String keyType; + + @JsonProperty("state") + private String state; + } + + @Data + @NoArgsConstructor + @AllArgsConstructor + public static class SubscriptionScope { + @JsonProperty("name") + private String name; + + @JsonProperty("description") + private String description; + } } \ No newline at end of file diff --git a/src/main/java/cz/trask/migration/model/v45/ApplicationKeyMappingRequest45.java b/src/main/java/cz/trask/migration/model/v45/ApplicationKeyMappingRequest45.java index 9384c2a..6fc5b6c 100644 --- a/src/main/java/cz/trask/migration/model/v45/ApplicationKeyMappingRequest45.java +++ b/src/main/java/cz/trask/migration/model/v45/ApplicationKeyMappingRequest45.java @@ -1,25 +1,26 @@ package cz.trask.migration.model.v45; import com.fasterxml.jackson.annotation.JsonProperty; + import lombok.Builder; import lombok.Data; @Data @Builder public class ApplicationKeyMappingRequest45 { - @JsonProperty("consumerKey") - private String consumerKey; + @JsonProperty("consumerKey") + private String consumerKey; - @JsonProperty("consumerSecret") - private String consumerSecret; + @JsonProperty("consumerSecret") + private String consumerSecret; - @JsonProperty("keyManager") - private String keyManager; + @JsonProperty("keyManager") + private String keyManager; - @JsonProperty("keyType") - private KeyType keyType; + @JsonProperty("keyType") + private KeyType keyType; - public enum KeyType { - PRODUCTION, SANDBOX - } + public enum KeyType { + PRODUCTION, SANDBOX + } } diff --git a/src/main/java/cz/trask/migration/model/v45/ApplicationKeyMappingResponse45.java b/src/main/java/cz/trask/migration/model/v45/ApplicationKeyMappingResponse45.java index 420e9c7..b327339 100644 --- a/src/main/java/cz/trask/migration/model/v45/ApplicationKeyMappingResponse45.java +++ b/src/main/java/cz/trask/migration/model/v45/ApplicationKeyMappingResponse45.java @@ -13,61 +13,61 @@ import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor public class ApplicationKeyMappingResponse45 { - @JsonProperty("keyMappingId") - private String keyMappingId; + @JsonProperty("keyMappingId") + private String keyMappingId; - @JsonProperty("keyManager") - private String keyManager; + @JsonProperty("keyManager") + private String keyManager; - @JsonProperty("consumerKey") - private String consumerKey; + @JsonProperty("consumerKey") + private String consumerKey; - @JsonProperty("consumerSecret") - private String consumerSecret; + @JsonProperty("consumerSecret") + private String consumerSecret; - @JsonProperty("supportedGrantTypes") - private List supportedGrantTypes; + @JsonProperty("supportedGrantTypes") + private List supportedGrantTypes; - @JsonProperty("callbackUrl") - private String callbackUrl; + @JsonProperty("callbackUrl") + private String callbackUrl; - @JsonProperty("keyState") - private String keyState; + @JsonProperty("keyState") + private String keyState; - @JsonProperty("keyType") - private KeyType keyType; + @JsonProperty("keyType") + private KeyType keyType; - @JsonProperty("mode") - private Mode mode; + @JsonProperty("mode") + private Mode mode; - @JsonProperty("groupId") - private String groupId; + @JsonProperty("groupId") + private String groupId; - @JsonProperty("token") - private Token token; + @JsonProperty("token") + private Token token; - @JsonProperty("additionalProperties") - private Map additionalProperties; + @JsonProperty("additionalProperties") + private Map additionalProperties; - @Data - @AllArgsConstructor - @NoArgsConstructor - public static class Token { - @JsonProperty("accessToken") - private String accessToken; + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class Token { + @JsonProperty("accessToken") + private String accessToken; - @JsonProperty("tokenScopes") - private List tokenScopes; + @JsonProperty("tokenScopes") + private List tokenScopes; - @JsonProperty("validityTime") - private Long validityTime; - } + @JsonProperty("validityTime") + private Long validityTime; + } - enum Mode { - MAPPED, CREATED - } + enum Mode { + MAPPED, CREATED + } - enum KeyType { - PRODUCTION, SANDBOX - } + enum KeyType { + PRODUCTION, SANDBOX + } } \ No newline at end of file diff --git a/src/main/java/cz/trask/migration/model/v45/ApplicationListResponse45.java b/src/main/java/cz/trask/migration/model/v45/ApplicationListResponse45.java index 545d7f5..33668c8 100644 --- a/src/main/java/cz/trask/migration/model/v45/ApplicationListResponse45.java +++ b/src/main/java/cz/trask/migration/model/v45/ApplicationListResponse45.java @@ -1,37 +1,37 @@ package cz.trask.migration.model.v45; -import lombok.Data; import lombok.AllArgsConstructor; +import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor public class ApplicationListResponse45 { - - private int count; - private Application[] list; - private Pagination pagination; - - @Data - @AllArgsConstructor - @NoArgsConstructor - public static class Application { - private String applicationId; - private String name; - private String owner; - private String status; - private String groupId; - } - - @Data - @AllArgsConstructor - @NoArgsConstructor - public static class Pagination { - private int offset; - private int limit; - private int total; - private String next; - private String previous; - } + + private int count; + private Application[] list; + private Pagination pagination; + + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class Application { + private String applicationId; + private String name; + private String owner; + private String status; + private String groupId; + } + + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class Pagination { + private int offset; + private int limit; + private int total; + private String next; + private String previous; + } } \ No newline at end of file diff --git a/src/main/java/cz/trask/migration/model/v45/Documents45.java b/src/main/java/cz/trask/migration/model/v45/Documents45.java index b1862fd..2e04e0a 100644 --- a/src/main/java/cz/trask/migration/model/v45/Documents45.java +++ b/src/main/java/cz/trask/migration/model/v45/Documents45.java @@ -11,11 +11,11 @@ import lombok.Data; @Data @JsonInclude(JsonInclude.Include.NON_NULL) @JsonIgnoreProperties(ignoreUnknown = true) -public class Documents45 { - +public class Documents45 { + private String type = "document"; - private String version = "v4.5.0"; - + private String version = "v4.5.0"; + private Data data = null; @lombok.Data