diff --git a/config/alfresco/messages/webscripts-test-help.txt b/config/alfresco/messages/webscripts-test-help.txt index dcf07e6fec..df8f661c28 100644 --- a/config/alfresco/messages/webscripts-test-help.txt +++ b/config/alfresco/messages/webscripts-test-help.txt @@ -32,7 +32,7 @@ ok> get URL relative to /alfresco/service - e.g. get /blog/category?c=Web20 + e.g. get /blog/search?q=tutorial ok> put diff --git a/config/alfresco/templates/webscripts/org/alfresco/indexall.get.mediawiki.ftl b/config/alfresco/templates/webscripts/org/alfresco/indexall.get.mediawiki.ftl index 585709d8c7..a4ff32f269 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/indexall.get.mediawiki.ftl +++ b/config/alfresco/templates/webscripts/org/alfresco/indexall.get.mediawiki.ftl @@ -10,7 +10,7 @@ Back to [[HTTP API]]. Welcome to the reference documentation for the Alfresco [[HTTP API]]. -This document was generated from the URL +This document was generated from the Alfresco Server URL GET http://:${url.service} @@ -19,7 +19,7 @@ on ${date?datetime} using Alfresco v${server.version}. = Web Script Reference = -This section provides technical information for all ${webscripts?size} [[Web Scripts]], organised by Web Script Package. +This section provides technical information for all ${webscripts?size} [[Web Scripts]], organized by Web Script Package. Documentation for each Web Script includes: diff --git a/source/java/org/alfresco/web/scripts/AbstractWebScript.java b/source/java/org/alfresco/web/scripts/AbstractWebScript.java index 7b4e9502fa..c78e7f8909 100644 --- a/source/java/org/alfresco/web/scripts/AbstractWebScript.java +++ b/source/java/org/alfresco/web/scripts/AbstractWebScript.java @@ -34,7 +34,6 @@ import java.util.concurrent.locks.ReentrantReadWriteLock; import javax.servlet.http.HttpServletResponse; -import org.alfresco.repo.jscript.ScriptNode; import org.alfresco.repo.jscript.ScriptableHashMap; import org.alfresco.repo.template.AbsoluteUrlMethod; import org.alfresco.service.ServiceRegistry; @@ -226,16 +225,21 @@ public abstract class AbstractWebScript implements WebScript if (getDescription().getRequiredAuthentication() != RequiredAuthentication.none && getDescription().getRequiredTransaction() != RequiredTransaction.none) { + NodeRef rootHome = scriptContext.getRootHome(); + if (rootHome != null) + { + model.put("roothome", rootHome); + } NodeRef companyHome = scriptContext.getCompanyHome(); if (companyHome != null) { - model.put("companyhome", new ScriptNode(scriptContext.getCompanyHome(), serviceRegistry)); + model.put("companyhome", companyHome); } NodeRef person = scriptContext.getPerson(); if (person != null) { - model.put("person", new ScriptNode(person, serviceRegistry)); - model.put("userhome", new ScriptNode(scriptContext.getUserHome(person), serviceRegistry)); + model.put("person", person); + model.put("userhome", scriptContext.getUserHome(person)); } } @@ -273,10 +277,15 @@ public abstract class AbstractWebScript implements WebScript if (getDescription().getRequiredAuthentication() != RequiredAuthentication.none && getDescription().getRequiredTransaction() != RequiredTransaction.none) { + NodeRef rootHome = scriptContext.getRootHome(); + if (rootHome != null) + { + model.put("roothome", rootHome); + } NodeRef companyHome = scriptContext.getCompanyHome(); if (companyHome != null) { - model.put("companyhome", scriptContext.getCompanyHome()); + model.put("companyhome", companyHome); } NodeRef person = scriptContext.getPerson(); if (person != null) @@ -316,7 +325,10 @@ public abstract class AbstractWebScript implements WebScript */ final protected void renderTemplate(String templatePath, Map model, Writer writer) { + long start = System.currentTimeMillis(); getWebScriptRegistry().getTemplateProcessor().process(templatePath, model, writer); + if (logger.isDebugEnabled()) + logger.debug("Rendered template " + templatePath + " in " + (System.currentTimeMillis() - start) + "ms"); } /** @@ -521,7 +533,10 @@ public abstract class AbstractWebScript implements WebScript */ final protected void executeScript(ScriptLocation location, Map model) { + long start = System.currentTimeMillis(); getWebScriptRegistry().getScriptProcessor().executeScript(location, model); + if (logger.isDebugEnabled()) + logger.debug("Executed script " + location.toString() + " in " + (System.currentTimeMillis() - start) + "ms"); } /** diff --git a/source/java/org/alfresco/web/scripts/ScriptProcessor.java b/source/java/org/alfresco/web/scripts/ScriptProcessor.java index a27b4c963b..be9981ca22 100644 --- a/source/java/org/alfresco/web/scripts/ScriptProcessor.java +++ b/source/java/org/alfresco/web/scripts/ScriptProcessor.java @@ -105,7 +105,7 @@ public class ScriptProcessor */ public Object executeScript(ScriptLocation location, Map model) { - return scriptService.executeScript(location, model); + return scriptService.executeScript("javascript", location, model); } /** diff --git a/source/java/org/alfresco/web/scripts/TemplateProcessor.java b/source/java/org/alfresco/web/scripts/TemplateProcessor.java index beb41a7729..96d9d771ef 100644 --- a/source/java/org/alfresco/web/scripts/TemplateProcessor.java +++ b/source/java/org/alfresco/web/scripts/TemplateProcessor.java @@ -24,6 +24,7 @@ */ package org.alfresco.web.scripts; +import java.io.FileNotFoundException; import java.io.IOException; import org.alfresco.repo.template.FreeMarkerProcessor; @@ -123,8 +124,13 @@ public class TemplateProcessor extends FreeMarkerProcessor implements Applicatio Template template = templateConfig.getTemplate(templatePath); hasTemplate = (template != null); } + catch(FileNotFoundException e) + { + // NOTE: return false as template is not found + } catch(IOException e) { + throw new WebScriptException("Failed to retrieve template " + templatePath, e); } return hasTemplate; } diff --git a/source/java/org/alfresco/web/scripts/WebScriptContext.java b/source/java/org/alfresco/web/scripts/WebScriptContext.java index 778e5311b2..e6221297b8 100644 --- a/source/java/org/alfresco/web/scripts/WebScriptContext.java +++ b/source/java/org/alfresco/web/scripts/WebScriptContext.java @@ -188,6 +188,17 @@ public class WebScriptContext implements ApplicationContextAware, ApplicationLis }); } + + /** + * Gets the root home of the company home store + * + * @return root node ref + */ + public NodeRef getRootHome() + { + return nodeService.getRootNode(companyHomeStore); + } + /** * Gets the Company Home * @@ -224,5 +235,5 @@ public class WebScriptContext implements ApplicationContextAware, ApplicationLis { return (NodeRef)nodeService.getProperty(person, ContentModel.PROP_HOMEFOLDER); } - + }