Error When Executing PlantUML Macro 2.0

Xwiki 12.10.8

What did I do wrong, and how to fix it?

I just upgraded to PlantUML Macro 2.0 by first uninstalling Macro 1.1 and then installing Macro version 2.0.

Now my PlantUML sections just fail:

Failed to execute the [groovy] macro. Cause: [No signature of method: java.lang.String.setObjects() is applicable for argument types: (com.xpn.xwiki.api.Document, com.xpn.xwiki.api.Context, String) values: [Example Com.Technik & EDV.Server- und Internet-Dienst-Infrastruktur.WebHome, ...]]. Click on this message for details.

Clicking this message shows the macro code and a stack trace - not sure if it makes sense to show it here, but just in case:

Failed to execute the [groovy] macro. Cause: [No signature of method: java.lang.String.setObjects() is applicable for argument types: (com.xpn.xwiki.api.Document, com.xpn.xwiki.api.Context, String) values: [Example Com.Technik & EDV.Server- und Internet-Dienst-Infrastruktur.WebHome, ...]]. Click on this message for details.
org.xwiki.rendering.macro.MacroExecutionException: Failed to evaluate Script Macro for content [// Utility class and method from plantUML to encode the UML text. See below the starting point of the macro.
import java.util.zip.*

byte[] compress(byte[] input) {
    int len = input.length + 100;
    Deflater compresser = new Deflater(9, true);
    compresser.setInput(input);
    compresser.finish();
    byte[] output = new byte[len];
    int compressedDataLength = compresser.deflate(output);
    byte[] result = new byte[compressedDataLength];
    System.arraycopy(output,0,result,0,compressedDataLength);
    return result;
}

class AsciiEncoder {
    char[] encode6bits = new char[64];

    public AsciiEncoder() {
        for (byte b = 0; b < 64; b++) {
            encode6bits[b] = encode6bit(b as byte);
        }
    }

    public String encode(byte[] data) {
        final StringBuilder resu = new StringBuilder((int)((data.length * 4 + 2) / 3));
        for (int i = 0; i < data.length; i += 3) {
            append3bytes(resu, data[i] & 0xFF, i + 1 < data.length ? data[i + 1] & 0xFF : 0,
                    i + 2 < data.length ? data[i + 2] & 0xFF : 0);
        }
        return resu.toString();
    }

    private char encode6bit(byte b) {
        assert b >= 0 && b < 64;
        if (b < 10) {
            return (char)(('0' as char) + b);
        }
        b -= 10;
        if (b < 26) {
            return (char)(('A' as char) + b);
        }
        b -= 26;
        if (b < 26) {
            return (char)(('a' as char) + b);
        }
        b -= 26;
        if (b == 0) {
            return '-' as char;
        }
        if (b == 1) {
            return '_' as char;
        }
        assert false;
        return '?';
    }

    private void append3bytes(StringBuilder sb, int b1, int b2, int b3) {
        final int c1 = b1 >> 2;
        final int c2 = ((b1 & 0x3) << 4) | (b2 >> 4);
        final int c3 = ((b2 & 0xF) << 2) | (b3 >> 6);
        final int c4 = b3 & 0x3F;
        sb.append(encode6bits[c1 & 0x3F]);
        sb.append(encode6bits[c2 & 0x3F]);
        sb.append(encode6bits[c3 & 0x3F]);
        sb.append(encode6bits[c4 & 0x3F]);
    }
}

// Utility method to insert content in the uml script taking care of the @start marker.
String insertHeader( String header, String origin) {
    def m = origin =~ /(?s)(@start[a-z]++)(.*)/
    if (m.matches()) {
        return m[0][1] + "\n" + header + "\n" + m[0][2]
    } else {
        return header + "\n" + origin
    }
}

// STARTING POINT
// Get the uml script
def umltext = xcontext.macro.content

// Add the optional 'include' content
def include = xcontext.macro.params.include
if (include) {
    def incDoc = xwiki.getDocument(include)
    if (!incDoc.isNew()) {
        umltext = insertHeader(incDoc.content, umltext)
    } else {
        println "**PlantUMLMacro WARNING**: Can't include page "+include
    }
}

// Get the configured server
def macrodoc = xcontext.getMacro().get("doc")
def serverurl
if (macrodoc.getObject("XWiki.PlantUMLConfigurationClass") != null) {
    serverurl = macrodoc.getObject('XWiki.PlantUMLConfigurationClass').getProperty('Server').value
}


if (serverurl == "") { // Uses the internal PlantUMLMacroGClass groovy implementation
    gObj = xwiki.parseGroovyFromPage( "XWiki.PlantUMLMacroGClass", "XWiki.PlantUMLMacroGClass")
    gObj.setObjects(doc, xcontext, umltext)
    println gObj.run( request, response)
} else { // Uses the external configured PlantUML server
    // Encode the UML content
    byte[] data = umltext.getBytes("UTF-8")
    byte[] compressed = compress(data)
    String encoded = new AsciiEncoder().encode(compressed)
    // Output the image wiki tag
    println "[[image:"+serverurl+"img/"+encoded+"||style=\"max-width:100%\"]]"
}]
	at org.xwiki.rendering.macro.script.AbstractJSR223ScriptMacro.evaluateBlock(AbstractJSR223ScriptMacro.java:202)
	at org.xwiki.rendering.macro.script.AbstractJSR223ScriptMacro.evaluateBlock(AbstractJSR223ScriptMacro.java:60)
	at org.xwiki.rendering.macro.script.AbstractScriptMacro.execute(AbstractScriptMacro.java:182)
	at org.xwiki.rendering.macro.script.AbstractScriptMacro.execute(AbstractScriptMacro.java:58)
	at org.xwiki.rendering.internal.transformation.macro.MacroTransformation.transform(MacroTransformation.java:297)
	at org.xwiki.rendering.internal.transformation.DefaultRenderingContext.transformInContext(DefaultRenderingContext.java:183)
	at org.xwiki.rendering.async.internal.block.AbstractBlockAsyncRenderer.transform(AbstractBlockAsyncRenderer.java:76)
	at org.xwiki.rendering.wikimacro.internal.DefaultWikiMacroRenderer.transform(DefaultWikiMacroRenderer.java:870)
	at org.xwiki.rendering.wikimacro.internal.DefaultWikiMacroRenderer.transform(DefaultWikiMacroRenderer.java:856)
	at org.xwiki.rendering.wikimacro.internal.DefaultWikiMacroRenderer.transform(DefaultWikiMacroRenderer.java:589)
	at org.xwiki.rendering.wikimacro.internal.DefaultWikiMacroRenderer.execute(DefaultWikiMacroRenderer.java:404)
	at org.xwiki.rendering.async.internal.block.AbstractBlockAsyncRenderer.render(AbstractBlockAsyncRenderer.java:157)
	at org.xwiki.rendering.async.internal.block.AbstractBlockAsyncRenderer.render(AbstractBlockAsyncRenderer.java:54)
	at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.lambda$syncRender$0(DefaultAsyncRendererExecutor.java:267)
	at com.xpn.xwiki.internal.security.authorization.DefaultAuthorExecutor.call(DefaultAuthorExecutor.java:98)
	at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:267)
	at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.render(DefaultAsyncRendererExecutor.java:250)
	at org.xwiki.rendering.async.internal.block.DefaultBlockAsyncRendererExecutor.execute(DefaultBlockAsyncRendererExecutor.java:125)
	at org.xwiki.rendering.wikimacro.internal.DefaultWikiMacro.execute(DefaultWikiMacro.java:107)
	at org.xwiki.rendering.wikimacro.internal.DefaultWikiMacro.execute(DefaultWikiMacro.java:53)
	at org.xwiki.rendering.internal.transformation.macro.MacroTransformation.transform(MacroTransformation.java:297)
	at org.xwiki.rendering.internal.transformation.DefaultRenderingContext.transformInContext(DefaultRenderingContext.java:183)
	at org.xwiki.rendering.internal.transformation.DefaultTransformationManager.performTransformations(DefaultTransformationManager.java:103)
	at org.xwiki.display.internal.DocumentContentAsyncExecutor.executeInCurrentExecutionContext(DocumentContentAsyncExecutor.java:348)
	at org.xwiki.display.internal.DocumentContentAsyncExecutor.execute(DocumentContentAsyncExecutor.java:221)
	at org.xwiki.display.internal.DocumentContentAsyncRenderer.execute(DocumentContentAsyncRenderer.java:107)
	at org.xwiki.rendering.async.internal.block.AbstractBlockAsyncRenderer.render(AbstractBlockAsyncRenderer.java:157)
	at org.xwiki.rendering.async.internal.block.AbstractBlockAsyncRenderer.render(AbstractBlockAsyncRenderer.java:54)
	at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:273)
	at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.render(DefaultAsyncRendererExecutor.java:250)
	at org.xwiki.rendering.async.internal.block.DefaultBlockAsyncRendererExecutor.execute(DefaultBlockAsyncRendererExecutor.java:125)
	at org.xwiki.display.internal.DocumentContentDisplayer.display(DocumentContentDisplayer.java:67)
	at org.xwiki.display.internal.DocumentContentDisplayer.display(DocumentContentDisplayer.java:43)
	at org.xwiki.display.internal.DefaultDocumentDisplayer.display(DefaultDocumentDisplayer.java:96)
	at org.xwiki.display.internal.DefaultDocumentDisplayer.display(DefaultDocumentDisplayer.java:39)
	at org.xwiki.sheet.internal.SheetDocumentDisplayer.display(SheetDocumentDisplayer.java:123)
	at org.xwiki.sheet.internal.SheetDocumentDisplayer.display(SheetDocumentDisplayer.java:52)
	at org.xwiki.display.internal.ConfiguredDocumentDisplayer.display(ConfiguredDocumentDisplayer.java:68)
	at org.xwiki.display.internal.ConfiguredDocumentDisplayer.display(ConfiguredDocumentDisplayer.java:42)
	at com.xpn.xwiki.doc.XWikiDocument.display(XWikiDocument.java:1218)
	at com.xpn.xwiki.doc.XWikiDocument.getRenderedContent(XWikiDocument.java:1359)
	at com.xpn.xwiki.doc.XWikiDocument.displayDocument(XWikiDocument.java:1308)
	at com.xpn.xwiki.doc.XWikiDocument.displayDocument(XWikiDocument.java:1275)
	at com.xpn.xwiki.api.Document.displayDocument(Document.java:786)
	at jdk.internal.reflect.GeneratedMethodAccessor685.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:565)
	at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:548)
	at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:219)
	at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:369)
	at org.apache.velocity.runtime.parser.node.ASTReference.value(ASTReference.java:701)
	at org.apache.velocity.runtime.parser.node.ASTExpression.value(ASTExpression.java:72)
	at org.apache.velocity.runtime.parser.node.ASTSetDirective.render(ASTSetDirective.java:240)
	at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:144)
	at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:423)
	at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:191)
	at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:144)
	at org.xwiki.velocity.internal.directive.TryCatchDirective.render(TryCatchDirective.java:86)
	at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:301)
	at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:423)
	at org.apache.velocity.Template.merge(Template.java:358)
	at org.apache.velocity.Template.merge(Template.java:262)
	at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:280)
	at com.xpn.xwiki.render.DefaultVelocityManager.evaluate(DefaultVelocityManager.java:321)
	at com.xpn.xwiki.internal.template.VelocityTemplateEvaluator.evaluateContent(VelocityTemplateEvaluator.java:95)
	at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.evaluateContent(TemplateAsyncRenderer.java:217)
	at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.renderVelocity(TemplateAsyncRenderer.java:180)
	at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:137)
	at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:53)
	at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.lambda$syncRender$0(DefaultAsyncRendererExecutor.java:267)
	at com.xpn.xwiki.internal.security.authorization.DefaultAuthorExecutor.call(DefaultAuthorExecutor.java:98)
	at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:267)
	at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.render(DefaultAsyncRendererExecutor.java:250)
	at org.xwiki.rendering.async.internal.block.DefaultBlockAsyncRendererExecutor.render(DefaultBlockAsyncRendererExecutor.java:154)
	at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:772)
	at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:745)
	at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:725)
	at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:711)
	at com.xpn.xwiki.internal.template.DefaultTemplateManager.render(DefaultTemplateManager.java:78)
	at com.xpn.xwiki.XWiki.evaluateTemplate(XWiki.java:2505)
	at com.xpn.xwiki.XWiki.parseTemplate(XWiki.java:2483)
	at com.xpn.xwiki.api.XWiki.parseTemplate(XWiki.java:983)
	at jdk.internal.reflect.GeneratedMethodAccessor234.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:565)
	at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:548)
	at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:219)
	at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:369)
	at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:490)
	at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:144)
	at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:215)
	at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:328)
	at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:258)
	at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:301)
	at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:423)
	at org.apache.velocity.Template.merge(Template.java:358)
	at org.apache.velocity.Template.merge(Template.java:262)
	at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:280)
	at com.xpn.xwiki.render.DefaultVelocityManager.evaluate(DefaultVelocityManager.java:321)
	at com.xpn.xwiki.internal.template.VelocityTemplateEvaluator.evaluateContent(VelocityTemplateEvaluator.java:95)
	at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.evaluateContent(TemplateAsyncRenderer.java:217)
	at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.renderVelocity(TemplateAsyncRenderer.java:180)
	at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:137)
	at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:53)
	at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.lambda$syncRender$0(DefaultAsyncRendererExecutor.java:267)
	at com.xpn.xwiki.internal.security.authorization.DefaultAuthorExecutor.call(DefaultAuthorExecutor.java:98)
	at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:267)
	at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.render(DefaultAsyncRendererExecutor.java:250)
	at org.xwiki.rendering.async.internal.block.DefaultBlockAsyncRendererExecutor.render(DefaultBlockAsyncRendererExecutor.java:154)
	at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:772)
	at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:745)
	at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:725)
	at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:711)
	at com.xpn.xwiki.internal.template.DefaultTemplateManager.render(DefaultTemplateManager.java:78)
	at com.xpn.xwiki.XWiki.evaluateTemplate(XWiki.java:2505)
	at com.xpn.xwiki.XWiki.parseTemplate(XWiki.java:2483)
	at com.xpn.xwiki.api.XWiki.parseTemplate(XWiki.java:983)
	at jdk.internal.reflect.GeneratedMethodAccessor234.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:565)
	at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:548)
	at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:219)
	at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:369)
	at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:490)
	at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:144)
	at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:215)
	at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:328)
	at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:258)
	at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:301)
	at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:144)
	at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:172)
	at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:144)
	at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:423)
	at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:191)
	at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:423)
	at org.apache.velocity.Template.merge(Template.java:358)
	at org.apache.velocity.Template.merge(Template.java:262)
	at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:280)
	at com.xpn.xwiki.render.DefaultVelocityManager.evaluate(DefaultVelocityManager.java:321)
	at com.xpn.xwiki.internal.template.VelocityTemplateEvaluator.evaluateContent(VelocityTemplateEvaluator.java:95)
	at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.evaluateContent(TemplateAsyncRenderer.java:217)
	at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.renderVelocity(TemplateAsyncRenderer.java:180)
	at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:137)
	at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:53)
	at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.lambda$syncRender$0(DefaultAsyncRendererExecutor.java:267)
	at com.xpn.xwiki.internal.security.authorization.DefaultAuthorExecutor.call(DefaultAuthorExecutor.java:98)
	at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:267)
	at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.render(DefaultAsyncRendererExecutor.java:250)
	at org.xwiki.rendering.async.internal.block.DefaultBlockAsyncRendererExecutor.render(DefaultBlockAsyncRendererExecutor.java:154)
	at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:772)
	at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:745)
	at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:725)
	at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:711)
	at com.xpn.xwiki.internal.template.DefaultTemplateManager.render(DefaultTemplateManager.java:78)
	at com.xpn.xwiki.XWiki.evaluateTemplate(XWiki.java:2505)
	at com.xpn.xwiki.web.Utils.parseTemplate(Utils.java:179)
	at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:605)
	at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:283)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
	at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.xpn.xwiki.web.ActionFilter.doFilter(ActionFilter.java:122)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.xwiki.wysiwyg.filter.ConversionFilter.doFilter(ConversionFilter.java:109)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.xwiki.container.servlet.filters.internal.SetHTTPHeaderFilter.doFilter(SetHTTPHeaderFilter.java:63)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:208)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:111)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.xwiki.resource.servlet.RoutingFilter.doFilter(RoutingFilter.java:132)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:688)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:415)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1639)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: javax.script.ScriptException: javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: java.lang.String.setObjects() is applicable for argument types: (com.xpn.xwiki.api.Document, com.xpn.xwiki.api.Context, String) values: [Ohrner IT.Technik & EDV.Server- und Internet-Dienst-Infrastruktur.WebHome, ...]
	at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:158)
	at org.xwiki.rendering.macro.script.AbstractJSR223ScriptMacro.eval(AbstractJSR223ScriptMacro.java:351)
	at org.xwiki.rendering.macro.script.AbstractJSR223ScriptMacro.evaluateBlock(AbstractJSR223ScriptMacro.java:249)
	at org.xwiki.rendering.macro.script.AbstractJSR223ScriptMacro.evaluateBlock(AbstractJSR223ScriptMacro.java:197)
	... 203 more
