diff --git a/src/main/java/cz/trask/migration/impl/v45/ExportToWso2FromV32.java b/src/main/java/cz/trask/migration/impl/v45/ExportToWso2FromV32.java index d95e658..0e8e3d9 100644 --- a/src/main/java/cz/trask/migration/impl/v45/ExportToWso2FromV32.java +++ b/src/main/java/cz/trask/migration/impl/v45/ExportToWso2FromV32.java @@ -18,11 +18,15 @@ import java.util.zip.ZipOutputStream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import com.fasterxml.jackson.core.type.TypeReference; + import cz.trask.migration.AbstractProcess; import cz.trask.migration.mapper.ApiDefinitionMapper; import cz.trask.migration.model.ApiDefinition32; import cz.trask.migration.model.ApiDefinition45; +import cz.trask.migration.model.EndpointCertificates45; import cz.trask.migration.model.FileType; +import cz.trask.migration.model.HostInfo32; import cz.trask.migration.model.HttpResponse; import cz.trask.migration.model.OperationPolicySpecification45; import cz.trask.migration.model.RegisterResponse; @@ -211,7 +215,8 @@ public class ExportToWso2FromV32 extends AbstractProcess { subDir = "Definitions/"; contentStr = new String(content); } else if (FileType.CERTIFICATE.toString().equals(amd.getGroupId())) { - subDir = "Meta-information/"; + subDir = "Endpoint-certificates/"; + content = convertCertificateToEPCertificate(zos, baseDir + subDir, content); } else if (FileType.APIDEF.toString().equals(amd.getGroupId())) { apiDef = mapperYaml.readValue(content, ApiDefinition32.class); appendFile = false; @@ -239,6 +244,37 @@ public class ExportToWso2FromV32 extends AbstractProcess { } } + private byte[] convertCertificateToEPCertificate(ZipOutputStream zos, String subDir, byte[] content) { + if (content != null && content.length > 0) { + try { + List epc32 = mapperYaml.readValue(content, new TypeReference>() { + }); + EndpointCertificates45 epc45 = new EndpointCertificates45(); + epc45.setType("endpoint_certificates"); + epc45.setVersion("v4.5.0"); + List certs = new ArrayList<>(); + for (HostInfo32 hi : epc32) { + EndpointCertificates45.EndpointCertificate cert = new EndpointCertificates45.EndpointCertificate(); + cert.setAlias(hi.getAlias()); + cert.setEndpoint(hi.getHostName()); + cert.setCertificate(hi.getAlias().concat(".crt")); + cert.setTenantId(0); + certs.add(cert); + + zos.putNextEntry(new ZipEntry(subDir + cert.getCertificate())); + zos.write("-----BEGIN CERTIFICATE-----\r\n".concat(hi.getCertificate()) + .concat("\r\n-----END CERTIFICATE-----").getBytes()); + zos.closeEntry(); + } + epc45.setData(certs); + return mapperYaml.writeValueAsBytes(epc45); + } catch (Exception e) { + log.error("Error converting endpoint certificate: {}", e.getMessage(), e); + } + } + return null; + } + private void addGenericPolicyMetadata(ZipOutputStream zos, String subDir, String fileName, ArtifactReference r) throws Exception { OperationPolicySpecification45 ops = new OperationPolicySpecification45(); @@ -257,6 +293,7 @@ public class ExportToWso2FromV32 extends AbstractProcess { data.getSupportedGateways().add("Synapse"); data.setSupportedApiTypes(new ArrayList<>()); data.getSupportedApiTypes().add("HTTP"); + data.getSupportedApiTypes().add("SOAP"); data.setPolicyAttributes(new ArrayList<>()); ops.setData(data); diff --git a/src/main/java/cz/trask/migration/model/EndpointCertificates45.java b/src/main/java/cz/trask/migration/model/EndpointCertificates45.java new file mode 100644 index 0000000..75851e9 --- /dev/null +++ b/src/main/java/cz/trask/migration/model/EndpointCertificates45.java @@ -0,0 +1,26 @@ +package cz.trask.migration.model; + +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +import lombok.Data; + +@Data +@JsonIgnoreProperties(ignoreUnknown = true) +public class EndpointCertificates45 { + + private String type; + private String version; + + private List data; + + @Data + @JsonIgnoreProperties(ignoreUnknown = true) + public static class EndpointCertificate { + private String alias; + private String endpoint; + private String certificate; + private int tenantId; + } +} diff --git a/src/main/java/cz/trask/migration/model/HostInfo32.java b/src/main/java/cz/trask/migration/model/HostInfo32.java new file mode 100644 index 0000000..8bd9465 --- /dev/null +++ b/src/main/java/cz/trask/migration/model/HostInfo32.java @@ -0,0 +1,13 @@ +package cz.trask.migration.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +import lombok.Data; + +@Data +@JsonIgnoreProperties(ignoreUnknown = true) +public class HostInfo32 { + private String hostName; + private String alias; + private String certificate; +}