generic policy metadata added

This commit is contained in:
Radek Davidek 2025-10-22 19:07:32 +02:00
parent fa1200473b
commit efeae043aa
4 changed files with 71 additions and 5 deletions

Binary file not shown.

View File

@ -2,6 +2,7 @@ package cz.trask.migration.impl.v45;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -23,6 +24,7 @@ import cz.trask.migration.model.ApiDefinition32;
import cz.trask.migration.model.ApiDefinition45; import cz.trask.migration.model.ApiDefinition45;
import cz.trask.migration.model.FileType; import cz.trask.migration.model.FileType;
import cz.trask.migration.model.HttpResponse; import cz.trask.migration.model.HttpResponse;
import cz.trask.migration.model.OperationPolicySpecification45;
import cz.trask.migration.model.RegisterResponse; import cz.trask.migration.model.RegisterResponse;
import cz.trask.migration.model.TokenResponse; import cz.trask.migration.model.TokenResponse;
import io.apicurio.registry.rest.client.RegistryClient; import io.apicurio.registry.rest.client.RegistryClient;
@ -192,16 +194,19 @@ public class ExportToWso2FromV32 extends AbstractProcess {
if (FileType.POLICY_IN.toString().equals(amd.getGroupId())) { if (FileType.POLICY_IN.toString().equals(amd.getGroupId())) {
subDir = "Policies/"; subDir = "Policies/";
specialName = r.getName().replace(".xml", "_v1_common.j2"); specialName = r.getName().replace(".xml", "_v1_api.j2");
content = convertSequenceToPolicy(content); content = convertSequenceToPolicy(content);
addGenericPolicyMetadata(zos, baseDir + subDir, specialName.replace(".j2", ".yaml"), r);
} else if (FileType.POLICY_OUT.toString().equals(amd.getGroupId())) { } else if (FileType.POLICY_OUT.toString().equals(amd.getGroupId())) {
subDir = "Policies/"; subDir = "Policies/";
specialName = r.getName().replace(".xml", "_v1_common.j2"); specialName = r.getName().replace(".xml", "_v1_common.j2");
content = convertSequenceToPolicy(content); content = convertSequenceToPolicy(content);
addGenericPolicyMetadata(zos, baseDir + subDir, specialName.replace(".j2", ".yaml"), r);
} else if (FileType.POLICY_FAULT.toString().equals(amd.getGroupId())) { } else if (FileType.POLICY_FAULT.toString().equals(amd.getGroupId())) {
subDir = "Policies/"; subDir = "Policies/";
specialName = r.getName().replace(".xml", "_v1_common.j2"); specialName = r.getName().replace(".xml", "_v1_common.j2");
content = convertSequenceToPolicy(content); content = convertSequenceToPolicy(content);
addGenericPolicyMetadata(zos, baseDir + subDir, specialName.replace(".j2", ".yaml"), r);
} else if (FileType.OPENAPI.toString().equals(amd.getGroupId())) { } else if (FileType.OPENAPI.toString().equals(amd.getGroupId())) {
subDir = "Definitions/"; subDir = "Definitions/";
contentStr = new String(content); contentStr = new String(content);
@ -234,6 +239,32 @@ public class ExportToWso2FromV32 extends AbstractProcess {
} }
} }
private void addGenericPolicyMetadata(ZipOutputStream zos, String subDir, String fileName, ArtifactReference r)
throws Exception {
OperationPolicySpecification45 ops = new OperationPolicySpecification45();
ops.setVersion("v4.5.0");
ops.setType("operation_policy_specification");
OperationPolicySpecification45.Data data = new OperationPolicySpecification45.Data();
data.setName(r.getName().replace(".xml", ""));
data.setCategory("Mediation");
data.setDescription("Generic Migrated policy " + r.getName());
data.setDisplayName(r.getName().replace(".xml", ""));
data.setVersion("v1");
data.setApplicableFlows(new ArrayList<>());
data.getApplicableFlows().add("request");
data.getApplicableFlows().add("response");
data.setSupportedGateways(new ArrayList<>());
data.getSupportedGateways().add("Synapse");
data.setSupportedApiTypes(new ArrayList<>());
data.getSupportedApiTypes().add("HTTP");
data.setPolicyAttributes(new ArrayList<>());
ops.setData(data);
zos.putNextEntry(new ZipEntry(subDir + fileName));
zos.write(mapperYaml.writeValueAsBytes(ops));
zos.closeEntry();
}
private byte[] convertSequenceToPolicy(byte[] content) throws Exception { private byte[] convertSequenceToPolicy(byte[] content) throws Exception {
if (content != null && content.length > 0) { if (content != null && content.length > 0) {
Pattern pattern = Pattern.compile("<sequence[^>]*>(.*?)</sequence>", Pattern.DOTALL); Pattern pattern = Pattern.compile("<sequence[^>]*>(.*?)</sequence>", Pattern.DOTALL);

View File

@ -152,8 +152,8 @@ public class ApiDefinitionMapper {
if (oldApi != null && oldApi.getInSequence() != null && !oldApi.getInSequence().isEmpty()) { if (oldApi != null && oldApi.getInSequence() != null && !oldApi.getInSequence().isEmpty()) {
ApiDefinition45.Policy requestPolicy = new ApiDefinition45.Policy(); ApiDefinition45.Policy requestPolicy = new ApiDefinition45.Policy();
requestPolicy.setPolicyName(oldApi.getInSequence()); requestPolicy.setPolicyName(oldApi.getInSequence());
requestPolicy.setPolicyType(""); requestPolicy.setPolicyType("api");
requestPolicy.setPolicyVersion(""); requestPolicy.setPolicyVersion("v1");
requestPolicy.setPolicyId(""); requestPolicy.setPolicyId("");
requestPolicy.setParameters(Collections.emptyMap()); requestPolicy.setParameters(Collections.emptyMap());
apiPolicies.setRequest(List.of(requestPolicy)); apiPolicies.setRequest(List.of(requestPolicy));
@ -163,7 +163,7 @@ public class ApiDefinitionMapper {
if (oldApi != null && oldApi.getOutSequence() != null && !oldApi.getOutSequence().isEmpty()) { if (oldApi != null && oldApi.getOutSequence() != null && !oldApi.getOutSequence().isEmpty()) {
ApiDefinition45.Policy requestPolicy = new ApiDefinition45.Policy(); ApiDefinition45.Policy requestPolicy = new ApiDefinition45.Policy();
requestPolicy.setPolicyName(oldApi.getOutSequence()); requestPolicy.setPolicyName(oldApi.getOutSequence());
requestPolicy.setPolicyType("common"); requestPolicy.setPolicyType("api");
requestPolicy.setPolicyVersion("v1"); requestPolicy.setPolicyVersion("v1");
requestPolicy.setPolicyId(""); requestPolicy.setPolicyId("");
requestPolicy.setParameters(Collections.emptyMap()); requestPolicy.setParameters(Collections.emptyMap());
@ -174,7 +174,7 @@ public class ApiDefinitionMapper {
if (oldApi != null && oldApi.getFaultSequence() != null && !oldApi.getFaultSequence().isEmpty()) { if (oldApi != null && oldApi.getFaultSequence() != null && !oldApi.getFaultSequence().isEmpty()) {
ApiDefinition45.Policy requestPolicy = new ApiDefinition45.Policy(); ApiDefinition45.Policy requestPolicy = new ApiDefinition45.Policy();
requestPolicy.setPolicyName(oldApi.getFaultSequence()); requestPolicy.setPolicyName(oldApi.getFaultSequence());
requestPolicy.setPolicyType("common"); requestPolicy.setPolicyType("api");
requestPolicy.setPolicyVersion("v1"); requestPolicy.setPolicyVersion("v1");
requestPolicy.setPolicyId(""); requestPolicy.setPolicyId("");
requestPolicy.setParameters(Collections.emptyMap()); requestPolicy.setParameters(Collections.emptyMap());

View File

@ -0,0 +1,35 @@
package cz.trask.migration.model;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class OperationPolicySpecification45 {
private String type;
private String version;
private Data data;
@lombok.Data
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Data {
private String category;
private String name;
private String version; // version of the policy itself
private String displayName;
private String description;
private List<String> applicableFlows;
private List<String> supportedGateways;
private List<String> supportedApiTypes;
private List<Object> policyAttributes = new ArrayList<>();
}
}