diff --git a/datastore_server/build/build.xml b/datastore_server/build/build.xml index 91a4beee0ad60b245caf3d9b346536b1e1068517..b46645777998e7a3e799f86178ffa0840b4a6365 100644 --- a/datastore_server/build/build.xml +++ b/datastore_server/build/build.xml @@ -103,6 +103,11 @@ <include name="server/*.jar" /> </fileset> </copy> + <copy todir="${dist.datastore_server.lib}"> + <fileset dir="${lib}/cisd-image_readers"> + <include name="*.jar" /> + </fileset> + </copy> <copy file="${lib}/cisd-base/cisd-base.jar" todir="${dist.datastore_server.lib}" /> <copy file="${lib}/cisd-args4j/cisd-args4j.jar" todir="${dist.datastore_server.lib}" /> <copy file="${lib}/cifex/cifex.jar" todir="${dist.datastore_server.lib}" /> diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/ImageUtil.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/ImageUtil.java index d9a180432d511adef451381a11b974e0f898b577..12ad535539b1d9c44144f2538cda001166bafab9 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/ImageUtil.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/ImageUtil.java @@ -16,16 +16,15 @@ package ch.systemsx.cisd.openbis.dss.generic.shared.utils; -import ij.io.Opener; +import static ch.systemsx.cisd.common.utilities.DataTypeUtil.GIF_FILE; +import static ch.systemsx.cisd.common.utilities.DataTypeUtil.JPEG_FILE; +import static ch.systemsx.cisd.common.utilities.DataTypeUtil.PNG_FILE; +import static ch.systemsx.cisd.common.utilities.DataTypeUtil.TIFF_FILE; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.image.BufferedImage; -import java.awt.image.Raster; -import java.io.BufferedInputStream; import java.io.File; -import java.io.IOException; -import java.io.InputStream; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; @@ -33,18 +32,17 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; -import javax.imageio.ImageIO; +import org.apache.commons.io.FilenameUtils; -import org.apache.commons.io.IOUtils; - -import com.sun.media.jai.codec.ImageCodec; -import com.sun.media.jai.codec.ImageDecoder; - -import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel; +import ch.systemsx.cisd.base.io.IRandomAccessFile; import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException; import ch.systemsx.cisd.common.io.FileBasedContent; import ch.systemsx.cisd.common.io.IContent; import ch.systemsx.cisd.common.utilities.DataTypeUtil; +import ch.systemsx.cisd.imagereaders.IImageReader; +import ch.systemsx.cisd.imagereaders.ImageReaderConstants; +import ch.systemsx.cisd.imagereaders.ImageReaderFactory; +import ch.systemsx.cisd.imagereaders.TiffReadParams; /** * Utility function on images. @@ -58,42 +56,35 @@ public class ImageUtil private static interface ImageLoader { - public BufferedImage load(InputStream inputStream); + public BufferedImage load(IRandomAccessFile raf); - public BufferedImage load(InputStream inputStream, int page); + public BufferedImage load(IRandomAccessFile raf, int page); } private static final class TiffImageLoader implements ImageLoader { - static final ImageLoader INSTANCE = new TiffImageLoader(); - - public BufferedImage load(InputStream inputStream) + public BufferedImage load(IRandomAccessFile handle) { - return load(inputStream, 0); + return load(handle, 0); } - private final static int MAX_READ_AHEAD = 30000000; + // TODO KE : ask if anyone remembers what is this ?! + // private final static int MAX_READ_AHEAD = 30000000; - public BufferedImage load(InputStream inputStream, int page) + public BufferedImage load(IRandomAccessFile handle, int page) { - inputStream.mark(MAX_READ_AHEAD); + // inputStream.mark(MAX_READ_AHEAD); try { - return loadJavaAdvancedImagingTiff(inputStream, page, false); + return loadJavaAdvancedImagingTiff(handle, page, false); } catch (RuntimeException ex) { if (page == 0) { - try - { - inputStream.reset(); - } catch (IOException ex1) - { - throw ex; - } - // There are some TIFF files which cannot be opened by JIA, try ImageJ + handle.seek(0); + // There are some TIFF files which cannot be opened by JAI, try ImageJ // instead... - return loadWithImageJ(inputStream); + return loadWithImageJ(handle); } else { throw ex; @@ -101,9 +92,12 @@ public class ImageUtil } } - private BufferedImage loadWithImageJ(InputStream inputStream) + private BufferedImage loadWithImageJ(IRandomAccessFile handle) { - return new Opener().openTiff(inputStream, "").getBufferedImage(); + IImageReader imageReader = + ImageReaderFactory.tryGetReader(ImageReaderConstants.IMAGEJ_LIBRARY, "tiff"); + return imageReader.readImage(handle, null); + } } @@ -114,55 +108,57 @@ public class ImageUtil * appropriate buffered imaged type will be used, otherwise the image will be * converted to 24 bits RGB. Useful if access to original pixel values is needed. */ - public static BufferedImage loadJavaAdvancedImagingTiff(InputStream inputStream, + public static BufferedImage loadJavaAdvancedImagingTiff(IRandomAccessFile handle, Integer pageOrNull, boolean allow16BitGrayscaleModel) throws EnvironmentFailureException { + IImageReader imageReader = + ImageReaderFactory.tryGetReader(ImageReaderConstants.JAI_LIBRARY, "tiff"); + if (imageReader == null) + { + throw EnvironmentFailureException + .fromTemplate("Cannot find JAI image decoder for TIFF files."); + } + int page = getPageNumber(pageOrNull); - final ImageDecoder dec = ImageCodec.createImageDecoder("tiff", inputStream, null); - Raster raster; + TiffReadParams readParams = new TiffReadParams(page); + readParams.setAllow16BitGrayscaleModel(allow16BitGrayscaleModel); try { - raster = dec.decodeAsRaster(page); - } catch (IOException ex) + return imageReader.readImage(handle, readParams); + } catch (Exception ex) { throw EnvironmentFailureException.fromTemplate("Cannot decode image.", ex); } - int bufferType = findBestImageBufferType(raster, allow16BitGrayscaleModel); - final BufferedImage image = - new BufferedImage(raster.getWidth(), raster.getHeight(), bufferType); - image.setData(raster); - return image; - } - - private static int findBestImageBufferType(Raster raster, boolean allow16BitGrayscaleModel) - { - boolean is16BitGrayscale = - raster.getNumBands() == 1 && raster.getSampleModel().getSampleSize()[0] == 16; - return is16BitGrayscale && allow16BitGrayscaleModel ? BufferedImage.TYPE_USHORT_GRAY - : BufferedImage.TYPE_INT_RGB; } private static final class JavaImageLoader implements ImageLoader { - static final ImageLoader INSTANCE = new JavaImageLoader(); + private final String fileType; - public BufferedImage load(InputStream inputStream) + JavaImageLoader(String fileType) { - try - { - return ImageIO.read(inputStream); - } catch (IOException ex) - { - throw CheckedExceptionTunnel.wrapIfNecessary(ex); - } + this.fileType = fileType; } - public BufferedImage load(InputStream inputStream, int page) + public BufferedImage load(IRandomAccessFile handle) + { + return load(handle, 0); + } + + public BufferedImage load(IRandomAccessFile handle, int page) { if (page == 0) { - return load(inputStream); + IImageReader imageReader = + ImageReaderFactory.tryGetReader(ImageReaderConstants.IMAGEIO_LIBRARY, + fileType); + if (imageReader == null) + { + throw EnvironmentFailureException.fromTemplate( + "Cannot find ImageIO reader for file type '%s'", fileType); + } + return imageReader.readImage(handle, null); } else { throw new UnsupportedOperationException(); @@ -175,10 +171,10 @@ public class ImageUtil static { - imageLoaders.put(DataTypeUtil.GIF_FILE, JavaImageLoader.INSTANCE); - imageLoaders.put(DataTypeUtil.JPEG_FILE, JavaImageLoader.INSTANCE); - imageLoaders.put(DataTypeUtil.PNG_FILE, JavaImageLoader.INSTANCE); - imageLoaders.put(DataTypeUtil.TIFF_FILE, TiffImageLoader.INSTANCE); + imageLoaders.put(GIF_FILE, new JavaImageLoader(GIF_FILE)); + imageLoaders.put(JPEG_FILE, new JavaImageLoader(JPEG_FILE)); + imageLoaders.put(PNG_FILE, new JavaImageLoader(PNG_FILE)); + imageLoaders.put(TIFF_FILE, new TiffImageLoader()); } /** @@ -190,18 +186,8 @@ public class ImageUtil public static boolean isImageFile(File file) { String fileName = file.getName(); - String fileType = tryGetFileExtension(fileName); - return fileType != null && FILE_TYPES.contains(fileType); - } - - private static String tryGetFileExtension(String name) - { - int lastIndexOfDot = name.lastIndexOf('.'); - if (lastIndexOfDot < 0) - { - return null; - } - return name.substring(lastIndexOfDot + 1).toLowerCase(); + String fileType = FilenameUtils.getExtension(fileName); + return fileType != null && FILE_TYPES.contains(fileType.toLowerCase()); } /** @@ -228,13 +214,9 @@ public class ImageUtil public static BufferedImage loadImage(IContent content, Integer pageOrNull) { int page = getPageNumber(pageOrNull); - InputStream markSupportingInputStream = content.getInputStream(); - if (markSupportingInputStream.markSupported() == false) - { - markSupportingInputStream = new BufferedInputStream(markSupportingInputStream); - } - String fileType = DataTypeUtil.tryToFigureOutFileTypeOf(markSupportingInputStream); - return loadImage(markSupportingInputStream, fileType, page); + IRandomAccessFile handle = content.getReadOnlyRandomAccessFile(); + String fileType = DataTypeUtil.tryToFigureOutFileTypeOf(handle); + return loadImage(handle, fileType, page); } private static int getPageNumber(Integer pageOrNull) @@ -243,14 +225,14 @@ public class ImageUtil } /** - * Loads the specified <var>page</var> from the image from the tiven </var>inputStream</var>. + * Loads the specified <var>page</var> from the image from the given </var>handle</var>. * Supported images formats are GIF, JPG, PNG, and TIFF. The input stream will be closed after * loading. Note that only for TIFF files a <var>page</var> other than 0 may be specified. * * @throws IllegalArgumentException if the input stream doesn't start with a magic number * identifying supported image format. */ - private static BufferedImage loadImage(InputStream inputStream, String fileType, int page) + private static BufferedImage loadImage(IRandomAccessFile handle, String fileType, int page) { try { @@ -268,10 +250,10 @@ public class ImageUtil throw new IllegalArgumentException("Unable to load image of file type '" + fileType + "'."); } - return imageLoader.load(inputStream, page); + return imageLoader.load(handle, page); } finally { - IOUtils.closeQuietly(inputStream); + closeQuietly(handle); } } @@ -350,4 +332,16 @@ public class ImageUtil graphics2D.drawImage(image, 0, 0, thumbnailWidth, thumbnailHeight, null); return thumbnail; } + + private static void closeQuietly(IRandomAccessFile handle) + { + try + { + handle.close(); + } catch (Exception ex) + { + // keep quiet + } + } + } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/ImageUtilTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/ImageUtilTest.java index 05dda6c326bf2085a22a357536008ed9869be63a..ff2ebf020401b129fd1b3a6b4cca7fa13837acf6 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/ImageUtilTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/ImageUtilTest.java @@ -18,27 +18,27 @@ package ch.systemsx.cisd.openbis.dss.generic.shared.utils; import java.awt.image.BufferedImage; import java.io.File; -import java.io.IOException; import java.io.InputStream; import org.testng.AssertJUnit; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; +import ch.systemsx.cisd.base.io.ByteBufferRandomAccessFile; import ch.systemsx.cisd.base.io.IRandomAccessFile; import ch.systemsx.cisd.common.io.FileBasedContent; import ch.systemsx.cisd.common.io.IContent; +import ch.systemsx.cisd.imagereaders.ImageReaderConstants; +import ch.systemsx.cisd.imagereaders.ImageReadersTestHelper; /** - * - * * @author Franz-Josef Elmer */ public class ImageUtilTest extends AssertJUnit { private static class MockIContent implements IContent { - final MockInputStream is = new MockInputStream(); + final MockRandomAccessFile is = new MockRandomAccessFile(); public String tryGetName() { @@ -57,39 +57,41 @@ public class ImageUtilTest extends AssertJUnit public IRandomAccessFile getReadOnlyRandomAccessFile() { - throw new UnsupportedOperationException(); + return is; } public InputStream getInputStream() { - return is; + throw new UnsupportedOperationException(); } } - private static class MockInputStream extends InputStream + private static class MockRandomAccessFile extends ByteBufferRandomAccessFile { - boolean closeInvoked; - - @Override - public void close() throws IOException + public MockRandomAccessFile() { - closeInvoked = true; + super(1); } + + boolean closeInvoked; @Override - public int read() throws IOException + public void close() { - return 0; + closeInvoked = true; } } private File dir; @BeforeMethod - public void setUp() + public void setUp() throws Exception { dir = new File("../datastore_server/resource/test-data/ImageUtilTest"); + ImageReadersTestHelper.setUpLibraries(ImageReaderConstants.IMAGEIO_LIBRARY, + ImageReaderConstants.JAI_LIBRARY, ImageReaderConstants.IMAGEJ_LIBRARY); + } @Test @@ -119,7 +121,7 @@ public class ImageUtilTest extends AssertJUnit assertImageSize(805, 1023, loadImageByFile("tiff-example.tiff")); assertImageSize(805, 1023, loadImageByInputStream("tiff-example.tiff")); } - + @Test public void testCreateThumbnail() { diff --git a/screening/.classpath b/screening/.classpath index 314d7bc3a608d1dfee5cf1486f3d9996ce55d894..4f2e3b0b2b03f3700ac90f06e62839ed566becec 100644 --- a/screening/.classpath +++ b/screening/.classpath @@ -2,7 +2,6 @@ <classpath> <classpathentry kind="src" path="source/java"/> <classpathentry kind="src" path="sourceTest/java"/> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry combineaccessrules="false" kind="src" path="/datastore_server"/> <classpathentry combineaccessrules="false" kind="src" path="/common"/> <classpathentry kind="lib" path="/libraries/cisd-base/cisd-base.jar" sourcepath="/libraries/cisd-base/cisd-base-src.zip"/> @@ -48,5 +47,8 @@ <classpathentry kind="lib" path="/libraries/jython/jython.jar" sourcepath="/libraries/jython/src.zip"/> <classpathentry kind="lib" path="/libraries/hibernate/hibernate3.jar" sourcepath="/libraries/hibernate/src.zip"/> <classpathentry kind="lib" path="/libraries/bioformats/bioformats.jar" sourcepath="/libraries/bioformats/bioformats_src.zip"/> + <classpathentry kind="lib" path="/libraries/cisd-image_readers/cisd-image_readers-bioformats.jar"/> + <classpathentry kind="lib" path="/libraries/cisd-image_readers/cisd-image_readers.jar"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="output" path="targets/www/WEB-INF/classes"/> </classpath> diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/biozentrum/ImageMetadataExtractor.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/biozentrum/ImageMetadataExtractor.java index 86171607e97f2174c21137bf661012243fc8cb3e..7ceca090b970beb9a65cdc0ea929628c3b61043e 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/biozentrum/ImageMetadataExtractor.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/biozentrum/ImageMetadataExtractor.java @@ -19,22 +19,17 @@ package ch.systemsx.cisd.openbis.dss.etl.biozentrum; import java.io.File; import java.util.ArrayList; import java.util.HashMap; -import java.util.Hashtable; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.TreeSet; -import loci.formats.IFormatReader; -import loci.formats.ImageReader; -import loci.formats.gui.BufferedImageReader; -import loci.formats.in.DefaultMetadataOptions; -import loci.formats.in.MetadataLevel; -import loci.formats.in.MetadataOptions; - -import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel; import ch.systemsx.cisd.common.exceptions.UserFailureException; +import ch.systemsx.cisd.imagereaders.IImageReader; +import ch.systemsx.cisd.imagereaders.IMetaDataAwareImageReader; +import ch.systemsx.cisd.imagereaders.ImageReaderConstants; +import ch.systemsx.cisd.imagereaders.ImageReaderFactory; import ch.systemsx.cisd.openbis.dss.etl.dto.api.v1.Location; /** @@ -49,26 +44,13 @@ public class ImageMetadataExtractor public static Map<String, Object> extractMetadata(File imageFile) { - HashMap<String, Object> result = new HashMap<String, Object>(); - // initialize the reader - IFormatReader reader = new BufferedImageReader(new ImageReader()); - MetadataOptions metaOptions = new DefaultMetadataOptions(MetadataLevel.ALL); - reader.setMetadataOptions(metaOptions); + IImageReader imageReader = + ImageReaderFactory.tryGetImageReaderForFile( + ImageReaderConstants.BIOFORMATS_LIBRARY, + imageFile.getAbsolutePath()); - try - { - reader.setId(imageFile.getAbsolutePath()); - nullSafeAddAll(result, reader.getGlobalMetadata()); - nullSafeAddAll(result, reader.getSeriesMetadata()); - } catch (Exception ex) - { - throw CheckedExceptionTunnel.wrapIfNecessary(ex); - } finally - { - close(reader); - } - - return result; + IMetaDataAwareImageReader metaDataReader = (IMetaDataAwareImageReader) imageReader; + return metaDataReader.readMetaData(imageFile, null); } /** @@ -98,27 +80,6 @@ public class ImageMetadataExtractor return result; } - private static void nullSafeAddAll(HashMap<String, Object> accumulator, - Hashtable<String, Object> toAdd) - { - if (toAdd != null) - { - accumulator.putAll(toAdd); - } - - } - - private static void close(IFormatReader reader) - { - try - { - reader.close(); - } catch (Exception ex) - { - // do not throw exception - } - } - private static Location extractLocation(Map<String, Object> metadata, List<Number> xCoords, List<Number> yCoords) { diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/DynamixWellBrightnessEqualizerProcessingPlugin.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/DynamixWellBrightnessEqualizerProcessingPlugin.java index 297f35dc6dff8959fa4391536e34daf164cbb923..3c6240fe532e7bd96a4833c457c21a271795bfef 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/DynamixWellBrightnessEqualizerProcessingPlugin.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/DynamixWellBrightnessEqualizerProcessingPlugin.java @@ -162,8 +162,8 @@ public class DynamixWellBrightnessEqualizerProcessingPlugin extends ImgImageEnrichedDTO image) { IContent content = contentRepository.getContent(image.getFilePath()); - return ImageUtil.loadJavaAdvancedImagingTiff(content.getInputStream(), image.getPage(), - true); + return ImageUtil.loadJavaAdvancedImagingTiff(content.getReadOnlyRandomAccessFile(), + image.getPage(), true); } private static IImageTransformerFactoryProvider createImageTransformerFactoryProvider( diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/biozentrum/ImageMetadataExtractorTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/biozentrum/ImageMetadataExtractorTest.java index cc52ffe1cc9227bdaaafb4b0ceb5138117e0491b..1c4d9824b5fb39b65c46dc2e21f001aecdd9c3bd 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/biozentrum/ImageMetadataExtractorTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/biozentrum/ImageMetadataExtractorTest.java @@ -16,11 +16,7 @@ package ch.systemsx.cisd.openbis.dss.etl.biozentrum; -import java.io.File; -import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; -import java.util.List; import java.util.Map; import org.testng.AssertJUnit; @@ -33,112 +29,6 @@ import ch.systemsx.cisd.openbis.dss.etl.dto.api.v1.Location; */ public class ImageMetadataExtractorTest extends AssertJUnit { - - public final String FILE_NAME = - "./sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/biozentrum/demo.tif"; - - @Test - public void testMetaDataExtraction() throws Exception - { - File imageFile = new File(FILE_NAME); - Map<String, Object> metaData = ImageMetadataExtractor.extractMetadata(imageFile); - List<String> sortedKeys = new ArrayList<String>(metaData.keySet()); - Collections.sort(sortedKeys); - - StringBuilder output = new StringBuilder(); - for (String key : sortedKeys) - { - Object value = metaData.get(key); - output.append(key + ": " + value); - output.append("\n"); - } - - assertEquals( - "<prop id=\"Description\" type=\"string\" value=\"Experiment base name:ME20101116METADATA03&#13;&#10;Experiment set:ME20101116METADATA03&#13;&#10;Plate Screen&#13;&#10;Exposure: 10 ms&#13;&#10;Binning: 1 x 1&#13;&#10;Region: 1392 x 1040, offset at (0, 0)&#13;&#10;Acquired from Photometrics&#13;&#10;Subtract: Off&#13;&#10;Shading: Off&#13;&#10;Digitizer: 20 MHz&#13;&#10;Gain: Gain 1 (1x)&#13;&#10;Camera Shutter: Always Open&#13;&#10;Clear Count: 2&#13;&#10;Clear Mode: CLEAR PRE SEQUENCE&#13;&#10;Frames to Average: 1&#13;&#10;Trigger Mode: Normal (TIMED)&#13;&#10;Temperature: -29.95&#13;&#10;\">\n" - + "<prop id=\"stage-label\" type=\"string\" value=\"F09: Site 1\">\n" - + "ApplicationName: MetaMorph\n" - + "ApplicationVersion: 3.1.0.79\n" - + "Binning: 1 x 1\n" - + "BitsPerSample: 16\n" - + "Camera Bit Depth: 12\n" - + "Camera Shutter: Always Open\n" - + "Clear Count: 2\n" - + "Clear Mode: CLEAR PRE SEQUENCE\n" - + "Compression: Uncompressed\n" - + "DateTime: 20101121 16:52:52.986\n" - + "Digitizer: 20 MHz\n" - + "Experiment base name: ME20101116METADATA03\n" - + "Experiment set: ME20101116METADATA03\n" - + "Exposure: 10 ms\n" - + "Frames to Average: 1\n" - + "Gain: Gain 1 (1x)\n" - + "ImageLength: 1040\n" - + "ImageWidth: 1392\n" - + "ImageXpress Micro Filter Cube: Texas Red\n" - + "ImageXpress Micro Objective: 10X S Fluor\n" - + "ImageXpress Micro Shutter: Closed\n" - + "Laser focus score: 36.4006\n" - + "MetaDataPhotometricInterpretation: Monochrome\n" - + "MetaDataVersion: 1\n" - + "NewSubfileType: 2\n" - + "NumberOfChannels: 1\n" - + "PhotometricInterpretation: BlackIsZero\n" - + "Region: 1392 x 1040, offset at (0, 0)\n" - + "SamplesPerPixel: 1\n" - + "Shading: Off\n" - + "Software: MetaSeries\n" - + "Subtract: Off\n" - + "Temperature: -29.95\n" - + "Trigger Mode: Normal (TIMED)\n" - + "X position for position #1: 73296.5\n" - + "Y position for position #1: 25554.2\n" - + "_IllumSetting_: Cy3\n" - + "_MagNA_: 0.5\n" - + "_MagRI_: 1\n" - + "_MagSetting_: 10X S Fluor\n" - + "acquisition-time-local: 20101121 16:52:52.986\n" - + "autoscale-max-percent: 0\n" - + "autoscale-min-percent: 0\n" - + "autoscale-state: off\n" - + "bits-per-pixel: 16\n" - + "camera-binning-x: 1\n" - + "camera-binning-y: 1\n" - + "camera-chip-offset-x: 0\n" - + "camera-chip-offset-y: 0\n" - + "gamma: 1\n" - + "gray-calibration-curve-fit-algorithm: 4\n" - + "gray-calibration-max: -1\n" - + "gray-calibration-min: -1\n" - + "gray-calibration-units: \n" - + "gray-calibration-values: \n" - + "image-name: Cy3\n" - + "look-up-table-name: Set By Wavelength\n" - + "look-up-table-type: by-wavelength\n" - + "modification-time-local: 20101121 16:52:53.50\n" - + "number-of-planes: 1\n" - + "photonegative-mode: off\n" - + "pixel-size-x: 1392\n" - + "pixel-size-y: 1040\n" - + "plane-guid: {70EAFB69-A568-464E-9EE2-4479767F96EF}\n" - + "plane-type: plane\n" - + "scale-max: 1058\n" - + "scale-min: 96\n" - + "spatial-calibration-state: on\n" - + "spatial-calibration-units: um\n" - + "spatial-calibration-x: 0.645\n" - + "spatial-calibration-y: 0.645\n" - + "stage-label: F09 : Site 1\n" - + "stage-position-x: 73296.5\n" - + "stage-position-y: 25554.2\n" - + "threshold-color: 4080ff\n" - + "threshold-high: 65535\n" - + "threshold-low: 0\n" - + "threshold-state: ThresholdOff\n" - + "timestamp 0: 2010-11-21T16:52:52\n" - + "wavelength: 624\n" + "z-position: 11145.7\n" + "zoom-percent: 50\n", - output.toString()); - } - @Test public void testTileMapping() throws Exception { diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/biozentrum/demo.tif b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/biozentrum/demo.tif deleted file mode 100644 index b8290408d1d313b80c144fa74baab7eb31eacaab..0000000000000000000000000000000000000000 Binary files a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/biozentrum/demo.tif and /dev/null differ diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreeningTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreeningTest.java index cbba754fbb7f453825a9443fbe4aca3712a0ac48..412db84bbd1252ea129d09ea16952721f7e5268f 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreeningTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreeningTest.java @@ -60,7 +60,7 @@ import ch.systemsx.cisd.openbis.dss.generic.server.images.dto.RequestedImageSize import ch.systemsx.cisd.openbis.dss.generic.shared.Constants; import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; import ch.systemsx.cisd.openbis.dss.generic.shared.IShareIdManager; -import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider; +import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProviderTestWrapper; import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.authorization.DssSessionAuthorizationHolder; import ch.systemsx.cisd.openbis.dss.generic.shared.dto.Size; import ch.systemsx.cisd.openbis.dss.generic.shared.utils.ImageUtil; @@ -152,7 +152,7 @@ public class DssServiceRpcScreeningTest extends AssertJUnit { DssSessionAuthorizationHolder.setAuthorizer(new DatasetSessionAuthorizer()); final StaticListableBeanFactory applicationContext = new StaticListableBeanFactory(); - ServiceProvider.setBeanFactory(applicationContext); + ServiceProviderTestWrapper.setApplicationContext(applicationContext); context = new Mockery(); service = context.mock(IEncapsulatedOpenBISService.class); applicationContext.addBean("openBIS-service", service); @@ -209,9 +209,10 @@ public class DssServiceRpcScreeningTest extends AssertJUnit return identifier; } - @AfterMethod + @AfterMethod(alwaysRun = true) public final void tearDown() { + ServiceProviderTestWrapper.restoreApplicationContext(); // The following line of code should also be called at the end of each test method. // Otherwise one do not known which test failed. context.assertIsSatisfied();