04-23-2019 04:19 AM
I have a document with a custom type.
One of those properties allow for the userNames of several users separated by space.
A script reads these userNames and copy the document to the relevant userHome space.
It works fine if I have only one user.
When I have two or more, I get errors.
Using the javascript console, I can see (via logger.log) the different userNames and the userNode but the moment I do a "document.copy(userNode), it crashes!
Anybody would have an idea?
Thanks,
Pablo
04-25-2019 07:31 AM
Solved! But I don't know why!
I remove all the "Logger.log" and voila! It all works now!
Thank you Abbas for taking the time to answer!
04-25-2019 01:23 AM
I get the following error:
500 Internal Error Stacktrace-Details: org.springframework.extensions.webscripts.WebScriptException: 03252579 Wrapped Exception (with status template): null at org.springframework.extensions.webscripts.AbstractWebScript.createStatusException(AbstractWebScript.java:1138) at de.fme.jsconsole.ExecuteWebscript.executeScriptContent(ExecuteWebscript.java:405) at de.fme.jsconsole.ExecuteWebscript.access$100(ExecuteWebscript.java:56) at de.fme.jsconsole.ExecuteWebscript$2.execute(ExecuteWebscript.java:280) at de.fme.jsconsole.ExecuteWebscript$2.execute(ExecuteWebscript.java:273) at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:464) at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:352) at de.fme.jsconsole.ExecuteWebscript.runWithTransactionIfNeeded(ExecuteWebscript.java:272) at de.fme.jsconsole.ExecuteWebscript.access$000(ExecuteWebscript.java:56) at de.fme.jsconsole.ExecuteWebscript$1.doWork(ExecuteWebscript.java:250) at de.fme.jsconsole.ExecuteWebscript$1.doWork(ExecuteWebscript.java:247) at org.alfresco.repo.security.authentication.AuthenticationUtil.runAs(AuthenticationUtil.java:555) at de.fme.jsconsole.ExecuteWebscript.runScriptWithTransactionAndAuthentication(ExecuteWebscript.java:247) at de.fme.jsconsole.ExecuteWebscript.execute(ExecuteWebscript.java:121) at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecute(RepositoryContainer.java:467) at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecuteAs(RepositoryContainer.java:656) at org.alfresco.repo.web.scripts.RepositoryContainer.executeScriptInternal(RepositoryContainer.java:428) at org.alfresco.repo.web.scripts.RepositoryContainer.executeScript(RepositoryContainer.java:308) at org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:399) at org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:210) at org.springframework.extensions.webscripts.servlet.WebScriptServlet.service(WebScriptServlet.java:132) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.alfresco.module.aosmodule.service.ContextRootFilter.doFilter(ContextRootFilter.java:93) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.alfresco.web.app.servlet.GlobalLocalizationFilter.doFilter(GlobalLocalizationFilter.java:68) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637) at org.apache.tomcat.util.net.AprEndpoint$SocketWithOptionsProcessor.run(AprEndpoint.java:2492) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.NullPointerException at de.fme.jsconsole.CacheBackedChunkedList.get(CacheBackedChunkedList.java:49) at de.fme.jsconsole.CacheBackedChunkedList.get(CacheBackedChunkedList.java:16) at java.util.AbstractList$Itr.next(AbstractList.java:358) at java.util.AbstractCollection.toArray(AbstractCollection.java:141) at java.util.ArrayList.<init>(ArrayList.java:177) at de.fme.jsconsole.JavascriptConsoleScriptObject.getPrintOutput(JavascriptConsoleScriptObject.java:168) at de.fme.jsconsole.ExecuteWebscript.executeScriptContent(ExecuteWebscript.java:352)
Basicaly, I have a NPE and I cannot see where!
04-25-2019 01:41 AM
how do you find userHome space? can you check if userNode is null without executing the copy action
please upload your script
04-25-2019 01:48 AM
Hello Abbas,
Here is my script (in work mode!)
var user = document.properties["mr:User"];
logger.log(user);
var n = (user.split(" ").length - 1);
logger.log(n);if (n === 0) {
var person=people.getPerson(user);
var mailAdr=person.properties.email;
logger.log(mailAdr)
var userNode = companyhome.childByNamePath("/User Homes/" + user);var ref = userNode.nodeRef;
ref = "https://www.nirond-doc.net/share/page/repository#filter=path%7C%2FUser%2520Homes%2F" + user + "&page=1";
logger.log(ref);document.copy(userNode);
function sendMail()
{
var mail = actions.create("mail");
mail.parameters.to = mailAdr;
mail.parameters.subject = "New (snail)mail";
mail.parameters.from = "mailroom@nirond.be";
mail.parameters.text = "The following mail is available: " + document.name + " in " + ref;
mail.execute(document);
}
sendMail();} else {
var num = (user.split(" ").length);
logger.log("num " + num);
var initials = (user.split(" "));
logger.log("initials " + initials);
var i;
for (i = 0; i < num; i++) {
logger.log(i);
var ref;
var refer;
var userNode;
var initCode = "ini" + i;
var initial = initials[i];
logger.log("initial " + initial);
var person=people.getPerson(initial);
var mailAdr=person.properties.email;
logger.log(mailAdr);
var userNode = companyhome.childByNamePath("/User Homes/" + initial);
logger.log(userNode);
var refer = "https://www.nirond-doc.net/share/page/repository#filter=path%7C%2FUser%2520Homes%2F" + initial + "&page=1";/*document.copy(userNode);
/*
function sendMail()
{
var mail = actions.create("mail");
mail.parameters.to = mailAdr;
mail.parameters.subject = "New (snail)mail";
mail.parameters.from = "mailroom@nirond.be";
mail.parameters.text = "The following mail is available: " + document.name + " in " + ref;
mail.execute(document);
}
sendMail();
}*/
}
}
04-25-2019 01:49 AM
It all works until I do the copy(). If I have only one user, no problem!
That is why it is commented out!
04-25-2019 05:21 AM
Latest news!
I found that the document.copy() does not work when inside a For loop!
04-25-2019 06:47 AM
I have reduced my script to the following but no success. Same problem!
var user = document.properties["mr:User"];
var init = user.split(" ");
init.forEach(function(initial) {
var person = people.getPerson(initial);
var mailAdr = person.properties.email;var userNode = companyhome.childByNamePath("/User Homes/" + initial);
document.copy(userNode);
});
If I log the variables, they are all there!
04-25-2019 07:31 AM
Solved! But I don't know why!
I remove all the "Logger.log" and voila! It all works now!
Thank you Abbas for taking the time to answer!
Explore our Alfresco products with the links below. Use labels to filter content by product module.