Letzte Änderungen
Administrator
2009/09/09 02:00

Inhaltsverzeichnis

Failed to execute the [velocity] macro
org.xwiki.rendering.macro.MacroExecutionException: Failed to evaluate Velocity Macro for content [##
## Recent changes.
##
## Optional parameters :
## 
## Parameters which can be set in velocity before including this page or can be passed as HTTP parameters.
## Note that HTTP parameters supercede velocity set variables.
##
##  - rcShowMinor (String set to “true” or “false”): show minor edits.
##  - rcShowDiff (String set to “true” or “false”): show diff in items. 
##  - rcShowRss (String set to “true” or “false”): show RSS at the bottom of the list.
##  - rcChangesNb (String set to a numerical value): number of recent changes to display. 
##  - rcSpace (List of string[s]): restrict recent changes retrieval to pages within the given space.
##  - rcTag (List of string[s]): restrict recent changes retrieval to pages with the given tag.
##  - rcAuthor (List of string[s]): restrict recent changes retrieval to pages with the given author.
##
## Parameters which can be set before including this page only.
##
##  - rcDocumentNames (Collection): The list of recentlyChanged documents, to reuse a previous search query. 
##
$xwiki.jsx.use(”Main.RecentChanges”)##
$xwiki.ssx.use(”Main.RecentChanges”)##
#set($action = “$!request.getParameter(’action’)”)
##
## Start execution timer
##
#set($execStart = $util.getDate())
##
## Go to diff URL service.
##
#if($action == “goToDiffURL”)
  #set($page = “$!request.getParameter(’page’)”)
  #set($author = “$!request.getParameter(’author’)”)
  #set($date = “$!request.getParameter(’date’)”)    
  #set($period = $xwiki.criteriaService.getPeriodFactory().createDayPeriod($date))
  #set($criterion = $xwiki.criteriaService.getRevisionCriteriaFactory().createRevisionCriteria($author, $period))
  #if(”$!request.getParameter(’rcShowMinor’)” == “true”)
    #set($discard = $criterion.setIncludeMinorVersions(true))
  #end
  #set($diffDoc = $xwiki.getDocument($page))
  #set($revisions = $diffDoc.getRevisions($criterion))
  #set($rev1 = $listtool.get($revisions, 0))
  #set($revMax = $revisions.size() - 1)
  #set($rev2 = $listtool.get($revisions, $revMax))
  #if($rev2 != “1.1”)
    #set($rev2 = $xwiki.getDocument($diffDoc, $rev2).getPreviousVersion())
  #end
  $response.sendRedirect($diffDoc.getURL(”view”, “viewer=changes&rev1=${ rev1} &rev2=${ rev2} ”))
#end
## We have to use the HTML macro to avoid prints of multiple &nbsp on macro calls.
{ { html} } 
## Manage minor edits.
#setVariableFromRequest($rcShowMinor “rcShowMinor” false)
## Manage show diff in items.
#setVariableFromRequest($rcShowDiff “rcShowDiff” true)
## Manage show RSS links.
#setVariableFromRequest($rcShowRss “rcShowRss” true)
## Manage number of changes to display.
#setVariableFromRequest($rcChangesNb “rcChangesNb” 30)
## Manage tag criterion
#setVariableFromRequest($rcTag “rcTag” [])
## Manage space criterion
#setVariableFromRequest($rcSpace “rcSpace” [])
## Manage author criterion
#setVariableFromRequest($rcAuthor “rcAuthor” [])
{ { /html} } 
##
## Create a string containing one or more ? given the number of values in the passed list.
##
#macro(createQueryParameters $values $parameters)
  #foreach($value in $values)
    #if($parameters == “”)
      #set($parameters = “?”)
    #else
      #set($parameters = “${ parameters} , ?”)
    #end
  #end
#end
##
## Retrieve recently changed documents.
##
#set($criteria = $util.getHashMap())
#if(”$!rcDocumentNames” == “”)    
  #if(!$xwiki.hasMinorEdit() || $rcShowMinor)
    #set ($hqlQuery = “where 1=1 order by doc.date desc”)
  #else
    #set ($hqlQuery = “where doc.version like ‘%.1’#if(!$isAdvancedUser) and doc.author != ‘superadmin’#end order by doc.date desc”)
  #end
  ## Create space criterion.
  #if($rcSpace.size() > 0)
    #set($spaceParameters = “”)
    #createQueryParameters($rcSpace $spaceParameters)
    #set($discard = $criteria.put(”doc.space in (${ spaceParameters} )”, $rcSpace))
  #end
  ## Create tag criterion.
  #if(”$!xwiki.getPlugin(’tag’)” != “” && $rcTag.size() > 0)
    #set($docsWithTag = $util.getArrayList())
    #foreach($item in $rcTag)
      #set($discard = $docsWithTag.addAll($xwiki.tag.getDocumentsWithTag($item)))
    #end
    #set($docsWithTagParameters = “”)
    #createQueryParameters($docsWithTag $docsWithTagParameters)
    #set($discard = $criteria.put(”doc.fullName in (${ docsWithTagParameters} )”, $docsWithTag))    
  #end
  #if($rcAuthor.size() > 0)
    #set($authorParameters = “”)
    #createQueryParameters($rcAuthor $authorParameters)
    #set($discard = $criteria.put(”doc.author in (${ authorParameters} )”, $rcAuthor))
  #end
  ## Exclude blacklisted spaces if displaying changes for a whole wiki
  #if($rcSpace.size() == 0)
    #set($blacklistedSpacesParameters = “”)
    #createQueryParameters($blacklistedSpaces $blacklistedSpacesParameters)
    #set($discard = $criteria.put(”doc.space not in (${ blacklistedSpacesParameters} )”, $blacklistedSpaces))
  #end
  #if($criteria.size() > 0)
    ## If any, loop over criterias to add them to the query, then perform the query.
    #set($values = $util.getArrayList())       
    #foreach($criterion in $criteria.keySet())
      #if($criteria.get($criterion).size() > 0)        
        #set($hqlQuery = $hqlQuery.replaceAll(”where”, “where ${ criterion}  and”))
        #set($discard = $values.addAll(0, $criteria.get($criterion)))
      #end
    #end
    #set($rcDocumentNames = $xwiki.searchDocuments($hqlQuery, $rcChangesNb, 0, $values))
  #else
    ## No query criterion, perform the query as is.
    #set($rcDocumentNames = $xwiki.searchDocuments($hqlQuery, $rcChangesNb, 0))
  #end
#end
## 
## Prepare comments handling
#set($commentsOrder = false)
#if($xwiki.getSpacePreferenceAsInt(’commentsorder’, 1) == 0)
  #set($commentsOrder = true)
#end
##
## Comment handling macro.
## Retreive page’s last comment if any and 
## overwrite variables if this comment is the last modification on the page.
##
#macro(handleComment $rcDoc $rcType $rcDt $commentsOrder)
  ## Retrieve comments from last to first.
  #set($rcComments = $rcDoc.getComments($commentsOrder))
  #if($rcComments.size() > 0)
    ## Retrieve last comment.
    #set($lastComment = $listtool.get($rcComments, 0))
    #set($lastCommentDate = $lastComment.getProperty(”date”).getValue())
    ## If the last modification on the page is the comment, overwrite values.
    ## We don’t test compareTo() == 0 since the comment date and the save date may vary a little bit.
    #if($lastCommentDate.compareTo($rcDt.toDate()) > -1 && $lastCommentDate.compareTo($rcDt.toDate()) <= 1)
      #set($rcType = “comment”)
    #end
  #end
#end
##
## Attachments handling macro.
## Retrieve page’s attachments and put those which upload matches the modification entry (author and timeframe)
## in the $rcAttachments List.
##
#macro(handleAttachments $rcDoc $rcAuthor $rcDt)  
  #set($attachments = $rcDoc.getAttachmentList())
  #foreach($attachment in $attachments)
    #set($attachmentDt = $xwiki.jodatime.getDateTime($attachment.getDate().getTime()))
    #if($rcAuthor == $attachment.getAuthor() && $rcDt.getYear() == $attachmentDt.getYear() && $rcDt.getDayOfYear() == $attachmentDt.getDayOfYear())
      #set($discard = $rcAttachments.add($attachment))
    #end
  #end
#end
##
## 
##
#macro(displayRcAuthor $author)
  #useravatar($author)
  <br/><span class=”recentChangesAuthor”>
  #if($author == “XWikiGuest”)
    Guest
  #else    
    #set($userName = $xwiki.getUserName($author))
    #if($userName == “”)
      ## userName can be empty when the page has been saved without specifying the author. 
      ## We’re printing a non-breaking space to ensure xhtml validity (ie: avoid empty paragraph).
      &nbsp;      
    #else
      $userName
    #end
  #end
  </span>
#end
#macro(displayRcVersion $version)
  #if($version == “1.1”)
    <span class=”rcVersion”>(<span class=”newVersion”>$msg.get(”xe.recentchanges.entry.new”)</span>)</span>
  #end
#end

##
## Display the recent changes list.
##  
#set($previousDt = $xwiki.jodatime.getDateTime(0))
#set($discard = $previousDate.setTime(0))
#set($previousAuthor = “”)
## Get this very doc, useful when it is included from another one.
#set($recentChangesDoc = $xwiki.getDocument(”Main.RecentChanges”))
{ { html clean=”false”} } 
<table class=”recentChanges” summary=”$msg.get(’xe.recentchanges.summary’)”>
  <tr class=”recentChangesHeader”><th scope=”col”>$msg.get(”xe.recentchanges.column.authoranddate”)</th><th scope=”col”>$msg.get(”xe.recentchanges.column.changes”)</th></tr>
  #foreach ($rcDocName in $rcDocumentNames)    
    #set($row = “”)
    #set($rcAttachments = $util.arrayList)
    ## Verify user access level on the document 
    #if ($xwiki.hasAccessLevel(”view”, $context.user, “${ context.database} :${ rcDocName} ”))           
      #set($rcDoc = $xwiki.getDocument($rcDocName))
      #set($rcType = “page”)
      #set($rcAuthor = $rcDoc.getAuthor()) ## TODO : check comments
      #set($rcDt = $xwiki.jodatime.getDateTime($rcDoc.getDate().getTime()))      
      ## The handleComment macro overwrites rcType variable if the last modification is a comment.
      #handleComment($rcDoc $rcType $rcDt $commentsOrder)
      ## The handleAttachments macro put a list of attachments uploaded during the day by the author in $rcAttachments.
      #handleAttachments($rcDoc $rcAuthor $rcDt)      
      #if($rcAuthor == $previousAuthor && $rcDt.getYear() == $previousDt.getYear() && $rcDt.getDayOfYear() == $previousDt.getDayOfYear())
        ## Same day and author, continue in the same row.
      #else
        ## Different day or author, end previous row and start a new one.        
        #if($velocityCount > 1)</ul></td></tr>#end ## close previous row if needed
        <tr><td class=”recentChangesLeft”>#displayRcAuthor($rcAuthor)<br/>
        <span class=”recentChangesDate”>$xwiki.formatDate($rcDt.toDate(), “MMMM d”)</span></td>
        <td class=”recentChangesRight”><ul class=”xlist”> ## open next cell
      #end
      ## Compute a GUID for this modification with page name, modification date and author.
      #set($modGUID = “${ rcDoc.fullName} _${ xwiki.formatDate($rcDt.toDate(), ‘yyyyMMdd’)} _${ rcAuthor} ”)
      ## Build the URL used to retreive the diff viewer URL
      #set($goToDiffURL = $recentChangesDoc.getURL(”view”, “xpage=plain&amp;action=goToDiffURL&amp;page=${ rcDoc.getFullName()} &amp;author=${ rcAuthor} &amp;date=${ xwiki.formatDate($rcDt.toDate(), ‘yyyyMMdd’)} &amp;rcShowMinor=${ rcShowMinor} ”))
      <li class=”xitem xunderline xhighlight ${ rcType} ”>
        <div class=”xitemcontainer”>        
          #if($rcType == “comment”)
            <div class=”modifiedPage”><a href=”$rcDoc.getURL()” title=”$msg.get(”xe.recentchanges.entry.comment.tooltip”, [$xwiki.formatDate($rcDt.toDate(), “HH:mm”)]) “>$xwiki.getXMLEncoded($rcDoc.getDisplayTitle())</a></div>
            #if($rcShowDiff)
              <div class=”xshowonhover modifiedPageActions”><a class=”ajax” href=”$rcDoc.getURL(”vire”, “viewer=comments”)” onclick=”toggleClass(document.getElementById(’$modGUID’), ‘hidden’); toggleClass(document.getElementById(’${ modGUID} _comShow’), ‘hidden’); toggleClass(document.getElementById(’${ modGUID} _comHide’), ‘hidden’); return false;”><span id=”${ modGUID} _comShow”>&#91;+&#93; $msg.get(”xe.recentchanges.entry.comment.show”)</span><span id=”${ modGUID} _comHide” class=”hidden”>&#91;-&#93; $msg.get(”xe.recentchanges.entry.comment.hide”)</span> $msg.get(”xe.recentchanges.entry.comment”)</a></div>
              <div class=”commentContainer hidden” id=”$modGUID”>
                <div class=”commentQuote lQuo”>&nbsp;</div>
                <div class=”commentQuote rQuo”>&nbsp;</div>
                <div class=”comment”>
                  { { /html} } 
                    $lastComment.get(”comment”)
                  { { html clean=”false”} } 
                </div>
                ## Display discussion link, this link point to the comments anchor.
                <div class=”commentAdd”><img src=”$xwiki.getSkinFile(”icons/silk/comment.gif”)” alt=”Reply icon” /> <a href=”${ rcDoc.getURL(”view”)} #Comments”>$msg.get(”xe.recentchanges.entry.comment.seediscussion”)</a></div>
              </div>
            #end
          #else
            <div class=”modifiedPage”><a href=”$rcDoc.getURL()” title=”$msg.get(”xe.recentchanges.entry.page.tooltip”, [$rcDoc.getVersion(), $xwiki.formatDate($rcDt.toDate())])”>$xwiki.getXMLEncoded($rcDoc.getDisplayTitle())</a> #displayRcVersion($rcDoc.getVersion())</div> 
            #if($rcShowDiff)
              <div class=”xshowonhover modifiedPageActions”><a href=”$goToDiffURL” title=”$msg.get(’xe.recentchanges.entry.page.seemodifications.title’, [$rcDoc.fullName])”>$msg.get(”xe.recentchanges.entry.page.seemodifications”)</a></div>
              ## If the author has uploaded attachments during the day in this page, display them.
              #if($rcAttachments.size() > 0)              
                <div class=”attachmentContainer” id=”$modGUID”>
                  <ul>
                    #foreach($rcAttachment in $rcAttachments)
                      <li class=”attachment”><a href=”$rcDoc.getAttachmentURL($rcAttachment.filename)”>$rcAttachment.filename</a> #displayRcVersion($rcAttachment.getVersion())</li>
                    #end  
                  </ul>            
                </div>          
              #end
            #end
          #end
          <div class=”xspacer”>&nbsp;</div>
        </div>                
      </li>
    #end
    #set($previousAuthor = $rcAuthor)
    #set($previousDt = $rcDt)
  #end
  ## Close last row if any.
  #if($rcDocumentNames.size() > 1)</ul></td></tr>#end
</table>
{ { /html} } 
##
## Rebuild URL query string
## Workaround until we fix $request.getQueryString()
## 
#set($queryString = “”)
#set($paramMap = $request.getParameterMap())
#foreach($key in $paramMap.keySet())
  #foreach($value in $paramMap.get($key))
    #set($queryString = “${ queryString} &amp;${ key} =${ value} ”)
  #end
#end
##
## Provide links to display minor edits and RSS feed.
##
#if($xwiki.hasMinorEdit())

  { { html} } 
  <p class=”recentChangesMoreActions”>
    #if($rcShowMinor)
      <a href=”$xwiki.getURL($tdoc.getFullName(), “view”, $queryString.replaceAll(’rcShowMinor=true’, ‘’))”><img src=”$xwiki.getSkinFile(”icons/silk/zoom_out.gif”)” alt=”Hide minor icon”/>$msg.get(”xe.recentchanges.hideminor”)</a>
    #else
      <a href=”$xwiki.getURL($tdoc.getFullName(), “view”, “${ queryString} &amp;rcShowMinor=true”)”><img src=”$xwiki.getSkinFile(”icons/silk/zoom_in.gif”)” alt=”Show minor icon”/>$msg.get(”xe.recentchanges.showminor”)</a>
    #end
    #if($rcShowRss)
      #set($rssURL = “”)
      #set($parameters = ‘xpage=plain&amp;outputSyntax=plain’)
      #if($rcTag.size() > 0)
        #set($parameters = “${ parameters} &amp;tag=$listtool.get($rcTag, 0)”)
      #end
      #if($rcSpace.size() > 0)
        #set($parameters = “${ parameters} &amp;space=$listtool.get($rcSpace, 0)”)
      #end
      #set($rssURL = $xwiki.getURL(’Main.WebRss’, ‘view’, $parameters))
      <a href=”${ rssURL} ”><img src=”$xwiki.getSkinFile(”icons/silk/feed.gif”)” alt=”RSS icon”/>$msg.get(”xe.recentchanges.rssfeed”)</a>
    #end
  </p>
  { { /html} } 
#end]
        at org.xwiki.rendering.internal.macro.velocity.VelocityMacro.evaluateString(VelocityMacro.java:131)
        at org.xwiki.rendering.internal.macro.velocity.VelocityMacro.evaluateString(VelocityMacro.java:50)
        at org.xwiki.rendering.macro.script.AbstractScriptMacro.evaluateBlock(AbstractScriptMacro.java:302)
        at org.xwiki.rendering.macro.script.AbstractScriptMacro.execute(AbstractScriptMacro.java:198)
        at org.xwiki.rendering.macro.script.AbstractScriptMacro.execute(AbstractScriptMacro.java:59)
        at org.xwiki.rendering.internal.transformation.macro.MacroTransformation.transformOnce(MacroTransformation.java:187)
        at org.xwiki.rendering.internal.transformation.macro.MacroTransformation.transform(MacroTransformation.java:132)
        at org.xwiki.rendering.internal.transformation.DefaultTransformationManager.performTransformations(DefaultTransformationManager.java:83)
        at org.xwiki.display.internal.DocumentContentDisplayer.display(DocumentContentDisplayer.java:248)
        at org.xwiki.display.internal.DocumentContentDisplayer.display(DocumentContentDisplayer.java:124)
        at org.xwiki.display.internal.DocumentContentDisplayer.display(DocumentContentDisplayer.java:54)
        at org.xwiki.display.internal.DefaultDocumentDisplayer.display(DefaultDocumentDisplayer.java:80)
        at org.xwiki.display.internal.DefaultDocumentDisplayer.display(DefaultDocumentDisplayer.java:38)
        at com.xpn.xwiki.internal.sheet.SheetDocumentDisplayer.display(SheetDocumentDisplayer.java:113)
        at com.xpn.xwiki.internal.sheet.SheetDocumentDisplayer.display(SheetDocumentDisplayer.java:57)
        at org.xwiki.display.internal.ConfiguredDocumentDisplayer.display(ConfiguredDocumentDisplayer.java:67)
        at org.xwiki.display.internal.ConfiguredDocumentDisplayer.display(ConfiguredDocumentDisplayer.java:41)
        at com.xpn.xwiki.doc.XWikiDocument.getRenderedContent(XWikiDocument.java:862)
        at com.xpn.xwiki.doc.XWikiDocument.getRenderedContent(XWikiDocument.java:841)
        at com.xpn.xwiki.doc.XWikiDocument.getRenderedContent(XWikiDocument.java:872)
        at com.xpn.xwiki.api.Document.getRenderedContent(Document.java:586)
        at sun.reflect.GeneratedMethodAccessor290.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:622)
        at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:395)
        at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:384)
        at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:173)
        at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:280)
        at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:369)
        at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72)
        at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:342)
        at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:106)
        at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:342)
        at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:228)
        at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:184)
        at com.xpn.xwiki.render.XWikiVelocityRenderer.evaluate(XWikiVelocityRenderer.java:117)
        at com.xpn.xwiki.XWiki.evaluateTemplate(XWiki.java:1791)
        at com.xpn.xwiki.XWiki.parseTemplate(XWiki.java:1728)
        at com.xpn.xwiki.pdf.impl.PdfExportImpl.export(PdfExportImpl.java:273)
        at com.xpn.xwiki.web.ExportAction.export(ExportAction.java:209)
        at com.xpn.xwiki.web.ExportAction.render(ExportAction.java:69)
        at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:231)
        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.doGet(ActionServlet.java:414)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        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 com.xpn.xwiki.web.ActionFilter.doFilter(ActionFilter.java:128)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.xwiki.wysiwyg.server.filter.ConversionFilter.doFilter(ConversionFilter.java:144)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at com.xpn.xwiki.plugin.webdav.XWikiDavFilter.doFilter(XWikiDavFilter.java:68)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:217)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109)
        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.Http11Processor.process(Http11Processor.java:857)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:701)
