提交 6f7891f3 编写于 作者: K Kohsuke Kawaguchi

Properly inherit adjuncts into renderOnDemand lazy pieces

上级 5aca73f1
......@@ -42,7 +42,7 @@ THE SOFTWARE.
<properties>
<staplerFork>true</staplerFork>
<stapler.version>1.197</stapler.version>
<stapler.version>1.198</stapler.version>
</properties>
<dependencies>
......
......@@ -37,7 +37,9 @@ import org.kohsuke.stapler.Stapler;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.StaplerResponse;
import org.kohsuke.stapler.bind.JavaScriptMethod;
import org.kohsuke.stapler.framework.adjunct.AdjunctsInPage;
import org.kohsuke.stapler.jelly.DefaultScriptInvoker;
import org.xml.sax.SAXException;
import javax.servlet.ServletException;
import java.io.IOException;
......@@ -45,6 +47,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
......@@ -61,6 +64,8 @@ public class RenderOnDemandClosure {
private final Map<String,Object> variables;
private final String currentDescriptorByNameUrl;
private final Set<String> adjuncts;
public RenderOnDemandClosure(JellyContext context, String attributesToCapture) {
List<Script> bodyStack = new ArrayList<Script>();
for (JellyContext c = context; c!=null; c=c.getParent()) {
......@@ -78,6 +83,8 @@ public class RenderOnDemandClosure {
currentDescriptorByNameUrl = Descriptor.getCurrentDescriptorByNameUrl();
this.variables = PackedMap.of(variables);
this.adjuncts = AdjunctsInPage.get().getIncluded();
}
/**
......@@ -96,6 +103,13 @@ public class RenderOnDemandClosure {
context = new JellyContext(context);
context.setVariable("org.apache.commons.jelly.body",bodyStack[i]);
}
try {
AdjunctsInPage.get().assumeIncluded(adjuncts);
} catch (IOException e) {
LOGGER.log(Level.WARNING, "Failed to resurrect adjunct context",e);
} catch (SAXException e) {
LOGGER.log(Level.WARNING, "Failed to resurrect adjunct context",e);
}
return context;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册