From 0ef5b50d420f12b6625a0cd6d1a193ad84610fef Mon Sep 17 00:00:00 2001 From: Erich Bremer Date: Tue, 8 Oct 2024 13:30:05 -0400 Subject: [PATCH] Bump Jena 5.2.0, fix native image builds --- config/jni-config.json | 6 - config/predefined-classes-config.json | 8 - config/proxy-config.json | 2 - config/reachability-metadata.json | 1474 +++++++++++++++++ config/reflect-config.json | 181 -- config/resource-config.json | 58 - config/serialization-config.json | 8 - dependency-reduced-pom.xml | 314 ++-- nbactions-hatchjar.xml => nbactions-jar.xml | 110 +- nbactions-native.xml | 55 + pom.xml | 38 +- .../stonybrook/bmi/hatch/BaseTiffReader.java | 5 +- .../java/edu/stonybrook/bmi/hatch/Hatch.java | 23 +- .../java/edu/stonybrook/bmi/hatch/X2TIF.java | 114 +- 14 files changed, 1847 insertions(+), 549 deletions(-) delete mode 100644 config/jni-config.json delete mode 100644 config/predefined-classes-config.json delete mode 100644 config/proxy-config.json create mode 100644 config/reachability-metadata.json delete mode 100644 config/reflect-config.json delete mode 100644 config/resource-config.json delete mode 100644 config/serialization-config.json rename nbactions-hatchjar.xml => nbactions-jar.xml (74%) create mode 100644 nbactions-native.xml diff --git a/config/jni-config.json b/config/jni-config.json deleted file mode 100644 index 8b4e417..0000000 --- a/config/jni-config.json +++ /dev/null @@ -1,6 +0,0 @@ -[ -{ - "name":"java.lang.Boolean", - "methods":[{"name":"getBoolean","parameterTypes":["java.lang.String"] }] -} -] diff --git a/config/predefined-classes-config.json b/config/predefined-classes-config.json deleted file mode 100644 index 0e79b2c..0000000 --- a/config/predefined-classes-config.json +++ /dev/null @@ -1,8 +0,0 @@ -[ - { - "type":"agent-extracted", - "classes":[ - ] - } -] - diff --git a/config/proxy-config.json b/config/proxy-config.json deleted file mode 100644 index 0d4f101..0000000 --- a/config/proxy-config.json +++ /dev/null @@ -1,2 +0,0 @@ -[ -] diff --git a/config/reachability-metadata.json b/config/reachability-metadata.json new file mode 100644 index 0000000..ca5baec --- /dev/null +++ b/config/reachability-metadata.json @@ -0,0 +1,1474 @@ +{ + "reflection": [ + { + "type": "boolean", + "allDeclaredFields": true + }, + { + "type": "com.beust.jcommander.converters.BooleanConverter", + "methods": [ + { + "name": "", + "parameterTypes": [ + "java.lang.String" + ] + } + ] + }, + { + "type": "com.beust.jcommander.converters.FileConverter", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "java.util.logging.FileHandler", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "com.beust.jcommander.validators.NoValidator", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "com.beust.jcommander.validators.NoValueValidator", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "com.sun.xml.internal.stream.XMLInputFactoryImpl", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "com.twelvemonkeys.imageio.color.ProfileDeferralActivator$Spi" + }, + { + "type": "com.twelvemonkeys.imageio.plugins.tiff.BigTIFFImageReaderSpi" + }, + { + "type": "com.twelvemonkeys.imageio.plugins.tiff.BigTIFFImageWriterSpi" + }, + { + "type": "com.twelvemonkeys.imageio.plugins.tiff.TIFFImageReaderSpi" + }, + { + "type": "com.twelvemonkeys.imageio.plugins.tiff.TIFFImageWriterSpi" + }, + { + "type": "com.twelvemonkeys.imageio.stream.BufferedFileImageInputStreamSpi" + }, + { + "type": "com.twelvemonkeys.imageio.stream.BufferedInputStreamImageInputStreamSpi" + }, + { + "type": "com.twelvemonkeys.imageio.stream.BufferedRAFImageInputStreamSpi" + }, + { + "type": "edu.stonybrook.bmi.hatch.HatchParameters", + "allDeclaredFields": true + }, + { + "type": "java.awt.image.AffineTransformOp" + }, + { + "type": "java.awt.image.ColorConvertOp" + }, + { + "type": "java.awt.image.ConvolveOp" + }, + { + "type": "java.awt.image.LookupOp" + }, + { + "type": "java.io.File", + "allDeclaredFields": true + }, + { + "type": "java.util.concurrent.ForkJoinTask", + "fields": [ + { + "name": "aux" + }, + { + "name": "status" + } + ] + }, + { + "type": "javax.imageio.spi.ImageReaderSpi" + }, + { + "type": "javax.imageio.spi.ImageReaderWriterSpi", + "methods": [ + { + "name": "getFormatNames", + "parameterTypes": [] + } + ] + }, + { + "type": "javax.imageio.spi.ImageWriterSpi" + }, + { + "type": "jdk.internal.misc.Unsafe" + }, + { + "type": "loci.common.Log4jTools", + "methods": [ + { + "name": "setRootLevel", + "parameterTypes": [ + "java.lang.String" + ] + } + ] + }, + { + "type": "loci.common.LogbackTools" + }, + { + "type": "loci.common.services.S3ClientService" + }, + { + "type": "loci.common.services.S3ClientServiceImpl" + }, + { + "type": "loci.formats.services.EXIFService" + }, + { + "type": "loci.formats.services.EXIFServiceImpl" + }, + { + "type": "loci.formats.services.JAIIIOService" + }, + { + "type": "loci.formats.services.JAIIIOServiceImpl" + }, + { + "type": "loci.formats.services.JHDFService" + }, + { + "type": "loci.formats.services.JHDFServiceImpl" + }, + { + "type": "loci.formats.services.JPEGTurboService" + }, + { + "type": "loci.formats.services.JPEGTurboServiceImpl" + }, + { + "type": "loci.formats.services.JPEGXRService" + }, + { + "type": "loci.formats.services.JPEGXRServiceImpl" + }, + { + "type": "loci.formats.services.MDBService" + }, + { + "type": "loci.formats.services.MDBServiceImpl" + }, + { + "type": "loci.formats.services.MetakitService" + }, + { + "type": "loci.formats.services.MetakitServiceImpl" + }, + { + "type": "loci.formats.services.NetCDFService" + }, + { + "type": "loci.formats.services.NetCDFServiceImpl" + }, + { + "type": "loci.formats.services.OMEXMLService" + }, + { + "type": "loci.formats.services.OMEXMLServiceImpl", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "loci.formats.services.POIService" + }, + { + "type": "loci.formats.services.POIServiceImpl" + }, + { + "type": "ome.codecs.services.JAIIIOService" + }, + { + "type": "ome.codecs.services.JAIIIOServiceImpl" + }, + { + "type": "org.apache.jena.ontapi.sys.InitOntAPI" + }, + { + "type": "org.apache.jena.rdfpatch.system.InitPatch" + }, + { + "type": "org.apache.jena.rdfs.sys.InitRDFS" + }, + { + "type": "org.apache.jena.riot.system.InitRIOT" + }, + { + "type": "org.apache.jena.shacl.sys.InitShacl" + }, + { + "type": "org.apache.jena.shex.sys.InitShex" + }, + { + "type": "org.apache.jena.sparql.system.InitARQ" + }, + { + "type": "org.apache.jena.sys.InitJenaCore" + }, + { + "type": "org.apache.jena.tdb1.sys.InitTDB" + }, + { + "type": "org.apache.jena.tdb2.sys.InitTDB2" + }, + { + "type": "org.apache.log4j.Level" + }, + { + "type": "org.apache.xerces.jaxp.DocumentBuilderFactoryImpl" + }, + { + "type": "org.apache.xerces.jaxp.SAXParserFactoryImpl" + }, + { + "type": "org.slf4j.simple.SimpleServiceProvider" + }, + { + "type": "sun.java2d.marlin.DMarlinRenderingEngine", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "sun.security.provider.NativePRNG", + "methods": [ + { + "name": "", + "parameterTypes": [ + "java.security.SecureRandomParameters" + ] + } + ] + }, + { + "type": "sun.security.provider.SHA", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + } + ], + "resources": [ + { + "glob": "META-INF/services/java.lang.System$LoggerFinder" + }, + { + "glob": "META-INF/services/java.util.spi.ResourceBundleControlProvider" + }, + { + "glob": "META-INF/services/javax.imageio.spi.ImageInputStreamSpi" + }, + { + "glob": "META-INF/services/javax.imageio.spi.ImageOutputStreamSpi" + }, + { + "glob": "META-INF/services/javax.imageio.spi.ImageReaderSpi" + }, + { + "glob": "META-INF/services/javax.imageio.spi.ImageTranscoderSpi" + }, + { + "glob": "META-INF/services/javax.imageio.spi.ImageWriterSpi" + }, + { + "glob": "META-INF/services/javax.xml.parsers.DocumentBuilderFactory" + }, + { + "glob": "META-INF/services/javax.xml.parsers.SAXParserFactory" + }, + { + "glob": "META-INF/services/javax.xml.stream.XMLInputFactory" + }, + { + "glob": "META-INF/services/org.apache.jena.sys.JenaSubsystemLifecycle" + }, + { + "glob": "META-INF/services/org.slf4j.spi.SLF4JServiceProvider" + }, + { + "glob": "etc/location-mapping.rdf" + }, + { + "glob": "etc/location-mapping.ttl" + }, + { + "glob": "location-mapping.rdf" + }, + { + "glob": "location-mapping.ttl" + }, + { + "glob": "loci/common/services/services.properties" + }, + { + "glob": "loci/formats/FormatTools.class" + }, + { + "glob": "logging.properties" + }, + { + "glob": "org/apache/jena/ext/xerces/impl/xpath/regex/message.properties" + }, + { + "glob": "org/apache/jena/ext/xerces/impl/xpath/regex/message_en.properties" + }, + { + "glob": "org/joda/time/tz/data/America/New_York" + }, + { + "glob": "org/joda/time/tz/data/ZoneInfoMap" + }, + { + "glob": "simplelogger.properties" + }, + { + "module": "java.desktop", + "glob": "sun/awt/resources/awt_en.properties" + }, + { + "module": "java.logging", + "glob": "sun/util/logging/resources/logging_en.properties" + }, + { + "module": "java.xml", + "glob": "jdk/xml/internal/jdkcatalog/JDKCatalog.xml" + } + ], + "bundles": [ + { + "name": "org.apache.jena.ext.xerces.impl.xpath.regex.message", + "locales": [ + "en" + ] + }, + { + "name": "sun.awt.resources.awt", + "locales": [ + "en" + ] + } + ], + "jni": [ + { + "type": "[Lsun.java2d.loops.GraphicsPrimitive;" + }, + { + "type": "com.sun.imageio.plugins.jpeg.JPEGImageReader", + "methods": [ + { + "name": "acceptPixels", + "parameterTypes": [ + "int", + "boolean" + ] + }, + { + "name": "passComplete", + "parameterTypes": [] + }, + { + "name": "passStarted", + "parameterTypes": [ + "int" + ] + }, + { + "name": "pushBack", + "parameterTypes": [ + "int" + ] + }, + { + "name": "readInputData", + "parameterTypes": [ + "byte[]", + "int", + "int" + ] + }, + { + "name": "setImageData", + "parameterTypes": [ + "int", + "int", + "int", + "int", + "int", + "byte[]" + ] + }, + { + "name": "skipInputBytes", + "parameterTypes": [ + "long" + ] + }, + { + "name": "skipPastImage", + "parameterTypes": [ + "int" + ] + }, + { + "name": "warningOccurred", + "parameterTypes": [ + "int" + ] + }, + { + "name": "warningWithMessage", + "parameterTypes": [ + "java.lang.String" + ] + } + ] + }, + { + "type": "com.sun.imageio.plugins.jpeg.JPEGImageWriter", + "methods": [ + { + "name": "grabPixels", + "parameterTypes": [ + "int" + ] + }, + { + "name": "warningOccurred", + "parameterTypes": [ + "int" + ] + }, + { + "name": "warningWithMessage", + "parameterTypes": [ + "java.lang.String" + ] + }, + { + "name": "writeMetadata", + "parameterTypes": [] + }, + { + "name": "writeOutputData", + "parameterTypes": [ + "byte[]", + "int", + "int" + ] + } + ] + }, + { + "type": "java.awt.AlphaComposite", + "fields": [ + { + "name": "extraAlpha" + }, + { + "name": "rule" + } + ] + }, + { + "type": "java.awt.Color", + "methods": [ + { + "name": "getRGB", + "parameterTypes": [] + } + ] + }, + { + "type": "java.awt.GraphicsEnvironment", + "methods": [ + { + "name": "isHeadless", + "parameterTypes": [] + } + ] + }, + { + "type": "java.awt.Rectangle", + "methods": [ + { + "name": "", + "parameterTypes": [ + "int", + "int", + "int", + "int" + ] + } + ] + }, + { + "type": "java.awt.geom.AffineTransform", + "fields": [ + { + "name": "m00" + }, + { + "name": "m01" + }, + { + "name": "m02" + }, + { + "name": "m10" + }, + { + "name": "m11" + }, + { + "name": "m12" + } + ] + }, + { + "type": "java.awt.geom.Path2D", + "fields": [ + { + "name": "numTypes" + }, + { + "name": "pointTypes" + }, + { + "name": "windingRule" + } + ] + }, + { + "type": "java.awt.geom.Path2D$Float", + "fields": [ + { + "name": "floatCoords" + } + ] + }, + { + "type": "java.awt.image.BufferedImage", + "fields": [ + { + "name": "colorModel" + }, + { + "name": "imageType" + }, + { + "name": "raster" + } + ], + "methods": [ + { + "name": "getRGB", + "parameterTypes": [ + "int", + "int", + "int", + "int", + "int[]", + "int", + "int" + ] + }, + { + "name": "setRGB", + "parameterTypes": [ + "int", + "int", + "int", + "int", + "int[]", + "int", + "int" + ] + } + ] + }, + { + "type": "java.awt.image.ColorModel", + "fields": [ + { + "name": "colorSpace" + }, + { + "name": "colorSpaceType" + }, + { + "name": "isAlphaPremultiplied" + }, + { + "name": "is_sRGB" + }, + { + "name": "nBits" + }, + { + "name": "numComponents" + }, + { + "name": "supportsAlpha" + }, + { + "name": "transparency" + } + ], + "methods": [ + { + "name": "getRGBdefault", + "parameterTypes": [] + } + ] + }, + { + "type": "java.awt.image.ComponentColorModel" + }, + { + "type": "java.awt.image.IndexColorModel", + "fields": [ + { + "name": "allgrayopaque" + }, + { + "name": "colorData" + }, + { + "name": "map_size" + }, + { + "name": "rgb" + }, + { + "name": "transparent_index" + } + ] + }, + { + "type": "java.awt.image.PackedColorModel" + }, + { + "type": "java.awt.image.Raster", + "fields": [ + { + "name": "dataBuffer" + }, + { + "name": "height" + }, + { + "name": "minX" + }, + { + "name": "minY" + }, + { + "name": "numBands" + }, + { + "name": "numDataElements" + }, + { + "name": "sampleModel" + }, + { + "name": "sampleModelTranslateX" + }, + { + "name": "sampleModelTranslateY" + }, + { + "name": "width" + } + ] + }, + { + "type": "java.awt.image.SampleModel", + "fields": [ + { + "name": "height" + }, + { + "name": "width" + } + ], + "methods": [ + { + "name": "getPixels", + "parameterTypes": [ + "int", + "int", + "int", + "int", + "int[]", + "java.awt.image.DataBuffer" + ] + }, + { + "name": "setPixels", + "parameterTypes": [ + "int", + "int", + "int", + "int", + "int[]", + "java.awt.image.DataBuffer" + ] + } + ] + }, + { + "type": "java.awt.image.SinglePixelPackedSampleModel", + "fields": [ + { + "name": "bitMasks" + }, + { + "name": "bitOffsets" + }, + { + "name": "bitSizes" + }, + { + "name": "maxBitSize" + } + ] + }, + { + "type": "java.lang.Boolean", + "methods": [ + { + "name": "getBoolean", + "parameterTypes": [ + "java.lang.String" + ] + } + ] + }, + { + "type": "java.lang.System", + "methods": [ + { + "name": "load", + "parameterTypes": [ + "java.lang.String" + ] + } + ] + }, + { + "type": "javax.imageio.plugins.jpeg.JPEGHuffmanTable", + "fields": [ + { + "name": "lengths" + }, + { + "name": "values" + } + ] + }, + { + "type": "javax.imageio.plugins.jpeg.JPEGQTable", + "fields": [ + { + "name": "qTable" + } + ] + }, + { + "type": "sun.awt.SunHints", + "fields": [ + { + "name": "INTVAL_STROKE_PURE" + } + ] + }, + { + "type": "sun.awt.SunToolkit", + "methods": [ + { + "name": "awtLock", + "parameterTypes": [] + }, + { + "name": "awtLockNotify", + "parameterTypes": [] + }, + { + "name": "awtLockNotifyAll", + "parameterTypes": [] + }, + { + "name": "awtLockWait", + "parameterTypes": [ + "long" + ] + }, + { + "name": "awtUnlock", + "parameterTypes": [] + } + ] + }, + { + "type": "sun.awt.X11.XErrorHandlerUtil", + "methods": [ + { + "name": "init", + "parameterTypes": [ + "long" + ] + } + ] + }, + { + "type": "sun.awt.image.BufImgSurfaceData$ICMColorData", + "fields": [ + { + "name": "pData" + } + ], + "methods": [ + { + "name": "", + "parameterTypes": [ + "long" + ] + } + ] + }, + { + "type": "sun.awt.image.ByteComponentRaster", + "fields": [ + { + "name": "data" + }, + { + "name": "dataOffsets" + }, + { + "name": "pixelStride" + }, + { + "name": "scanlineStride" + }, + { + "name": "type" + } + ] + }, + { + "type": "sun.awt.image.BytePackedRaster", + "fields": [ + { + "name": "data" + }, + { + "name": "dataBitOffset" + }, + { + "name": "pixelBitStride" + }, + { + "name": "scanlineStride" + }, + { + "name": "type" + } + ] + }, + { + "type": "sun.awt.image.IntegerComponentRaster", + "fields": [ + { + "name": "data" + }, + { + "name": "dataOffsets" + }, + { + "name": "pixelStride" + }, + { + "name": "scanlineStride" + }, + { + "name": "type" + } + ] + }, + { + "type": "sun.awt.image.ShortComponentRaster", + "fields": [ + { + "name": "data" + }, + { + "name": "dataOffsets" + }, + { + "name": "pixelStride" + }, + { + "name": "scanlineStride" + }, + { + "name": "type" + } + ] + }, + { + "type": "sun.java2d.Disposer", + "methods": [ + { + "name": "addRecord", + "parameterTypes": [ + "java.lang.Object", + "long", + "long" + ] + } + ] + }, + { + "type": "sun.java2d.InvalidPipeException" + }, + { + "type": "sun.java2d.NullSurfaceData" + }, + { + "type": "sun.java2d.SunGraphics2D", + "fields": [ + { + "name": "clipRegion" + }, + { + "name": "composite" + }, + { + "name": "eargb" + }, + { + "name": "lcdTextContrast" + }, + { + "name": "pixel" + }, + { + "name": "strokeHint" + } + ] + }, + { + "type": "sun.java2d.SurfaceData", + "fields": [ + { + "name": "pData" + }, + { + "name": "valid" + } + ] + }, + { + "type": "sun.java2d.loops.Blit", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "type": "sun.java2d.loops.BlitBg", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "type": "sun.java2d.loops.CompositeType", + "fields": [ + { + "name": "AnyAlpha" + }, + { + "name": "Src" + }, + { + "name": "SrcNoEa" + }, + { + "name": "SrcOver" + }, + { + "name": "SrcOverNoEa" + }, + { + "name": "Xor" + } + ] + }, + { + "type": "sun.java2d.loops.DrawGlyphList", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "type": "sun.java2d.loops.DrawGlyphListAA", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "type": "sun.java2d.loops.DrawGlyphListLCD", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "type": "sun.java2d.loops.DrawLine", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "type": "sun.java2d.loops.DrawParallelogram", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "type": "sun.java2d.loops.DrawPath", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "type": "sun.java2d.loops.DrawPolygons", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "type": "sun.java2d.loops.DrawRect", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "type": "sun.java2d.loops.FillParallelogram", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "type": "sun.java2d.loops.FillPath", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "type": "sun.java2d.loops.FillRect", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "type": "sun.java2d.loops.FillSpans", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "type": "sun.java2d.loops.GraphicsPrimitive", + "fields": [ + { + "name": "pNativePrim" + } + ] + }, + { + "type": "sun.java2d.loops.GraphicsPrimitiveMgr", + "methods": [ + { + "name": "register", + "parameterTypes": [ + "sun.java2d.loops.GraphicsPrimitive[]" + ] + } + ] + }, + { + "type": "sun.java2d.loops.MaskBlit", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "type": "sun.java2d.loops.MaskFill", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "type": "sun.java2d.loops.ScaledBlit", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "type": "sun.java2d.loops.SurfaceType", + "fields": [ + { + "name": "Any3Byte" + }, + { + "name": "Any4Byte" + }, + { + "name": "AnyByte" + }, + { + "name": "AnyColor" + }, + { + "name": "AnyInt" + }, + { + "name": "AnyShort" + }, + { + "name": "ByteBinary1Bit" + }, + { + "name": "ByteBinary2Bit" + }, + { + "name": "ByteBinary4Bit" + }, + { + "name": "ByteGray" + }, + { + "name": "ByteIndexed" + }, + { + "name": "ByteIndexedBm" + }, + { + "name": "FourByteAbgr" + }, + { + "name": "FourByteAbgrPre" + }, + { + "name": "Index12Gray" + }, + { + "name": "Index8Gray" + }, + { + "name": "IntArgb" + }, + { + "name": "IntArgbBm" + }, + { + "name": "IntArgbPre" + }, + { + "name": "IntBgr" + }, + { + "name": "IntRgb" + }, + { + "name": "IntRgbx" + }, + { + "name": "OpaqueColor" + }, + { + "name": "ThreeByteBgr" + }, + { + "name": "Ushort4444Argb" + }, + { + "name": "Ushort555Rgb" + }, + { + "name": "Ushort555Rgbx" + }, + { + "name": "Ushort565Rgb" + }, + { + "name": "UshortGray" + }, + { + "name": "UshortIndexed" + } + ] + }, + { + "type": "sun.java2d.loops.TransformHelper", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "type": "sun.java2d.loops.XORComposite", + "fields": [ + { + "name": "alphaMask" + }, + { + "name": "xorColor" + }, + { + "name": "xorPixel" + } + ] + }, + { + "type": "sun.java2d.pipe.Region", + "fields": [ + { + "name": "bands" + }, + { + "name": "endIndex" + }, + { + "name": "hix" + }, + { + "name": "hiy" + }, + { + "name": "lox" + }, + { + "name": "loy" + } + ] + }, + { + "type": "sun.java2d.pipe.RegionIterator", + "fields": [ + { + "name": "curIndex" + }, + { + "name": "numXbands" + }, + { + "name": "region" + } + ] + }, + { + "type": "sun.java2d.xr.XRSurfaceData", + "fields": [ + { + "name": "picture" + }, + { + "name": "xid" + } + ] + } + ] +} \ No newline at end of file diff --git a/config/reflect-config.json b/config/reflect-config.json deleted file mode 100644 index de3f44b..0000000 --- a/config/reflect-config.json +++ /dev/null @@ -1,181 +0,0 @@ -[ -{ - "name":"boolean", - "allDeclaredFields":true -}, -{ - "name":"com.beust.jcommander.converters.BooleanConverter", - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":["java.lang.String"] }] -}, -{ - "name":"com.beust.jcommander.converters.FileConverter", - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"com.beust.jcommander.converters.IntegerConverter", - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":["java.lang.String"] }] -}, -{ - "name":"com.beust.jcommander.validators.NoValidator", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"com.beust.jcommander.validators.NoValueValidator", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"com.sun.xml.internal.stream.XMLInputFactoryImpl", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"edu.stonybrook.bmi.hatch.HatchParameters", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name" : "java.util.logging.FileHandler", - "methods" : [{ "name" : "", "parameterTypes" : [] }] -}, -{ - "name":"java.io.File", - "allDeclaredFields":true -}, -{ - "name":"java.lang.Integer", - "allDeclaredFields":true -}, -{ - "name":"java.security.SecureRandomParameters" -}, -{ - "name":"java.util.concurrent.atomic.AtomicReference", - "fields":[{"name":"value"}] -}, -{ - "name":"loci.common.Log4jTools", - "methods":[{"name":"setRootLevel","parameterTypes":["java.lang.String"] }] -}, -{ - "name":"loci.common.LogbackTools" -}, -{ - "name":"loci.common.services.S3ClientService" -}, -{ - "name":"loci.common.services.S3ClientServiceImpl" -}, -{ - "name":"loci.formats.services.EXIFService" -}, -{ - "name":"loci.formats.services.EXIFServiceImpl" -}, -{ - "name":"loci.formats.services.JAIIIOService" -}, -{ - "name":"loci.formats.services.JAIIIOServiceImpl" -}, -{ - "name":"loci.formats.services.JHDFService" -}, -{ - "name":"loci.formats.services.JHDFServiceImpl" -}, -{ - "name":"loci.formats.services.JPEGTurboService" -}, -{ - "name":"loci.formats.services.JPEGTurboServiceImpl" -}, -{ - "name":"loci.formats.services.JPEGXRService" -}, -{ - "name":"loci.formats.services.JPEGXRServiceImpl" -}, -{ - "name":"loci.formats.services.MDBService" -}, -{ - "name":"loci.formats.services.MDBServiceImpl" -}, -{ - "name":"loci.formats.services.MetakitService" -}, -{ - "name":"loci.formats.services.MetakitServiceImpl" -}, -{ - "name":"loci.formats.services.NetCDFService" -}, -{ - "name":"loci.formats.services.NetCDFServiceImpl" -}, -{ - "name":"loci.formats.services.OMEXMLService" -}, -{ - "name":"loci.formats.services.OMEXMLServiceImpl", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"loci.formats.services.POIService" -}, -{ - "name":"loci.formats.services.POIServiceImpl" -}, -{ - "name":"ome.codecs.services.JAIIIOService" -}, -{ - "name":"ome.codecs.services.JAIIIOServiceImpl" -}, -{ - "name":"org.apache.jena.rdfpatch.system.InitPatch" -}, -{ - "name":"org.apache.jena.rdfs.sys.InitRDFS" -}, -{ - "name":"org.apache.jena.riot.system.InitRIOT" -}, -{ - "name":"org.apache.jena.shacl.sys.InitShacl" -}, -{ - "name":"org.apache.jena.shex.sys.InitShex" -}, -{ - "name":"org.apache.jena.sparql.system.InitARQ" -}, -{ - "name":"org.apache.jena.sys.InitJenaCore" -}, -{ - "name":"org.apache.jena.tdb1.sys.InitTDB" -}, -{ - "name":"org.apache.jena.tdb2.sys.InitTDB2" -}, -{ - "name":"org.apache.log4j.Level" -}, -{ - "name":"org.apache.xerces.jaxp.SAXParserFactoryImpl" -}, -{ - "name":"org.slf4j.simple.SimpleServiceProvider" -}, -{ - "name":"sun.security.provider.NativePRNG", - "methods":[{"name":"","parameterTypes":[] }, {"name":"","parameterTypes":["java.security.SecureRandomParameters"] }] -}, -{ - "name":"sun.security.provider.SHA", - "methods":[{"name":"","parameterTypes":[] }] -} -] diff --git a/config/resource-config.json b/config/resource-config.json deleted file mode 100644 index 350b09f..0000000 --- a/config/resource-config.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "resources":{ - "includes":[{ - "pattern":"\\QMETA-INF/services/java.lang.System$LoggerFinder\\E" - }, { - "pattern":"\\QMETA-INF/services/java.util.spi.ResourceBundleControlProvider\\E" - }, { - "pattern":"\\QMETA-INF/services/javax.xml.parsers.SAXParserFactory\\E" - }, { - "pattern":"\\QMETA-INF/services/javax.xml.stream.XMLInputFactory\\E" - }, { - "pattern":"\\QMETA-INF/services/org.apache.jena.sys.JenaSubsystemLifecycle\\E" - }, { - "pattern":"\\QMETA-INF/services/org.slf4j.spi.SLF4JServiceProvider\\E" - }, { - "pattern":"\\Qetc/location-mapping.rdf\\E" - }, { - "pattern":"\\Qetc/location-mapping.ttl\\E" - }, { - "pattern":"\\Qlocation-mapping.rdf\\E" - }, { - "pattern":"\\Qlocation-mapping.ttl\\E" - }, { - "pattern":"\\Qloci/common/services/services.properties\\E" - }, { - "pattern":"\\Qloci/formats/FormatTools.class\\E" - }, { - "pattern":"\\Qlogging.properties\\E" - }, { - "pattern":"\\Qorg/apache/jena/ext/xerces/impl/xpath/regex/message.properties\\E" - }, { - "pattern":"\\Qorg/apache/jena/ext/xerces/impl/xpath/regex/message_en.properties\\E" - }, { - "pattern":"\\Qorg/apache/jena/ext/xerces/impl/xpath/regex/message_en_US.properties\\E" - }, { - "pattern":"\\Qorg/joda/time/tz/data/America/New_York\\E" - }, { - "pattern":"\\Qorg/joda/time/tz/data/ZoneInfoMap\\E" - }, { - "pattern":"\\Qsimplelogger.properties\\E" - }, { - "pattern":"java.logging:\\Qsun/util/logging/resources/logging_en.properties\\E" - }, { - "pattern":"java.logging:\\Qsun/util/logging/resources/logging_en_US.properties\\E" - }, { - "pattern":"java.xml:\\Qjdk/xml/internal/jdkcatalog/JDKCatalog.xml\\E" - }]}, - "bundles":[{ - "name":"org.apache.jena.ext.xerces.impl.xpath.regex.message", - "locales":["en-US"] - }, { - "name":"sun.text.resources.cldr.FormatData", - "locales":["en", "en-US", "und"] - }, { - "name":"sun.util.resources.cldr.CalendarData", - "locales":["und"] - }] -} diff --git a/config/serialization-config.json b/config/serialization-config.json deleted file mode 100644 index f3d7e06..0000000 --- a/config/serialization-config.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "types":[ - ], - "lambdaCapturingTypes":[ - ], - "proxies":[ - ] -} diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml index f50b8b6..013841c 100644 --- a/dependency-reduced-pom.xml +++ b/dependency-reduced-pom.xml @@ -1,151 +1,163 @@ - - - 4.0.0 - edu.stonybrook.bmi - hatch - 4.0.1 - - - - src/main/resources - - - src/main/java - - ** - - - **/*.java - - - - - - - hatchjar - - hatch-${project.version} - - - maven-enforcer-plugin - 3.4.1 - - - enforce - - enforce - - - - - - - - - - - maven-shade-plugin - 3.5.2 - - - package - - shade - - - - - false - - - edu.stonybrook.bmi.hatch.Hatch - - true - - - - - - - *:* - - META-INF/*.SF - META-INF/*.DSA - META-INF/*.RSA - - - - - - - - - - hatch - - - - org.graalvm.buildtools - native-maven-plugin - 0.10.1 - true - - - build-native - package - - compile-no-fork - - - - - hatch - edu.stonybrook.bmi.hatch.Hatch - true - true - true - - --no-fallback - -H:ConfigurationFileDirectories=config - --enable-url-protocols=https - -H:+AddAllCharsets - - - - - - - - - - central - Central Repository - https://repo.maven.apache.org/maven2 - - - ome - OME Artifactory - https://artifacts.openmicroscopy.org/artifactory/maven/ - - - halcyon - https://cursus.bmi.stonybrookmedicine.edu/releases - - - - - org.apache.jena - apache-jena-libs - 5.1.0 - pom - compile - - - - 21 - 3.10.1 - 21 - UTF-8 - 7.3.1 - - + + + 4.0.0 + edu.stonybrook.bmi + hatch + 4.0.2 + + + + src/main/resources + + + src/main/java + + ** + + + **/*.java + + + + + + + jar + + hatch-${project.version} + + + maven-enforcer-plugin + 3.5.0 + + + enforce + + enforce + + + + + + + + + + + maven-shade-plugin + 3.6.0 + + + package + + shade + + + + + false + + + edu.stonybrook.bmi.hatch.Hatch + + true + + + + + + + *:* + + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA + + + + + + + + + + native + + + + maven-compiler-plugin + 3.13.0 + + + --add-reads + edu.stonybrook.bmi.hatch=ALL-UNNAMED + + + + + org.graalvm.buildtools + native-maven-plugin + 0.10.3 + true + + + build-native + package + + compile-no-fork + + + + + hatch + edu.stonybrook.bmi.hatch.Hatch + true + true + true + + --no-fallback + -H:ConfigurationFileDirectories=config + --enable-url-protocols=https + -H:+AddAllCharsets + --gc=G1 + -H:IncludeResources="logging.properties" + + + + + + + + + + central + Central Repository + https://repo.maven.apache.org/maven2 + + + ome + OME Artifactory + https://artifacts.openmicroscopy.org/artifactory/maven/ + + + halcyon + https://cursus.bmi.stonybrookmedicine.edu/releases + + + + + org.apache.jena + apache-jena-libs + 5.1.0 + pom + compile + + + + 21 + 3.12.0 + 21 + UTF-8 + 7.3.1 + + diff --git a/nbactions-hatchjar.xml b/nbactions-jar.xml similarity index 74% rename from nbactions-hatchjar.xml rename to nbactions-jar.xml index 8b84a2b..e613791 100644 --- a/nbactions-hatchjar.xml +++ b/nbactions-jar.xml @@ -1,55 +1,55 @@ - - - - run - - jar - - - process-classes - org.codehaus.mojo:exec-maven-plugin:3.0.0:exec - - - - ${exec.vmArgs} -classpath %classpath ${exec.mainClass} ${exec.appArgs} - -v -src D:\miami\umiami_converted_image\image -dest D:\miami\umiami_converted_image\output2 -validate - edu.stonybrook.bmi.hatch.Hatch - java - - - - debug - - jar - - - process-classes - org.codehaus.mojo:exec-maven-plugin:3.0.0:exec - - - -agentlib:jdwp=transport=dt_socket,server=n,address=${jpda.address} - ${exec.vmArgs} -classpath %classpath ${exec.mainClass} ${exec.appArgs} - -v -src D:\miami\umiami_converted_image\image -dest D:\miami\umiami_converted_image\output2 -validate - edu.stonybrook.bmi.hatch.Hatch - java - true - - - - profile - - jar - - - process-classes - org.codehaus.mojo:exec-maven-plugin:3.0.0:exec - - - - ${exec.vmArgs} -classpath %classpath ${exec.mainClass} ${exec.appArgs} - edu.stonybrook.bmi.hatch.Hatch - java - -v -src D:\miami\umiami_converted_image\image -dest D:\miami\umiami_converted_image\output2 -validate - - - + + + + run + + jar + + + process-classes + org.codehaus.mojo:exec-maven-plugin:3.0.0:exec + + + --add-opens=java.base/java.nio=ALL-UNNAMED + ${exec.vmArgs} -classpath %classpath ${exec.mainClass} ${exec.appArgs} + -src d:\NULL\src -dest d:\NULL\dest -verbose -validate + edu.stonybrook.bmi.hatch.Hatch + java + + + + debug + + jar + + + process-classes + org.codehaus.mojo:exec-maven-plugin:3.0.0:exec + + + --add-opens=java.base/java.nio=ALL-UNNAMED -agentlib:jdwp=transport=dt_socket,server=n,address=${jpda.address} + ${exec.vmArgs} -classpath %classpath ${exec.mainClass} ${exec.appArgs} + -src d:\NULL\src -dest d:\NULL\dest -verbose -validate + edu.stonybrook.bmi.hatch.Hatch + java + true + + + + profile + + jar + + + process-classes + org.codehaus.mojo:exec-maven-plugin:3.0.0:exec + + + --add-opens=java.base/java.nio=ALL-UNNAMED + ${exec.vmArgs} -classpath %classpath ${exec.mainClass} ${exec.appArgs} + edu.stonybrook.bmi.hatch.Hatch + java + -src d:\NULL\src -dest d:\NULL\dest -verbose -validate + + + diff --git a/nbactions-native.xml b/nbactions-native.xml new file mode 100644 index 0000000..568d99e --- /dev/null +++ b/nbactions-native.xml @@ -0,0 +1,55 @@ + + + + run + + jar + + + process-classes + org.codehaus.mojo:exec-maven-plugin:3.0.0:exec + + + -Xmx50G + ${exec.vmArgs} -classpath %classpath ${exec.mainClass} ${exec.appArgs} + -s 0 -v -src /svs/test.svs -dest /svs/hold/text.tif -quality 0.1 + edu.stonybrook.bmi.hatch.Hatch + java + + + + debug + + jar + + + process-classes + org.codehaus.mojo:exec-maven-plugin:3.0.0:exec + + + -Xmx50G -agentlib:jdwp=transport=dt_socket,server=n,address=${jpda.address} + ${exec.vmArgs} -classpath %classpath ${exec.mainClass} ${exec.appArgs} + -s 0 -v -src /svs/test.svs -dest /svs/hold/text.tif -quality 0.1 + edu.stonybrook.bmi.hatch.Hatch + java + true + + + + profile + + jar + + + process-classes + org.codehaus.mojo:exec-maven-plugin:3.0.0:exec + + + -Xmx50G + ${exec.vmArgs} -classpath %classpath ${exec.mainClass} ${exec.appArgs} + edu.stonybrook.bmi.hatch.Hatch + java + -s 0 -v -src /svs/test.svs -dest /svs/hold/text.tif -quality 0.1 + + + diff --git a/pom.xml b/pom.xml index d8e1a21..687782f 100644 --- a/pom.xml +++ b/pom.xml @@ -3,14 +3,14 @@ 4.0.0 edu.stonybrook.bmi hatch - 4.0.1 + 4.1.0 jar UTF-8 21 21 7.3.1 - 3.10.1 + 3.12.0 @@ -28,7 +28,7 @@ org.jcommander jcommander - 1.83 + 2.0 com.twelvemonkeys.imageio @@ -38,7 +38,7 @@ org.apache.jena apache-jena-libs - 5.1.0 + 5.2.0 pom @@ -51,6 +51,11 @@ halcyon-core 1.1.0 --> + + me.tongfei + progressbar + 0.10.1 + @@ -88,7 +93,7 @@ - hatchjar + jar true @@ -98,7 +103,7 @@ org.apache.maven.plugins maven-enforcer-plugin - 3.4.1 + 3.5.0 enforce @@ -116,7 +121,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.5.2 + 3.6.0 false @@ -152,13 +157,24 @@ - hatch + native + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + --add-reads + edu.stonybrook.bmi.hatch=ALL-UNNAMED + + + org.graalvm.buildtools native-maven-plugin - 0.10.1 + 0.10.3 true @@ -180,6 +196,10 @@ -H:ConfigurationFileDirectories=config --enable-url-protocols=https -H:+AddAllCharsets + --gc=G1 + -march=native + -H:+UnlockExperimentalVMOptions + -H:IncludeResources="logging.properties" diff --git a/src/main/java/edu/stonybrook/bmi/hatch/BaseTiffReader.java b/src/main/java/edu/stonybrook/bmi/hatch/BaseTiffReader.java index 8dcec30..6ad1f84 100644 --- a/src/main/java/edu/stonybrook/bmi/hatch/BaseTiffReader.java +++ b/src/main/java/edu/stonybrook/bmi/hatch/BaseTiffReader.java @@ -521,7 +521,7 @@ private String getResolutionUnitFromComment(IFD ifd) { */ protected String getImageCreationDate() { Object o = ifds.get(0).getIFDValue(IFD.DATE_TIME); - if (o instanceof String) return (String) o; + if (o instanceof String string) return string; if (o instanceof String[] && ((String[]) o).length > 0) return ((String[]) o)[0]; return null; } @@ -588,8 +588,7 @@ protected void putString(String key, IFD ifd, int tag) { } protected void putDouble(String key, IFD ifd, int tag) { - if (ifd.getIFDValue(tag) instanceof Number) { - Number number = (Number) ifd.getIFDValue(tag); + if (ifd.getIFDValue(tag) instanceof Number number) { if (number != null) { put(key, number.doubleValue()); } diff --git a/src/main/java/edu/stonybrook/bmi/hatch/Hatch.java b/src/main/java/edu/stonybrook/bmi/hatch/Hatch.java index 37cfe72..b6ced15 100644 --- a/src/main/java/edu/stonybrook/bmi/hatch/Hatch.java +++ b/src/main/java/edu/stonybrook/bmi/hatch/Hatch.java @@ -21,7 +21,7 @@ * @author erich */ public class Hatch { - public static String software = "hatch 4.0.0 by Wing-n-Beak"; + public static String software = "hatch 4.1.0 by Wing-n-Beak"; private static final String[] ext = new String[] {".vsi", ".svs", ".tif"}; private static final String errorlog = "error.log"; private static final Logger LOGGER; @@ -31,10 +31,6 @@ public class Hatch { -v : verbose """; - public Hatch() { - //LOGGER = Logger.getLogger(Hatch.class.getName()); - } - static { try { LogManager.getLogManager().readConfiguration(Hatch.class.getResourceAsStream("/logging.properties")); @@ -43,6 +39,8 @@ public Hatch() { } LOGGER = Logger.getLogger(Hatch.class.getName()); } + + public Hatch() {} private static void Traverse(HatchParameters params) { Path s = params.src.toPath(); @@ -189,13 +187,22 @@ class FileProcessor implements Callable { private final HatchParameters params; private final File src; private final File dest; - private static Logger LOGGER; + private static final Logger LOGGER; + static { + try { + LogManager.getLogManager().readConfiguration(FileProcessor.class.getResourceAsStream("/logging.properties")); + } catch (IOException | SecurityException | ExceptionInInitializerError ex) { + Logger.getLogger(FileProcessor.class.getName()).log(Level.SEVERE, "Failed to read logging.properties file", ex); + } + LOGGER = Logger.getLogger(FileProcessor.class.getName()); + } + public FileProcessor(HatchParameters params, Path src, Path dest) { this.params = params; this.src = src.toFile(); this.dest = dest.toFile(); - LOGGER = Logger.getLogger(Hatch.class.getName()); + //LOGGER = Logger.getLogger(Hatch.class.getName()); } @Override @@ -221,7 +228,7 @@ public String call() { try (X2TIF v2t = new X2TIF(params, src.toString(), dest.toString(), null)) { v2t.Execute(); } catch (Exception ex) { - LOGGER.log(Level.SEVERE, "FILE PROCESSOR ERROR --> {0} {1} {2}", new Object[]{src, dest, ex.toString()}); + LOGGER.log(Level.SEVERE, "FILE PROCESSOR ERROR: {0} {1} {2}", new Object[]{src, dest, ex.toString()}); } } if (dest.exists()&&((params.validate)||params.validateonly)) { diff --git a/src/main/java/edu/stonybrook/bmi/hatch/X2TIF.java b/src/main/java/edu/stonybrook/bmi/hatch/X2TIF.java index 4e07924..46b835e 100644 --- a/src/main/java/edu/stonybrook/bmi/hatch/X2TIF.java +++ b/src/main/java/edu/stonybrook/bmi/hatch/X2TIF.java @@ -35,6 +35,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.util.Map; +import java.util.logging.LogManager; /** * @@ -60,12 +61,20 @@ public class X2TIF implements AutoCloseable { private HatchWriter writer; private IMetadata meta; private byte compression; - private static Logger LOGGER; + private static final Logger LOGGER; private XMP xmp = null; private String xcompression = null; + static { + try { + LogManager.getLogManager().readConfiguration(X2TIF.class.getResourceAsStream("/logging.properties")); + } catch (IOException | SecurityException | ExceptionInInitializerError ex) { + Logger.getLogger(X2TIF.class.getName()).log(Level.SEVERE, "Failed to read logging.properties file", ex); + } + LOGGER = Logger.getLogger(X2TIF.class.getName()); + } + public X2TIF(HatchParameters params, String src, String dest, Integer series) { - LOGGER = Logger.getLogger(X2TIF.class.getName()); time = new StopWatch(); inputFile = src; this.params = params; @@ -78,17 +87,11 @@ public X2TIF(HatchParameters params, String src, String dest, Integer series) { IMetadata omexml = service.createOMEXMLMetadata(); String end = inputFile.substring(inputFile.length()-4).toLowerCase(); switch (end) { - case ".tif": - reader = new TiffReader(); - break; - case ".svs": - reader = new SVSReader(); - break; - case ".vsi": - reader = new CellSensReader(); - break; - default: - break; + case ".tif" -> reader = new TiffReader(); + case ".svs" -> reader = new SVSReader(); + case ".vsi" -> reader = new CellSensReader(); + default -> { + } } reader.setMetadataStore(omexml); reader.setId(inputFile); @@ -108,13 +111,13 @@ public X2TIF(HatchParameters params, String src, String dest, Integer series) { maximage = series; } if ((series!=null)&&((series<0)||(series>reader.getSeriesCount()))) { - LOGGER.log(Level.INFO, "Series doesn''t exist : {0} --> {1}", new Object[]{src, series}); + LOGGER.log(Level.INFO, "Series doesn''t exist : {0}: {1}", new Object[]{src, series}); System.exit(0); } try { writer = new HatchWriter(dest); } catch (IOException ex) { - LOGGER.log(Level.SEVERE, "FILE PROCESSOR ERROR --> {0} {1} {2}", new Object[]{params.src, params.dest, ex.toString()}); + LOGGER.log(Level.SEVERE, "FILE PROCESSOR ERROR: {0} {1} {2}", new Object[]{params.src, params.dest, ex.toString()}); } reader.setSeries(maximage); tileSizeX = reader.getOptimalTileWidth(); @@ -299,9 +302,9 @@ public void Dump2File3(byte[] buffer, int a, int b) { fos.flush(); } } catch (FileNotFoundException ex) { - LOGGER.log(Level.SEVERE, "FILE PROCESSOR ERROR --> {0} {1} {2}", new Object[]{params.src, params.dest, ex.toString()}); + LOGGER.log(Level.SEVERE, "FILE PROCESSOR ERROR: {0} {1} {2}", new Object[]{params.src, params.dest, ex.toString()}); } catch (IOException ex) { - LOGGER.log(Level.SEVERE, "FILE PROCESSOR ERROR --> {0} {1} {2}", new Object[]{params.src, params.dest, ex.toString()}); + LOGGER.log(Level.SEVERE, "FILE PROCESSOR ERROR: {0} {1} {2}", new Object[]{params.src, params.dest, ex.toString()}); } } @@ -323,14 +326,14 @@ public void DumpBI2File3(BufferedImage bi, int a, int b) { try { jpgWriter.write(null, outputImage, param); } catch (IOException ex) { - LOGGER.log(Level.SEVERE, "FILE PROCESSOR ERROR --> {0} {1} {2}", new Object[]{params.src, params.dest, ex.toString()}); + LOGGER.log(Level.SEVERE, "FILE PROCESSOR ERROR: {0} {1} {2}", new Object[]{params.src, params.dest, ex.toString()}); } jpgWriter.dispose(); Files.write(f.toPath(), baos.toByteArray()); } catch (FileNotFoundException ex) { - LOGGER.log(Level.SEVERE, "FILE PROCESSOR ERROR --> {0} {1} {2}", new Object[]{params.src, params.dest, ex.toString()}); + LOGGER.log(Level.SEVERE, "FILE PROCESSOR ERROR: {0} {1} {2}", new Object[]{params.src, params.dest, ex.toString()}); } catch (IOException ex) { - LOGGER.log(Level.SEVERE, "FILE PROCESSOR ERROR --> {0} {1} {2}", new Object[]{params.src, params.dest, ex.toString()}); + LOGGER.log(Level.SEVERE, "FILE PROCESSOR ERROR: {0} {1} {2}", new Object[]{params.src, params.dest, ex.toString()}); } } @@ -382,20 +385,18 @@ public void readWriteTiles() throws FormatException, IOException { xcompression = "UNKNOWN"; } switch (xcompression) { - //case "JPEG-2000": -// compression = 2; - //ifd.put(IFD.COMPRESSION, 34712); - // ifd.put(IFD.COMPRESSION, 33005); - //ifd.put(IFD.COMPRESSION, 33003); - // break; - case "JPEG": - case "UNKNOWN": + case "JPEG", "UNKNOWN" -> { compression = 0; ifd.put(IFD.COMPRESSION, 7); - break; - default: - throw new Error("Should never get here"); + } + default -> throw new Error("Should never get here"); } + //case "JPEG-2000": +// compression = 2; + //ifd.put(IFD.COMPRESSION, 34712); + // ifd.put(IFD.COMPRESSION, 33005); + //ifd.put(IFD.COMPRESSION, 33003); + // break; ifd.put(IFD.BITS_PER_SAMPLE, new int[] {8, 8, 8}); ifd.put(IFD.SAMPLES_PER_PIXEL, 3); ifd.put(IFD.PLANAR_CONFIGURATION, 1); @@ -447,42 +448,35 @@ public void readWriteTiles() throws FormatException, IOException { //int effTileSizeX = (tileX + tileSizeX) < width ? tileSizeX : width - tileX; //int effTileSizeY = (tileY + tileSizeY) < height ? tileSizeY : height - tileY; byte[] raw; - switch (method) { - case 1: - case 2: - case 3: - raw = reader.getRawBytes(rawbuffer, 0, y, x); - break; - default: - raw = reader.openCompressedBytes(0, x, y); - } + raw = switch (method) { + case 1, 2, 3 -> reader.getRawBytes(rawbuffer, 0, y, x); + default -> reader.openCompressedBytes(0, x, y); + }; //byte[] raw = reader.getRawBytes(rawbuffer, 0, y, x); writer.writeIFDStrips(ifd, raw, false, x*tileSizeX, y*tileSizeY); //Dump2File3(raw, x, y); switch (compression) { - case 0: - //BufferedImage bi = ImageIO.read(new ByteArrayInputStream(raw)); + case 0 -> //BufferedImage bi = ImageIO.read(new ByteArrayInputStream(raw)); //bi = bi.getSubimage(0, 0, effTileSizeX, effTileSizeY); //pyramid.put(bi, x, y); pyramid.put(raw, x, y); - break; - /* - case 2: - try { - byte[] buff = codec.decompress(raw); - BufferedImage bix = byte2bi(buff); - //DumpBI2File3(bix,x,y); - bix = bix.getSubimage(0, 0, effTileSizeX, effTileSizeY); - pyramid.put(bix, x, y); - } catch (CodecException ex) { - Logger.getLogger(X2TIF.class.getName()).log(Level.SEVERE, null, ex); - } - break;*/ - default: - throw new Error("Unknown Compression!"); - } - } + + default -> throw new Error("Unknown Compression!"); + } + /* + case 2: + try { + byte[] buff = codec.decompress(raw); + BufferedImage bix = byte2bi(buff); + //DumpBI2File3(bix,x,y); + bix = bix.getSubimage(0, 0, effTileSizeX, effTileSizeY); + pyramid.put(bix, x, y); + } catch (CodecException ex) { + Logger.getLogger(X2TIF.class.getName()).log(Level.SEVERE, null, ex); + } + break;*/ + } } if (params.verbose) { time.Cumulative(); @@ -537,7 +531,7 @@ private BufferedImage byte2bi(byte[] buf) { bb = AWTImageTools.makeImage(buf, reader.isInterleaved(), meta, 0); return bb; } catch (FormatException ex) { - LOGGER.log(Level.SEVERE, "FILE PROCESSOR ERROR --> {0} {1} {2}", new Object[]{params.src, params.dest, ex.toString()}); + LOGGER.log(Level.SEVERE, "FILE PROCESSOR ERROR: {0} {1} {2}", new Object[]{params.src, params.dest, ex.toString()}); } return bb; }