@@ -846,21 +846,7 @@ public ExtensionJson toExtensionVersionJson(ExtensionVersion extVersion, String
846
846
var latestPreRelease = repositories .findLatestVersionForAllUrls (extension , targetPlatform , true , onlyActive );
847
847
848
848
var json = extVersion .toExtensionJson ();
849
- if (extension .getReplacement () != null ) {
850
- var replacementId = extension .getReplacement ().getId ();
851
- var replacement = repositories .findLatestReplacement (replacementId , targetPlatform , false , onlyActive );
852
- if (replacement != null ) {
853
- var displayName = StringUtils .isNotEmpty (replacement .getDisplayName ())
854
- ? replacement .getDisplayName ()
855
- : replacement .getExtension ().getName ();
856
-
857
- var replacementJson = new ExtensionReplacementJson ();
858
- replacementJson .setUrl (UrlUtil .createApiUrl (webuiUrl , "extension" , replacement .getExtension ().getNamespace ().getName (), replacement .getExtension ().getName ()));
859
- replacementJson .setDisplayName (displayName );
860
- json .setReplacement (replacementJson );
861
- }
862
- }
863
-
849
+ json .setReplacement (toReplacementJson (extension , targetPlatform , onlyActive , true ));
864
850
json .setPreview (latest != null && latest .isPreview ());
865
851
var versionAlias = new ArrayList <String >();
866
852
if (latest != null && extVersion .getVersion ().equals (latest .getVersion ()))
@@ -932,20 +918,7 @@ public ExtensionJson toExtensionVersionJson(
932
918
json .setReviewsUrl (createApiReviewsUrl (serverUrl , json .getNamespace (), json .getName ()));
933
919
934
920
var extension = extVersion .getExtension ();
935
- if (extension .getReplacement () != null ) {
936
- var replacementId = extension .getReplacement ().getId ();
937
- var replacement = repositories .findLatestReplacement (replacementId , targetPlatformParam , false , true );
938
- if (replacement != null ) {
939
- var displayName = StringUtils .isNotEmpty (replacement .getDisplayName ())
940
- ? replacement .getDisplayName ()
941
- : replacement .getExtension ().getName ();
942
-
943
- var replacementJson = new ExtensionReplacementJson ();
944
- replacementJson .setUrl (UrlUtil .createApiUrl (serverUrl , "api" , replacement .getExtension ().getNamespace ().getName (), replacement .getExtension ().getName ()));
945
- replacementJson .setDisplayName (displayName );
946
- json .setReplacement (replacementJson );
947
- }
948
- }
921
+ json .setReplacement (toReplacementJson (extension , targetPlatformParam , true , false ));
949
922
950
923
var versionAlias = new ArrayList <String >(2 );
951
924
if (extVersion .equals (latest )) {
@@ -1024,21 +997,7 @@ public ExtensionJson toExtensionVersionJsonV2(
1024
997
json .setUrl (createApiVersionUrl (serverUrl , json ));
1025
998
1026
999
var extension = extVersion .getExtension ();
1027
- if (extension .getReplacement () != null ) {
1028
- var replacementId = extension .getReplacement ().getId ();
1029
- var replacement = repositories .findLatestReplacement (replacementId , targetPlatformParam , false , true );
1030
- if (replacement != null ) {
1031
- var displayName = StringUtils .isNotEmpty (replacement .getDisplayName ())
1032
- ? replacement .getDisplayName ()
1033
- : replacement .getExtension ().getName ();
1034
-
1035
- var replacementJson = new ExtensionReplacementJson ();
1036
- replacementJson .setUrl (UrlUtil .createApiUrl (serverUrl , "api" , replacement .getExtension ().getNamespace ().getName (), replacement .getExtension ().getName ()));
1037
- replacementJson .setDisplayName (displayName );
1038
-
1039
- json .setReplacement (replacementJson );
1040
- }
1041
- }
1000
+ json .setReplacement (toReplacementJson (extension , targetPlatformParam , true , false ));
1042
1001
1043
1002
var versionAlias = new ArrayList <String >(2 );
1044
1003
if (extVersion .equals (latest )) {
@@ -1094,6 +1053,34 @@ public ExtensionJson toExtensionVersionJsonV2(
1094
1053
return json ;
1095
1054
}
1096
1055
1056
+ private ExtensionReplacementJson toReplacementJson (Extension extension , String targetPlatform , boolean onlyActive , boolean webui ) {
1057
+ if (extension .getReplacement () == null ) {
1058
+ return null ;
1059
+ }
1060
+
1061
+ var replacementId = extension .getReplacement ().getId ();
1062
+ var replacement = repositories .findLatestReplacement (replacementId , targetPlatform , false , onlyActive );
1063
+ if (replacement == null ) {
1064
+ return null ;
1065
+ }
1066
+
1067
+ var baseUrl = webui ? webuiUrl : UrlUtil .getBaseUrl ();
1068
+ var segments = new String []{
1069
+ webui ? "extension" : "api" ,
1070
+ replacement .getExtension ().getNamespace ().getName (),
1071
+ replacement .getExtension ().getName ()
1072
+ };
1073
+
1074
+ var displayName = StringUtils .isNotEmpty (replacement .getDisplayName ())
1075
+ ? replacement .getDisplayName ()
1076
+ : replacement .getExtension ().getName ();
1077
+
1078
+ var json = new ExtensionReplacementJson ();
1079
+ json .setUrl (UrlUtil .createApiUrl (baseUrl , segments ));
1080
+ json .setDisplayName (displayName );
1081
+ return json ;
1082
+ }
1083
+
1097
1084
private boolean isVerified (ExtensionVersion extVersion ) {
1098
1085
if (extVersion .getPublishedWith () == null ) {
1099
1086
return false ;
0 commit comments