diff --git a/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/internal/template/TemplateAsyncRenderer.java b/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/internal/template/TemplateAsyncRenderer.java index 0b2238d0b6bd1dc12c4c01a6c3e36cb81db72b38..2cad8875c3e3341051bc8f80bf84d2a9ff93da65 100644 --- a/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/internal/template/TemplateAsyncRenderer.java +++ b/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/internal/template/TemplateAsyncRenderer.java @@ -203,7 +203,15 @@ private void transform(Block block) throws TransformationException new TransformationContext(block instanceof XDOM ? (XDOM) block : new XDOM(Arrays.asList(block)), this.renderingContext.getDefaultSyntax(), this.renderingContext.isRestricted()); - transformationContext.setId(this.transformationId); + // Use the Transformation id as the name passed to the Velocity Engine. This name is used internally + // by Velocity as a cache index key for caching macros. + String tId = this.renderingContext.getTransformationId(); + if (tId == null) { + // We need to set a top level id (otherwise Velocity macros won't be able to share vmacros for example) + tId = this.template.getId() != null ? this.template.getId() : "unknown namespace"; + } + transformationContext.setId(tId); + transformationContext.setTargetSyntax(this.targetSyntax); transform(block, transformationContext);