Caused by: javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: java.lang.String.setObjects() is applicable for argument types: (com.xpn.xwiki.api.Document, com.xpn.xwiki.api.Context, String) values: [Ohrner IT.Technik & EDV.Server- und Internet-Dienst-Infrastruktur.WebHome, ...]
	at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:320)
	at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:155)
	... 206 more
Caused by: groovy.lang.MissingMethodException: No signature of method: java.lang.String.setObjects() is applicable for argument types: (com.xpn.xwiki.api.Document, com.xpn.xwiki.api.Context, String) values: [Ohrner IT.Technik & EDV.Server- und Internet-Dienst-Infrastruktur.WebHome, ...]
	at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:70)
	at org.codehaus.groovy.runtime.callsite.PojoMetaClassSite.call(PojoMetaClassSite.java:46)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:143)
	at Script6.run(Script6.groovy:105)
	at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:317)
	... 207 more

The pasted error suggests that the old version is actually still in use for some reason. Are you sure you uninstalled it ? If yes were all the pages listed for deletion selected ? Does the page XWiki/PlantUMLMacro page still exist (that’s where the 1.x macro used to be stored) ?

Positive:

image

No, does not look like:

image

So nothing with the name “PlantUMLMacro” which I could find, just pages called “PlantUML” (without suffix “Macro”). The actual toplevel node also doesn’t seem to exist as a page, the subordinate spaces/pages do:

