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);
}
/**