Caused by: org.xwiki.velocity.XWikiVelocityException: Failed to evaluate content with id [xwiki:Main.RecentChanges]
        at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:247)
        at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:184)
        at org.xwiki.rendering.internal.macro.velocity.VelocityMacro.evaluateString(VelocityMacro.java:124)
        ... 75 more
Caused by: org.apache.velocity.exception.MethodInvocationException: Invocation of method ‘searchDocuments’ in  class com.xpn.xwiki.api.XWiki threw exception com.xpn.xwiki.XWikiException: Error number 3223 in 3: Exception while searching documents with SQL [select distinct doc.space, doc.name, doc.date from XWikiDocument as doc where (doc.hidden <> true or doc.hidden is null) and doc.space not in () and doc.version like ‘%.1’ and doc.author != ‘superadmin’ order by doc.date desc]
Wrapped Exception: unexpected end of subtree [select distinct doc.space, doc.name, doc.date from com.xpn.xwiki.doc.XWikiDocument as doc where (doc.hidden <> true or doc.hidden is null) and doc.space not in () and doc.version like ‘%.1’ and doc.author != ‘superadmin’ order by doc.date desc] at xwiki:Main.RecentChanges[line 125, column 32]
        at org.apache.velocity.runtime.parser.node.ASTMethod.handleInvocationException(ASTMethod.java:243)
        at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:187)
        at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:280)
        at org.apache.velocity.runtime.parser.node.ASTReference.value(ASTReference.java:567)
        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.ASTIfStatement.render(ASTIfStatement.java:87)
        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:342)
        at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:228)
        ... 77 more
