diff options
author | csalter | 2005-05-20 05:08:27 +0000 |
---|---|---|
committer | csalter | 2005-05-20 05:08:27 +0000 |
commit | 984069fa2fb795e660ab2b1c75d35d5872a02e32 (patch) | |
tree | 3cd22c029b49ebbeb9922fe22b31a01ab53463d2 /bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst | |
parent | 2ccc1ce4e72cd59b1a90c293ce5a2d4c968a6c83 (diff) | |
download | webtools.sourceediting-984069fa2fb795e660ab2b1c75d35d5872a02e32.tar.gz webtools.sourceediting-984069fa2fb795e660ab2b1c75d35d5872a02e32.tar.xz webtools.sourceediting-984069fa2fb795e660ab2b1c75d35d5872a02e32.zip |
[95998] add support for partial validation
Diffstat (limited to 'bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst')
2 files changed, 32 insertions, 3 deletions
diff --git a/bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/internal/util/CMValidator.java b/bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/internal/util/CMValidator.java index 3fe490f988..923cb19afb 100644 --- a/bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/internal/util/CMValidator.java +++ b/bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/internal/util/CMValidator.java @@ -573,12 +573,14 @@ public class CMValidator { protected Vector elementOriginStack = new Vector(); protected CMNode[] originArray = null; + protected int partialValidationCount = 0; public void push(Arc arc) { if (arc.kind == Arc.ELEMENT) { elementOriginStack.add(arc.cmNode); + partialValidationCount = Math.max(elementOriginStack.size(), partialValidationCount); } } @@ -605,7 +607,12 @@ public class CMValidator { this.originArray = originArray; } - } + + public int getPartialValidationCount() + { + return partialValidationCount; + } + } /** * diff --git a/bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/internal/util/DOMValidator.java b/bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/internal/util/DOMValidator.java index debdef8270..e26e359daf 100644 --- a/bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/internal/util/DOMValidator.java +++ b/bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/internal/util/DOMValidator.java @@ -307,7 +307,8 @@ public class DOMValidator extends CMValidator { List clonedList = clone(contentSpecificationList); insert(clonedList, insertIndex, cmNode); - return isValid(ed, clonedList); + boolean result = isPartiallyValid(ed, clonedList); + return result; } /** @@ -358,7 +359,28 @@ public class DOMValidator extends CMValidator validate(ed, contentSpecificationList, stringContentComparitor, result); return result.isValid; } - + + public boolean isPartiallyValid(CMElementDeclaration ed, List contentSpecificationList) + { + CMValidator.ElementPathRecordingResult result = new CMValidator.ElementPathRecordingResult(); + validate(ed, contentSpecificationList, stringContentComparitor, result); + int count = getElementCount(contentSpecificationList); + System.out.println("elementOriginList " + result.getPartialValidationCount() + "vs" + count); + return result.getPartialValidationCount() >= count; + } + + public int getElementCount(List contentSpecificationList) + { + int count = 0; + for (Iterator i = contentSpecificationList.iterator(); i.hasNext(); ) + { + if (stringContentComparitor.isElement(i.next())) + { + count++; + } + } + return count; + } protected Result validate(CMElementDeclaration ed, Element element) { |