From 785c4b02c06f4547fc8cc505f329aeb75e394cd8 Mon Sep 17 00:00:00 2001 From: bbimber Date: Fri, 12 Dec 2025 09:57:18 -0800 Subject: [PATCH] Do not relativize ExpData URIs when making the LSID unless under file root --- .../experiment/api/ExperimentServiceImpl.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/experiment/src/org/labkey/experiment/api/ExperimentServiceImpl.java b/experiment/src/org/labkey/experiment/api/ExperimentServiceImpl.java index f3d51bf42b7..705e05c82d6 100644 --- a/experiment/src/org/labkey/experiment/api/ExperimentServiceImpl.java +++ b/experiment/src/org/labkey/experiment/api/ExperimentServiceImpl.java @@ -230,13 +230,13 @@ import org.labkey.api.util.StringUtilsLabKey; import org.labkey.api.util.SubstitutionFormat; import org.labkey.api.util.TestContext; +import org.labkey.api.util.URIUtil; import org.labkey.api.util.UnexpectedException; import org.labkey.api.util.logging.LogHelper; import org.labkey.api.view.ActionURL; import org.labkey.api.view.HttpView; import org.labkey.api.view.JspTemplate; import org.labkey.api.view.JspView; -import org.labkey.api.view.NotFoundException; import org.labkey.api.view.UnauthorizedException; import org.labkey.api.view.ViewBackgroundInfo; import org.labkey.api.view.ViewContext; @@ -244,7 +244,6 @@ import org.labkey.experiment.FileLinkFileListener; import org.labkey.experiment.MissingFilesCheckInfo; import org.labkey.experiment.XarExportType; -import org.labkey.experiment.XarExporter; import org.labkey.experiment.XarReader; import org.labkey.experiment.api.property.DomainPropertyManager; import org.labkey.experiment.controllers.exp.ExperimentController; @@ -253,13 +252,11 @@ import org.labkey.experiment.pipeline.ExperimentPipelineJob; import org.labkey.experiment.pipeline.MoveRunsPipelineJob; import org.labkey.experiment.xar.AutoFileLSIDReplacer; -import org.labkey.experiment.xar.XarExportSelection; import org.labkey.vfs.FileLike; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.dao.PessimisticLockingFailureException; import java.io.File; -import java.io.FileOutputStream; import java.io.IOException; import java.io.UncheckedIOException; import java.net.MalformedURLException; @@ -778,7 +775,17 @@ public ExpDataImpl createData(URI uri, XarSource source) throws XarFormatExcepti { path = FileUtil.stringToPath(source.getXarContext().getContainer(), source.getCanonicalDataFileURL(FileUtil.pathToString(path))); - pathStr = FileUtil.relativizeUnix(source.getRootPath(), path, false); + + // Only convert to a relative path if this is a descendant of the root: + path = path.normalize(); + if (URIUtil.isDescendant(source.getRootPath().toUri(), path.toUri())) + { + pathStr = FileUtil.relativizeUnix(source.getRootPath(), path, false); + } + else + { + pathStr = FileUtil.pathToString(path); + } } catch (IOException e) {