cancel
Showing results for 
Search instead for 
Did you mean: 

Updating Web Scripts

gabri124
Champ in-the-making
Champ in-the-making
Hello I'm newbee in Alfresco.

I have a old project in Alfresco 2.2 and now I have install Alfresco 3.4 community, I have imported all ACP and Web Scripts too.

Do anyone knows any path or link of deprecated variables or code changes from one version to the other one?

I have errors with code of Web Scripts that are working in old project, something like this one:

I think that the problems may be are that the language and the way to code has changed from that old version to this one.

17:52:41,192 User:rclau ERROR [freemarker.runtime] Expression user.assocs["exp:user"] is undefined on line 6, column 17 in unav/getExpReviewers.post.xml.ftl.

Expression user.assocs["exp:user"] is undefined on line 6, column 17 in unav/getExpReviewers.post.xml.ftl.
The problematic instruction:
———-
==> ${user.assocs["exp:user"][0].properties["cm:userName"]} [on line 6, column 15 in unav/getExpReviewers.post.xml.ftl]
———-

Java backtrace for programmers:
———-
freemarker.core.InvalidReferenceException: Expression user.assocs["exp:user"] is undefined on line 6, column 17 in unav/getExpReviewers.post.xml.ftl.
   at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:124)
   at freemarker.core.DynamicKeyName._getAsTemplateModel(DynamicKeyName.java:75)
   at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
   at freemarker.core.Dot._getAsTemplateModel(Dot.java:74)
   at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
   at freemarker.core.DynamicKeyName._getAsTemplateModel(DynamicKeyName.java:74)
   at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
   at freemarker.core.Expression.getStringValue(Expression.java:93)
   at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
   at freemarker.core.Environment.visit(Environment.java:210)
   at freemarker.core.MixedContent.accept(MixedContent.java:92)
   at freemarker.core.Environment.visit(Environment.java:210)
   at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179)
   at freemarker.core.Environment.visit(Environment.java:417)
   at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)
   at freemarker.core.Environment.visit(Environment.java:210)
   at freemarker.core.MixedContent.accept(MixedContent.java:92)
   at freemarker.core.Environment.visit(Environment.java:210)
   at freemarker.core.Environment.process(Environment.java:190)
   at freemarker.template.Template.process(Template.java:237)
   at org.alfresco.repo.template.FreeMarkerProcessor.process(FreeMarkerProcessor.java:197)
   at org.springframework.extensions.webscripts.AbstractWebScript.renderTemplate(AbstractWebScript.java:589)
   at org.springframework.extensions.webscripts.DeclarativeWebScript.renderFormatTemplate(DeclarativeWebScript.java:267)
   at org.springframework.extensions.webscripts.DeclarativeWebScript.execute(DeclarativeWebScript.java:147)
   at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecute(RepositoryContainer.java:336)
   at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecuteAs(RepositoryContainer.java:466)
   at org.alfresco.repo.web.scripts.RepositoryContainer.executeScript(RepositoryContainer.java:304)
   at org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:333)
   at org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:189)
   at org.springframework.extensions.webscripts.servlet.WebScriptServlet.service(WebScriptServlet.java:118)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.alfresco.web.app.servlet.GlobalLocalizationFilter.doFilter(GlobalLocalizationFilter.java:58)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
   at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
   at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
   at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
   at java.lang.Thread.run(Thread.java:619)

Thanks for help
4 REPLIES 4

gabri124
Champ in-the-making
Champ in-the-making
I have seen that all variables are undefined, and i have read that the framework changes package from Alfresco to Spring.

Anyone knows how changes must i do to compile my imported web scripts to run on framework spring, or what changes do i must do?

mrogers
Star Contributor
Star Contributor
There should be no changes.   But how about posting your code so we can see your controler.

Are you using Java Backed Web scripts?   If so its just a package name change.

gabri124
Champ in-the-making
Champ in-the-making
This is the code of web Script, may be i must compile not only export and import from old version alfresco to the newest one.
the file getExpReviewers.post.js:
var myexp, i, users;
var users = new Array();
exp = args.exp;

exps = search.luceneSearch("+TYPE:\"exp:expediente\" +@cm\\:name:\"" + exp + "\"");
myexp = exps[0];

interiorexp = myexp.childrenByXPath(".//*");
j=0;
for(i=0;i<interiorexp.length;i++)
{
if(interiorexp[i].type == "{http://www.unav.es/model/expedientes/1.0}reviewer")
{
   users[j] = interiorexp[i];
   j++;  
}
}
model.users = users;

the file getExpReviewers.post.desc.xml

