@@ -41,7 +41,7 @@ public class OmeroImageServer extends AbstractTileableImageServer implements Pat
41
41
private static final Logger logger = LoggerFactory .getLogger (OmeroImageServer .class );
42
42
private static final String PIXEL_API_ARGUMENT = "--pixelAPI" ;
43
43
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 ()
45
45
.maximumSize (METADATA_CACHE_SIZE )
46
46
.build ();
47
47
private final URI uri ;
@@ -87,6 +87,8 @@ static Optional<OmeroImageServer> create(URI uri, WebClient client, String... ar
87
87
}
88
88
89
89
if (originalMetadata .isPresent ()) {
90
+ System .err .println (originalMetadata .get ().getName ());
91
+
90
92
PixelAPI pixelAPI ;
91
93
var pixelAPIFromArgs = getPixelAPIFromArgs (client , args );
92
94
@@ -278,65 +280,63 @@ public long getId() {
278
280
* @return a CompletableFuture with the metadata, or an empty Optional if the request failed
279
281
*/
280
282
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 ());
323
308
}
324
- });
325
- } else {
326
- logger .warn ("Could not get image ID from " + uri );
327
- return CompletableFuture .completedFuture (Optional .empty ());
328
- }
329
- }
330
- );
331
309
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 );
340
340
return CompletableFuture .completedFuture (Optional .empty ());
341
341
}
342
342
}
0 commit comments