image

Did you try to access the page with reference XWiki.PlantUMLMacro ? The URL should be something like https://myhost/xwiki/bin/view/XWiki/PlantUMLMacro.

If this old page really does not exist, then maybe the wiki macro was not properly unregistered for some reason, in which case a restart should fix it.

Ok, when I tried to access the page directly, I used the wrong URL.

Apparently the page actually is still there:

image

Why wasn’t it deleted when removing the PlantUML Macro extension? Can I now just delete it manually?

Hard to say now, when an extension is uninstalled all the pages that were part of it are listed for confirmation and if a page is different from the standard version (customized) it’s unselected for delete by default, so maybe that was your case.

Yes.

Also note that 2.0.1 is now released, see PlantUML Macro 2.0.1 released

@GOhrner let me know how it goes, I didn’t know we had some users of this macro so I’m curious to see how the new version works for you! It should normally perform better (faster, async, etc).

Thx

@tmortagne , @vmassol : Ok, after manually deleting the old Macro page (well possible that for whatever reason it was unchecked during deinstallation and I missed that) and upgrading the PlantUML plugin to 2.0.1 it now works. :slight_smile:

An additional mistake I made was not to reconfigure the server to “empty” immediately in the config screen, which caused the Macro to use the public PlantUML server at first. Fortunately, I don’t have that sensitive data in my diagrams, but otherwise this could have become a bad surprise…