<webscript>
<shortname>Expediente Get Reviewers</shortname>
<description>WebScript que saca la lista de revisores del expediente</description>
<url format="xml" template="/unav/getExpReviewers?exp={exp}"/>
<format default="xml">extension</format>
<authentication>user</authentication>
<transaction>none</transaction>
</webscript>

and the ftl file getExpReviewers.post.xml.ftl.xml
<?xml version="1.0" encoding="utf-8"?>
<userlist>  
<#list users ?sort_by(['properties','exp:order']) as user>  
<user>
    <order>${user.properties["exp:order"]}</order>
    <userName>${user.assocs["exp:user"][0].properties["cm:userName"]}</userName>   
    <#if user.assocs["exp:user"][0].properties["cm:firstName"]?exists>
    <firstName>${user.assocs["exp:user"][0].properties["cm:firstName"]}</firstName>
    <#else>
    <firstName></firstName>
    </#if>
    <#if user.assocs["exp:user"][0].properties["cm:lastName"]?exists>
    <lastName>${user.assocs["exp:user"][0].properties["cm:lastName"]}</lastName>
    <#else>
    <lastName></lastName>
    </#if>
    <#if user.assocs["exp:user"][0].properties["cm:homeFolder"]?exists>
    <homeFolder>${user.assocs["exp:user"][0].properties["cm:homeFolder"]}</homeFolder>
    <#else>
    <homeFolder></homeFolder>
    </#if>
    <#if user.assocs["exp:user"][0].properties["cm:email"]?exists>
    <email>${user.assocs["exp:user"][0].properties["cm:email"]}</email>
    <#else>
    <email></email>
    </#if>
</user>   
</#list>
</userlist>


And this the error when i try to use the web script

15:55:40,353 User:rclau ERROR [freemarker.runtime] Expression user.assocs["exp:user"] is undefined on line 6, column 17 in unav/getExpReviewers.post.xml.ftl.

Expression user.assocs["exp:user"] is undefined on line 6, column 17 in unav/getExpReviewers.post.xml.ftl.
The problematic instruction:
———-
==> ${user.assocs["exp:user"][0].properties["cm:userName"]} [on line 6, column 15 in unav/getExpReviewers.post.xml.ftl]
———-

Java backtrace for programmers:
———-
freemarker.core.InvalidReferenceException: Expression user.assocs["exp:user"] is undefined on line 6, column 17 in unav/getExpReviewers.post.xml.ftl.
   at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:124)
   at freemarker.core.DynamicKeyName._getAsTemplateModel(DynamicKeyName.java:75)
   at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
   at freemarker.core.Dot._getAsTemplateModel(Dot.java:74)
   at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
   at freemarker.core.DynamicKeyName._getAsTemplateModel(DynamicKeyName.java:74)
   at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
   at freemarker.core.Expression.getStringValue(Expression.java:93)
   at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
   at freemarker.core.Environment.visit(Environment.java:210)
   at freemarker.core.MixedContent.accept(MixedContent.java:92)
   at freemarker.core.Environment.visit(Environment.java:210)
   at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179)
   at freemarker.core.Environment.visit(Environment.java:417)
   at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)
   at freemarker.core.Environment.visit(Environment.java:210)
   at freemarker.core.MixedContent.accept(MixedContent.java:92)
   at freemarker.core.Environment.visit(Environment.java:210)
   at freemarker.core.Environment.process(Environment.java:190)
   at freemarker.template.Template.process(Template.java:237)
   at org.alfresco.repo.template.FreeMarkerProcessor.process(FreeMarkerProcessor.java:197)
   at org.springframework.extensions.webscripts.AbstractWebScript.renderTemplate(AbstractWebScript.java:589)
   at org.springframework.extensions.webscripts.DeclarativeWebScript.renderFormatTemplate(DeclarativeWebScript.java:267)
   at org.springframework.extensions.webscripts.DeclarativeWebScript.execute(DeclarativeWebScript.java:147)
   at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecute(RepositoryContainer.java:336)
   at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecuteAs(RepositoryContainer.java:466)
   at org.alfresco.repo.web.scripts.RepositoryContainer.executeScript(RepositoryContainer.java:304)
   at org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:333)
   at org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:189)
   at org.springframework.extensions.webscripts.servlet.WebScriptServlet.service(WebScriptServlet.java:118)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.alfresco.web.app.servlet.GlobalLocalizationFilter.doFilter(GlobalLocalizationFilter.java:58)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
   at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
   at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
   at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
   at java.lang.Thread.run(Thread.java:619)


Thank's for your time

gabri124
Champ in-the-making
Champ in-the-making
Problem Solved. The problem was that i didn't configure permission on file permissionDefinitions.xml.

Thank's for your help.