diff --git a/server/src/main/java/org/eclipse/openvsx/adapter/LocalVSCodeService.java b/server/src/main/java/org/eclipse/openvsx/adapter/LocalVSCodeService.java index 6276aba49..314d2f94b 100644 --- a/server/src/main/java/org/eclipse/openvsx/adapter/LocalVSCodeService.java +++ b/server/src/main/java/org/eclipse/openvsx/adapter/LocalVSCodeService.java @@ -284,7 +284,7 @@ private String getSortOrder(int sortOrder) { @Cacheable(value = CacheService.CACHE_LATEST_EXTENSION_VERSION_VSCODE) public ExtensionQueryResult.Extension latest(String namespaceName, String extensionName) { if (BuiltInExtensionUtil.isBuiltIn(namespaceName)) { - throw new ResponseStatusException(HttpStatus.BAD_REQUEST, builtinExtensionMessage()); + throw new NotFoundException(); } var extension = repositories.findActiveExtension(extensionName, namespaceName); diff --git a/server/src/main/java/org/eclipse/openvsx/cache/CacheConfig.java b/server/src/main/java/org/eclipse/openvsx/cache/CacheConfig.java index aa8ed0468..562dc05aa 100644 --- a/server/src/main/java/org/eclipse/openvsx/cache/CacheConfig.java +++ b/server/src/main/java/org/eclipse/openvsx/cache/CacheConfig.java @@ -264,7 +264,13 @@ public CacheManager redisCacheManager( ) .withCacheConfiguration( CACHE_LATEST_EXTENSION_VERSIONS_BY_PLATFORM, - redisCacheConfig(new Jackson2JsonRedisSerializer<>(extensionVersionMapper, List.class), latestExtensionVersionsByPlatformTtl) + redisCacheConfig( + new Jackson2JsonRedisSerializer<>( + extensionVersionMapper, + extensionVersionMapper.getTypeFactory().constructParametricType(List.class, ExtensionVersion.class) + ), + latestExtensionVersionsByPlatformTtl + ) ) .withCacheConfiguration( CACHE_SITEMAP, diff --git a/server/src/main/java/org/eclipse/openvsx/cache/LatestExtensionVersionsByPlatformCacheKeyGenerator.java b/server/src/main/java/org/eclipse/openvsx/cache/LatestExtensionVersionsByPlatformCacheKeyGenerator.java index 5b3b38e6f..6e4e0a513 100644 --- a/server/src/main/java/org/eclipse/openvsx/cache/LatestExtensionVersionsByPlatformCacheKeyGenerator.java +++ b/server/src/main/java/org/eclipse/openvsx/cache/LatestExtensionVersionsByPlatformCacheKeyGenerator.java @@ -41,6 +41,6 @@ public Object generate(Object target, Method method, Object... params) { public String generate(Extension extension, boolean preReleases) { var extensionName = extension.getName(); var namespaceName = extension.getNamespace().getName(); - return NamingUtil.toFileFormat(namespaceName, extensionName, null, VersionAlias.LATEST) + ",pre-releases=" + preReleases; + return NamingUtil.toFileFormat(namespaceName, extensionName, VersionAlias.LATEST) + ",pre-releases=" + preReleases; } } diff --git a/server/src/main/java/org/eclipse/openvsx/util/NamingUtil.java b/server/src/main/java/org/eclipse/openvsx/util/NamingUtil.java index 381b4ce78..efa6125d7 100644 --- a/server/src/main/java/org/eclipse/openvsx/util/NamingUtil.java +++ b/server/src/main/java/org/eclipse/openvsx/util/NamingUtil.java @@ -32,13 +32,17 @@ public static String toFileFormat(ExtensionVersion extVersion) { return toFileFormat(namespace.getName(), extension.getName(), extVersion.getTargetPlatform(), extVersion.getVersion()); } + public static String toFileFormat(String namespace, String extension, String version) { + return toExtensionId(namespace, extension) + "-" + version; + } + public static String toFileFormat(String namespace, String extension, String targetPlatform, String version, String suffix) { return toFileFormat(namespace, extension, targetPlatform, version) + suffix; } public static String toFileFormat(String namespace, String extension, String targetPlatform, String version) { var name = toExtensionId(namespace, extension) + "-" + version; - if (targetPlatform != null && !TargetPlatform.isUniversal(targetPlatform)) { + if (!TargetPlatform.isUniversal(targetPlatform)) { name += "@" + targetPlatform; }