From 842e09695aedc05649d146653193bdc71870b691 Mon Sep 17 00:00:00 2001 From: Par Daniel Fagerstrohm Date: Sat, 28 Oct 2006 09:52:45 +0000 Subject: [PATCH] The BlockContext wasn't pushed at the BlockCallStack when doing a polymorphic call through the block protocol (e.g. block:/foo), this made subsequent block protocol call be called relative to the wrong context. This hopefully fixes the problem reported in JIRA issue COCOON-1939. git-svn-id: https://svn.apache.org/repos/asf/cocoon/trunk/core/cocoon-blocks-fw@468664 13f79535-47bb-0310-9956-ffa450edef68 --- .../main/java/org/apache/cocoon/blocks/BlockContext.java | 7 ++++++- .../main/java/org/apache/cocoon/blocks/BlockServlet.java | 7 +------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cocoon-blocks-fw-impl/src/main/java/org/apache/cocoon/blocks/BlockContext.java b/cocoon-blocks-fw-impl/src/main/java/org/apache/cocoon/blocks/BlockContext.java index ec3d2085c10..db8a242a235 100644 --- a/cocoon-blocks-fw-impl/src/main/java/org/apache/cocoon/blocks/BlockContext.java +++ b/cocoon-blocks-fw-impl/src/main/java/org/apache/cocoon/blocks/BlockContext.java @@ -433,7 +433,12 @@ private boolean exists() { */ public void forward(ServletRequest request, ServletResponse response) throws ServletException, IOException { - BlockContext.this.servlet.service(request, response); + try { + BlockCallStack.enterBlock(BlockContext.this); + BlockContext.this.servlet.service(request, response); + } finally { + BlockCallStack.leaveBlock(); + } } /* (non-Javadoc) diff --git a/cocoon-blocks-fw-impl/src/main/java/org/apache/cocoon/blocks/BlockServlet.java b/cocoon-blocks-fw-impl/src/main/java/org/apache/cocoon/blocks/BlockServlet.java index 4aeb1ece2f3..e7811e86cec 100644 --- a/cocoon-blocks-fw-impl/src/main/java/org/apache/cocoon/blocks/BlockServlet.java +++ b/cocoon-blocks-fw-impl/src/main/java/org/apache/cocoon/blocks/BlockServlet.java @@ -120,12 +120,7 @@ protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { RequestDispatcher dispatcher = this.blockContext.getRequestDispatcher(request.getPathInfo()); - try { - BlockCallStack.enterBlock(this.blockContext); - dispatcher.forward(request, response); - } finally { - BlockCallStack.leaveBlock(); - } + dispatcher.forward(request, response); } /**