diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/location.get.js b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/location.get.js index f52197934f..795f7e2bab 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/location.get.js +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/location.get.js @@ -17,7 +17,7 @@ function resolveLocations() var libraryRoot = parsedArgs.libraryRoot ? parsedArgs.libraryRoot : companyhome, repoLocation = Common.getLocation(parsedArgs.rootNode, libraryRoot), siteLocation = Common.getLocation(parsedArgs.rootNode, null), - fileName = !parsedArgs.rootNode.isContainer ? parsedArgs.rootNode.properties["name"] : null; + fileName = parsedArgs.rootNode.properties["name"]; var locations = { diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/parse-args.lib.js b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/parse-args.lib.js index f4f51bd3a2..5951dad640 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/parse-args.lib.js +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/parse-args.lib.js @@ -310,7 +310,14 @@ var ParseArgs = id = url.templateArgs.id; nodeRef = storeType + "://" + storeId + "/" + id; - rootNode = libraryRoot || ParseArgs.resolveNode(nodeRef); + if (url.templateArgs.store_type == "workspace") + { + rootNode = ParseArgs.resolveNode(nodeRef); + } + else + { + rootNode = libraryRoot || ParseArgs.resolveNode(nodeRef); + } if (rootNode == null) { status.setCode(status.STATUS_NOT_FOUND, "Not a valid nodeRef: '" + nodeRef + "'"); diff --git a/source/java/org/alfresco/repo/web/scripts/bean/BaseRemoteStore.java b/source/java/org/alfresco/repo/web/scripts/bean/BaseRemoteStore.java index 19573686b2..bfc04fc57d 100644 --- a/source/java/org/alfresco/repo/web/scripts/bean/BaseRemoteStore.java +++ b/source/java/org/alfresco/repo/web/scripts/bean/BaseRemoteStore.java @@ -32,6 +32,7 @@ import org.springframework.extensions.webscripts.AbstractWebScript; import org.springframework.extensions.webscripts.WebScriptException; import org.springframework.extensions.webscripts.WebScriptRequest; import org.springframework.extensions.webscripts.WebScriptResponse; +import org.springframework.extensions.webscripts.WrappingWebScriptRequest; import org.springframework.extensions.webscripts.servlet.WebScriptServletRequest; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -124,12 +125,34 @@ public abstract class BaseRemoteStore extends AbstractWebScript public void execute(WebScriptRequest req, WebScriptResponse res) throws IOException { // NOTE: This web script must be executed in a HTTP Servlet environment - if (!(req instanceof WebScriptServletRequest)) + + // Unwrap to a WebScriptServletRequest if we have one + WebScriptServletRequest webScriptServletRequest = null; + WebScriptRequest current = req; + do + { + if (current instanceof WebScriptServletRequest) + { + webScriptServletRequest = (WebScriptServletRequest) current; + current = null; + } + else if (current instanceof WrappingWebScriptRequest) + { + current = ((WrappingWebScriptRequest) req).getNext(); + } + else + { + current = null; + } + } + while (current != null); + + if (webScriptServletRequest == null) { throw new WebScriptException("Remote Store access must be executed in HTTP Servlet environment"); } - HttpServletRequest httpReq = ((WebScriptServletRequest)req).getHttpServletRequest(); + HttpServletRequest httpReq = webScriptServletRequest.getHttpServletRequest(); // the request path for the remote store String extPath = req.getExtensionPath(); diff --git a/source/java/org/alfresco/repo/web/scripts/bean/SearchProxy.java b/source/java/org/alfresco/repo/web/scripts/bean/SearchProxy.java index 0483f72a37..4846d6a73d 100644 --- a/source/java/org/alfresco/repo/web/scripts/bean/SearchProxy.java +++ b/source/java/org/alfresco/repo/web/scripts/bean/SearchProxy.java @@ -168,7 +168,7 @@ public class SearchProxy extends AbstractWebScript implements InitializingBean } HttpServletResponse servletRes = WebScriptServletRuntime.getHttpServletResponse(res); - SearchEngineHttpProxy proxy = new SearchEngineHttpProxy(req.getServicePath() + "/" + req.getContextPath(), + SearchEngineHttpProxy proxy = new SearchEngineHttpProxy(req.getServerPath() + req.getServiceContextPath(), engine, engineUrl, servletRes, Collections.singletonMap("User-Agent", req.getHeader("User-Agent"))); proxy.service(); } diff --git a/source/java/org/alfresco/repo/web/scripts/transfer/AbortTransferCommandProcessor.java b/source/java/org/alfresco/repo/web/scripts/transfer/AbortTransferCommandProcessor.java index 518d3367e9..b78592d49a 100644 --- a/source/java/org/alfresco/repo/web/scripts/transfer/AbortTransferCommandProcessor.java +++ b/source/java/org/alfresco/repo/web/scripts/transfer/AbortTransferCommandProcessor.java @@ -31,6 +31,7 @@ import org.apache.commons.logging.LogFactory; import org.springframework.extensions.webscripts.Status; import org.springframework.extensions.webscripts.WebScriptRequest; import org.springframework.extensions.webscripts.WebScriptResponse; +import org.springframework.extensions.webscripts.WrappingWebScriptRequest; import org.springframework.extensions.webscripts.json.JSONWriter; import org.springframework.extensions.webscripts.servlet.WebScriptServletRequest; @@ -60,7 +61,30 @@ public class AbortTransferCommandProcessor implements CommandProcessor String transferRecordId = null; //Read the transfer id from the request - HttpServletRequest servletRequest = ((WebScriptServletRequest)req).getHttpServletRequest(); + + // Unwrap to a WebScriptServletRequest if we have one + // TODO: Why is this necessary? + WebScriptServletRequest webScriptServletRequest = null; + WebScriptRequest current = req; + do + { + if (current instanceof WebScriptServletRequest) + { + webScriptServletRequest = (WebScriptServletRequest) current; + current = null; + } + else if (current instanceof WrappingWebScriptRequest) + { + current = ((WrappingWebScriptRequest) req).getNext(); + } + else + { + current = null; + } + } + while (current != null); + + HttpServletRequest servletRequest = webScriptServletRequest.getHttpServletRequest(); String transferId = servletRequest.getParameter("transferId"); if ((transferId == null)) diff --git a/source/java/org/alfresco/repo/web/scripts/transfer/CommitTransferCommandProcessor.java b/source/java/org/alfresco/repo/web/scripts/transfer/CommitTransferCommandProcessor.java index 5d72463a13..5f788917c2 100644 --- a/source/java/org/alfresco/repo/web/scripts/transfer/CommitTransferCommandProcessor.java +++ b/source/java/org/alfresco/repo/web/scripts/transfer/CommitTransferCommandProcessor.java @@ -30,6 +30,7 @@ import org.apache.commons.logging.LogFactory; import org.springframework.extensions.webscripts.Status; import org.springframework.extensions.webscripts.WebScriptRequest; import org.springframework.extensions.webscripts.WebScriptResponse; +import org.springframework.extensions.webscripts.WrappingWebScriptRequest; import org.springframework.extensions.webscripts.json.JSONWriter; import org.springframework.extensions.webscripts.servlet.WebScriptServletRequest; @@ -58,7 +59,28 @@ public class CommitTransferCommandProcessor implements CommandProcessor { //Read the transfer id from the request - HttpServletRequest servletRequest = ((WebScriptServletRequest)req).getHttpServletRequest(); + // Unwrap to a WebScriptServletRequest if we have one + WebScriptServletRequest webScriptServletRequest = null; + WebScriptRequest current = req; + do + { + if (current instanceof WebScriptServletRequest) + { + webScriptServletRequest = (WebScriptServletRequest) current; + current = null; + } + else if (current instanceof WrappingWebScriptRequest) + { + current = ((WrappingWebScriptRequest) req).getNext(); + } + else + { + current = null; + } + } + while (current != null); + + HttpServletRequest servletRequest = webScriptServletRequest.getHttpServletRequest(); String transferId = servletRequest.getParameter("transferId"); if ((transferId == null)) diff --git a/source/java/org/alfresco/repo/web/scripts/transfer/PostContentCommandProcessor.java b/source/java/org/alfresco/repo/web/scripts/transfer/PostContentCommandProcessor.java index 1e7739c518..1d3920864d 100644 --- a/source/java/org/alfresco/repo/web/scripts/transfer/PostContentCommandProcessor.java +++ b/source/java/org/alfresco/repo/web/scripts/transfer/PostContentCommandProcessor.java @@ -31,6 +31,7 @@ import org.apache.commons.logging.LogFactory; import org.springframework.extensions.webscripts.Status; import org.springframework.extensions.webscripts.WebScriptRequest; import org.springframework.extensions.webscripts.WebScriptResponse; +import org.springframework.extensions.webscripts.WrappingWebScriptRequest; import org.springframework.extensions.webscripts.servlet.WebScriptServletRequest; import org.springframework.extensions.webscripts.servlet.FormData.FormField; @@ -66,13 +67,33 @@ public class PostContentCommandProcessor implements CommandProcessor public int process(WebScriptRequest req, WebScriptResponse resp) { logger.debug("post content start"); - if (!WebScriptServletRequest.class.isAssignableFrom(req.getClass())) + // Unwrap to a WebScriptServletRequest if we have one + WebScriptServletRequest webScriptServletRequest = null; + WebScriptRequest current = req; + do + { + if (current instanceof WebScriptServletRequest) + { + webScriptServletRequest = (WebScriptServletRequest) current; + current = null; + } + else if (current instanceof WrappingWebScriptRequest) + { + current = ((WrappingWebScriptRequest) req).getNext(); + } + else + { + current = null; + } + } + while (current != null); + if (webScriptServletRequest == null) { resp.setStatus(Status.STATUS_BAD_REQUEST); return Status.STATUS_BAD_REQUEST; } - HttpServletRequest servletRequest = ((WebScriptServletRequest) req).getHttpServletRequest(); + HttpServletRequest servletRequest = webScriptServletRequest.getHttpServletRequest(); //Read the transfer id from the request String transferId = servletRequest.getParameter("transferId"); diff --git a/source/java/org/alfresco/repo/web/scripts/transfer/PostSnapshotCommandProcessor.java b/source/java/org/alfresco/repo/web/scripts/transfer/PostSnapshotCommandProcessor.java index 42283c176b..0198775fb1 100644 --- a/source/java/org/alfresco/repo/web/scripts/transfer/PostSnapshotCommandProcessor.java +++ b/source/java/org/alfresco/repo/web/scripts/transfer/PostSnapshotCommandProcessor.java @@ -34,6 +34,7 @@ import org.apache.commons.logging.LogFactory; import org.springframework.extensions.webscripts.Status; import org.springframework.extensions.webscripts.WebScriptRequest; import org.springframework.extensions.webscripts.WebScriptResponse; +import org.springframework.extensions.webscripts.WrappingWebScriptRequest; import org.springframework.extensions.webscripts.servlet.WebScriptServletRequest; import org.springframework.extensions.webscripts.servlet.FormData.FormField; @@ -58,7 +59,27 @@ public class PostSnapshotCommandProcessor implements CommandProcessor { int result = Status.STATUS_OK; - if (!WebScriptServletRequest.class.isAssignableFrom(req.getClass())) + // Unwrap to a WebScriptServletRequest if we have one + WebScriptServletRequest webScriptServletRequest = null; + WebScriptRequest current = req; + do + { + if (current instanceof WebScriptServletRequest) + { + webScriptServletRequest = (WebScriptServletRequest) current; + current = null; + } + else if (current instanceof WrappingWebScriptRequest) + { + current = ((WrappingWebScriptRequest) req).getNext(); + } + else + { + current = null; + } + } + while (current != null); + if (webScriptServletRequest == null) { logger.debug("bad request, not assignable from"); resp.setStatus(Status.STATUS_BAD_REQUEST); @@ -67,7 +88,7 @@ public class PostSnapshotCommandProcessor implements CommandProcessor //We can't use the WebScriptRequest version of getParameter, since that may cause the content stream //to be parsed. Get hold of the raw HttpServletRequest and work with that. - HttpServletRequest servletRequest = ((WebScriptServletRequest)req).getHttpServletRequest(); + HttpServletRequest servletRequest = webScriptServletRequest.getHttpServletRequest(); //Read the transfer id from the request String transferId = servletRequest.getParameter("transferId"); diff --git a/source/java/org/alfresco/repo/web/scripts/transfer/PrepareTransferCommandProcessor.java b/source/java/org/alfresco/repo/web/scripts/transfer/PrepareTransferCommandProcessor.java index 87af34d8c1..e0e7b18bcf 100644 --- a/source/java/org/alfresco/repo/web/scripts/transfer/PrepareTransferCommandProcessor.java +++ b/source/java/org/alfresco/repo/web/scripts/transfer/PrepareTransferCommandProcessor.java @@ -32,6 +32,7 @@ import org.apache.commons.logging.LogFactory; import org.springframework.extensions.webscripts.Status; import org.springframework.extensions.webscripts.WebScriptRequest; import org.springframework.extensions.webscripts.WebScriptResponse; +import org.springframework.extensions.webscripts.WrappingWebScriptRequest; import org.springframework.extensions.webscripts.json.JSONWriter; import org.springframework.extensions.webscripts.servlet.WebScriptServletRequest; @@ -59,7 +60,27 @@ public class PrepareTransferCommandProcessor implements CommandProcessor String transferRecordId = null; //Read the transfer id from the request - HttpServletRequest servletRequest = ((WebScriptServletRequest)req).getHttpServletRequest(); + // Unwrap to a WebScriptServletRequest if we have one + WebScriptServletRequest webScriptServletRequest = null; + WebScriptRequest current = req; + do + { + if (current instanceof WebScriptServletRequest) + { + webScriptServletRequest = (WebScriptServletRequest) current; + current = null; + } + else if (current instanceof WrappingWebScriptRequest) + { + current = ((WrappingWebScriptRequest) req).getNext(); + } + else + { + current = null; + } + } + while (current != null); + HttpServletRequest servletRequest = webScriptServletRequest.getHttpServletRequest(); String transferId = servletRequest.getParameter("transferId"); if (transferId == null) diff --git a/source/java/org/alfresco/repo/web/scripts/transfer/ReportCommandProcessor.java b/source/java/org/alfresco/repo/web/scripts/transfer/ReportCommandProcessor.java index deffe0d412..e165cbed92 100644 --- a/source/java/org/alfresco/repo/web/scripts/transfer/ReportCommandProcessor.java +++ b/source/java/org/alfresco/repo/web/scripts/transfer/ReportCommandProcessor.java @@ -33,6 +33,7 @@ import org.apache.commons.logging.LogFactory; import org.springframework.extensions.webscripts.Status; import org.springframework.extensions.webscripts.WebScriptRequest; import org.springframework.extensions.webscripts.WebScriptResponse; +import org.springframework.extensions.webscripts.WrappingWebScriptRequest; import org.springframework.extensions.webscripts.json.JSONWriter; import org.springframework.extensions.webscripts.servlet.WebScriptServletRequest; @@ -59,7 +60,27 @@ public class ReportCommandProcessor implements CommandProcessor public int process(WebScriptRequest req, WebScriptResponse resp) { //Read the transfer id from the request - HttpServletRequest servletRequest = ((WebScriptServletRequest)req).getHttpServletRequest(); + // Unwrap to a WebScriptServletRequest if we have one + WebScriptServletRequest webScriptServletRequest = null; + WebScriptRequest current = req; + do + { + if (current instanceof WebScriptServletRequest) + { + webScriptServletRequest = (WebScriptServletRequest) current; + current = null; + } + else if (current instanceof WrappingWebScriptRequest) + { + current = ((WrappingWebScriptRequest) req).getNext(); + } + else + { + current = null; + } + } + while (current != null); + HttpServletRequest servletRequest = webScriptServletRequest.getHttpServletRequest(); String transferId = servletRequest.getParameter("transferId"); if (transferId == null) diff --git a/source/java/org/alfresco/repo/web/scripts/transfer/StatusCommandProcessor.java b/source/java/org/alfresco/repo/web/scripts/transfer/StatusCommandProcessor.java index b95f752951..180021b264 100644 --- a/source/java/org/alfresco/repo/web/scripts/transfer/StatusCommandProcessor.java +++ b/source/java/org/alfresco/repo/web/scripts/transfer/StatusCommandProcessor.java @@ -32,6 +32,7 @@ import org.json.JSONObject; import org.springframework.extensions.webscripts.Status; import org.springframework.extensions.webscripts.WebScriptRequest; import org.springframework.extensions.webscripts.WebScriptResponse; +import org.springframework.extensions.webscripts.WrappingWebScriptRequest; import org.springframework.extensions.webscripts.servlet.WebScriptServletRequest; /** @@ -59,7 +60,27 @@ public class StatusCommandProcessor implements CommandProcessor public int process(WebScriptRequest req, WebScriptResponse resp) { //Read the transfer id from the request - HttpServletRequest servletRequest = ((WebScriptServletRequest)req).getHttpServletRequest(); + // Unwrap to a WebScriptServletRequest if we have one + WebScriptServletRequest webScriptServletRequest = null; + WebScriptRequest current = req; + do + { + if (current instanceof WebScriptServletRequest) + { + webScriptServletRequest = (WebScriptServletRequest) current; + current = null; + } + else if (current instanceof WrappingWebScriptRequest) + { + current = ((WrappingWebScriptRequest) req).getNext(); + } + else + { + current = null; + } + } + while (current != null); + HttpServletRequest servletRequest = webScriptServletRequest.getHttpServletRequest(); String transferId = servletRequest.getParameter("transferId"); if (transferId == null)