I hope that in case of a direct update of the extension, which is now supported with 2.0.1, such config settings are respected and taken over, if the older Macro was configured accordingly?

When using the PlantUML server, the rendered image didn’t fit its box / into the page and was cut off to the right. Using my own GraphViz which was also used previously, the image fits fine and is scaled down just fine in case the browser window is resized.

Performance feels quite good.

Just as a side note: Why are you implementing a new version for a Macro which you think noone uses? :slight_smile: And how did you get the impression that it’s not used - because noone had questions about it for a while? Maybe it just worked. :slight_smile: (It did for me, at least - wasn’t the fastest, but cached the images, so performance was ok.)

no it’s not supported yet, that’s more work to do to create an automation migration… You coud create a jira issue but not sure I’ll fix it anytime soon. Maybe a warning in the doc could be added for now.

Note that the plantuml server doesn’t store any data at all so that limits the risks.

ok interesting to know.

I implemented it to start using it on xwiki.org. See URL Architecture (XWiki.org)

Yeah… was just a feeling. It wasn’t even a recommended extension. Let me change that now.

cool to know. Besides this you should now have all the new diagram types and new features added over the years by PlantUML too :slight_smile:

Looks nice. :slight_smile:

I used it to document our internal IT infrastructure - which boxes do we use and which services are running where and depend on what other services?

However my diagram is by far not as colourful as yours. :slight_smile:

He is cheating, it’s just a plantuml theme :wink:

Oh, didn’t know about these. Looks nice!

However, if I try this myself in Xwiki, I just get a Syntax Error at the !theme directive… Mh, never mind…

You can see how it’s used in the example on URL Architecture (XWiki.org).

Yes, thanks - that where I already tried to copy how to do it, but somehow failed…

In theory, I should only add the !theme row, shouldn’t I?

image

Yes.

Maybe your plantuml server is too old or maybe your local graphviz install is oldish too?

Probably, that was my assumption.

I use a local GraphViz installation, no PlantUML server, the system is a plain Debian Stable. So I’ll just wait for Debian “Bullseye” to be released and perform another attempt afterwards. :slight_smile:

xwiki.org system is a Debian Buster (and use the version of GraphViz provided by Buster from what I understood) so I doubt your problem comes from this.