2929import java .util .*;
3030import java .util .stream .Collectors ;
3131
32+ import static org .eclipse .openvsx .entities .FileResource .DOWNLOAD ;
33+ import static org .eclipse .openvsx .entities .FileResource .DOWNLOAD_SHA256 ;
34+
3235@ Component
3336public class ChangeNamespaceJobRequestHandler implements JobRequestHandler <ChangeNamespaceJobRequest > {
3437
3538 private static final Logger LOGGER = LoggerFactory .getLogger (ChangeNamespaceJobRequestHandler .class );
3639
40+ private static final List <String > RENAME_TYPES = List .of (DOWNLOAD , DOWNLOAD_SHA256 );
3741 private static final Map <String , Object > LOCKS ;
3842
3943 static {
@@ -94,7 +98,7 @@ private void execute(ChangeNamespaceJobRequest jobRequest) {
9498 pairs = copyResources (oldResources , newNamespace );
9599 storageUtil .copyFiles (pairs );
96100 updatedResources = pairs .stream ()
97- .filter (pair -> pair .getFirst ().getType (). equals ( FileResource . DOWNLOAD ))
101+ .filter (pair -> RENAME_TYPES . contains ( pair .getFirst ().getType ()))
98102 .map (pair -> {
99103 var oldResource = pair .getFirst ();
100104 var newResource = pair .getSecond ();
@@ -103,10 +107,20 @@ private void execute(ChangeNamespaceJobRequest jobRequest) {
103107 })
104108 .collect (Collectors .toList ());
105109 } else {
110+ var newBinaryNames = oldResources .stream ()
111+ .map (FileResource ::getExtension )
112+ .collect (Collectors .groupingBy (ExtensionVersion ::getId ))
113+ .entrySet ().stream ()
114+ .map (entry -> {
115+ var newBinaryName = newBinaryName (newNamespace , entry .getValue ().get (0 ));
116+ return new AbstractMap .SimpleEntry <>(entry .getKey (), newBinaryName );
117+ })
118+ .collect (Collectors .toMap (Map .Entry ::getKey , Map .Entry ::getValue ));
119+
106120 updatedResources = oldResources
107- .filter (resource -> resource .getType (). equals ( FileResource . DOWNLOAD ))
121+ .filter (resource -> RENAME_TYPES . contains ( resource .getType ()))
108122 .map (resource -> {
109- resource .setName (newResourceName ( newNamespace , resource ));
123+ resource .setName (getNewResourceName ( resource , newBinaryNames ));
110124 return resource ;
111125 })
112126 .toList ();
@@ -158,6 +172,12 @@ private List<Pair<FileResource, FileResource>> copyResources(Streamable<FileReso
158172 extVersions .put (key , newExtVersion );
159173 }
160174
175+ var newBinaryNames = extVersions .values ().stream ()
176+ .map (extVersion -> {
177+ return new AbstractMap .SimpleEntry <>(extVersion .getId (), newBinaryName (newNamespace , extVersion ));
178+ })
179+ .collect (Collectors .toMap (Map .Entry ::getKey , Map .Entry ::getValue ));
180+
161181 return resources .stream ()
162182 .map (resource -> {
163183 var newExtVersion = extVersions .get (resource .getExtension ().getId ());
@@ -166,32 +186,36 @@ private List<Pair<FileResource, FileResource>> copyResources(Streamable<FileReso
166186 newResource .setExtension (newExtVersion );
167187 newResource .setType (resource .getType ());
168188 newResource .setStorageType (resource .getStorageType ());
169- var newResourceName = resource .getType ().equals (FileResource .DOWNLOAD )
170- ? newResourceName (newNamespace , resource )
171- : resource .getName ();
172-
173- newResource .setName (newResourceName );
189+ newResource .setName (getNewResourceName (resource , newBinaryNames ));
174190 return Pair .of (resource , newResource );
175191 })
176192 .collect (Collectors .toList ());
177193 }
178194
179- private String newResourceName (Namespace newNamespace , FileResource resource ) {
180- var extVersion = resource .getExtension ();
181- var extension = extVersion .getExtension ();
195+ private String getNewResourceName (FileResource resource , Map <Long , String > newBinaryNames ) {
196+ var name = RENAME_TYPES .contains (resource .getType ())
197+ ? newBinaryNames .get (resource .getExtension ().getId ())
198+ : resource .getName ();
199+
200+ if (resource .getType ().equals (DOWNLOAD_SHA256 )) {
201+ name = name .replace (".vsix" , ".sha256" );
202+ }
203+
204+ LOGGER .info ("New resource name: {}" , name );
205+ return name ;
206+ }
182207
208+ private String newBinaryName (Namespace newNamespace , ExtensionVersion extVersion ) {
183209 var newExtension = new Extension ();
184210 newExtension .setNamespace (newNamespace );
185- newExtension .setName (extension .getName ());
211+ newExtension .setName (extVersion . getExtension () .getName ());
186212
187213 var newExtVersion = new ExtensionVersion ();
188214 newExtVersion .setVersion (extVersion .getVersion ());
189215 newExtVersion .setTargetPlatform (extVersion .getTargetPlatform ());
190216 newExtVersion .setExtension (newExtension );
191217 try (var processor = new ExtensionProcessor (null )) {
192- var newResourceName = processor .getBinaryName (newExtVersion );
193- LOGGER .info ("newResourceName: {}" , newResourceName );
194- return newResourceName ;
218+ return processor .getBinaryName (newExtVersion );
195219 }
196220 }
197221}
0 commit comments