You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xmlbeans.apache.org by ce...@apache.org on 2004/02/06 00:24:26 UTC
cvs commit: xml-xmlbeans/v2/src/typeimpl/org/apache/xmlbeans/impl/validator ValidatorUtil.java Validator.java
cezar 2004/02/05 15:24:26
Modified: v2/src/typeimpl/org/apache/xmlbeans/impl/validator
Validator.java
Added: v2/src/typeimpl/org/apache/xmlbeans/impl/validator
ValidatorUtil.java
Log:
Return null for skiped elements in Validator.getCurrentElement()
Adding an utility for validation of simple schema types.
CR: Eric
DRT: passes
Revision Changes Path
1.6 +6 -4 xml-xmlbeans/v2/src/typeimpl/org/apache/xmlbeans/impl/validator/Validator.java
Index: Validator.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/typeimpl/org/apache/xmlbeans/impl/validator/Validator.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- Validator.java 3 Feb 2004 02:05:56 -0000 1.5
+++ Validator.java 5 Feb 2004 23:24:26 -0000 1.6
@@ -1001,7 +1001,7 @@
// Simple Type Validation
//
// emptyContent means that you can't use the event to get text: there is
- // not text, but you can use the event to do prefix resolution (in the case
+ // no text, but you can use the event to do prefix resolution (in the case
// where the default is a qname)
//
@@ -1027,8 +1027,6 @@
return null;
}
-
-
// Get the value as a string (as normalized by the white space rule
// TODO - will want to optimize this later
@@ -1624,7 +1622,11 @@
if (_localElement != null)
return _localElement;
- //try getting it from the stack (this should happen after END)
+ // it means the element is to be skiped and it doesn't have a known SchemaLocalElement
+ if (_eatContent>0)
+ return null;
+
+ //try getting it from the stack (this should happen after END)
if (_stateStack!=null && _stateStack._field instanceof SchemaLocalElement )
return (SchemaLocalElement)_stateStack._field;
1.1 xml-xmlbeans/v2/src/typeimpl/org/apache/xmlbeans/impl/validator/ValidatorUtil.java
Index: ValidatorUtil.java
===================================================================
package org.apache.xmlbeans.impl.validator;
import org.apache.xmlbeans.SchemaType;
import org.apache.xmlbeans.XmlCursor;
import org.apache.xmlbeans.impl.common.Chars;
import org.apache.xmlbeans.impl.common.PrefixResolver;
import org.apache.xmlbeans.impl.common.ValidatorListener;
import org.apache.xmlbeans.impl.common.XmlWhitespace;
import javax.xml.namespace.QName;
import java.util.Collection;
/**
* Author: Cezar Andrei (cezar.andrei at bea.com)
* Date: Feb 5, 2004
*/
public class ValidatorUtil
{
private static class EventImpl
implements ValidatorListener.Event
{
PrefixResolver _prefixResolver;
Chars _text;
EventImpl(PrefixResolver prefixResolver, Chars chars)
{
_prefixResolver = prefixResolver;
_text = chars;
}
// can return null, used only to locate errors
public XmlCursor getLocationAsCursor()
{
return null;
}
// fill up chars with the xsi:type attribute value if there is one othervise return false
public boolean getXsiType(Chars chars) // BEGIN xsi:type
{
return false;
}
// fill up chars with xsi:nill attribute value if any
public boolean getXsiNil(Chars chars) // BEGIN xsi:nil
{
return false;
}
public boolean getXsiLoc(Chars chars) // BEGIN xsi:schemaLocation
{
return false;
}
public boolean getXsiNoLoc(Chars chars) // BEGIN xsi:noNamespaceSchemaLocation
{
return false;
}
// On START and ATTR
public QName getName()
{
return null;
}
// On TEXT and ATTR
public void getText(Chars chars)
{
chars.string = _text.asString();
}
public void getText(Chars chars, int wsr)
{
chars.string = XmlWhitespace.collapse(
_text.asString(), wsr );
}
public boolean textIsWhitespace()
{
return false;
}
public String getNamespaceForPrefix(String prefix)
{
return _prefixResolver.getNamespaceForPrefix(prefix);
}
}
public static boolean validateSimpleType ( SchemaType type, String value,
Collection errors, PrefixResolver prefixResolver)
{
if (!type.isSimpleType() &&
type.getContentType() != SchemaType.SIMPLE_CONTENT)
{
assert false;
throw new RuntimeException( "Not a simple type" );
}
Validator validator =
new Validator(
type, null, type.getTypeSystem(), null, errors);
//make only one event at the beginning and than reuse it
Chars text = new Chars();
EventImpl ev = new EventImpl(prefixResolver, text);
validator.nextEvent(ValidatorListener.BEGIN, ev);
text.string = value;
validator.nextEvent(ValidatorListener.TEXT, ev);
validator.nextEvent(ValidatorListener.END, ev);
return validator.isValid();
}
// public static void main(String[] args)
// {
// String value;
// value = " +1.2323 ";
// System.out.println("float " + validateSimpleType(XmlFloat.type, value, null , null));
// value = " +234 ";
// System.out.println("posInt " + validateSimpleType(XmlPositiveInteger.type, value, null , null));
// value = "2001-01-01";
// System.out.println("IntOrDateUnion " + validateSimpleType(DocDocument.Doc.IntOrDateUnion.type, value, null , null));
// value = "232321";
// System.out.println("IntOrDateUnion " + validateSimpleType(DocDocument.Doc.IntOrDateUnion.type, value, null , null));
// }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: xmlbeans-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xmlbeans-cvs-help@xml.apache.org