bruno 2004/03/18 05:56:09
Modified: src/blocks/forms/java/org/apache/cocoon/forms FormManager.java DefaultFormManager.java Log: Added methods to create a form instance or definition based on a DOM tree instead of a Source. Revision Changes Path 1.2 +30 -1 cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/FormManager.java Index: FormManager.java =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/FormManager.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- FormManager.java 9 Mar 2004 10:34:12 -0000 1.1 +++ FormManager.java 18 Mar 2004 13:56:09 -0000 1.2 @@ -16,7 +16,9 @@ package org.apache.cocoon.forms; import org.apache.cocoon.forms.formmodel.Form; +import org.apache.cocoon.forms.formmodel.FormDefinition; import org.apache.excalibur.source.Source; +import org.w3c.dom.Element; /** * Work interface for the component that can create [EMAIL PROTECTED] Form}s. @@ -27,5 +29,32 @@ String ROLE = FormManager.class.getName(); + /** + * Creates a form instance based on the XML form definition + * that can be read from the specified source. + * + * <p>The form definition will be cached, so that future form instances + * can be creted quickly. + */ Form createForm(Source source) throws Exception; + + /** + * Creates a form instance based on the XML form definition that is + * supplied as a DOM tree. + * + * <p>The specified element must be a fd:form element. + * + * <p>The Form Definition will not be cached. + */ + Form createForm(Element formElement) throws Exception; + + /** + * Creates a form definition based on the XML form definition that is + * supplied as a DOM tree. + * + * <p>The specified element must be a fd:form element. + + * <p>The Form Definition will not be cached. + */ + FormDefinition createFormDefinition(Element formElement) throws Exception; } 1.4 +19 -8 cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/DefaultFormManager.java Index: DefaultFormManager.java =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/DefaultFormManager.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- DefaultFormManager.java 11 Mar 2004 02:56:33 -0000 1.3 +++ DefaultFormManager.java 18 Mar 2004 13:56:09 -0000 1.4 @@ -97,6 +97,14 @@ return (Form)formDefinition.createInstance(); } + public Form createForm(Element formElement) throws Exception { + return (Form)getFormDefinition(formElement).createInstance(); + } + + public FormDefinition createFormDefinition(Element formElement) throws Exception { + return getFormDefinition(formElement); + } + public FormDefinition getFormDefinition(Source source) throws Exception { FormDefinition formDefinition = (FormDefinition)this.cacheManager.get(source, PREFIX); if (formDefinition == null) { @@ -111,16 +119,19 @@ } Element formElement = formDocument.getDocumentElement(); - - // check that the root element is a fd:form element - if (!(formElement.getLocalName().equals("form") || Constants.DEFINITION_NS.equals(formElement.getNamespaceURI()))) - throw new Exception("Expected a Cocoon Forms form element at " + DomHelper.getLocation(formElement)); - - FormDefinitionBuilder formDefinitionBuilder = (FormDefinitionBuilder)widgetDefinitionBuilderSelector.select("form"); - formDefinition = (FormDefinition)formDefinitionBuilder.buildWidgetDefinition(formElement); + formDefinition = getFormDefinition(formElement); this.cacheManager.set(formDefinition, source, PREFIX); } return formDefinition; + } + + public FormDefinition getFormDefinition(Element formElement) throws Exception { + // check that the root element is a fd:form element + if (!(formElement.getLocalName().equals("form") || Constants.DEFINITION_NS.equals(formElement.getNamespaceURI()))) + throw new Exception("Expected a Cocoon Forms form element at " + DomHelper.getLocation(formElement)); + + FormDefinitionBuilder formDefinitionBuilder = (FormDefinitionBuilder)widgetDefinitionBuilderSelector.select("form"); + return (FormDefinition)formDefinitionBuilder.buildWidgetDefinition(formElement); } /**