From fd69ef486563fef166d3cbd34fced3ff868efe7a Mon Sep 17 00:00:00 2001
From: buczekp <buczekp>
Date: Wed, 14 Jul 2010 07:45:57 +0000
Subject: [PATCH] [LMS-1601] fixed relative paths for auto resolve (added
 redirect to the automatically resolved path)

SVN: 17014
---
 .../server/DatasetDownloadServlet.java        | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DatasetDownloadServlet.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DatasetDownloadServlet.java
index d6cfb0746cc..11d966da24b 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DatasetDownloadServlet.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DatasetDownloadServlet.java
@@ -351,9 +351,7 @@ public class DatasetDownloadServlet extends AbstractDatasetDownloadServlet
             RenderingContext newRenderingContext =
                     new RenderingContext(renderingContext.getRootDir(), renderingContext
                             .getUrlPrefix(), newRelativePath);
-
-            renderPage(rendererFactory, response, dataSetCode, newRenderingContext, requestParams,
-                    session);
+            autoResolveRedirect(response, newRenderingContext);
         } else if (AutoResolveUtils.continueAutoResolving(requestParams.tryGetMainDataSetPattern(),
                 dir))
         {
@@ -366,15 +364,24 @@ public class DatasetDownloadServlet extends AbstractDatasetDownloadServlet
             RenderingContext newRenderingContext =
                     new RenderingContext(renderingContext.getRootDir(), renderingContext
                             .getUrlPrefix(), newRelativePath);
-
-            renderPage(rendererFactory, response, dataSetCode, newRenderingContext, requestParams,
-                    session);
+            autoResolveRedirect(response, newRenderingContext);
         } else
         {
             createPage(rendererFactory, response, dataSet, renderingContext, dir);
         }
     }
 
+    private static void autoResolveRedirect(HttpServletResponse response,
+            RenderingContext newContext) throws IOException
+    {
+        String newLocation = newContext.getUrlPrefix() + "/" + newContext.getRelativePathOrNull();
+        if (operationLog.isInfoEnabled())
+        {
+            operationLog.info("Auto resolve redirect: " + newLocation);
+        }
+        response.sendRedirect(response.encodeRedirectURL(newLocation));
+    }
+
     private void createPage(IRendererFactory rendererFactory, HttpServletResponse response,
             ExternalData dataSet, RenderingContext renderingContext, File file) throws IOException
     {
-- 
GitLab