From efeae043aabd8ffd5ee375894c64b88395f55cbc Mon Sep 17 00:00:00 2001 From: Radek Davidek Date: Wed, 22 Oct 2025 19:07:32 +0200 Subject: [PATCH] generic policy metadata added --- Calculator-1.0.0.zip | Bin 4206 -> 4610 bytes .../impl/v45/ExportToWso2FromV32.java | 33 ++++++++++++++++- .../migration/mapper/ApiDefinitionMapper.java | 8 ++-- .../model/OperationPolicySpecification45.java | 35 ++++++++++++++++++ 4 files changed, 71 insertions(+), 5 deletions(-) create mode 100644 src/main/java/cz/trask/migration/model/OperationPolicySpecification45.java diff --git a/Calculator-1.0.0.zip b/Calculator-1.0.0.zip index bb923e56a003039d740d9ad18034c73e30b69420..88cc87d8426319be53d35b77ca77459b37da4e5d 100644 GIT binary patch delta 1496 zcmZ9Mdo&Yl9LHxio4LzvB)p;I5}M0#7m5unL|JkPjh0Ix<(_c`bL`6(Z*$d5*GgTw$(C=^hgLF2aq z0jo3Uj-Ul@(drCm3}DaF1(0qD?IYo!vINf{KaCrnS8$;z=BF5%{BbiI;v8-#+h|l^ zWwBd)%7g%=3038ls-$eMH#alejl>?$^jgQyOseF;LQ`V3CG3M!#Cp2SsllV=B4y3l%K${8tI3YII~G^7Vw`{Su!5 zwUwk$iu+~Dx8Ux&YWx=vc7UHqrAq&r8od#X{U5yEcJbCAIpc7APHiKQ$E=-kL z4w?#E2jnB==oEOsdq3JIs$P~oBnK-ZaAN4Nzprt83q-^Ikb@b5Ev+wrTGqerIt(&$ zS(J~;i+Tf3J{fb-e}grATuTsT5il3W$ESK&qyu-hSe)NW;E&|o*sDx=jpg><4`&S`ltkpLVkvQ9j)P&~Fbvv%Sie~`Q$i{*D7RNX zGuFlqw$hN3tb7a(tN{(i5brIVr$xXXr66hUkW?AF@h+^ShB|2Bi;Xz{?8pv{g;zlk%`t=F>u_|eW)-j(M&XX6+)6&5ASdS=So)!GGeRa$* zBsh$V5Lhv7U*36QXd{8yttgqq?l>OkYJ*9$>GQdOmML)}sF5Wi`_1p66*}+Rg`T>y z;cq;w#-NVg^@(b-f<-U}s>>YeFFDt=P7Xgq3w}5_HeXTd6jfCgwLc8s?w92npJ;4D z8OD+#*E(Bk1_VsawKxdZh6vp^$n{k-W9m3Bi_X_lpi|q`{O&prX5SN-#LHlPVu0!+ z(Z+*a?!A_TEHFK0%Fl(B(D!v>;>_>iM)%OtJ2SKzt;Uyt0+6U&1ZJ9U%>A4gdGIGV#+_` zE3j;+&Stp;6k&n>Gb45yy@1+ZaP5JgUUGH+Ov4CG1DhK0IMmp3&EVzR9-A&Ei*@3W zM9Fhw0*L&|!n{$+4L@&>Tm6^=dQyvrMks-PNqUGh<#OPV&Wcjzz`1b{|E%mCS^-PC z1ivqzb{<}A&&7?3x@7&0>R+g`miL$EJ3{mC5Y1!hX(io*{04E-SVI){^AFjTRC@_w zZ52We)_Q3a*~?f88OXl*G2VB!*zNE3Hg(^%P$@q0tO0-A_a(MwS}~KYxo}h|Jlh=2 z{8mWalr&&wCK#6DvgkB5(u(>ZJ*Wf{kCah=xDxzfatw)FRxgR90C zTfKNR?Lp|s$H~mw55+Uz)>lGK_8&Q&lkQ?I-B-{ToQa`H#oLUUnyu!4d|~V2;XPe; zelx?nuLAV>?634AS0i|B7YpLD*AT;c+B%_fUyP>Rx9i{kT<&u{7yw|3ZP%X*Czl$wl`wO9=pd?-d(F|Z-@Q0 h{~z7^9r$i)=N5(SMA5>+f?xm`(6Xhg1H#)c{{jH$oGt(W delta 1164 zcmV;71atd>B<>&#P)h>@6aWYa2mpwyKAjFm(IOg*!co-BdW@WpTbxd$fMC`& zY#NsCaqhIl2{^9mLHtSqVKW+!2FKL;wZ(;E9F~UMqze}nR!}0O*|21*LY8!E@-y;r zC?9_v7N)7#jwM?$uKex2{rT++j6F#S<(ffQ?t`<5vGnyyB0dTTLksPu!0ig`wxHC+ zahN4IEilgDNV9P`36q)>@We+OOlC3!ehI(_A06qrV)qm@A(djk4k9<2%&XCO=7;^k z-5?rxdKmR?-FQ5ShU3u;W?LGAzszbb({O()WtOW$2C*-xuKZcC6^Gae(-pv^*I5_M zZo~6x2@mm*+vhf8;F=Q%}prHc1zdE}-Z(p`M*Ed%t?_;IsIq?ii;|!dU z7dCAkErLGdM5FV|cj)5m0{-4~+nsKwjl%mAo2*GL7}uqR-n5doD08$+yr4EDsaStJ zE&RHJ9HBy{C7bG=+Va(U#94-0$rsB2g^LvShQE7jrHW6iexK9DPoWx!N6P1QX{i8t zYXK?j`l8c5wG0(|l0w1JCjIoMpMSp_eu7&3X|#~{Y;cwK^MQI=%@e$57o1aTf-9MQ z?+msiIu$Hj<8U6`Rx~A&N2t+psT`7TM%^aWKE;tX*SRK^LLR z+S9umnxfE~4*Kwa7~ahq?sr<2y|3I@(FD}q$D3TT0fON(WWL?SK7=#d6qJ9z|6L5( zj>_+U!PgGK{;z!Mg)96XFS5!TXiRfeOUXm?(8$07ySF@UFzQdnL*LREZ)hk@ZUw?? z@Jl$qv&;z?;yVyyQ@t}}`zB0dxiVm#0tS`$9Fcv)Hbr=e- z?bl%_VVl=s=wC|kK!c!~xm8>L1KL~UsleoiGZyrt=0Q}Q2~WLy%<;-SE&azIOg5(Q zDr%m|x>ce^Es<6M0bqSWS;4M|;_7a%tQwu@$WyEh}YU;kNdD_2FO9u!? zB88U31pold6aWBFO928D02BZS2nYa;ijyo5XabFjla>%w5s->jTb>Hxtv&z%06qW! z05_BT5I;3zZ*6UFZZ2vvP)h*<6aW+e2nYxOz=~E|M%M0Br#P0P79_0001WMHwgn 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 313939d..d95e658 100644 --- a/src/main/java/cz/trask/migration/impl/v45/ExportToWso2FromV32.java +++ b/src/main/java/cz/trask/migration/impl/v45/ExportToWso2FromV32.java @@ -2,6 +2,7 @@ package cz.trask.migration.impl.v45; import java.io.ByteArrayOutputStream; import java.io.FileOutputStream; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; 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.FileType; import cz.trask.migration.model.HttpResponse; +import cz.trask.migration.model.OperationPolicySpecification45; import cz.trask.migration.model.RegisterResponse; import cz.trask.migration.model.TokenResponse; import io.apicurio.registry.rest.client.RegistryClient; @@ -192,16 +194,19 @@ public class ExportToWso2FromV32 extends AbstractProcess { if (FileType.POLICY_IN.toString().equals(amd.getGroupId())) { subDir = "Policies/"; - specialName = r.getName().replace(".xml", "_v1_common.j2"); + specialName = r.getName().replace(".xml", "_v1_api.j2"); content = convertSequenceToPolicy(content); + addGenericPolicyMetadata(zos, baseDir + subDir, specialName.replace(".j2", ".yaml"), r); } else if (FileType.POLICY_OUT.toString().equals(amd.getGroupId())) { subDir = "Policies/"; specialName = r.getName().replace(".xml", "_v1_common.j2"); content = convertSequenceToPolicy(content); + addGenericPolicyMetadata(zos, baseDir + subDir, specialName.replace(".j2", ".yaml"), r); } else if (FileType.POLICY_FAULT.toString().equals(amd.getGroupId())) { subDir = "Policies/"; specialName = r.getName().replace(".xml", "_v1_common.j2"); content = convertSequenceToPolicy(content); + addGenericPolicyMetadata(zos, baseDir + subDir, specialName.replace(".j2", ".yaml"), r); } else if (FileType.OPENAPI.toString().equals(amd.getGroupId())) { subDir = "Definitions/"; 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 { if (content != null && content.length > 0) { Pattern pattern = Pattern.compile("]*>(.*?)", Pattern.DOTALL); diff --git a/src/main/java/cz/trask/migration/mapper/ApiDefinitionMapper.java b/src/main/java/cz/trask/migration/mapper/ApiDefinitionMapper.java index 2b3a32b..ea42ae3 100644 --- a/src/main/java/cz/trask/migration/mapper/ApiDefinitionMapper.java +++ b/src/main/java/cz/trask/migration/mapper/ApiDefinitionMapper.java @@ -152,8 +152,8 @@ public class ApiDefinitionMapper { if (oldApi != null && oldApi.getInSequence() != null && !oldApi.getInSequence().isEmpty()) { ApiDefinition45.Policy requestPolicy = new ApiDefinition45.Policy(); requestPolicy.setPolicyName(oldApi.getInSequence()); - requestPolicy.setPolicyType(""); - requestPolicy.setPolicyVersion(""); + requestPolicy.setPolicyType("api"); + requestPolicy.setPolicyVersion("v1"); requestPolicy.setPolicyId(""); requestPolicy.setParameters(Collections.emptyMap()); apiPolicies.setRequest(List.of(requestPolicy)); @@ -163,7 +163,7 @@ public class ApiDefinitionMapper { if (oldApi != null && oldApi.getOutSequence() != null && !oldApi.getOutSequence().isEmpty()) { ApiDefinition45.Policy requestPolicy = new ApiDefinition45.Policy(); requestPolicy.setPolicyName(oldApi.getOutSequence()); - requestPolicy.setPolicyType("common"); + requestPolicy.setPolicyType("api"); requestPolicy.setPolicyVersion("v1"); requestPolicy.setPolicyId(""); requestPolicy.setParameters(Collections.emptyMap()); @@ -174,7 +174,7 @@ public class ApiDefinitionMapper { if (oldApi != null && oldApi.getFaultSequence() != null && !oldApi.getFaultSequence().isEmpty()) { ApiDefinition45.Policy requestPolicy = new ApiDefinition45.Policy(); requestPolicy.setPolicyName(oldApi.getFaultSequence()); - requestPolicy.setPolicyType("common"); + requestPolicy.setPolicyType("api"); requestPolicy.setPolicyVersion("v1"); requestPolicy.setPolicyId(""); requestPolicy.setParameters(Collections.emptyMap()); diff --git a/src/main/java/cz/trask/migration/model/OperationPolicySpecification45.java b/src/main/java/cz/trask/migration/model/OperationPolicySpecification45.java new file mode 100644 index 0000000..a94b0d7 --- /dev/null +++ b/src/main/java/cz/trask/migration/model/OperationPolicySpecification45.java @@ -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 applicableFlows; + private List supportedGateways; + private List supportedApiTypes; + + private List policyAttributes = new ArrayList<>(); + + } +}