cziegeler 2003/07/08 07:04:41
Modified: src/blocks/woody/java/org/apache/cocoon/woody/acting HandleFormSubmitAction.java MakeFormAction.java Log: Properly releasing sources Revision Changes Path 1.5 +28 -22 cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/acting/HandleFormSubmitAction.java Index: HandleFormSubmitAction.java =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/acting/HandleFormSubmitAction.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- HandleFormSubmitAction.java 30 Jun 2003 13:25:28 -0000 1.4 +++ HandleFormSubmitAction.java 8 Jul 2003 14:04:41 -0000 1.5 @@ -61,6 +61,7 @@ import org.apache.cocoon.woody.FormContext; import org.apache.cocoon.woody.FormHandler; import org.apache.cocoon.woody.formmodel.Form; +import org.apache.excalibur.source.Source; import java.util.Map; import java.util.Collections; @@ -80,33 +81,38 @@ */ public class HandleFormSubmitAction extends AbstractWoodyAction implements Action, ThreadSafe, Composable { - public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String source, Parameters parameters) + public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String src, Parameters parameters) throws Exception { String formSource = parameters.getParameter("form-definition"); String formAttribute = parameters.getParameter("attribute-name"); String formHandlerClassName = parameters.getParameter("formhandler", null); - Form form = formManager.createForm(resolver.resolveURI(formSource)); - - Request request = ObjectModelHelper.getRequest(objectModel); - FormHandler formHandler = null; - - if (formHandlerClassName != null) { - // TODO cache these classes - Class clazz = Class.forName(formHandlerClassName); - formHandler = (FormHandler)clazz.newInstance(); - formHandler.setup(form); - form.setFormHandler(formHandler); + Source source = resolver.resolveURI(formSource); + try { + Form form = formManager.createForm(source); + + Request request = ObjectModelHelper.getRequest(objectModel); + FormHandler formHandler = null; + + if (formHandlerClassName != null) { + // TODO cache these classes + Class clazz = Class.forName(formHandlerClassName); + formHandler = (FormHandler)clazz.newInstance(); + formHandler.setup(form); + form.setFormHandler(formHandler); + } + + FormContext formContext = new FormContext(request, Locale.US); + + boolean finished = form.process(formContext); + request.setAttribute(formAttribute, form); + + if (finished) + return Collections.EMPTY_MAP; + else + return null; + } finally { + resolver.release(source); } - - FormContext formContext = new FormContext(request, Locale.US); - - boolean finished = form.process(formContext); - request.setAttribute(formAttribute, form); - - if (finished) - return Collections.EMPTY_MAP; - else - return null; } } 1.4 +12 -5 cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/acting/MakeFormAction.java Index: MakeFormAction.java =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/acting/MakeFormAction.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- MakeFormAction.java 15 May 2003 10:31:01 -0000 1.3 +++ MakeFormAction.java 8 Jul 2003 14:04:41 -0000 1.4 @@ -57,6 +57,7 @@ import org.apache.cocoon.environment.ObjectModelHelper; import org.apache.cocoon.woody.FormManager; import org.apache.cocoon.woody.formmodel.Form; +import org.apache.excalibur.source.Source; import org.apache.avalon.framework.thread.ThreadSafe; import org.apache.avalon.framework.parameters.Parameters; import org.apache.avalon.framework.component.Composable; @@ -82,15 +83,21 @@ formManager = (FormManager)componentManager.lookup(FormManager.ROLE); } - public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String source, Parameters parameters) + public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String src, Parameters parameters) throws Exception { String formSource = parameters.getParameter("form-definition"); String formAttribute = parameters.getParameter("attribute-name"); - Form form = formManager.createForm(resolver.resolveURI(formSource)); - - Request request = ObjectModelHelper.getRequest(objectModel); - request.setAttribute(formAttribute, form); + Source source = null; + try { + source = resolver.resolveURI(formSource); + Form form = formManager.createForm(source); + + Request request = ObjectModelHelper.getRequest(objectModel); + request.setAttribute(formAttribute, form); + } finally { + resolver.release(source); + } return null; }