Caused by: com.xpn.xwiki.XWikiException: Error number 3223 in 3: Exception while searching documents with SQL [select distinct doc.space, doc.name, doc.date from XWikiDocument as doc where (doc.hidden <> true or doc.hidden is null) and doc.space not in () and doc.version like ‘%.1’ and doc.author != ‘superadmin’ order by doc.date desc]
Wrapped Exception: unexpected end of subtree [select distinct doc.space, doc.name, doc.date from com.xpn.xwiki.doc.XWikiDocument as doc where (doc.hidden <> true or doc.hidden is null) and doc.space not in () and doc.version like ‘%.1’ and doc.author != ‘superadmin’ order by doc.date desc]
        at com.xpn.xwiki.store.XWikiHibernateStore.searchGenericInternal(XWikiHibernateStore.java:2315)
        at com.xpn.xwiki.store.XWikiHibernateStore.searchDocumentReferencesInternal(XWikiHibernateStore.java:2270)
        at com.xpn.xwiki.store.XWikiHibernateStore.searchDocumentsNamesInternal(XWikiHibernateStore.java:2257)
        at com.xpn.xwiki.store.XWikiHibernateStore.searchDocumentsNames(XWikiHibernateStore.java:2020)
        at com.xpn.xwiki.store.XWikiCacheStore.searchDocumentsNames(XWikiCacheStore.java:378)
        at com.xpn.xwiki.api.XWiki.searchDocuments(XWiki.java:708)
        at sun.reflect.GeneratedMethodAccessor370.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:622)
        at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:395)
        at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:384)
        at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:173)
        ... 87 more
Caused by: org.hibernate.hql.ast.QuerySyntaxException: unexpected end of subtree [select distinct doc.space, doc.name, doc.date from com.xpn.xwiki.doc.XWikiDocument as doc where (doc.hidden <> true or doc.hidden is null) and doc.space not in () and doc.version like ‘%.1’ and doc.author != ‘superadmin’ order by doc.date desc]
        at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:54)
        at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:47)
        at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:82)
        at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:263)
        at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:187)
        at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:138)
        at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
        at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
        at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:124)
        at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
        at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
        at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1770)
        at com.xpn.xwiki.store.XWikiHibernateStore.searchGenericInternal(XWikiHibernateStore.java:2298)
        ... 98 more