[xwiki-users] Failed to execute the [velocity] macro - DML operations
I can't use 'update' in HQL expressions in Velocity scripts. Stack trace: org.xwiki.rendering.macro.MacroExecutionException: Failed to evaluate Velocity Macro for content [{{html wiki="true"}} {{/html}} #if($request.searchDocumentsQuery) == Ergebnis == #if(!$request.privapi||$request.privapi==''||$request.privapi=='false') ## Simple API #set($results=$xwiki.searchDocuments($request.searchDocumentsQuery.trim())) #else ## Privileged API, cp. http://platform.xwiki.org/xwiki/bin/view/DevGuide/velocityHqlExamples #set($results=$xwiki.search($request.searchDocumentsQuery.trim())) ## #set($results=$xwiki.queryManager.xwql($request.searchDocumentsQuery.trim()).execute()) #end #foreach($result in $results) * $result #end #end] at org.xwiki.rendering.internal.macro.velocity.VelocityMacro.evaluateString(VelocityMacro.java:125) at org.xwiki.rendering.internal.macro.velocity.VelocityMacro.evaluateString(VelocityMacro.java:44) at org.xwiki.rendering.macro.script.AbstractScriptMacro.evaluateBlock(AbstractScriptMacro.java:299) at org.xwiki.rendering.macro.script.AbstractScriptMacro.execute(AbstractScriptMacro.java:191) at org.xwiki.rendering.macro.script.AbstractScriptMacro.execute(AbstractScriptMacro.java:58) at org.xwiki.rendering.internal.transformation.MacroTransformation.transformOnce(MacroTransformation.java:184) at org.xwiki.rendering.internal.transformation.MacroTransformation.transform(MacroTransformation.java:129) at org.xwiki.rendering.internal.transformation.DefaultTransformationManager.performTransformations(DefaultTransformationManager.java:85) at com.xpn.xwiki.doc.XWikiDocument.performSyntaxConversion(XWikiDocument.java:7401) at com.xpn.xwiki.doc.XWikiDocument.performSyntaxConversion(XWikiDocument.java:7351) at com.xpn.xwiki.doc.XWikiDocument.getRenderedContent(XWikiDocument.java:829) at com.xpn.xwiki.doc.XWikiDocument.getRenderedContent(XWikiDocument.java:780) at com.xpn.xwiki.doc.XWikiDocument.getRenderedContent(XWikiDocument.java:872) at com.xpn.xwiki.api.Document.getRenderedContent(Document.java:527) at sun.reflect.GeneratedMethodAccessor263.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:389) at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:378) at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:270) at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:252) at org.apache.velocity.runtime.parser.node.ASTReference.value(ASTReference.java:493) at org.apache.velocity.runtime.parser.node.ASTExpression.value(ASTExpression.java:71) at org.apache.velocity.runtime.parser.node.ASTSetDirective.render(ASTSetDirective.java:142) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:106) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336) at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:196) at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:161) at com.xpn.xwiki.render.XWikiVelocityRenderer.evaluate(XWikiVelocityRenderer.java:116) at com.xpn.xwiki.XWiki.evaluateTemplate(XWiki.java:1855) at com.xpn.xwiki.XWiki.parseTemplate(XWiki.java:1793) at com.xpn.xwiki.api.XWiki.parseTemplate(XWiki.java:896) at sun.reflect.GeneratedMethodAccessor118.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:389) at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:378) at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:270) at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:252) at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:332) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:212) at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:247) at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:87) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:106) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336) at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:196) at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:161) at com.xpn.xwiki.render.XWikiVelocityRenderer.evaluate(XWikiVelocityRenderer.java:116) at com.xpn.xwiki.XWiki.parseTemplate(XWiki.java:1903) at com.xpn.xwiki.XWiki.evaluateTemplate(XWiki.java:1825) at com.xpn.xwiki.web.Utils.parseTemplate(Utils.java:155) at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:225) at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:116) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) at com.xpn.xwiki.web.ActionFilter.doFilter(ActionFilter.java:129) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.xpn.xwiki.wysiwyg.server.filter.ConversionFilter.doFilter(ConversionFilter.java:152) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.xpn.xwiki.plugin.webdav.XWikiDavFilter.doFilter(XWikiDavFilter.java:68) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:218) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:112) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230) at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:326) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:536) at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:930) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:747) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:405) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) Caused by: org.xwiki.velocity.XWikiVelocityException: Failed to evaluate content with id [xwiki:Sandbox.tst-2010-11-05-001] at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:205) at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:161) at org.xwiki.rendering.internal.macro.velocity.VelocityMacro.evaluateString(VelocityMacro.java:118) ... 93 more Caused by: org.apache.velocity.exception.MethodInvocationException: Invocation of method 'search' in class com.xpn.xwiki.api.XWiki threw exception com.xpn.xwiki.XWikiException: Error number 3223 in 3: Exception while searching documents with sql update XWikiDocument doc set doc.title='asdf poiu quer' where doc.fullName='tst-2010-11-03-lIqw' Wrapped Exception: Not supported for DML operations [update com.xpn.xwiki.doc.XWikiDocument doc set doc.title='asdf poiu quer' where doc.fullName='tst-2010-11-03-lIqw'] at xwiki:Sandbox.tst-2010-11-05-001[line 30, column 22] at org.apache.velocity.runtime.parser.node.ASTMethod.handleInvocationException(ASTMethod.java:337) at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:284) at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:252) at org.apache.velocity.runtime.parser.node.ASTReference.value(ASTReference.java:493) at org.apache.velocity.runtime.parser.node.ASTExpression.value(ASTExpression.java:71) at org.apache.velocity.runtime.parser.node.ASTSetDirective.render(ASTSetDirective.java:142) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:106) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:87) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336) at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:196) ... 95 more Caused by: com.xpn.xwiki.XWikiException: Error number 3223 in 3: Exception while searching documents with sql update XWikiDocument doc set doc.title='asdf poiu quer' where doc.fullName='tst-2010-11-03-lIqw' Wrapped Exception: Not supported for DML operations [update com.xpn.xwiki.doc.XWikiDocument doc set doc.title='asdf poiu quer' where doc.fullName='tst-2010-11-03-lIqw'] at com.xpn.xwiki.store.XWikiHibernateStore.search(XWikiHibernateStore.java:2398) at com.xpn.xwiki.store.XWikiHibernateStore.search(XWikiHibernateStore.java:2327) at com.xpn.xwiki.store.XWikiHibernateStore.search(XWikiHibernateStore.java:2315) at com.xpn.xwiki.store.XWikiCacheStore.search(XWikiCacheStore.java:660) at com.xpn.xwiki.XWiki.search(XWiki.java:1728) at com.xpn.xwiki.api.XWiki.search(XWiki.java:512) at sun.reflect.GeneratedMethodAccessor458.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:389) at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:378) at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:270) ... 106 more My script is basically: {{velocity filter="indent"}} #set($searchDocumentsQuery="update XWikiDocument doc set doc.title='asdf poiu quer' where doc.fullName='tst-2010-11-03-lIqw'") #set($results=$xwiki.search($searchDocumentsQuery)) {{/velocity}} Am I missing something? (XWiki 2.2 and 2.4.) -- View this message in context: http://xwiki.475771.n2.nabble.com/Failed-to-execute-the-velocity-macro-DML-o... Sent from the XWiki- Users mailing list archive at Nabble.com.
Yes, Hibernate disallows the update keyword in a search, it would be a pretty big security hole if I could just use a searchDocuments command to update the admin group to add myself. The way to do this is either get the document, make the change and then save the document, or if you need to do a lot of documents really fast then you can get updates if you have programming right. Caleb On 11/05/2010 12:20 PM, tapaya wrote:
I can't use 'update' in HQL expressions in Velocity scripts. Stack trace:
org.xwiki.rendering.macro.MacroExecutionException: Failed to evaluate Velocity Macro for content [{{html wiki="true"}}
{{/html}} #if($request.searchDocumentsQuery)
== Ergebnis ==
#if(!$request.privapi||$request.privapi==''||$request.privapi=='false') ## Simple API
#set($results=$xwiki.searchDocuments($request.searchDocumentsQuery.trim())) #else ## Privileged API, cp. http://platform.xwiki.org/xwiki/bin/view/DevGuide/velocityHqlExamples #set($results=$xwiki.search($request.searchDocumentsQuery.trim())) ## #set($results=$xwiki.queryManager.xwql($request.searchDocumentsQuery.trim()).execute()) #end #foreach($result in $results) * $result #end #end] at org.xwiki.rendering.internal.macro.velocity.VelocityMacro.evaluateString(VelocityMacro.java:125) at org.xwiki.rendering.internal.macro.velocity.VelocityMacro.evaluateString(VelocityMacro.java:44) at org.xwiki.rendering.macro.script.AbstractScriptMacro.evaluateBlock(AbstractScriptMacro.java:299) at org.xwiki.rendering.macro.script.AbstractScriptMacro.execute(AbstractScriptMacro.java:191) at org.xwiki.rendering.macro.script.AbstractScriptMacro.execute(AbstractScriptMacro.java:58) at org.xwiki.rendering.internal.transformation.MacroTransformation.transformOnce(MacroTransformation.java:184) at org.xwiki.rendering.internal.transformation.MacroTransformation.transform(MacroTransformation.java:129) at org.xwiki.rendering.internal.transformation.DefaultTransformationManager.performTransformations(DefaultTransformationManager.java:85) at com.xpn.xwiki.doc.XWikiDocument.performSyntaxConversion(XWikiDocument.java:7401) at com.xpn.xwiki.doc.XWikiDocument.performSyntaxConversion(XWikiDocument.java:7351) at com.xpn.xwiki.doc.XWikiDocument.getRenderedContent(XWikiDocument.java:829) at com.xpn.xwiki.doc.XWikiDocument.getRenderedContent(XWikiDocument.java:780) at com.xpn.xwiki.doc.XWikiDocument.getRenderedContent(XWikiDocument.java:872) at com.xpn.xwiki.api.Document.getRenderedContent(Document.java:527) at sun.reflect.GeneratedMethodAccessor263.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:389) at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:378) at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:270) at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:252) at org.apache.velocity.runtime.parser.node.ASTReference.value(ASTReference.java:493) at org.apache.velocity.runtime.parser.node.ASTExpression.value(ASTExpression.java:71) at org.apache.velocity.runtime.parser.node.ASTSetDirective.render(ASTSetDirective.java:142) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:106) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336) at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:196) at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:161) at com.xpn.xwiki.render.XWikiVelocityRenderer.evaluate(XWikiVelocityRenderer.java:116) at com.xpn.xwiki.XWiki.evaluateTemplate(XWiki.java:1855) at com.xpn.xwiki.XWiki.parseTemplate(XWiki.java:1793) at com.xpn.xwiki.api.XWiki.parseTemplate(XWiki.java:896) at sun.reflect.GeneratedMethodAccessor118.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:389) at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:378) at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:270) at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:252) at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:332) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:212) at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:247) at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:87) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:106) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336) at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:196) at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:161) at com.xpn.xwiki.render.XWikiVelocityRenderer.evaluate(XWikiVelocityRenderer.java:116) at com.xpn.xwiki.XWiki.parseTemplate(XWiki.java:1903) at com.xpn.xwiki.XWiki.evaluateTemplate(XWiki.java:1825) at com.xpn.xwiki.web.Utils.parseTemplate(Utils.java:155) at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:225) at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:116) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) at com.xpn.xwiki.web.ActionFilter.doFilter(ActionFilter.java:129) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.xpn.xwiki.wysiwyg.server.filter.ConversionFilter.doFilter(ConversionFilter.java:152) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.xpn.xwiki.plugin.webdav.XWikiDavFilter.doFilter(XWikiDavFilter.java:68) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:218) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:112) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230) at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:326) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:536) at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:930) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:747) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:405) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) Caused by: org.xwiki.velocity.XWikiVelocityException: Failed to evaluate content with id [xwiki:Sandbox.tst-2010-11-05-001] at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:205) at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:161) at org.xwiki.rendering.internal.macro.velocity.VelocityMacro.evaluateString(VelocityMacro.java:118) ... 93 more Caused by: org.apache.velocity.exception.MethodInvocationException: Invocation of method 'search' in class com.xpn.xwiki.api.XWiki threw exception com.xpn.xwiki.XWikiException: Error number 3223 in 3: Exception while searching documents with sql update XWikiDocument doc set doc.title='asdf poiu quer' where doc.fullName='tst-2010-11-03-lIqw' Wrapped Exception: Not supported for DML operations [update com.xpn.xwiki.doc.XWikiDocument doc set doc.title='asdf poiu quer' where doc.fullName='tst-2010-11-03-lIqw'] at xwiki:Sandbox.tst-2010-11-05-001[line 30, column 22] at org.apache.velocity.runtime.parser.node.ASTMethod.handleInvocationException(ASTMethod.java:337) at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:284) at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:252) at org.apache.velocity.runtime.parser.node.ASTReference.value(ASTReference.java:493) at org.apache.velocity.runtime.parser.node.ASTExpression.value(ASTExpression.java:71) at org.apache.velocity.runtime.parser.node.ASTSetDirective.render(ASTSetDirective.java:142) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:106) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:87) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336) at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:196) ... 95 more Caused by: com.xpn.xwiki.XWikiException: Error number 3223 in 3: Exception while searching documents with sql update XWikiDocument doc set doc.title='asdf poiu quer' where doc.fullName='tst-2010-11-03-lIqw' Wrapped Exception: Not supported for DML operations [update com.xpn.xwiki.doc.XWikiDocument doc set doc.title='asdf poiu quer' where doc.fullName='tst-2010-11-03-lIqw'] at com.xpn.xwiki.store.XWikiHibernateStore.search(XWikiHibernateStore.java:2398) at com.xpn.xwiki.store.XWikiHibernateStore.search(XWikiHibernateStore.java:2327) at com.xpn.xwiki.store.XWikiHibernateStore.search(XWikiHibernateStore.java:2315) at com.xpn.xwiki.store.XWikiCacheStore.search(XWikiCacheStore.java:660) at com.xpn.xwiki.XWiki.search(XWiki.java:1728) at com.xpn.xwiki.api.XWiki.search(XWiki.java:512) at sun.reflect.GeneratedMethodAccessor458.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:389) at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:378) at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:270) ... 106 more
My script is basically:
{{velocity filter="indent"}} #set($searchDocumentsQuery="update XWikiDocument doc set doc.title='asdf poiu quer' where doc.fullName='tst-2010-11-03-lIqw'") #set($results=$xwiki.search($searchDocumentsQuery)) {{/velocity}}
Am I missing something?
(XWiki 2.2 and 2.4.)
On 11/05/2010 05:33 PM, Caleb James DeLisle wrote:
Yes, Hibernate disallows the update keyword in a search, it would be a pretty big security hole if I could just use a searchDocuments command to update the admin group to add myself. The way to do this is either get the document, make the change and then save the document, or if you need to do a lot of documents really fast then you can get updates if you have programming right.
Caleb
On 11/05/2010 12:20 PM, tapaya wrote:
I can't use 'update' in HQL expressions in Velocity scripts. Stack trace:
org.xwiki.rendering.macro.MacroExecutionException: Failed to evaluate Velocity Macro for content [{{html wiki="true"}}
{{velocity filter="indent"}} #set($searchDocumentsQuery="update XWikiDocument doc set doc.title='asdf poiu quer' where doc.fullName='tst-2010-11-03-lIqw'") #set($results=$xwiki.search($searchDocumentsQuery)) {{/velocity}}
Am I missing something?
As Caleb said, search and searchDocuments can only be used for read operations. If you really want to do update operations, you can get hold of a real database connection going through $xwiki.getXWiki().getNotCacheStore(), or through Groovy scripting, but it is really, really not recommended. If you want to update the standard XWiki data model (documents, objects, classes...), then you should use the public APIs for manipulating them, and then call the safe $doc.save() method. If you want to update other data than the XWiki standard tables, you should use the sql plugin (see http://code.xwiki.org/xwiki/bin/view/Plugins/XWikiSqlPlugin for more details). In your example you're trying to set a document's parent, and this can be simply done as: #set($someDoc = $xwiki.getDocument('tst-2010-11-03-lIqw')) $someDoc.setTitle('asd poiu quer') $someDoc.save() -- Sergiu Dumitriu http://purl.org/net/sergiu/
So as I understand you, the mention of 'update, delete, etc.' at http://platform.xwiki.org/xwiki/bin/view/DevGuide/velocityHqlExamples#HPrivi... isn't correct, right? My real use case: What would be the code to retrieve and delete all minor edits of all document in a space? -- View this message in context: http://xwiki.475771.n2.nabble.com/Failed-to-execute-the-velocity-macro-DML-o... Sent from the XWiki- Users mailing list archive at Nabble.com.
On 11/07/2010 12:48 PM, tapaya wrote:
So as I understand you, the mention of 'update, delete, etc.' at http://platform.xwiki.org/xwiki/bin/view/DevGuide/velocityHqlExamples#HPrivi... isn't correct, right?
Right.
My real use case: What would be the code to retrieve and delete all minor edits of all document in a space?
You can clear the entire history of a document by entering an URL like the following: /xwiki/bin/reset/Space/Document You can selectively remove versions from the history tab if you have admin rights. Or you can write a groovy script that programatically alters the history, following what's done in xwiki-core/com.xpn.xwiki.web.DeleteVersionsAction. -- Sergiu Dumitriu http://purl.org/net/sergiu/
participants (3)
-
Caleb James DeLisle -
Sergiu Dumitriu -
tapaya