diff --git a/project-build.xml b/project-build.xml
index 9410833149..91169a4601 100644
--- a/project-build.xml
+++ b/project-build.xml
@@ -42,7 +42,6 @@
-
diff --git a/source/java/org/alfresco/web/bean/wcm/CreateFormWizard.java b/source/java/org/alfresco/web/bean/wcm/CreateFormWizard.java
index 65bf2b9568..b4aed021d2 100644
--- a/source/java/org/alfresco/web/bean/wcm/CreateFormWizard.java
+++ b/source/java/org/alfresco/web/bean/wcm/CreateFormWizard.java
@@ -18,13 +18,7 @@ package org.alfresco.web.bean.wcm;
import java.io.File;
import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.ResourceBundle;
+import java.util.*;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.event.ValueChangeEvent;
@@ -76,6 +70,7 @@ public class CreateFormWizard
* Simple wrapper class to represent a form data renderer
*/
public class RenderingEngineTemplateData
+ implements Serializable
{
private final String fileName;
private final File file;
@@ -171,12 +166,13 @@ public class CreateFormWizard
protected ContentService contentService;
protected MimetypeService mimetypeService;
protected WorkflowService workflowService;
- private DataModel renderingEngineTemplatesDataModel;
+ private transient DataModel renderingEngineTemplatesDataModel;
private List renderingEngineTemplates = null;
private String outputPathPatternForFormInstanceData = null;
private String outputPathPatternForRendition = null;
private String mimetypeForRendition = null;
- private List mimetypeChoices = null;
+ private transient List mimetypeChoices = null;
+ private transient List schemaRootElementNameChoices = null;
// ------------------------------------------------------------------------------
// Wizard implementation
@@ -305,6 +301,7 @@ public class CreateFormWizard
this.removeUploadedSchemaFile();
this.removeUploadedRenderingEngineTemplateFile();
this.schemaRootElementName = null;
+ this.schemaRootElementNameChoices = null;
this.formName = null;
this.formTitle = null;
this.formDescription = null;
@@ -472,6 +469,7 @@ public class CreateFormWizard
public String removeUploadedSchemaFile()
{
clearUpload(FILE_SCHEMA);
+ this.schemaRootElementNameChoices = null;
// refresh the current page
return null;
@@ -488,7 +486,10 @@ public class CreateFormWizard
return null;
}
- public String validateSchema()
+ /**
+ * Action handler called when the schema has been uploaded.
+ */
+ public String schemaFileValueChanged(final ValueChangeEvent vce)
{
if (this.getSchemaFile() != null)
{
@@ -692,9 +693,13 @@ public class CreateFormWizard
*/
public List getSchemaRootElementNameChoices()
{
- final List result = new LinkedList();
- if (this.getSchemaFile() != null)
+ if (this.getSchemaFile() == null)
{
+ return Collections.EMPTY_LIST;
+ }
+ if (this.schemaRootElementNameChoices == null)
+ {
+ this.schemaRootElementNameChoices = new LinkedList();
final FormsService ts = FormsService.getInstance();
try
{
@@ -704,7 +709,7 @@ public class CreateFormWizard
for (int i = 0; i < elementsMap.getLength(); i++)
{
final XSElementDeclaration e = (XSElementDeclaration)elementsMap.item(i);
- result.add(new SelectItem(e.getName(), e.getName()));
+ this.schemaRootElementNameChoices.add(new SelectItem(e.getName(), e.getName()));
}
}
catch (Exception e)
@@ -714,7 +719,7 @@ public class CreateFormWizard
Utils.addErrorMessage(msg, e);
}
}
- return result;
+ return this.schemaRootElementNameChoices;
}
/**
@@ -722,7 +727,7 @@ public class CreateFormWizard
*/
public void setFormName(final String formName)
{
- this.formName = formName;
+ this.formName = formName != null && formName.length() != 0 ? formName : null;
}
/**
@@ -759,7 +764,7 @@ public class CreateFormWizard
*/
public void setFormTitle(final String formTitle)
{
- this.formTitle = formTitle;
+ this.formTitle = formTitle != null && formTitle.length() != 0 ? formTitle : null;
}
/**
diff --git a/source/java/org/alfresco/web/bean/wcm/CreateWebContentWizard.java b/source/java/org/alfresco/web/bean/wcm/CreateWebContentWizard.java
index def073c299..1b8f4221a8 100644
--- a/source/java/org/alfresco/web/bean/wcm/CreateWebContentWizard.java
+++ b/source/java/org/alfresco/web/bean/wcm/CreateWebContentWizard.java
@@ -80,7 +80,7 @@ public class CreateWebContentWizard extends BaseContentWizard
protected String content = null;
protected String formName;
- protected List createMimeTypes;
+ protected transient List createMimeTypes;
protected String createdPath = null;
protected List renditions = null;
protected FormInstanceData formInstanceData = null;
diff --git a/source/java/org/alfresco/web/forms/FreeMarkerRenderingEngine.java b/source/java/org/alfresco/web/forms/FreeMarkerRenderingEngine.java
index 61d586c2c9..613e7669f6 100644
--- a/source/java/org/alfresco/web/forms/FreeMarkerRenderingEngine.java
+++ b/source/java/org/alfresco/web/forms/FreeMarkerRenderingEngine.java
@@ -32,7 +32,6 @@ import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.web.bean.wcm.AVMConstants;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.chiba.xml.util.DOMUtil;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
diff --git a/source/java/org/alfresco/web/forms/xforms/SchemaFormBuilder.java b/source/java/org/alfresco/web/forms/xforms/SchemaFormBuilder.java
index b6ec724cc2..de69e04ccd 100644
--- a/source/java/org/alfresco/web/forms/xforms/SchemaFormBuilder.java
+++ b/source/java/org/alfresco/web/forms/xforms/SchemaFormBuilder.java
@@ -27,8 +27,9 @@ import org.apache.commons.jxpath.Pointer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.xerces.xs.*;
-import org.chiba.xml.util.DOMUtil;
-import org.chiba.xml.xforms.NamespaceCtx;
+import org.chiba.xml.dom.DOMUtil;
+import org.chiba.xml.ns.NamespaceConstants;
+import org.chiba.xml.ns.NamespaceResolver;
import org.w3c.dom.*;
import org.w3c.dom.ls.*;
@@ -44,76 +45,44 @@ import org.w3c.dom.ls.*;
public class SchemaFormBuilder
{
+ /////////////////////////////////////////////////////////////////////////////
+
+ public enum SubmitMethod
+ {
+ POST("post"),
+ GET("get"),
+ PUT("put"),
+ FORM_DATA_POST("form-data-post"),
+ URL_ENCODED_POST("urlencoded-post");
+
+ private final String value;
+
+ SubmitMethod(final String value)
+ {
+ this.value = value;
+ }
+
+ public String toString()
+ {
+ return this.value;
+ }
+ }
+
+ /////////////////////////////////////////////////////////////////////////////
+
public final static Log LOGGER =
LogFactory.getLog(SchemaFormBuilder.class);
- /** XMLSchema Namespace declaration */
- public static final String XMLSCHEMA_NS =
- "http://www.w3.org/2001/XMLSchema";
-
- /** XMLSchema prefix */
- public static final String XMLSCHEMA_NS_PREFIX = "xs:";
-
- /** XMLSchema Instance Namespace declaration */
- private static final String XMLSCHEMA_INSTANCE_NS =
- "http://www.w3.org/2001/XMLSchema-instance";
-
- /** XMLSchema instance prefix */
- private static final String XMLSCHEMA_INSTANCE_NS_PREFIX = "xsi";
-
/** XMLNS Namespace declaration. */
public static final String XMLNS_NAMESPACE_URI =
"http://www.w3.org/2000/xmlns/";
- /** XML Namespace declaration */
- private static final String XML_NAMESPACE_URI =
- "http://www.w3.org/XML/1998/namespace";
-
- /** XForms namespace declaration. */
- private static final String XFORMS_NS =
- "http://www.w3.org/2002/xforms";
-
- /** XForms prefix */
- private static final String XFORMS_NS_PREFIX = "xforms";
-
/** Alfresco namespace declaration. */
private static final String ALFRESCO_NS =
"http://www.alfresco.org/alfresco";
/** Alfresco prefix */
- private static final String ALFRESCO_NS_PREFIX = "alfresco";
-
- /** XML Events namsepace declaration. */
- private static final String XMLEVENTS_NS = "http://www.w3.org/2001/xml-events";
-
- /** XML Events prefix */
- private static final String XMLEVENTS_NS_PREFIX = "ev";
-
- /**
- * Prossible values of the "@method" on the "submission" element
- */
- public static final String SUBMIT_METHOD_POST = "post";
-
- /**
- * __UNDOCUMENTED__
- */
- public static final String SUBMIT_METHOD_PUT = "put";
-
- /**
- * __UNDOCUMENTED__
- */
- public static final String SUBMIT_METHOD_GET = "get";
-
- /**
- * __UNDOCUMENTED__
- */
- public static final String SUBMIT_METHOD_FORM_DATA_POST = "form-data-post";
-
- /**
- * __UNDOCUMENTED__
- */
- public static final String SUBMIT_METHOD_URLENCODED_POST =
- "urlencoded-post";
+ private static final String ALFRESCO_PREFIX = "alfresco";
private static final String PROPERTY_PREFIX =
"http://www.chiba.org/properties/schemaFormBuilder/";
@@ -182,7 +151,7 @@ public class SchemaFormBuilder
private static final String DEFAULT_LONG_LIST_MAX_SIZE = "6";
private final String action;
- private final String submitMethod;
+ private final SubmitMethod submitMethod;
private final String base;
protected WrapperElementsBuilder wrapper = new XHTMLWrapperElementsBuilder();
@@ -209,14 +178,14 @@ public class SchemaFormBuilder
/**
* Creates a new SchemaFormBuilder object.
*
- * @param rootElementName __UNDOCUMENTED__
- * @param instanceSource __UNDOCUMENTED__
- * @param action __UNDOCUMENTED__
- * @param submitMethod __UNDOCUMENTED__
- * @param wrapper __UNDOCUMENTED__
+ * @param rootElementName _UNDOCUMENTED_
+ * @param instanceSource _UNDOCUMENTED_
+ * @param action _UNDOCUMENTED_
+ * @param submitMethod _UNDOCUMENTED_
+ * @param wrapper _UNDOCUMENTED_
*/
public SchemaFormBuilder(final String action,
- final String submitMethod,
+ final SubmitMethod submitMethod,
final WrapperElementsBuilder wrapper,
final String base)
{
@@ -298,15 +267,13 @@ public class SchemaFormBuilder
final Element formSection = (Element)
xForm.getDocumentElement().getLastChild();
final Element modelSection = (Element)
- xForm.getDocumentElement().getElementsByTagNameNS(SchemaFormBuilder.XFORMS_NS, "model").item(0);
+ xForm.getDocumentElement().getElementsByTagNameNS(NamespaceConstants.XFORMS_NS, "model").item(0);
//add XMLSchema if we use schema types
- modelSection.setAttributeNS(SchemaFormBuilder.XFORMS_NS, "schema", "#schema-1");
+ modelSection.setAttributeNS(NamespaceConstants.XFORMS_NS, "schema", "#schema-1");
final Element importedSchemaDocumentElement = (Element)
xForm.importNode(schemaDocument.getDocumentElement(), true);
- importedSchemaDocumentElement.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- "id",
- "schema-1");
+ importedSchemaDocumentElement.setAttributeNS(null, "id", "schema-1");
modelSection.appendChild(importedSchemaDocumentElement);
@@ -347,15 +314,15 @@ public class SchemaFormBuilder
}
rootElementName = this.getElementName(rootElementDecl, xForm);
final Element instanceElement =
- xForm.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":instance");
+ xForm.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":instance");
modelSection.appendChild(instanceElement);
this.setXFormsId(instanceElement);
final Element defaultInstanceDocumentElement = xForm.createElement(rootElementName);
this.addNamespace(defaultInstanceDocumentElement,
- SchemaFormBuilder.XMLSCHEMA_INSTANCE_NS_PREFIX,
- SchemaFormBuilder.XMLSCHEMA_INSTANCE_NS);
+ NamespaceConstants.XMLSCHEMA_INSTANCE_PREFIX,
+ NamespaceConstants.XMLSCHEMA_INSTANCE_NS);
Element importedInstanceDocumentElement = null;
if (instanceDocument == null || instanceDocument.getDocumentElement() == null)
@@ -372,13 +339,13 @@ public class SchemaFormBuilder
xForm.importNode(instanceDocumentElement, true);
//add XMLSchema instance NS
this.addNamespace(importedInstanceDocumentElement,
- SchemaFormBuilder.XMLSCHEMA_INSTANCE_NS_PREFIX,
- SchemaFormBuilder.XMLSCHEMA_INSTANCE_NS);
+ NamespaceConstants.XMLSCHEMA_INSTANCE_PREFIX,
+ NamespaceConstants.XMLSCHEMA_INSTANCE_NS);
instanceElement.appendChild(importedInstanceDocumentElement);
final Element prototypeInstanceElement =
- xForm.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":instance");
+ xForm.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":instance");
modelSection.appendChild(prototypeInstanceElement);
this.setXFormsId(prototypeInstanceElement, "instance_prototype");
prototypeInstanceElement.appendChild(defaultInstanceDocumentElement);
@@ -400,37 +367,37 @@ public class SchemaFormBuilder
}
Element submitInfoElement =
- xForm.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":submission");
+ xForm.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":submission");
modelSection.appendChild(submitInfoElement);
- //submitInfoElement.setAttributeNS(SchemaFormBuilder.XFORMS_NS,SchemaFormBuilder.XFORMS_NS_PREFIX + ":id","save");
+ //submitInfoElement.setAttributeNS(NamespaceConstants.XFORMS_NS,NamespaceConstants.XFORMS_PREFIX + ":id","save");
String submissionId = this.setXFormsId(submitInfoElement);
//action
- submitInfoElement.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":action",
+ submitInfoElement.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":action",
this.action == null ? "" : this.base + this.action);
//method
- submitInfoElement.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":method",
- (this.submitMethod != null && this.submitMethod.length() != 0
+ submitInfoElement.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":method",
+ (this.submitMethod != null
? this.submitMethod
- : SchemaFormBuilder.SUBMIT_METHOD_POST));
+ : SchemaFormBuilder.SubmitMethod.POST).toString());
final Element submitButton =
- xForm.createElementNS(SchemaFormBuilder.XFORMS_NS, SchemaFormBuilder.XFORMS_NS_PREFIX + ":submit");
+ xForm.createElementNS(NamespaceConstants.XFORMS_NS, NamespaceConstants.XFORMS_PREFIX + ":submit");
final Element submitControlWrapper = this.wrapper.createControlsWrapper(submitButton);
formContentWrapper.appendChild(submitControlWrapper);
- submitButton.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":submission",
+ submitButton.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":submission",
submissionId);
this.setXFormsId(submitButton);
final Element submitButtonCaption =
- xForm.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":label");
+ xForm.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":label");
submitButton.appendChild(submitButtonCaption);
submitButtonCaption.appendChild(xForm.createTextNode("Submit"));
this.setXFormsId(submitButtonCaption);
@@ -493,7 +460,7 @@ public class SchemaFormBuilder
new LinkedList();
final Iterator it =
- prototypeContext.iteratePointers("//*[@" + SchemaFormBuilder.ALFRESCO_NS_PREFIX +
+ prototypeContext.iteratePointers("//*[@" + SchemaFormBuilder.ALFRESCO_PREFIX +
":prototype='true']");
while (it.hasNext())
{
@@ -590,9 +557,9 @@ public class SchemaFormBuilder
protected String setXFormsId(final Element el, String id)
{
- if (el.hasAttributeNS(SchemaFormBuilder.XFORMS_NS, "id"))
+ if (el.hasAttributeNS(null, "id"))
{
- el.removeAttributeNS(SchemaFormBuilder.XFORMS_NS, "id");
+ el.removeAttributeNS(null, "id");
}
if (id == null)
{
@@ -605,9 +572,7 @@ public class SchemaFormBuilder
id = name + "_" + count;
}
- el.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":id",
- id);
+ el.setAttributeNS(null, "id", id);
return id;
}
@@ -617,7 +582,7 @@ public class SchemaFormBuilder
private void resetXFormIds(final Element newControl)
{
if (newControl.getNamespaceURI() != null &&
- newControl.getNamespaceURI().equals(SchemaFormBuilder.XFORMS_NS))
+ newControl.getNamespaceURI().equals(NamespaceConstants.XFORMS_NS))
{
this.setXFormsId(newControl);
}
@@ -635,11 +600,11 @@ public class SchemaFormBuilder
}
/**
- * __UNDOCUMENTED__
+ * _UNDOCUMENTED_
*
- * @param xForm __UNDOCUMENTED__
- * @param choicesElement __UNDOCUMENTED__
- * @param choiceValues __UNDOCUMENTED__
+ * @param xForm _UNDOCUMENTED_
+ * @param choicesElement _UNDOCUMENTED_
+ * @param choiceValues _UNDOCUMENTED_
*/
protected void addChoicesForSelectControl(final Document xForm,
final Element choicesElement,
@@ -661,7 +626,7 @@ public class SchemaFormBuilder
this.createCaption(choice.getKey(),
choice.getValue(),
resourceBundle),
- this.createCaption(choice.getKey()));
+ choice.getKey());
choicesElement.appendChild(item);
}
}
@@ -704,30 +669,30 @@ public class SchemaFormBuilder
/// action in the case
- Element action = xForm.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":action");
+ Element action = xForm.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":action");
this.setXFormsId(action);
item.appendChild(action);
- action.setAttributeNS(SchemaFormBuilder.XMLEVENTS_NS,
- SchemaFormBuilder.XMLEVENTS_NS_PREFIX + ":event",
+ action.setAttributeNS(NamespaceConstants.XMLEVENTS_NS,
+ NamespaceConstants.XMLEVENTS_PREFIX + ":event",
"xforms-select");
- Element toggle = xForm.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":toggle");
+ Element toggle = xForm.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":toggle");
this.setXFormsId(toggle);
//build the case element
- Element caseElement = xForm.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":case");
+ Element caseElement = xForm.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":case");
String case_id = this.setXFormsId(caseElement);
result.put(textValue, caseElement);
- toggle.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":case",
+ toggle.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":case",
case_id);
- //toggle.setAttributeNS(SchemaFormBuilder.XFORMS_NS,SchemaFormBuilder.XFORMS_NS_PREFIX + ":case",bindIdPrefix + "_" + textValue +"_case");
+ //toggle.setAttributeNS(NamespaceConstants.XFORMS_NS,NamespaceConstants.XFORMS_PREFIX + ":case",bindIdPrefix + "_" + textValue +"_case");
action.appendChild(toggle);
}
return result;
@@ -828,18 +793,18 @@ public class SchemaFormBuilder
//find the existing bind Id
//(modelSection is the enclosing bind of the element)
- final NodeList binds = modelSection.getElementsByTagNameNS(SchemaFormBuilder.XFORMS_NS, "bind");
+ final NodeList binds = modelSection.getElementsByTagNameNS(NamespaceConstants.XFORMS_NS, "bind");
String bindId = null;
for (int j = 0; j < binds.getLength() && bindId == null; j++)
{
Element bind = (Element) binds.item(j);
- String nodeset = bind.getAttributeNS(SchemaFormBuilder.XFORMS_NS, "nodeset");
+ String nodeset = bind.getAttributeNS(NamespaceConstants.XFORMS_NS, "nodeset");
if (nodeset != null)
{
//remove "@" in nodeset
String name = nodeset.substring(1);
if (name.equals(attributeName))
- bindId = bind.getAttributeNS(SchemaFormBuilder.XFORMS_NS, "id");
+ bindId = bind.getAttributeNS(null, "id");
}
}
@@ -852,7 +817,7 @@ public class SchemaFormBuilder
JXPathContext context = JXPathContext.newContext(formSection.getOwnerDocument());
final Pointer pointer =
- context.getPointer("//*[@" + SchemaFormBuilder.XFORMS_NS_PREFIX + ":bind='" + bindId + "']");
+ context.getPointer("//*[@" + NamespaceConstants.XFORMS_PREFIX + ":bind='" + bindId + "']");
if (pointer != null)
control = (Element)pointer.getNode();
}
@@ -1226,13 +1191,13 @@ public class SchemaFormBuilder
}
Element control =
- xForm.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":select1");
+ xForm.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":select1");
String select1_id = this.setXFormsId(control);
Element choices =
- xForm.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":choices");
+ xForm.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":choices");
this.setXFormsId(choices);
//get possible values
@@ -1257,8 +1222,8 @@ public class SchemaFormBuilder
{
String caption = this.createCaption(elementDecl.getName() + " Type");
Element controlCaption =
- xForm.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":label");
+ xForm.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":label");
control.appendChild(controlCaption);
this.setXFormsId(controlCaption);
controlCaption.appendChild(xForm.createTextNode(caption));
@@ -1266,31 +1231,31 @@ public class SchemaFormBuilder
// multiple compatible types for this element exist
// in the schema - allow the user to choose from
// between compatible non-abstract types
- Element bindElement = xForm.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":bind");
+ Element bindElement = xForm.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":bind");
String bindId = this.setXFormsId(bindElement);
- bindElement.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":nodeset",
+ bindElement.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":nodeset",
pathToRoot + "/@xsi:type");
modelSection.appendChild(bindElement);
- control.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":bind",
+ control.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":bind",
bindId);
//add the "element" bind, in addition
- Element bindElement2 = xForm.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":bind");
+ Element bindElement2 = xForm.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":bind");
String bindId2 = this.setXFormsId(bindElement2);
- bindElement2.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":nodeset",
+ bindElement2.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":nodeset",
pathToRoot);
modelSection.appendChild(bindElement2);
- control.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":appearance",
+ control.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":appearance",
(enumValues.size() < Long.parseLong(getProperty(SELECTONE_LONG_LIST_SIZE_PROP))
? getProperty(SELECTONE_UI_CONTROL_SHORT_PROP)
: getProperty(SELECTONE_UI_CONTROL_LONG_PROP)));
@@ -1306,19 +1271,19 @@ public class SchemaFormBuilder
choices.appendChild(item);
// not(purchaseOrder/state = '[Choose State]')
- //String isValidExpr = "not(" + bindElement.getAttributeNS(SchemaFormBuilder.XFORMS_NS, "nodeset") + " = '" + pleaseSelect + "')";
+ //String isValidExpr = "not(" + bindElement.getAttributeNS(NamespaceConstants.XFORMS_NS, "nodeset") + " = '" + pleaseSelect + "')";
// ->no, not(. = '[Choose State]')
String isValidExpr = "not( . = '" + pleaseSelect + "')";
//check if there was a constraint
- String constraint = bindElement.getAttributeNS(SchemaFormBuilder.XFORMS_NS, "constraint");
+ String constraint = bindElement.getAttributeNS(NamespaceConstants.XFORMS_NS, "constraint");
constraint = (constraint != null && constraint.length() != 0
? constraint + " && " + isValidExpr
: isValidExpr);
- bindElement.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":constraint",
+ bindElement.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":constraint",
constraint);
}
@@ -1335,35 +1300,35 @@ public class SchemaFormBuilder
/////////////////
//add a trigger for this control (is there a way to not need it ?)
- Element trigger = xForm.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":trigger");
+ Element trigger = xForm.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":trigger");
formSection.appendChild(trigger);
this.setXFormsId(trigger);
- Element label_trigger = xForm.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":label");
+ Element label_trigger = xForm.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":label");
this.setXFormsId(label_trigger);
trigger.appendChild(label_trigger);
String trigger_caption = this.createCaption("validate choice");
label_trigger.appendChild(xForm.createTextNode(trigger_caption));
- Element action_trigger = xForm.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":action");
+ Element action_trigger = xForm.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":action");
this.setXFormsId(action_trigger);
trigger.appendChild(action_trigger);
- Element dispatch_trigger = xForm.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":dispatch");
+ Element dispatch_trigger = xForm.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":dispatch");
this.setXFormsId(dispatch_trigger);
action_trigger.appendChild(dispatch_trigger);
- dispatch_trigger.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":name",
+ dispatch_trigger.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":name",
"DOMActivate");
- dispatch_trigger.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":target",
+ dispatch_trigger.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":target",
select1_id);
/////////////////
//add switch
- Element switchElement = xForm.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":switch");
+ Element switchElement = xForm.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":switch");
this.setXFormsId(switchElement);
Element switchControlWrapper =
@@ -1408,8 +1373,8 @@ public class SchemaFormBuilder
type.getTypeCategory() == XSTypeDefinition.COMPLEX_TYPE)
{
- //Element caseElement = (Element) xForm.createElementNS(SchemaFormBuilder.XFORMS_NS,SchemaFormBuilder.XFORMS_NS_PREFIX + ":case");
- //caseElement.setAttributeNS(SchemaFormBuilder.XFORMS_NS,SchemaFormBuilder.XFORMS_NS_PREFIX + ":id",bindId + "_" + type.getName() +"_case");
+ //Element caseElement = (Element) xForm.createElementNS(NamespaceConstants.XFORMS_NS,NamespaceConstants.XFORMS_PREFIX + ":case");
+ //caseElement.setAttributeNS(NamespaceConstants.XFORMS_NS,NamespaceConstants.XFORMS_PREFIX + ":id",bindId + "_" + type.getName() +"_case");
//String case_id=this.setXFormsId(caseElement);
Element caseElement = caseTypes.get(type.getName());
switchElement.appendChild(caseElement);
@@ -1433,12 +1398,12 @@ public class SchemaFormBuilder
{
LOGGER.debug(FormsService.getInstance().writeXMLToString(bindElement2));
}
- NodeList binds = bindElement2.getElementsByTagNameNS(SchemaFormBuilder.XFORMS_NS, "bind");
+ NodeList binds = bindElement2.getElementsByTagNameNS(NamespaceConstants.XFORMS_NS, "bind");
Element thisBind = null;
for (int i = 0; i < binds.getLength() && thisBind == null; i++)
{
Element subBind = (Element) binds.item(i);
- String name = subBind.getAttributeNS(SchemaFormBuilder.XFORMS_NS, "nodeset");
+ String name = subBind.getAttributeNS(NamespaceConstants.XFORMS_NS, "nodeset");
if (LOGGER.isDebugEnabled())
LOGGER.debug("Testing sub-bind with nodeset " + name);
@@ -1473,13 +1438,13 @@ public class SchemaFormBuilder
}
//change relevant attribute
- String relevant = subBind.getAttributeNS(SchemaFormBuilder.XFORMS_NS, "relevant");
+ String relevant = subBind.getAttributeNS(NamespaceConstants.XFORMS_NS, "relevant");
if (relevant != null && relevant.length() != 0)
newRelevant = ("(" + relevant +
") and " + newRelevant);
if (newRelevant != null && newRelevant.length() != 0)
- subBind.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":relevant",
+ subBind.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":relevant",
newRelevant);
}
}
@@ -1510,11 +1475,11 @@ public class SchemaFormBuilder
// create the element and add it to the model.
final Element bindElement =
- xForm.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":bind");
+ xForm.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":bind");
final String bindId = this.setXFormsId(bindElement);
- bindElement.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":nodeset",
+ bindElement.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":nodeset",
pathToRoot);
modelSection.appendChild(bindElement);
@@ -1645,14 +1610,14 @@ public class SchemaFormBuilder
//find the existing bind Id
//(modelSection is the enclosing bind of the element)
- NodeList binds = modelSection.getElementsByTagNameNS(SchemaFormBuilder.XFORMS_NS, "bind");
+ NodeList binds = modelSection.getElementsByTagNameNS(NamespaceConstants.XFORMS_NS, "bind");
String bindId = null;
for (int i = 0; i < binds.getLength() && bindId == null; i++)
{
Element bind = (Element)binds.item(i);
- String nodeset = bind.getAttributeNS(SchemaFormBuilder.XFORMS_NS, "nodeset");
+ String nodeset = bind.getAttributeNS(NamespaceConstants.XFORMS_NS, "nodeset");
if (nodeset != null && nodeset.equals(element.getName()))
- bindId = bind.getAttributeNS(SchemaFormBuilder.XFORMS_NS, "id");
+ bindId = bind.getAttributeNS(null, "id");
}
//find the control
@@ -1665,7 +1630,7 @@ public class SchemaFormBuilder
final JXPathContext context =
JXPathContext.newContext(formSection.getOwnerDocument());
final Pointer pointer =
- context.getPointer("//*[@" + SchemaFormBuilder.XFORMS_NS_PREFIX + ":bind='" + bindId + "']");
+ context.getPointer("//*[@" + NamespaceConstants.XFORMS_PREFIX + ":bind='" + bindId + "']");
if (pointer != null)
control = (Element) pointer.getNode();
}
@@ -1726,7 +1691,7 @@ public class SchemaFormBuilder
if (i == elementOccurs.minimum)
{
e.setAttributeNS(SchemaFormBuilder.ALFRESCO_NS,
- SchemaFormBuilder.ALFRESCO_NS_PREFIX + ":prototype",
+ SchemaFormBuilder.ALFRESCO_PREFIX + ":prototype",
"true");
}
defaultInstanceElement.appendChild(e);
@@ -1765,11 +1730,11 @@ public class SchemaFormBuilder
controlType.getName() + ", maxOccurs=" + o.maximum);
final Element repeatSection =
- xForm.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":repeat");
+ xForm.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":repeat");
//bind instead of repeat
- //repeatSection.setAttributeNS(SchemaFormBuilder.XFORMS_NS,SchemaFormBuilder.XFORMS_NS_PREFIX + ":nodeset",pathToRoot);
+ //repeatSection.setAttributeNS(NamespaceConstants.XFORMS_NS,NamespaceConstants.XFORMS_PREFIX + ":nodeset",pathToRoot);
// bind -> last element in the modelSection
Element bind = DOMUtil.getLastChildElement(modelSection);
String bindId = null;
@@ -1777,7 +1742,7 @@ public class SchemaFormBuilder
if (bind != null &&
bind.getLocalName() != null &&
"bind".equals(bind.getLocalName()))
- bindId = bind.getAttributeNS(SchemaFormBuilder.XFORMS_NS, "id");
+ bindId = bind.getAttributeNS(null, "id");
else
{
LOGGER.warn("addRepeatIfNecessary: bind not found: " + bind
@@ -1789,19 +1754,19 @@ public class SchemaFormBuilder
if (bind != null &&
bind.getLocalName() != null &&
"bind".equals(bind.getLocalName()))
- bindId = bind.getAttributeNS(SchemaFormBuilder.XFORMS_NS, "id");
+ bindId = bind.getAttributeNS(null, "id");
else
LOGGER.warn("addRepeatIfNecessary: bind really not found");
}
- repeatSection.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":bind",
+ repeatSection.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":bind",
bindId);
this.setXFormsId(repeatSection);
//appearance=full is more user friendly
- repeatSection.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":appearance",
+ repeatSection.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":appearance",
"full");
final Element controlWrapper =
@@ -1809,8 +1774,8 @@ public class SchemaFormBuilder
formSection.appendChild(controlWrapper);
//add a group inside the repeat?
- final Element group = xForm.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":group");
+ final Element group = xForm.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":group");
this.setXFormsId(group);
repeatSection.appendChild(group);
return group;
@@ -1843,8 +1808,8 @@ public class SchemaFormBuilder
}
// create the element and add it to the model.
- Element bindElement = xForm.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":bind");
+ Element bindElement = xForm.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":bind");
String bindId = this.setXFormsId(bindElement);
modelSection.appendChild(bindElement);
bindElement = this.startBindElement(bindElement, schema, controlType, owner, pathToRoot, o);
@@ -1882,11 +1847,11 @@ public class SchemaFormBuilder
//if there is a repeat -> create another bind with "."
Element bindElement2 =
- xForm.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":bind");
+ xForm.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":bind");
String bindId2 = this.setXFormsId(bindElement2);
- bindElement2.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":nodeset",
+ bindElement2.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":nodeset",
".");
bindElement.appendChild(bindElement2);
@@ -1912,8 +1877,8 @@ public class SchemaFormBuilder
// not sure if this is a workaround or this is just the way XForms works...
//
// if (!repeatSection.equals(formSection))
-// formControl.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
-// SchemaFormBuilder.XFORMS_NS_PREFIX + ":ref",
+// formControl.setAttributeNS(NamespaceConstants.XFORMS_NS,
+// NamespaceConstants.XFORMS_PREFIX + ":ref",
// ".");
Element hint = this.createHint(xForm, owner, resourceBundle);
@@ -2013,8 +1978,8 @@ public class SchemaFormBuilder
}
this.startFormControl(formControl, controlType);
- formControl.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":bind",
+ formControl.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":bind",
bindId);
// TODO: Enhance alert statement based on facet restrictions.
@@ -2023,8 +1988,8 @@ public class SchemaFormBuilder
//
// e.g. Please provide a valid value for 'Address'. 'Address' is a mandatory decimal field.
//
- final Element alertElement = xForm.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":alert");
+ final Element alertElement = xForm.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":alert");
formControl.appendChild(alertElement);
this.setXFormsId(alertElement);
@@ -2073,22 +2038,35 @@ public class SchemaFormBuilder
//local type name
String localTypeName = typeName;
- int index = typeName.indexOf(":");
+ final int index = typeName.indexOf(':');
if (index > -1 && typeName.length() > index)
+ {
localTypeName = typeName.substring(index + 1);
-
- //namespace prefix in this document
- String prefix = NamespaceCtx.getPrefix(context, typeNS);
+ }
//completeTypeName = new prefix + local name
String result = localTypeName;
- if (prefix != null && prefix.length() != 0)
- result = prefix + ":" + localTypeName;
+ if (typeNS != null)
+ {
+ //namespace prefix in this document
+ if (LOGGER.isDebugEnabled())
+ {
+ LOGGER.debug("resolving namespace prefix for uri " + typeNS +
+ " using document element " + context);
+ }
+ final String prefix = NamespaceResolver.getPrefix(context, typeNS);
+ if (prefix != null && prefix.length() != 0)
+ {
+ result = prefix + ":" + localTypeName;
+ }
+ }
if (LOGGER.isDebugEnabled())
+ {
LOGGER.debug("getXFormsTypeName: typeName=" + typeName +
", typeNS=" + typeNS +
", result=" + result);
+ }
return result;
}
@@ -2098,25 +2076,27 @@ public class SchemaFormBuilder
final Element envelopeElement = this.wrapper.createEnvelope(xformsDocument);
this.addNamespace(envelopeElement,
- SchemaFormBuilder.XFORMS_NS_PREFIX,
- SchemaFormBuilder.XFORMS_NS);
+ NamespaceConstants.XFORMS_PREFIX,
+ NamespaceConstants.XFORMS_NS);
this.addNamespace(envelopeElement,
- SchemaFormBuilder.XMLEVENTS_NS_PREFIX,
- SchemaFormBuilder.XMLEVENTS_NS);
+ NamespaceConstants.XMLEVENTS_PREFIX,
+ NamespaceConstants.XMLEVENTS_NS);
this.addNamespace(envelopeElement,
- SchemaFormBuilder.XMLSCHEMA_INSTANCE_NS_PREFIX,
- SchemaFormBuilder.XMLSCHEMA_INSTANCE_NS);
+ NamespaceConstants.XMLSCHEMA_INSTANCE_PREFIX,
+ NamespaceConstants.XMLSCHEMA_INSTANCE_NS);
this.addNamespace(envelopeElement,
- SchemaFormBuilder.ALFRESCO_NS_PREFIX,
+ SchemaFormBuilder.ALFRESCO_PREFIX,
SchemaFormBuilder.ALFRESCO_NS);
//base
if (this.base != null && this.base.length() != 0)
- envelopeElement.setAttributeNS(XML_NAMESPACE_URI, "xml:base", this.base);
+ envelopeElement.setAttributeNS(NamespaceConstants.XML_NS,
+ NamespaceConstants.XML_PREFIX + ":base",
+ this.base);
//model element
- Element modelElement = xformsDocument.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":model");
+ Element modelElement = xformsDocument.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":model");
this.setXFormsId(modelElement);
Element modelWrapper = this.wrapper.createModelWrapper(modelElement);
envelopeElement.appendChild(modelWrapper);
@@ -2137,8 +2117,8 @@ public class SchemaFormBuilder
{
// add a group node and recurse
Element groupElement =
- xformsDocument.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":group");
+ xformsDocument.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":group");
groupElement = startFormGroup(groupElement, owner);
if (groupElement == null)
@@ -2153,8 +2133,8 @@ public class SchemaFormBuilder
formSection.appendChild(controlsWrapper);
Element captionElement =
- xformsDocument.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":label");
+ xformsDocument.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":label");
groupElement.appendChild(captionElement);
this.setXFormsId(captionElement);
captionElement.appendChild(xformsDocument.createTextNode(this.createCaption(owner, resourceBundle)));
@@ -2281,16 +2261,16 @@ public class SchemaFormBuilder
String caption,
XSTypeDefinition controlType)
{
- Element control = xformsDocument.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":textarea");
+ Element control = xformsDocument.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":textarea");
this.setXFormsId(control);
// control.setAttributeNS(SchemaFormBuilder.CHIBA_NS,
-// SchemaFormBuilder.CHIBA_NS_PREFIX + "height",
+// SchemaFormBuilder.CHIBA_PREFIX + "height",
// "3");
//label
- Element captionElement = xformsDocument.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":label");
+ Element captionElement = xformsDocument.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":label");
control.appendChild(captionElement);
this.setXFormsId(captionElement);
captionElement.appendChild(xformsDocument.createTextNode(caption));
@@ -2320,8 +2300,8 @@ public class SchemaFormBuilder
if ("boolean".equals(controlType.getName()))
{
- control = xformsDocument.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":select1");
+ control = xformsDocument.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":select1");
this.setXFormsId(control);
final String[] values = { "true", "false" };
for (String v : values)
@@ -2332,26 +2312,26 @@ public class SchemaFormBuilder
}
else if ("anyURI".equals(controlType.getName()))
{
- control = xformsDocument.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":upload");
- final Element e = xformsDocument.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":filename");
+ control = xformsDocument.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":upload");
+ final Element e = xformsDocument.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":filename");
control.appendChild(e);
- e.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":ref",
+ e.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":ref",
".");
this.setXFormsId(control);
}
else
{
- control = xformsDocument.createElementNS(SchemaFormBuilder.XFORMS_NS, SchemaFormBuilder.XFORMS_NS_PREFIX + ":input");
+ control = xformsDocument.createElementNS(NamespaceConstants.XFORMS_NS, NamespaceConstants.XFORMS_PREFIX + ":input");
this.setXFormsId(control);
}
//label
final Element captionElement =
- xformsDocument.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":label");
+ xformsDocument.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":label");
control.appendChild(captionElement);
this.setXFormsId(captionElement);
captionElement.appendChild(xformsDocument.createTextNode(caption));
@@ -2393,19 +2373,19 @@ public class SchemaFormBuilder
if (enumFacets.getLength() <= 0)
return null;
- Element control = xformsDocument.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":select1");
+ Element control = xformsDocument.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":select1");
this.setXFormsId(control);
//label
- Element captionElement1 = xformsDocument.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":label");
+ Element captionElement1 = xformsDocument.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":label");
control.appendChild(captionElement1);
this.setXFormsId(captionElement1);
captionElement1.appendChild(xformsDocument.createTextNode(caption));
- Element choices = xformsDocument.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":choices");
+ Element choices = xformsDocument.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":choices");
this.setXFormsId(choices);
final XSObjectList mvFacets = controlType.getMultiValueFacets();
@@ -2425,8 +2405,8 @@ public class SchemaFormBuilder
: null));
}
- control.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":appearance",
+ control.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":appearance",
(enumFacets.getLength() < Long.parseLong(getProperty(SELECTONE_LONG_LIST_SIZE_PROP))
? getProperty(SELECTONE_UI_CONTROL_SHORT_PROP)
: getProperty(SELECTONE_UI_CONTROL_LONG_PROP)));
@@ -2442,19 +2422,19 @@ public class SchemaFormBuilder
choices.appendChild(item);
// not(purchaseOrder/state = '[Choose State]')
- //String isValidExpr = "not(" + bindElement.getAttributeNS(SchemaFormBuilder.XFORMS_NS,"nodeset") + " = '" + pleaseSelect + "')";
+ //String isValidExpr = "not(" + bindElement.getAttributeNS(NamespaceConstants.XFORMS_NS,"nodeset") + " = '" + pleaseSelect + "')";
// ->no, not(. = '[Choose State]')
final String isValidExpr = "not( . = '" + pleaseSelect + "')";
//check if there was a constraint
- String constraint = bindElement.getAttributeNS(SchemaFormBuilder.XFORMS_NS, "constraint");
+ String constraint = bindElement.getAttributeNS(NamespaceConstants.XFORMS_NS, "constraint");
constraint = (constraint != null && constraint.length() != 0
? constraint + " and " + isValidExpr
: isValidExpr);
- bindElement.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":constraint",
+ bindElement.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":constraint",
constraint);
}
@@ -2495,13 +2475,13 @@ public class SchemaFormBuilder
final StringList enumFacets = controlType.getLexicalEnumeration();
if (enumFacets.getLength() <= 0)
return null;
- Element control = xformsDocument.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":select");
+ Element control = xformsDocument.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":select");
this.setXFormsId(control);
//label
- Element captionElement = xformsDocument.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":label");
+ Element captionElement = xformsDocument.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":label");
control.appendChild(captionElement);
this.setXFormsId(captionElement);
captionElement.appendChild(xformsDocument.createTextNode(caption));
@@ -2529,13 +2509,13 @@ public class SchemaFormBuilder
//
// For now, use checkbox if there are < DEFAULT_LONG_LIST_MAX_SIZE items, otherwise use long control
//
- control.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":appearance",
+ control.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":appearance",
(enumValues.size() < Long.parseLong(getProperty(SELECTMANY_LONG_LIST_SIZE_PROP))
? getProperty(SELECTMANY_UI_CONTROL_SHORT_PROP)
: getProperty(SELECTMANY_UI_CONTROL_LONG_PROP)));
- Element choices = xformsDocument.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":choices");
+ Element choices = xformsDocument.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":choices");
this.setXFormsId(choices);
control.appendChild(choices);
@@ -2570,8 +2550,8 @@ public class SchemaFormBuilder
if (s == null)
return null;
final Element hintElement =
- xformsDocument.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":hint");
+ xformsDocument.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":hint");
this.setXFormsId(hintElement);
hintElement.appendChild(xformsDocument.createTextNode(s));
return hintElement;
@@ -2647,8 +2627,8 @@ public class SchemaFormBuilder
if (o.isRepeated())
nodeset = pathToRoot + "[position() != last()]";
- bindElement.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":nodeset",
+ bindElement.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":nodeset",
nodeset);
if (!"anyType".equals(controlType.getName()) &&
@@ -2658,8 +2638,8 @@ public class SchemaFormBuilder
schema,
controlType);
if (typeName != null && typeName.length() != 0)
- bindElement.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":type",
+ bindElement.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":type",
typeName);
}
@@ -2672,12 +2652,12 @@ public class SchemaFormBuilder
? ((XSAttributeUse)owner).getConstraintType()
: XSConstants.VC_NONE)));
- bindElement.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":readonly",
+ bindElement.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":readonly",
(constraintType == XSConstants.VC_FIXED) + "()");
- bindElement.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":required",
+ bindElement.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":required",
(o.minimum != 0) + "()");
//no more minOccurs & maxOccurs element: add a constraint if maxOccurs>1:
@@ -2690,7 +2670,7 @@ public class SchemaFormBuilder
//if 0 or 1 -> no constraint (managed by "required")
minConstraint = "count(.) >= " + o.minimum;
bindElement.setAttributeNS(ALFRESCO_NS,
- ALFRESCO_NS_PREFIX + ":minimum",
+ ALFRESCO_PREFIX + ":minimum",
String.valueOf(o.minimum));
}
if (o.maximum > 1)
@@ -2698,7 +2678,7 @@ public class SchemaFormBuilder
//if 1 or unbounded -> no constraint
maxConstraint = "count(.) <= " + o.maximum;
bindElement.setAttributeNS(ALFRESCO_NS,
- ALFRESCO_NS_PREFIX + ":maximum",
+ ALFRESCO_PREFIX + ":maximum",
String.valueOf(o.maximum));
}
@@ -2708,8 +2688,8 @@ public class SchemaFormBuilder
? minConstraint
: maxConstraint));
if (constraint != null)
- bindElement.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":constraint",
+ bindElement.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":constraint",
constraint);
return bindElement;
}
@@ -2770,16 +2750,16 @@ public class SchemaFormBuilder
if ((prefix = (String) namespacePrefixes.get(namespace)) == null)
{
String basePrefix = (namespace.substring(namespace.lastIndexOf('/', namespace.length()-2)+1));
- int i=1;
+ int i = 1;
prefix = basePrefix;
while (namespacePrefixes.containsValue(prefix))
{
prefix = basePrefix + (i++);
}
namespacePrefixes.put(namespace, prefix);
- xformsDocument.getDocumentElement().setAttributeNS(XMLNS_NAMESPACE_URI,
- "xmlns:" + prefix,
- namespace);
+ xformsDocument.getDocumentElement().setAttributeNS(NamespaceConstants.XMLNS_NS,
+ NamespaceConstants.XMLNS_PREFIX + ':' + prefix,
+ namespace);
}
elementName = prefix + ":" + elementName;
}
@@ -2790,29 +2770,31 @@ public class SchemaFormBuilder
final String nsPrefix,
final String ns)
{
- if (!e.hasAttributeNS(XMLNS_NAMESPACE_URI, nsPrefix))
- e.setAttributeNS(XMLNS_NAMESPACE_URI, "xmlns:" + nsPrefix, ns);
+ if (!e.hasAttributeNS(NamespaceConstants.XMLNS_NS, nsPrefix))
+ e.setAttributeNS(NamespaceConstants.XMLNS_NS,
+ NamespaceConstants.XMLNS_PREFIX + ':' + nsPrefix,
+ ns);
}
private void createTriggersForRepeats(final Document xformsDocument)
{
LOGGER.debug("creating triggers for repeats");
final HashMap bindIdToBind = new HashMap();
- final NodeList binds = xformsDocument.getElementsByTagNameNS(SchemaFormBuilder.XFORMS_NS, "bind");
+ final NodeList binds = xformsDocument.getElementsByTagNameNS(NamespaceConstants.XFORMS_NS, "bind");
for (int i = 0; i < binds.getLength(); i++)
{
final Element b = (Element)binds.item(i);
- LOGGER.debug("adding bind " + b.getAttributeNS(SchemaFormBuilder.XFORMS_NS, "id"));
- bindIdToBind.put(b.getAttributeNS(SchemaFormBuilder.XFORMS_NS, "id"), b);
+ LOGGER.debug("adding bind " + b.getAttributeNS(null, "id"));
+ bindIdToBind.put(b.getAttributeNS(null, "id"), b);
}
- final NodeList repeats = xformsDocument.getElementsByTagNameNS(SchemaFormBuilder.XFORMS_NS, "repeat");
+ final NodeList repeats = xformsDocument.getElementsByTagNameNS(NamespaceConstants.XFORMS_NS, "repeat");
final HashMap bindToRepeat = new HashMap();
for (int i = 0; i < repeats.getLength(); i++)
{
Element r = (Element)repeats.item(i);
- LOGGER.debug("processing repeat " + r.getAttributeNS(SchemaFormBuilder.XFORMS_NS, "id"));
- Element bind = bindIdToBind.get(r.getAttributeNS(SchemaFormBuilder.XFORMS_NS, "bind"));
+ LOGGER.debug("processing repeat " + r.getAttributeNS(null, "id"));
+ Element bind = bindIdToBind.get(r.getAttributeNS(NamespaceConstants.XFORMS_NS, "bind"));
bindToRepeat.put(bind, r);
String xpath = "";
@@ -2824,23 +2806,23 @@ public class SchemaFormBuilder
xpath = '/' + xpath;
}
- LOGGER.debug("walking bind " + bind.getAttributeNS(SchemaFormBuilder.XFORMS_NS, "id"));
- String s = bind.getAttributeNS(SchemaFormBuilder.XFORMS_NS, "nodeset");
+ LOGGER.debug("walking bind " + bind.getAttributeNS(null, "id"));
+ String s = bind.getAttributeNS(NamespaceConstants.XFORMS_NS, "nodeset");
s = s.replaceAll("^([^\\[]+).*$", "$1");
if (bindToRepeat.containsKey(bind) && !r.equals(bindToRepeat.get(bind)))
{
- s += "[index(\'" + bindToRepeat.get(bind).getAttributeNS(SchemaFormBuilder.XFORMS_NS, "id") + "\')]";
+ s += "[index(\'" + bindToRepeat.get(bind).getAttributeNS(null, "id") + "\')]";
}
xpath = s + xpath;
- bind = ((SchemaFormBuilder.XFORMS_NS_PREFIX + ":bind").equals(bind.getParentNode().getNodeName())
+ bind = ((NamespaceConstants.XFORMS_PREFIX + ":bind").equals(bind.getParentNode().getNodeName())
? (Element)bind.getParentNode()
: null);
}
while (bind != null);
this.createTriggersForRepeat(xformsDocument,
- r.getAttributeNS(SchemaFormBuilder.XFORMS_NS, "id"),
+ r.getAttributeNS(null, "id"),
xpath,
- r.getAttributeNS(SchemaFormBuilder.XFORMS_NS, "bind"));
+ r.getAttributeNS(NamespaceConstants.XFORMS_NS, "bind"));
}
}
@@ -2851,18 +2833,18 @@ public class SchemaFormBuilder
final Element action)
{
final Element trigger =
- xformsDocument.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":trigger");
+ xformsDocument.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":trigger");
this.setXFormsId(trigger, id != null ? id : null);
//copy the bind attribute
- trigger.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":bind",
+ trigger.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":bind",
bindId);
//label insert
final Element triggerLabel =
- xformsDocument.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":label");
+ xformsDocument.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":label");
this.setXFormsId(triggerLabel);
trigger.appendChild(triggerLabel);
@@ -2870,8 +2852,8 @@ public class SchemaFormBuilder
//insert action
final Element actionWrapper =
- xformsDocument.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":action");
+ xformsDocument.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":action");
actionWrapper.appendChild(action);
trigger.appendChild(action);
this.setXFormsId(action);
@@ -2892,16 +2874,16 @@ public class SchemaFormBuilder
//trigger insert
Element action =
- xformsDocument.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":insert");
- action.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":nodeset",
+ xformsDocument.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":insert");
+ action.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":nodeset",
nodeset);
- action.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":position",
+ action.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":position",
"before");
- action.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":at",
+ action.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":at",
"1");
final Element trigger_insert_before =
@@ -2911,17 +2893,17 @@ public class SchemaFormBuilder
"insert at beginning",
action);
- action = xformsDocument.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":insert");
- action.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":nodeset",
+ action = xformsDocument.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":insert");
+ action.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":nodeset",
nodeset);
- action.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":position",
+ action.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":position",
"after");
- action.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":at",
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":index('" + repeatId + "')");
+ action.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":at",
+ NamespaceConstants.XFORMS_PREFIX + ":index('" + repeatId + "')");
final Element trigger_insert_after =
this.createTriggerForRepeat(xformsDocument,
@@ -2931,14 +2913,14 @@ public class SchemaFormBuilder
action);
//trigger delete
- action = xformsDocument.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":delete");
- action.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":nodeset",
+ action = xformsDocument.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":delete");
+ action.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":nodeset",
nodeset);
- action.setAttributeNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":at",
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":index('" + repeatId + "')");
+ action.setAttributeNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":at",
+ NamespaceConstants.XFORMS_PREFIX + ":index('" + repeatId + "')");
final Element trigger_delete =
this.createTriggerForRepeat(xformsDocument,
@@ -2976,17 +2958,17 @@ public class SchemaFormBuilder
final String label,
final String value)
{
- final Element item = xformsDocument.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":item");
+ final Element item = xformsDocument.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":item");
this.setXFormsId(item);
- Element e = xformsDocument.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":label");
+ Element e = xformsDocument.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":label");
this.setXFormsId(e);
e.appendChild(xformsDocument.createTextNode(label));
item.appendChild(e);
- e = xformsDocument.createElementNS(SchemaFormBuilder.XFORMS_NS,
- SchemaFormBuilder.XFORMS_NS_PREFIX + ":value");
+ e = xformsDocument.createElementNS(NamespaceConstants.XFORMS_NS,
+ NamespaceConstants.XFORMS_PREFIX + ":value");
this.setXFormsId(e);
e.appendChild(xformsDocument.createTextNode(value));
item.appendChild(e);
diff --git a/source/java/org/alfresco/web/forms/xforms/XFormsBean.java b/source/java/org/alfresco/web/forms/xforms/XFormsBean.java
index df269f3c7f..9cb5f40325 100644
--- a/source/java/org/alfresco/web/forms/xforms/XFormsBean.java
+++ b/source/java/org/alfresco/web/forms/xforms/XFormsBean.java
@@ -18,10 +18,14 @@ package org.alfresco.web.forms.xforms;
import java.io.*;
import java.util.*;
+
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
+
+import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
+
import org.alfresco.model.ContentModel;
import org.alfresco.repo.avm.AVMNodeConverter;
import org.alfresco.repo.content.MimetypeMap;
@@ -40,23 +44,29 @@ import org.alfresco.web.bean.wcm.AVMBrowseBean;
import org.alfresco.web.bean.wcm.AVMConstants;
import org.alfresco.web.forms.*;
import org.alfresco.web.ui.common.Utils;
+
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.servlet.ServletRequestContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+
+import org.chiba.xml.events.ChibaEventNames;
+import org.chiba.xml.events.DOMEventNames;
+import org.chiba.xml.events.XFormsEventNames;
+import org.chiba.xml.events.XMLEvent;
import org.chiba.xml.xforms.ChibaBean;
-import org.chiba.xml.xforms.Instance;
import org.chiba.xml.xforms.XFormsElement;
import org.chiba.xml.xforms.connector.http.AbstractHTTPConnector;
+import org.chiba.xml.xforms.core.Instance;
import org.chiba.xml.xforms.core.ModelItem;
-import org.chiba.xml.xforms.events.XFormsEvent;
-import org.chiba.xml.xforms.events.XFormsEventFactory;
import org.chiba.xml.xforms.exception.XFormsException;
import org.chiba.xml.xforms.ui.BoundElement;
import org.chiba.xml.xforms.ui.Upload;
+import org.chiba.xml.ns.NamespaceConstants;
import org.springframework.util.FileCopyUtils;
+
import org.w3c.dom.*;
import org.w3c.dom.bootstrap.DOMImplementationRegistry;
import org.w3c.dom.events.Event;
@@ -85,7 +95,7 @@ public class XFormsBean
private ChibaBean chibaBean;
private final SchemaFormBuilder schemaFormBuilder;
private final HashMap uploads = new HashMap();
- private final List eventLog = new LinkedList();
+ private final List eventLog = new LinkedList();
public XFormsSession(final Document formInstanceData,
final Form form,
@@ -95,7 +105,7 @@ public class XFormsBean
this.form = form;
this.schemaFormBuilder =
new SchemaFormBuilder("/ajax/invoke/XFormsBean.handleAction",
- SchemaFormBuilder.SUBMIT_METHOD_POST,
+ SchemaFormBuilder.SubmitMethod.POST,
new XHTMLWrapperElementsBuilder(),
baseUrl);
}
@@ -177,7 +187,8 @@ public class XFormsBean
/** @param xformsSession the current session */
public void setXFormsSession(final XFormsSession xformsSession)
- throws XFormsException
+ throws FormBuilderException,
+ XFormsException
{
this.xformsSession = xformsSession;
@@ -185,87 +196,47 @@ public class XFormsBean
final ExternalContext externalContext = facesContext.getExternalContext();
final HttpServletRequest request = (HttpServletRequest)
externalContext.getRequest();
-
+ final ServletContext servletContext = (ServletContext)
+ externalContext.getContext();
+
final ChibaBean chibaBean = new ChibaBean();
+ chibaBean.setConfig(servletContext.getRealPath("/WEB-INF/chiba.xml"));
XFormsBean.storeCookies(request.getCookies(), chibaBean);
+ chibaBean.setXMLContainer(this.getXFormsDocument());
- final String cwdAVMPath = this.avmBrowseBean.getCurrentPath();
-
- if (LOGGER.isDebugEnabled())
+ final EventTarget et = (EventTarget)
+ chibaBean.getXMLContainer().getDocumentElement();
+ final EventListener el = new EventListener()
{
- LOGGER.debug("building xform for schema " + this.xformsSession.form.getName() +
- " root element " + this.xformsSession.form.getSchemaRootElementName() +
- " avm cwd " + cwdAVMPath);
- }
-
- final Locale locale = Application.getLanguage(facesContext);
- final ResourceBundle resourceBundle =
- this.schema2XFormsProperties.getResourceBundle(this.xformsSession.form,
- locale);
-
- try
- {
- final Document schemaDocument = this.xformsSession.form.getSchema();
- XFormsBean.rewriteInlineURIs(schemaDocument, cwdAVMPath);
- final Document xformsDocument =
- this.xformsSession.schemaFormBuilder.buildXForm(this.xformsSession.formInstanceData,
- schemaDocument,
- this.xformsSession.form.getSchemaRootElementName(),
- resourceBundle);
-
- if (LOGGER.isDebugEnabled())
+ public void handleEvent(final Event e)
{
- LOGGER.debug("generated xform: " +
- FormsService.getInstance().writeXMLToString(xformsDocument));
+ XFormsBean.LOGGER.debug("received event " + e);
+ XFormsBean.this.xformsSession.eventLog.add((XMLEvent)e);
}
+ };
+ // interaction events my occur during init so we have to register before
+ et.addEventListener(ChibaEventNames.LOAD_URI, el, true);
+ et.addEventListener(ChibaEventNames.RENDER_MESSAGE, el, true);
+ et.addEventListener(ChibaEventNames.REPLACE_ALL, el, true);
- chibaBean.setXMLContainer(xformsDocument);
+ chibaBean.init();
- final EventTarget et = (EventTarget)
- chibaBean.getXMLContainer().getDocumentElement();
- final EventListener el = new EventListener()
- {
- public void handleEvent(final Event e)
- {
- XFormsBean.LOGGER.debug("received event " + e);
- XFormsBean.this.xformsSession.eventLog.add((XFormsEvent)e);
- }
- };
- // interaction events my occur during init so we have to register before
- et.addEventListener(XFormsEventFactory.CHIBA_LOAD_URI, el, true);
- et.addEventListener(XFormsEventFactory.CHIBA_RENDER_MESSAGE, el, true);
- et.addEventListener(XFormsEventFactory.CHIBA_REPLACE_ALL, el, true);
-
- chibaBean.init();
-
- // register for notification events
- et.addEventListener(XFormsEventFactory.SUBMIT_DONE, el, true);
- et.addEventListener(XFormsEventFactory.SUBMIT_ERROR, el, true);
- et.addEventListener(XFormsEventFactory.REQUIRED, el, true);
- et.addEventListener(XFormsEventFactory.OPTIONAL, el, true);
- et.addEventListener(XFormsEventFactory.VALID, el, true);
- et.addEventListener(XFormsEventFactory.INVALID, el, true);
- et.addEventListener(XFormsEventFactory.OUT_OF_RANGE, el, true);
- et.addEventListener(XFormsEventFactory.CHIBA_STATE_CHANGED, el, true);
- et.addEventListener(XFormsEventFactory.CHIBA_PROTOTYPE_CLONED, el, true);
- et.addEventListener(XFormsEventFactory.CHIBA_ID_GENERATED, el, true);
- et.addEventListener(XFormsEventFactory.CHIBA_ITEM_INSERTED, el, true);
- et.addEventListener(XFormsEventFactory.CHIBA_ITEM_DELETED, el, true);
- et.addEventListener(XFormsEventFactory.CHIBA_INDEX_CHANGED, el, true);
- et.addEventListener(XFormsEventFactory.CHIBA_SWITCH_TOGGLED, el, true);
- }
- catch (FormBuilderException fbe)
- {
- LOGGER.error(fbe);
- }
- catch (IOException ioe)
- {
- LOGGER.error(ioe);
- }
- catch (SAXException saxe)
- {
- LOGGER.error(saxe);
- }
+ // register for notification events
+ et.addEventListener(XFormsEventNames.SUBMIT, el, true);
+ et.addEventListener(XFormsEventNames.SUBMIT_DONE, el, true);
+ et.addEventListener(XFormsEventNames.SUBMIT_ERROR, el, true);
+ et.addEventListener(XFormsEventNames.REQUIRED, el, true);
+ et.addEventListener(XFormsEventNames.OPTIONAL, el, true);
+ et.addEventListener(XFormsEventNames.VALID, el, true);
+ et.addEventListener(XFormsEventNames.INVALID, el, true);
+ et.addEventListener(XFormsEventNames.OUT_OF_RANGE, el, true);
+ et.addEventListener(ChibaEventNames.STATE_CHANGED, el, true);
+ et.addEventListener(ChibaEventNames.PROTOTYPE_CLONED, el, true);
+ et.addEventListener(ChibaEventNames.ID_GENERATED, el, true);
+ et.addEventListener(ChibaEventNames.ITEM_INSERTED, el, true);
+ et.addEventListener(ChibaEventNames.ITEM_DELETED, el, true);
+ et.addEventListener(ChibaEventNames.INDEX_CHANGED, el, true);
+ et.addEventListener(ChibaEventNames.SWITCH_TOGGLED, el, true);
this.xformsSession.chibaBean = chibaBean;
}
@@ -275,7 +246,6 @@ public class XFormsBean
*/
public static XFormsSession createSession(final Document formInstanceData,
final Form form)
- throws XFormsException
{
if (LOGGER.isDebugEnabled())
{
@@ -328,7 +298,7 @@ public class XFormsBean
LOGGER.debug(this + ".setXFormsValue(" + id + ", " + value + ")");
final ChibaBean chibaBean = this.xformsSession.chibaBean;
- if (chibaBean.lookup(id) instanceof Upload)
+ if (chibaBean.getContainer().lookup(id) instanceof Upload)
{
chibaBean.updateControlValue(id, null, value, value.getBytes());
}
@@ -380,7 +350,7 @@ public class XFormsBean
LOGGER.debug(this + ".fireAction(" + id + ")");
final ChibaBean chibaBean = this.xformsSession.chibaBean;
- chibaBean.dispatch(id, XFormsEventFactory.DOM_ACTIVATE);
+ chibaBean.dispatch(id, DOMEventNames.ACTIVATE);
final ResponseWriter out = context.getResponseWriter();
FormsService.getInstance().writeXML(this.getEventLog(), out);
@@ -435,8 +405,8 @@ public class XFormsBean
final String toItemId = (String)requestParameters.get("toItemId");
LOGGER.debug(this + ".swapRepeatItems(" + fromItemId + ", " + toItemId + ")");
final ChibaBean chibaBean = this.xformsSession.chibaBean;
- this.swapRepeatItems(chibaBean.lookup(fromItemId),
- chibaBean.lookup(toItemId));
+ this.swapRepeatItems(chibaBean.getContainer().lookup(fromItemId),
+ chibaBean.getContainer().lookup(toItemId));
final ResponseWriter out = context.getResponseWriter();
FormsService.getInstance().writeXML(this.getEventLog(), out);
@@ -648,7 +618,7 @@ public class XFormsBean
final String cwdAvmPath)
{
final NodeList includes =
- schemaDocument.getElementsByTagNameNS(SchemaFormBuilder.XMLSCHEMA_NS, "include");
+ schemaDocument.getElementsByTagNameNS(NamespaceConstants.XMLSCHEMA_NS, "include");
LOGGER.debug("rewriting " + includes.getLength() + " includes");
for (int i = 0; i < includes.getLength(); i++)
{
@@ -672,7 +642,7 @@ public class XFormsBean
final Document result = formsService.newDocument();
final Element eventsElement = result.createElement("events");
result.appendChild(eventsElement);
- for (XFormsEvent xfe : this.xformsSession.eventLog)
+ for (XMLEvent xfe : this.xformsSession.eventLog)
{
final String type = xfe.getType();
if (LOGGER.isDebugEnabled())
@@ -740,4 +710,48 @@ public class XFormsBean
commonsCookies);
}
}
+
+ private Document getXFormsDocument()
+ throws FormBuilderException
+ {
+ final String cwdAVMPath = this.avmBrowseBean.getCurrentPath();
+
+ if (LOGGER.isDebugEnabled())
+ {
+ LOGGER.debug("building xform for schema " + this.xformsSession.form.getName() +
+ " root element " + this.xformsSession.form.getSchemaRootElementName() +
+ " avm cwd " + cwdAVMPath);
+ }
+
+ final Locale locale =
+ Application.getLanguage(FacesContext.getCurrentInstance());
+ final ResourceBundle resourceBundle =
+ this.schema2XFormsProperties.getResourceBundle(this.xformsSession.form,
+ locale);
+ try
+ {
+ final Document schemaDocument = this.xformsSession.form.getSchema();
+ XFormsBean.rewriteInlineURIs(schemaDocument, cwdAVMPath);
+ final String rootElementName = this.xformsSession.form.getSchemaRootElementName();
+ final Document result =
+ this.xformsSession.schemaFormBuilder.buildXForm(this.xformsSession.formInstanceData,
+ schemaDocument,
+ rootElementName,
+ resourceBundle);
+ if (LOGGER.isDebugEnabled())
+ {
+ LOGGER.debug("generated xform: " +
+ FormsService.getInstance().writeXMLToString(result));
+ }
+ return result;
+ }
+ catch (IOException ioe)
+ {
+ throw new FormBuilderException(ioe);
+ }
+ catch (SAXException saxe)
+ {
+ throw new FormBuilderException(saxe);
+ }
+ }
}
diff --git a/source/java/org/alfresco/web/forms/xforms/XFormsProcessor.java b/source/java/org/alfresco/web/forms/xforms/XFormsProcessor.java
index 4a8a262e07..12ff2cb9cb 100644
--- a/source/java/org/alfresco/web/forms/xforms/XFormsProcessor.java
+++ b/source/java/org/alfresco/web/forms/xforms/XFormsProcessor.java
@@ -19,10 +19,8 @@ package org.alfresco.web.forms.xforms;
import java.io.*;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
-import javax.servlet.ServletContext;
import org.alfresco.web.forms.*;
-import org.chiba.xml.util.DOMUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -47,18 +45,10 @@ public class XFormsProcessor
final Writer out)
throws FormProcessor.ProcessingException
{
- try
- {
- final Session result =
- XFormsBean.createSession(instanceDataDocument, form);
- this.process(result, out);
- return result;
- }
- catch (XFormsException xfe)
- {
- LOGGER.error(xfe);
- throw new FormProcessor.ProcessingException(xfe);
- }
+ final Session result =
+ XFormsBean.createSession(instanceDataDocument, form);
+ this.process(result, out);
+ return result;
}
/**
@@ -77,6 +67,11 @@ public class XFormsProcessor
{
xforms.setXFormsSession((XFormsBean.XFormsSession)session);
}
+ catch (FormBuilderException fbe)
+ {
+ LOGGER.error(fbe);
+ throw new ProcessingException(fbe);
+ }
catch (XFormsException xfe)
{
LOGGER.error(xfe);
diff --git a/source/java/org/alfresco/web/forms/xforms/XHTMLWrapperElementsBuilder.java b/source/java/org/alfresco/web/forms/xforms/XHTMLWrapperElementsBuilder.java
index f5c8b3c684..55feb05b34 100644
--- a/source/java/org/alfresco/web/forms/xforms/XHTMLWrapperElementsBuilder.java
+++ b/source/java/org/alfresco/web/forms/xforms/XHTMLWrapperElementsBuilder.java
@@ -19,7 +19,7 @@ package org.alfresco.web.forms.xforms;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;
-
+import org.chiba.xml.ns.NamespaceConstants;
import java.util.*;
/**
@@ -28,224 +28,248 @@ import java.util.*;
* @author Sophie Ramel
*/
public class XHTMLWrapperElementsBuilder
- implements WrapperElementsBuilder
+ implements WrapperElementsBuilder
{
- ////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////
- private static class Link
- {
- public final String href;
- public final String type;
- public final String rel;
+ private static class Link
+ {
+ public final String href;
+ public final String type;
+ public final String rel;
- public Link(final String href, final String type, final String rel)
- {
- this.href = href;
- this.type = type;
- this.rel = rel;
- }
- }
+ public Link(final String href, final String type, final String rel)
+ {
+ this.href = href;
+ this.type = type;
+ this.rel = rel;
+ }
+ }
- ////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////
- private static class Meta
- {
- public final String httpEquiv;
- public final String name;
- public final String content;
- public final String scheme;
+ private static class Meta
+ {
+ public final String httpEquiv;
+ public final String name;
+ public final String content;
+ public final String scheme;
- public Meta(final String httpEquiv,
- final String name,
- final String content,
- final String scheme)
- {
- this.httpEquiv = httpEquiv;
- this.name = name;
- this.content = content;
- this.scheme = scheme;
- }
- }
+ public Meta(final String httpEquiv,
+ final String name,
+ final String content,
+ final String scheme)
+ {
+ this.httpEquiv = httpEquiv;
+ this.name = name;
+ this.content = content;
+ this.scheme = scheme;
+ }
+ }
- ////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////
- private final static String XHTML_NS = "http://www.w3.org/1999/xhtml";
- private final static String XHTML_PREFIX = "xhtml";
+ private String title;
+ private final Collection links = new LinkedList();
+ private final Collection meta = new LinkedList();
+ private final HashMap namespaces =
+ new HashMap();
+ /**
+ * Creates a new instance of XHTMLWrapperElementsBuilder
+ */
+ public XHTMLWrapperElementsBuilder() { }
- private String title;
- private final Collection links = new LinkedList();
- private final Collection meta = new LinkedList();
- private final HashMap namespaces =
- new HashMap();
+ /**
+ * add a tag "title" in the header of the HTML document
+ */
+ public void setTitle(String title)
+ {
+ this.title = title;
+ }
- /**
- * Creates a new instance of XHTMLWrapperElementsBuilder
- */
- public XHTMLWrapperElementsBuilder() { }
+ /**
+ * add a tag "link" in the header of the HTML document
+ *
+ * @param href the "href" parameter of the "link" tag
+ * @param type the "type" parameter of the "link" tag
+ * @param rel the "rel" parameter of the "link" tag
+ */
+ public void addLink(final String href,
+ final String type,
+ final String rel)
+ {
+ links.add(new Link(href, type, rel));
+ }
- /**
- * add a tag "title" in the header of the HTML document
- */
- public void setTitle(String title)
- {
- this.title = title;
- }
+ /**
+ * add a tag "meta" in the header of the HTML document
+ *
+ * @param http_equiv the "http-equiv" parameter of the "META" tag
+ * @param name the "name" parameter of the "META" tag
+ * @param content the "content" parameter of the "META" tag
+ * @param scheme the "scheme" parameter of the "META" tag
+ */
+ public void addMeta(final String httpEquiv,
+ final String name,
+ final String content,
+ final String scheme)
+ {
+ meta.add(new Meta(httpEquiv, name, content, scheme));
+ }
- /**
- * add a tag "link" in the header of the HTML document
- *
- * @param href the "href" parameter of the "link" tag
- * @param type the "type" parameter of the "link" tag
- * @param rel the "rel" parameter of the "link" tag
- */
- public void addLink(final String href,
- final String type,
- final String rel)
- {
- links.add(new Link(href, type, rel));
- }
+ public void addNamespaceDeclaration(final String prefix,
+ final String url)
+ {
+ namespaces.put(prefix, url);
+ }
- /**
- * add a tag "meta" in the header of the HTML document
- *
- * @param http_equiv the "http-equiv" parameter of the "META" tag
- * @param name the "name" parameter of the "META" tag
- * @param content the "content" parameter of the "META" tag
- * @param scheme the "scheme" parameter of the "META" tag
- */
- public void addMeta(final String httpEquiv,
- final String name,
- final String content,
- final String scheme)
- {
- meta.add(new Meta(httpEquiv, name, content, scheme));
- }
+ /**
+ * create the wrapper element of the different controls
+ *
+ * @param controlElement the control element (input, select, repeat, group, ...)
+ * @return the wrapper element, already containing the control element
+ */
+ public Element createControlsWrapper(final Element controlElement)
+ {
+ return controlElement;
+ }
- public void addNamespaceDeclaration(final String prefix,
- final String url)
- {
- namespaces.put(prefix, url);
- }
+ /**
+ * creates the global enveloppe of the resulting document, and puts it in the document
+ *
+ * @return the enveloppe
+ */
+ public Element createEnvelope(Document doc)
+ {
+ final Element html = doc.createElementNS(NamespaceConstants.XHTML_NS,
+ NamespaceConstants.XHTML_PREFIX + ":html");
+ //set namespace attribute
+ html.setAttributeNS(NamespaceConstants.XMLNS_NS,
+ NamespaceConstants.XMLNS_PREFIX + ':' + NamespaceConstants.XHTML_PREFIX,
+ NamespaceConstants.XHTML_NS);
+ doc.appendChild(html);
- /**
- * create the wrapper element of the different controls
- *
- * @param controlElement the control element (input, select, repeat, group, ...)
- * @return the wrapper element, already containing the control element
- */
- public Element createControlsWrapper(final Element controlElement)
- {
- return controlElement;
- }
+ //other namespaces
+ for (String prefix : this.namespaces.keySet())
+ {
+ html.setAttributeNS(NamespaceConstants.XMLNS_NS,
+ NamespaceConstants.XMLNS_PREFIX + ":" + prefix,
+ this.namespaces.get(prefix));
- /**
- * creates the global enveloppe of the resulting document, and puts it in the document
- *
- * @return the enveloppe
- */
- public Element createEnvelope(Document doc)
- {
- Element html = doc.createElementNS(XHTML_NS, XHTML_PREFIX + ":html");
- //set namespace attribute
- html.setAttributeNS(SchemaFormBuilder.XMLNS_NAMESPACE_URI,
- "xmlns:" + XHTML_PREFIX,
- XHTMLWrapperElementsBuilder.XHTML_NS);
- doc.appendChild(html);
+ }
+ return html;
+ }
- //other namespaces
- for (String prefix : this.namespaces.keySet())
- {
- html.setAttributeNS(SchemaFormBuilder.XMLNS_NAMESPACE_URI,
- "xmlns:" + prefix,
- this.namespaces.get(prefix));
+ /**
+ * create the element that will contain the content of the group (or repeat) element
+ *
+ * @param groupElement the group or repeat element
+ * @return the wrapper element
+ */
+ public Element createGroupContentWrapper(Element groupElement)
+ {
+ return groupElement;
+ }
- }
- return html;
- }
+ /**
+ * create the wrapper element of the form
+ *
+ * @param enveloppeElement the form element (chiba:form or other)
+ * @return the wrapper element
+ */
+ public Element createFormWrapper(Element enveloppeElement)
+ {
+ Document doc = enveloppeElement.getOwnerDocument();
+ Element body = doc.createElementNS(NamespaceConstants.XHTML_NS, NamespaceConstants.XHTML_PREFIX + ":body");
+ //body.appendChild(formElement);
+ enveloppeElement.appendChild(body);
+ return body;
+ }
- /**
- * create the element that will contain the content of the group (or repeat) element
- *
- * @param groupElement the group or repeat element
- * @return the wrapper element
- */
- public Element createGroupContentWrapper(Element groupElement)
- {
- return groupElement;
- }
+ /**
+ * create the wrapper element of the xforms:model element
+ *
+ * @param modelElement the xforms:model element
+ * @return the wrapper element, already containing the model
+ */
+ public Element createModelWrapper(final Element modelElement)
+ {
+ Document doc = modelElement.getOwnerDocument();
+ Element head = doc.createElementNS(NamespaceConstants.XHTML_NS,
+ NamespaceConstants.XHTML_PREFIX + ":head");
+ head.appendChild(modelElement);
- /**
- * create the wrapper element of the form
- *
- * @param enveloppeElement the form element (chiba:form or other)
- * @return the wrapper element
- */
- public Element createFormWrapper(Element enveloppeElement)
- {
- Document doc = enveloppeElement.getOwnerDocument();
- Element body = doc.createElementNS(XHTML_NS, XHTML_PREFIX + ":body");
- //body.appendChild(formElement);
- enveloppeElement.appendChild(body);
- return body;
- }
+ //eventually add other info
+ if (title != null && title.length() != 0)
+ {
+ final Element title_el = doc.createElementNS(NamespaceConstants.XHTML_NS,
+ NamespaceConstants.XHTML_PREFIX + ":title");
+ title_el.appendChild(doc.createTextNode(title));
+ head.appendChild(title_el);
+ }
- /**
- * create the wrapper element of the xforms:model element
- *
- * @param modelElement the xforms:model element
- * @return the wrapper element, already containing the model
- */
- public Element createModelWrapper(Element modelElement)
- {
- Document doc = modelElement.getOwnerDocument();
- Element head = doc.createElementNS(XHTML_NS, XHTML_PREFIX + ":head");
- head.appendChild(modelElement);
-
- //eventually add other info
- if (title != null && title.length() != 0)
- {
- Element title_el = doc.createElementNS(XHTML_NS, XHTML_PREFIX + ":title");
- Text title_text = doc.createTextNode(title);
- title_el.appendChild(title_text);
- head.appendChild(title_el);
- }
-
- for (Meta m : this.meta)
- {
- Element meta_el = doc.createElementNS(XHTML_NS, XHTML_PREFIX + ":META");
- head.appendChild(meta_el);
+ for (Meta m : this.meta)
+ {
+ final Element meta_el = doc.createElementNS(NamespaceConstants.XHTML_NS,
+ NamespaceConstants.XHTML_PREFIX + ":META");
+ head.appendChild(meta_el);
- //attributes
- if (m.httpEquiv != null && m.httpEquiv.length() != 0)
- meta_el.setAttributeNS(XHTML_NS, XHTML_PREFIX + ":http-equiv",
- m.httpEquiv);
- if (m.name != null && m.name.length() != 0)
- meta_el.setAttributeNS(XHTML_NS, XHTML_PREFIX + ":name", m.name);
+ //attributes
+ if (m.httpEquiv != null && m.httpEquiv.length() != 0)
+ {
+ meta_el.setAttributeNS(NamespaceConstants.XHTML_NS,
+ NamespaceConstants.XHTML_PREFIX + ":http-equiv",
+ m.httpEquiv);
+ }
+ if (m.name != null && m.name.length() != 0)
+ {
+ meta_el.setAttributeNS(NamespaceConstants.XHTML_NS,
+ NamespaceConstants.XHTML_PREFIX + ":name",
+ m.name);
+ }
+ if (m.content != null && m.content.length() != 0)
+ {
+ meta_el.setAttributeNS(NamespaceConstants.XHTML_NS,
+ NamespaceConstants.XHTML_PREFIX + ":content",
+ m.content);
+ }
+ if (m.scheme != null && m.scheme.length() != 0)
+ {
+ meta_el.setAttributeNS(NamespaceConstants.XHTML_NS,
+ NamespaceConstants.XHTML_PREFIX + ":scheme",
+ m.scheme);
+ }
+ }
- if (m.content != null && m.content.length() != 0)
- meta_el.setAttributeNS(XHTML_NS, XHTML_PREFIX + ":content", m.content);
+ for (Link l : this.links)
+ {
+ final Element link_el = doc.createElementNS(NamespaceConstants.XHTML_NS,
+ NamespaceConstants.XHTML_PREFIX + ":LINK");
+ head.appendChild(link_el);
- if (m.scheme != null && m.scheme.length() != 0)
- meta_el.setAttributeNS(XHTML_NS, XHTML_PREFIX + ":scheme", m.scheme);
- }
-
- for (Link l : this.links)
- {
- Element link_el = doc.createElementNS(XHTML_NS, XHTML_PREFIX + ":LINK");
- head.appendChild(link_el);
-
- //attributes
- if (l.href != null && l.href.length() != 0)
- link_el.setAttributeNS(XHTML_NS, XHTML_PREFIX + ":href", l.href);
-
- if (l.type != null && l.type.length() != 0)
- link_el.setAttributeNS(XHTML_NS, XHTML_PREFIX + ":type", l.type);
-
- if (l.rel != null && l.rel.length() != 0)
- link_el.setAttributeNS(XHTML_NS, XHTML_PREFIX + ":rel", l.rel);
- }
- return head;
- }
+ //attributes
+ if (l.href != null && l.href.length() != 0)
+ {
+ link_el.setAttributeNS(NamespaceConstants.XHTML_NS,
+ NamespaceConstants.XHTML_PREFIX + ":href",
+ l.href);
+ }
+ if (l.type != null && l.type.length() != 0)
+ {
+ link_el.setAttributeNS(NamespaceConstants.XHTML_NS,
+ NamespaceConstants.XHTML_PREFIX + ":type",
+ l.type);
+ }
+ if (l.rel != null && l.rel.length() != 0)
+ {
+ link_el.setAttributeNS(NamespaceConstants.XHTML_NS,
+ NamespaceConstants.XHTML_PREFIX + ":rel",
+ l.rel);
+
+ }
+ }
+ return head;
+ }
}
diff --git a/source/java/org/alfresco/web/ui/wcm/component/UIFormProcessor.java b/source/java/org/alfresco/web/ui/wcm/component/UIFormProcessor.java
index a8d001fff0..5e678fd3e2 100644
--- a/source/java/org/alfresco/web/ui/wcm/component/UIFormProcessor.java
+++ b/source/java/org/alfresco/web/ui/wcm/component/UIFormProcessor.java
@@ -109,9 +109,10 @@ public class UIFormProcessor extends SelfRenderingComponent
out));
}
}
- catch (FormProcessor.ProcessingException fppe)
+ catch (Throwable t)
{
- Utils.addErrorMessage(fppe.getMessage(), fppe);
+ Utils.addErrorMessage(t.getMessage(), t);
+ out.write(t.toString());
}
}
diff --git a/source/web/WEB-INF/chiba.xml b/source/web/WEB-INF/chiba.xml
index ce672dfeea..3dca1b8949 100644
--- a/source/web/WEB-INF/chiba.xml
+++ b/source/web/WEB-INF/chiba.xml
@@ -1,71 +1,15 @@
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
+
+
-
-
-
diff --git a/source/web/jsp/wcm/create-form-wizard/details.jsp b/source/web/jsp/wcm/create-form-wizard/details.jsp
index cc1e5f1e2e..9686cc8a45 100644
--- a/source/web/jsp/wcm/create-form-wizard/details.jsp
+++ b/source/web/jsp/wcm/create-form-wizard/details.jsp
@@ -34,7 +34,10 @@
function pageLoaded()
{
- document.getElementById("wizard:wizard-body:file-input").focus();
+ if (document.getElementById("wizard:wizard-body:file-input"))
+ document.getElementById("wizard:wizard-body:file-input").focus()
+ else
+ document.getElementById("wizard:wizard-body:form-name").focus();
document.getElementById("wizard").onsubmit = validate;
document.getElementById("wizard:next-button").onclick = function() {finishButtonPressed = true; clear_wizard();}
document.getElementById("wizard:finish-button").onclick = function() {finishButtonPressed = true; clear_wizard();}
@@ -42,7 +45,14 @@
function validate()
{
- return true;
+ if (!finishButtonPressed)
+ return true;
+ finishButtonPressed = false;
+ var formName = document.getElementById("wizard:wizard-body:form-name");
+ return validateMandatory(formName) &&
+ validateName(formName,
+ '',
+ true)
}
function handle_upload(target)
@@ -55,9 +65,10 @@
function upload_complete(id, path)
{
- var validate_button =
- document.getElementById("wizard:wizard-body:command_button_validate_schema");
- validate_button.click();
+ var schema_file_input =
+ document.getElementById("wizard:wizard-body:schema-file");
+ schema_file_input.value = path;
+ schema_file_input.form.submit();
}
@@ -81,7 +92,7 @@
+ value="#{msg.schema}:"/>
<%
FileUploadBean upload = (FileUploadBean)
@@ -96,12 +107,11 @@ if (upload == null || upload.getFile() == null)
name="alfFileInput"
onchange="javascript:handle_upload(this)"/>
-
-
+
<%
} else {
%>
@@ -146,21 +156,21 @@ if (upload == null || upload.getFile() == null)
value="/images/icons/required_field.gif"
alt="Required Field" />
-
-
-
diff --git a/source/web/scripts/ajax/xforms.js b/source/web/scripts/ajax/xforms.js
index 3eaf9a182d..24f5088474 100644
--- a/source/web/scripts/ajax/xforms.js
+++ b/source/web/scripts/ajax/xforms.js
@@ -5,7 +5,7 @@ dojo.require("dojo.lfx.html");
dojo.hostenv.writeIncludes();
var XFORMS_NS = "http://www.w3.org/2002/xforms";
-var XFORMS_NS_PREFIX = "xforms";
+var XFORMS_PREFIX = "xf";
var XHTML_NS = "http://www.w3.org/1999/xhtml";
var XHTML_NS_PREFIX = "xhtml";
var CHIBA_NS = "http://chiba.sourceforge.net/xforms";
@@ -134,20 +134,11 @@ dojo.declare("alfresco.xforms.Widget",
{
if (typeof this.initialValue != "undefined")
return this.initialValue;
- var chibaData = _getElementsByTagNameNS(this.xformsNode,
- CHIBA_NS,
- CHIBA_NS_PREFIX,
- "data");
- if (chibaData.length == 0)
- return null;
-
- chibaData = chibaData[chibaData.length - 1];
- var xpath = chibaData.getAttribute(CHIBA_NS_PREFIX + ":xpath");
+
+ var xpath = this._getXPathInInstanceDocument();
var d = this.xformsNode.ownerDocument;
var contextNode = this.xform.getInstance();
- dojo.debug("locating " + xpath +
- " from " + chibaData.nodeName +
- " in " + contextNode.nodeName);
+ dojo.debug("locating " + xpath + " in " + contextNode.nodeName);
var result = _evaluateXPath("/" + xpath,
this.xform.getInstance(),
XPathResult.FIRST_ORDERED_NODE_TYPE);
@@ -159,9 +150,29 @@ dojo.declare("alfresco.xforms.Widget",
dojo.debug("resolved xpath " + xpath + " to " + result);
return result;
},
+ _getXPathInInstanceDocument: function()
+ {
+ var binding = this.xform.getBinding(this.xformsNode);
+ var xpath = '';
+ do
+ {
+ var s = binding.nodeset;
+ if (binding.nodeset == '.')
+ {
+ binding = binding.parent;
+ var repeatIndices = this.getRepeatIndices();
+ s = binding.nodeset.replace(/([^\[]+)\[.*/, "$1");
+ s += '[' + (repeatIndices.pop().index + 1) + ']';
+ }
+ xpath = s + (xpath.length != 0 ? '/' + xpath : "");
+ binding = binding.parent;
+ }
+ while (binding);
+ return xpath;
+ },
_getLabelNode: function()
{
- var labels = _getElementsByTagNameNS(this.xformsNode, XFORMS_NS, XFORMS_NS_PREFIX, "label");
+ var labels = _getElementsByTagNameNS(this.xformsNode, XFORMS_NS, XFORMS_PREFIX, "label");
for (var i = 0; i < labels.length; i++)
{
if (labels[i].parentNode == this.xformsNode)
@@ -171,7 +182,7 @@ dojo.declare("alfresco.xforms.Widget",
},
_getAlertNode: function()
{
- var labels = _getElementsByTagNameNS(this.xformsNode, XFORMS_NS, XFORMS_NS_PREFIX, "alert");
+ var labels = _getElementsByTagNameNS(this.xformsNode, XFORMS_NS, XFORMS_PREFIX, "alert");
for (var i = 0; i < labels.length; i++)
{
if (labels[i].parentNode == this.xformsNode)
@@ -212,17 +223,27 @@ dojo.declare("alfresco.xforms.Widget",
{
dojo.debug("destroying " + this.id);
},
- getParentRepeats: function()
+ getRepeatIndices: function()
{
- var result = [];
- var p = this.parent;
- while (p)
+ function RepeatIndexData(repeat, index)
{
- if (p instanceof alfresco.xforms.Repeat)
+ this.repeat = repeat;
+ this.index = index;
+ this.toString = function()
{
- result.push(p);
+ return "{" + this.repeat.id + " = " + this.index + "}";
+ };
+ }
+ var result = [];
+ var w = this;
+ while (w.parent)
+ {
+ if (w.parent instanceof alfresco.xforms.Repeat)
+ {
+ result.push(new RepeatIndexData(w.parent,
+ w.parent.getChildIndex(w)));
}
- p = p.parent;
+ w = w.parent;
}
return result;
}
@@ -449,12 +470,12 @@ dojo.declare("alfresco.xforms.AbstractSelectWidget",
getValues: function()
{
var binding = this.xform.getBinding(this.xformsNode);
- var values = _getElementsByTagNameNS(this.xformsNode, XFORMS_NS, XFORMS_NS_PREFIX, "item");
+ var values = _getElementsByTagNameNS(this.xformsNode, XFORMS_NS, XFORMS_PREFIX, "item");
var result = [];
for (var v = 0; v < values.length; v++)
{
- var label = _getElementsByTagNameNS(values[v], XFORMS_NS, XFORMS_NS_PREFIX, "label")[0];
- var value = _getElementsByTagNameNS(values[v], XFORMS_NS, XFORMS_NS_PREFIX, "value")[0];
+ var label = _getElementsByTagNameNS(values[v], XFORMS_NS, XFORMS_PREFIX, "label")[0];
+ var value = _getElementsByTagNameNS(values[v], XFORMS_NS, XFORMS_PREFIX, "value")[0];
var valid = true;
if (binding.constraint)
{
@@ -1220,7 +1241,7 @@ dojo.declare("alfresco.xforms.Repeat",
this.domNode = this.inherited("render", [ attach_point ]);
this.domNode.style.border = "1px solid black";
- var parentRepeats = this.getParentRepeats();
+ var parentRepeats = this.getRepeatIndices();
this.domNode.style.marginLeft = (parentRepeats.length * 10) + "px";
this.domNode.style.marginRight = (parseInt(this.domNode.style.marginLeft) / 2) + "px";
this.domNode.style.width = (this.domNode.offsetParent.offsetWidth -
@@ -1344,8 +1365,8 @@ dojo.declare("alfresco.xforms.Trigger",
var c = this.xformsNode.childNodes[i];
if (c.nodeType != dojo.dom.ELEMENT_NODE)
continue;
- if (c.nodeName == XFORMS_NS_PREFIX + ":label" ||
- c.nodeName == XFORMS_NS_PREFIX + ":alert")
+ if (c.nodeName == XFORMS_PREFIX + ":label" ||
+ c.nodeName == XFORMS_PREFIX + ":alert")
continue;
return new alfresco.xforms.XFormsAction(this.xform, c);
}
@@ -1413,16 +1434,16 @@ dojo.declare("alfresco.xforms.XFormsAction",
for (var i = 0; i < this.xformsNode.attributes.length; i++)
{
var attr = this.xformsNode.attributes[i];
- if (attr.nodeName.match(/^xforms:/))
+ if (attr.nodeName.match(new RegExp("^" + XFORMS_PREFIX + ":")))
{
- this.properties[attr.nodeName.substring((XFORMS_NS_PREFIX + ":").length)] =
+ this.properties[attr.nodeName.substring((XFORMS_PREFIX + ":").length)] =
attr.nodeValue;
}
}
},
getType: function()
{
- return this.xformsNode.nodeName.substring((XFORMS_NS_PREFIX + ":").length);
+ return this.xformsNode.nodeName.substring((XFORMS_PREFIX + ":").length);
},
});
@@ -1490,15 +1511,15 @@ dojo.declare("alfresco.xforms.XForm",
dojo.debug("creating node for " + node.nodeName.toLowerCase());
switch (node.nodeName.toLowerCase())
{
- case XFORMS_NS_PREFIX + ":group":
+ case XFORMS_PREFIX + ":group":
return new alfresco.xforms.Group(this, node);
- case XFORMS_NS_PREFIX + ":repeat":
+ case XFORMS_PREFIX + ":repeat":
return new alfresco.xforms.Repeat(this, node);
- case XFORMS_NS_PREFIX + ":textarea":
+ case XFORMS_PREFIX + ":textarea":
return new alfresco.xforms.TextArea(this, node);
- case XFORMS_NS_PREFIX + ":upload":
+ case XFORMS_PREFIX + ":upload":
return new alfresco.xforms.FilePicker(this, node);
- case XFORMS_NS_PREFIX + ":input":
+ case XFORMS_PREFIX + ":input":
var type = this.getType(node);
switch (type)
{
@@ -1523,19 +1544,19 @@ dojo.declare("alfresco.xforms.XForm",
default:
return new alfresco.xforms.TextField(this, node);
}
- case XFORMS_NS_PREFIX + ":select":
+ case XFORMS_PREFIX + ":select":
return new alfresco.xforms.Select(this, node);
- case XFORMS_NS_PREFIX + ":select1":
+ case XFORMS_PREFIX + ":select1":
return (this.getType(node) == "boolean"
? new alfresco.xforms.Checkbox(this, node)
: new alfresco.xforms.Select1(this, node));
- case XFORMS_NS_PREFIX + ":submit":
+ case XFORMS_PREFIX + ":submit":
return new alfresco.xforms.Submit(this, node);
- case XFORMS_NS_PREFIX + ":trigger":
+ case XFORMS_PREFIX + ":trigger":
return new alfresco.xforms.Trigger(this, node);
case CHIBA_NS_PREFIX + ":data":
- case XFORMS_NS_PREFIX + ":label":
- case XFORMS_NS_PREFIX + ":alert":
+ case XFORMS_PREFIX + ":label":
+ case XFORMS_PREFIX + ":alert":
dojo.debug("ignoring " + node.nodeName);
return null;
default:
@@ -1571,7 +1592,7 @@ dojo.declare("alfresco.xforms.XForm",
{
return _getElementsByTagNameNS(this.xformsNode,
XFORMS_NS,
- XFORMS_NS_PREFIX,
+ XFORMS_PREFIX,
"model")[0];
},
getInstance: function()
@@ -1579,7 +1600,7 @@ dojo.declare("alfresco.xforms.XForm",
var model = this.getModel();
return _getElementsByTagNameNS(model,
XFORMS_NS,
- XFORMS_NS_PREFIX,
+ XFORMS_PREFIX,
"instance")[0];
},
getBody: function()
@@ -1596,7 +1617,7 @@ dojo.declare("alfresco.xforms.XForm",
},
getBinding: function(node)
{
- return this._bindings[node.getAttribute(XFORMS_NS_PREFIX + ":bind")];
+ return this._bindings[node.getAttribute(XFORMS_PREFIX + ":bind")];
},
getBindings: function()
{
@@ -1608,18 +1629,18 @@ dojo.declare("alfresco.xforms.XForm",
dojo.debug("loading bindings for " + bind.nodeName);
for (var i = 0; i < bind.childNodes.length; i++)
{
- if (bind.childNodes[i].nodeName.toLowerCase() == XFORMS_NS_PREFIX + ":bind")
+ if (bind.childNodes[i].nodeName.toLowerCase() == XFORMS_PREFIX + ":bind")
{
var id = bind.childNodes[i].getAttribute("id");
dojo.debug("loading binding " + id);
result[id] =
{
id: bind.childNodes[i].getAttribute("id"),
- readonly: bind.childNodes[i].getAttribute(XFORMS_NS_PREFIX + ":readonly"),
- required: bind.childNodes[i].getAttribute(XFORMS_NS_PREFIX + ":required"),
- nodeset: bind.childNodes[i].getAttribute(XFORMS_NS_PREFIX + ":nodeset"),
- type: bind.childNodes[i].getAttribute(XFORMS_NS_PREFIX + ":type"),
- constraint: bind.childNodes[i].getAttribute(XFORMS_NS_PREFIX + ":constraint"),
+ readonly: bind.childNodes[i].getAttribute(XFORMS_PREFIX + ":readonly"),
+ required: bind.childNodes[i].getAttribute(XFORMS_PREFIX + ":required"),
+ nodeset: bind.childNodes[i].getAttribute(XFORMS_PREFIX + ":nodeset"),
+ type: bind.childNodes[i].getAttribute(XFORMS_PREFIX + ":type"),
+ constraint: bind.childNodes[i].getAttribute(XFORMS_PREFIX + ":constraint"),
maximum: parseInt(bind.childNodes[i].getAttribute(ALFRESCO_NS_PREFIX + ":maximum")),
minimum: parseInt(bind.childNodes[i].getAttribute(ALFRESCO_NS_PREFIX + ":minimum")),
parent: parent,
@@ -1728,8 +1749,8 @@ dojo.declare("alfresco.xforms.XForm",
dojo.debug("cloning prototype " + originalId);
var prototypeNode = _findElementById(this.xformsNode, originalId);
clone = prototypeNode.cloneNode(true);
- var clone = prototypeNode.ownerDocument.createElement("xforms:group");
- clone.setAttribute("xforms:appearance", "repeated");
+ var clone = prototypeNode.ownerDocument.createElement(XFORMS_PREFIX + ":group");
+ clone.setAttribute(XFORMS_PREFIX + ":appearance", "repeated");
for (var j = 0; j < prototypeNode.childNodes.length; j++)
{
clone.appendChild(prototypeNode.childNodes[j].cloneNode(true));