From 2c7c2bf0b9512abefb678715cdff91cb13057e80 Mon Sep 17 00:00:00 2001 From: Adam Rauch Date: Wed, 7 Oct 2026 09:26:24 -0700 Subject: [PATCH 1/2] Upgrade Tika 3.3.2 -> 4.1.0 --- src/org/labkey/serverapi/reader/FileType.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/org/labkey/serverapi/reader/FileType.java b/src/org/labkey/serverapi/reader/FileType.java index 321f3c4bc1..407043fbe7 100644 --- a/src/org/labkey/serverapi/reader/FileType.java +++ b/src/org/labkey/serverapi/reader/FileType.java @@ -20,8 +20,10 @@ import org.apache.tika.detect.Detector; import org.apache.tika.io.TikaInputStream; import org.apache.tika.metadata.Metadata; +import org.apache.tika.metadata.TikaCoreProperties; import org.apache.tika.mime.MediaType; import org.apache.tika.mime.MimeTypes; +import org.apache.tika.parser.ParseContext; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -261,10 +263,10 @@ public boolean isType(@Nullable String filePath, @Nullable String contentType, @ protected static String detectContentType(String fileName, byte[] header) { final Metadata metadata = new Metadata(); - metadata.set("resourceName", fileName); + metadata.set(TikaCoreProperties.RESOURCE_NAME_KEY, fileName); try (TikaInputStream is = TikaInputStream.get(header, metadata)) { - MediaType mediaType = DETECTOR.detect(is, metadata); + MediaType mediaType = DETECTOR.detect(is, metadata, new ParseContext()); if (mediaType != null) return mediaType.toString(); From 4db6c8d23363013e29fb6ff3bafdf75c8b4006e8 Mon Sep 17 00:00:00 2001 From: Adam Rauch Date: Wed, 7 Oct 2026 11:38:47 -0700 Subject: [PATCH 2/2] Add parsing support and testing for eml and sas7bdat files --- data/fileTypes/eml_sample.eml | 17 +++++++++++++++++ data/fileTypes/sas7bdat_sample.sas7bdat | Bin 0 -> 17408 bytes 2 files changed, 17 insertions(+) create mode 100644 data/fileTypes/eml_sample.eml create mode 100644 data/fileTypes/sas7bdat_sample.sas7bdat diff --git a/data/fileTypes/eml_sample.eml b/data/fileTypes/eml_sample.eml new file mode 100644 index 0000000000..d1587c8c29 --- /dev/null +++ b/data/fileTypes/eml_sample.eml @@ -0,0 +1,17 @@ +From: Study Coordinator +To: Assay Team +Cc: Data Manager +Subject: Plate reader results for batch 42 +Date: Tue, 06 Oct 2026 14:30:00 -0700 +Message-ID: +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 7bit + +Hello team, + +The plate reader results for batch 42 are uploaded to the pipeline root. +Please review the outlier wells before Friday's QC meeting. + +Thanks, +Study Coordinator diff --git a/data/fileTypes/sas7bdat_sample.sas7bdat b/data/fileTypes/sas7bdat_sample.sas7bdat new file mode 100644 index 0000000000000000000000000000000000000000..b36dc7ec0a3846b00092f2a5d478461942e281fd GIT binary patch literal 17408 zcmeHOPfQ$D82|Q9+pUsxNvJ_3I;^B2m6+WH3#6v*3Tq(&7I%ljp}J^Ur3tbXmZ*sb zH5@o_XbcBUn%F~4dhpOhqnNZw(~HEA*hCYJ;lQB>V|w7ww6$W_-#0UF7-o4;NSbBr zd+l$(?|t*WdEfWFnR$=*%@D1XYkz$*{7p^u&sRPR(f%J}v$fBLt0NJLM|}Qx&~6s+ zt&_)nXmX4w9Po)I*<@CGwYw*!r?Pr?-*IiHr8B7~S@)OTpMIbJ?T@6Oq92>GaS0;Z z094ywh&D%Kz45{3c&@cSleXJ#li@zU419G(z^(q>z3>+-liKE1P<0i7T@-=ut?QRf zYLDZ`e~=yn(Qr#ITQ^h<_$qFIa^oeUs3pGuKEXoNKL+1m@jCb>i$4thu*Kg#O4PzU z$~70yGUxrPkDi{?@PDH4zVq=B)e3Jr>anP!vMX8ki)iI#i9a!K`a=ncKXGsR6O#GU z>`i~dGJjgU=}(Q!pBKI9Pp!*(lV zZ^L`BFC8YT1r_Db{K-Hl`9^^2dM4SYCtuN6XRt?)i8gNfI$BTf(?V{YfxhkzcUw_s zolASEOs5}xi8gM^I!k-Xb$XJU+ZNhDC$&XCEy41BQt1=jZkt4%Z5s}3q;o`U(Tk=w zWu00720F3Lb>@BLI>}7B*FLd};eKwAOGh8bwU&nyjOUg}M>M~FcGMH|N;9djo> zIB%NOQ~eY9Q{z+b5{VnDc^#xvKq5LyfMMH3CcDx&*u~rB16Wu zvyAC|OU9>S8B+{d*_hqiK=$_rGN?cFavMdA&>fT&^eFOS)zJuDNBwb!6{0PVqajb2 z2fIMvf>BJ#?)v>SGg#4AjZuZqt=IzFKu+>PH#DKq*q-$ zEHq-xl#3)E=fV9@_D1DP-Ou#hQs>dZ)GXP5*Hpf=!UJWFkII);co?MJo8zPMrP2UZ z_<%V+DqmXRVUTve-S^MbdWx@TwVsk*P!&F4K5x`|s=~t{?cN+8wVsj&sKN)#@lork z3J-&{dvko$dP*9g3Ll^$jL;}B4a@--fqCFp0Gsf17YJdCOau7E|C7KNFavxJTm`NJ z%fKp7gz_!?LQkgTCwKoC3IQ6K?y z0Yg9$mDl>-qfg2TK+Pf{**JeR>Yr|C?pFO82+lYO1p^gyN~Wt|{M@4d!fhBh0WTEcZC zoPY(8OaYwL`W9#e@Bv&|rZmDP(;