Skip to content

Commit 61e9322

Browse files
committed
Changed metadata cache key
1 parent a8b4e23 commit 61e9322

File tree

1 file changed

+58
-58
lines changed

1 file changed

+58
-58
lines changed

src/main/java/qupath/ext/omero/core/imageserver/OmeroImageServer.java

Lines changed: 58 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public class OmeroImageServer extends AbstractTileableImageServer implements Pat
4141
private static final Logger logger = LoggerFactory.getLogger(OmeroImageServer.class);
4242
private static final String PIXEL_API_ARGUMENT = "--pixelAPI";
4343
private static final int METADATA_CACHE_SIZE = 50;
44-
private static final Cache<URI, CompletableFuture<Optional<ImageServerMetadata>>> metadataCache = CacheBuilder.newBuilder()
44+
private static final Cache<Long, CompletableFuture<Optional<ImageServerMetadata>>> metadataCache = CacheBuilder.newBuilder()
4545
.maximumSize(METADATA_CACHE_SIZE)
4646
.build();
4747
private final URI uri;
@@ -87,6 +87,8 @@ static Optional<OmeroImageServer> create(URI uri, WebClient client, String... ar
8787
}
8888

8989
if (originalMetadata.isPresent()) {
90+
System.err.println(originalMetadata.get().getName());
91+
9092
PixelAPI pixelAPI;
9193
var pixelAPIFromArgs = getPixelAPIFromArgs(client, args);
9294

@@ -278,65 +280,63 @@ public long getId() {
278280
* @return a CompletableFuture with the metadata, or an empty Optional if the request failed
279281
*/
280282
public static CompletableFuture<Optional<ImageServerMetadata>> getOriginalMetadata(URI uri, WebClient client) {
281-
try {
282-
CompletableFuture<Optional<ImageServerMetadata>> request = metadataCache.get(
283-
uri,
284-
() -> {
285-
OptionalLong id = WebUtilities.parseEntityId(uri);
286-
287-
if (id.isPresent()) {
288-
return client.getApisHandler().getImageMetadata(id.getAsLong()).thenApply(imageMetadataResponse -> {
289-
if (imageMetadataResponse.isPresent()) {
290-
ImageServerMetadata.Builder builder = new ImageServerMetadata.Builder(
291-
OmeroImageServer.class,
292-
uri.toString(),
293-
imageMetadataResponse.get().getSizeX(),
294-
imageMetadataResponse.get().getSizeY()
295-
)
296-
.name(imageMetadataResponse.get().getImageName())
297-
.sizeT(imageMetadataResponse.get().getSizeT())
298-
.sizeZ(imageMetadataResponse.get().getSizeZ())
299-
.preferredTileSize(imageMetadataResponse.get().getTileSizeX(), imageMetadataResponse.get().getTileSizeY())
300-
.levels(imageMetadataResponse.get().getLevels())
301-
.pixelType(imageMetadataResponse.get().getPixelType())
302-
.channels(imageMetadataResponse.get().getChannels())
303-
.rgb(imageMetadataResponse.get().isRGB());
304-
305-
if (imageMetadataResponse.get().getMagnification().isPresent()) {
306-
builder.magnification(imageMetadataResponse.get().getMagnification().get());
307-
}
308-
309-
if (imageMetadataResponse.get().getPixelWidthMicrons().isPresent() && imageMetadataResponse.get().getPixelHeightMicrons().isPresent()) {
310-
builder.pixelSizeMicrons(
311-
imageMetadataResponse.get().getPixelWidthMicrons().get(),
312-
imageMetadataResponse.get().getPixelHeightMicrons().get()
313-
);
314-
}
315-
316-
if (imageMetadataResponse.get().getZSpacingMicrons().isPresent() && imageMetadataResponse.get().getZSpacingMicrons().get() > 0) {
317-
builder.zSpacingMicrons(imageMetadataResponse.get().getZSpacingMicrons().get());
318-
}
319-
320-
return Optional.of(builder.build());
321-
} else {
322-
return Optional.empty();
283+
OptionalLong id = WebUtilities.parseEntityId(uri);
284+
285+
if (id.isPresent()) {
286+
try {
287+
CompletableFuture<Optional<ImageServerMetadata>> request = metadataCache.get(
288+
id.getAsLong(),
289+
() -> client.getApisHandler().getImageMetadata(id.getAsLong()).thenApply(imageMetadataResponse -> {
290+
if (imageMetadataResponse.isPresent()) {
291+
ImageServerMetadata.Builder builder = new ImageServerMetadata.Builder(
292+
OmeroImageServer.class,
293+
uri.toString(),
294+
imageMetadataResponse.get().getSizeX(),
295+
imageMetadataResponse.get().getSizeY()
296+
)
297+
.name(imageMetadataResponse.get().getImageName())
298+
.sizeT(imageMetadataResponse.get().getSizeT())
299+
.sizeZ(imageMetadataResponse.get().getSizeZ())
300+
.preferredTileSize(imageMetadataResponse.get().getTileSizeX(), imageMetadataResponse.get().getTileSizeY())
301+
.levels(imageMetadataResponse.get().getLevels())
302+
.pixelType(imageMetadataResponse.get().getPixelType())
303+
.channels(imageMetadataResponse.get().getChannels())
304+
.rgb(imageMetadataResponse.get().isRGB());
305+
306+
if (imageMetadataResponse.get().getMagnification().isPresent()) {
307+
builder.magnification(imageMetadataResponse.get().getMagnification().get());
323308
}
324-
});
325-
} else {
326-
logger.warn("Could not get image ID from " + uri);
327-
return CompletableFuture.completedFuture(Optional.empty());
328-
}
329-
}
330-
);
331309

332-
request.thenAccept(response -> {
333-
if (response.isEmpty()) {
334-
metadataCache.invalidate(uri);
335-
}
336-
});
337-
return request;
338-
} catch (ExecutionException e) {
339-
logger.error("Error when retrieving metadata", e);
310+
if (imageMetadataResponse.get().getPixelWidthMicrons().isPresent() && imageMetadataResponse.get().getPixelHeightMicrons().isPresent()) {
311+
builder.pixelSizeMicrons(
312+
imageMetadataResponse.get().getPixelWidthMicrons().get(),
313+
imageMetadataResponse.get().getPixelHeightMicrons().get()
314+
);
315+
}
316+
317+
if (imageMetadataResponse.get().getZSpacingMicrons().isPresent() && imageMetadataResponse.get().getZSpacingMicrons().get() > 0) {
318+
builder.zSpacingMicrons(imageMetadataResponse.get().getZSpacingMicrons().get());
319+
}
320+
321+
return Optional.of(builder.build());
322+
} else {
323+
return Optional.empty();
324+
}
325+
})
326+
);
327+
328+
request.thenAccept(response -> {
329+
if (response.isEmpty()) {
330+
metadataCache.invalidate(id.getAsLong());
331+
}
332+
});
333+
return request;
334+
} catch (ExecutionException e) {
335+
logger.error("Error when retrieving metadata", e);
336+
return CompletableFuture.completedFuture(Optional.empty());
337+
}
338+
} else {
339+
logger.warn("Could not get image ID from " + uri);
340340
return CompletableFuture.completedFuture(Optional.empty());
341341
}
342342
}

0 commit comments

Comments
 (0)