You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xmlbeans.apache.org by kk...@apache.org on 2005/01/18 23:26:40 UTC
svn commit: r125554 - in xmlbeans/trunk: bin src/typeimpl/org/apache/xmlbeans/impl/schema src/xmlcomp/org/apache/xmlbeans/impl/tool src/xmlpublic/org/apache/xmlbeans
Author: kkrouse
Date: Tue Jan 18 14:26:38 2005
New Revision: 125554
URL: http://svn.apache.org/viewcvs?view=rev&rev=125554
Log:
intial checkin of partial schema type system support (experimental)
Added:
xmlbeans/trunk/bin/xsdtree (contents, props changed)
Modified:
xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/SchemaTypeSystemCompiler.java
xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/SchemaTypeSystemImpl.java
xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscComplexTypeResolver.java
xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscResolver.java
xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscSimpleTypeResolver.java
xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscState.java
xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscTranslator.java
xmlbeans/trunk/src/xmlcomp/org/apache/xmlbeans/impl/tool/InstanceValidator.java
xmlbeans/trunk/src/xmlcomp/org/apache/xmlbeans/impl/tool/TypeHierarchyPrinter.java
xmlbeans/trunk/src/xmlpublic/org/apache/xmlbeans/XmlBeans.java
Added: xmlbeans/trunk/bin/xsdtree
Url: http://svn.apache.org/viewcvs/xmlbeans/trunk/bin/xsdtree?view=auto&rev=125554
==============================================================================
--- (empty file)
+++ xmlbeans/trunk/bin/xsdtree Tue Jan 18 14:26:38 2005
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+# Invokes type hierarchy printer
+
+cp=
+cp=$cp:$XMLBEANS_HOME/build/ar/xbean.jar:$XMLBEANS_HOME/build/lib/jsr173_api.jar:$XMLBEANS_HOME/build/lib/resolver.jar
+
+case "`uname`" in
+ CYGWIN*)
+ cp=`cygpath -w -p $cp`
+ ;;
+esac
+
+java -Xmx256m -classpath $cp org.apache.xmlbeans.impl.tool.TypeHierarchyPrinter $*
Modified: xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/SchemaTypeSystemCompiler.java
Url: http://svn.apache.org/viewcvs/xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/SchemaTypeSystemCompiler.java?view=diff&rev=125554&p1=xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/SchemaTypeSystemCompiler.java&r1=125553&p2=xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/SchemaTypeSystemCompiler.java&r2=125554
==============================================================================
--- xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/SchemaTypeSystemCompiler.java (original)
+++ xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/SchemaTypeSystemCompiler.java Tue Jan 18 14:26:38 2005
@@ -15,6 +15,7 @@
package org.apache.xmlbeans.impl.schema;
+import org.apache.xmlbeans.XmlBeans;
import org.apache.xmlbeans.SchemaTypeLoader;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlErrorCodes;
@@ -186,10 +187,10 @@
/**
* Please do not invoke this method directly as the signature could change unexpectedly.
* Use one of
- * {@link org.apache.xmlbeans.XmlBeans#loadXsd(org.apache.xmlbeans.XmlObject[])},
- * {@link org.apache.xmlbeans.XmlBeans#compileXsd(org.apache.xmlbeans.XmlObject[], org.apache.xmlbeans.SchemaTypeLoader, org.apache.xmlbeans.XmlOptions)},
+ * {@link XmlBeans#loadXsd(XmlObject[])},
+ * {@link XmlBeans#compileXsd(XmlObject[], SchemaTypeLoader, XmlOptions)},
* or
- * {@link org.apache.xmlbeans.XmlBeans#compileXmlBeans(String, org.apache.xmlbeans.SchemaTypeSystem, org.apache.xmlbeans.XmlObject[], org.apache.xmlbeans.BindingConfig, org.apache.xmlbeans.SchemaTypeLoader, org.apache.xmlbeans.Filer, org.apache.xmlbeans.XmlOptions)}
+ * {@link XmlBeans#compileXmlBeans(String, SchemaTypeSystem, XmlObject[], BindingConfig, SchemaTypeLoader, Filer, XmlOptions)}
*/
public static SchemaTypeSystemImpl compile(String name, SchemaTypeSystem existingSTS,
XmlObject[] input, BindingConfig config, SchemaTypeLoader linkTo, Filer filer, XmlOptions options)
@@ -207,7 +208,7 @@
else if (input[i] instanceof SchemaDocument && ((SchemaDocument)input[i]).getSchema() != null)
schemas.add(((SchemaDocument)input[i]).getSchema());
else
- throw new XmlException("Thread " + Thread.currentThread().getName() + ": The " + i + "th supplied input is not a schema or a config document: its type is " + input[i].schemaType());
+ throw new XmlException("Thread " + Thread.currentThread().getName() + ": The " + i + "th supplied input is not a schema document: its type is " + input[i].schemaType());
}
}
@@ -218,12 +219,13 @@
(Schema[])schemas.toArray(new Schema[schemas.size()]),
config, linkTo, options, errorWatcher, filer!=null, null, null, null);
- if (errorWatcher.hasError())
+ // if there is an error and compile didn't recover (stsi==null), throw exception
+ if (errorWatcher.hasError() && stsi == null)
{
throw new XmlException(errorWatcher.firstError());
}
- if (stsi != null && filer != null)
+ if (stsi != null && !stsi.isPartial() && filer != null)
{
stsi.save(filer);
generateTypes(stsi, filer, options);
@@ -314,9 +316,20 @@
if (sourcesToCopyMap != null)
sourcesToCopyMap.putAll(state.sourceCopyMap());
- // if any errors, return null
if (errorWatcher.hasError())
- return null;
+ {
+ // EXPERIMENTAL: recovery from compilation errors and partial type system
+ if (state.allowPartial() && state.getRecovered() == errorWatcher.size())
+ {
+ // if partial type system allowed and all errors were recovered
+ state.get().sts().setPartial(true);
+ }
+ else
+ {
+ // if any non-recoverable errors, return null
+ return null;
+ }
+ }
return state.get().sts();
}
@@ -410,6 +423,10 @@
*/
public static boolean generateTypes(SchemaTypeSystem system, Filer filer, XmlOptions options)
{
+ // partial type systems not allowed to be saved
+ if (system instanceof SchemaTypeSystemImpl && ((SchemaTypeSystemImpl)system).isPartial())
+ return false;
+
boolean success = true;
List types = new ArrayList();
Modified: xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/SchemaTypeSystemImpl.java
Url: http://svn.apache.org/viewcvs/xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/SchemaTypeSystemImpl.java?view=diff&rev=125554&p1=xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/SchemaTypeSystemImpl.java&r1=125553&p2=xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/SchemaTypeSystemImpl.java&r2=125554
==============================================================================
--- xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/SchemaTypeSystemImpl.java (original)
+++ xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/SchemaTypeSystemImpl.java Tue Jan 18 14:26:38 2005
@@ -946,6 +946,12 @@
SchemaDependencies getDependencies()
{ return _deps; }
+
+ // EXPERIMENTAL
+ public boolean isPartial() { return _partial; }
+
+ // EXPERIMENTAL
+ void setPartial(boolean partial) { _partial = partial; }
static class StringPool
{
@@ -1209,6 +1215,9 @@
private String _name;
private String _basePackage;
+
+ // EXPERIMENTAL: recovery from compilation errors and partial type systems
+ private boolean _partial = false;
// classloader is available for sts's that were compiled and loaded, not dynamic ones
private ClassLoader _classloader;
@@ -1256,11 +1265,16 @@
public void saveToDirectory(File classDir)
{
+ if (_partial)
+ return;
save(new FilerImpl(classDir, null, null, false, false));
}
public void save(Filer filer)
{
+ if (_partial)
+ return;
+
if (filer == null)
throw new IllegalArgumentException("filer must not be null");
_filer = filer;
@@ -1298,6 +1312,8 @@
public void saveGlobalElements(SchemaGlobalElement[] elts)
{
+ if (_partial)
+ return;
for (int i = 0; i < elts.length; i++)
{
saveGlobalElement(elts[i]);
@@ -1306,6 +1322,8 @@
public void saveGlobalAttributes(SchemaGlobalAttribute[] attrs)
{
+ if (_partial)
+ return;
for (int i = 0; i < attrs.length; i++)
{
saveGlobalAttribute(attrs[i]);
@@ -1314,6 +1332,8 @@
public void saveModelGroups(SchemaModelGroup[] groups)
{
+ if (_partial)
+ return;
for (int i = 0; i < groups.length; i++)
{
saveModelGroup(groups[i]);
@@ -1322,6 +1342,8 @@
public void saveAttributeGroups(SchemaAttributeGroup[] groups)
{
+ if (_partial)
+ return;
for (int i = 0; i < groups.length; i++)
{
saveAttributeGroup(groups[i]);
@@ -1330,6 +1352,8 @@
public void saveIdentityConstraints(SchemaIdentityConstraint[] idcs)
{
+ if (_partial)
+ return;
for (int i = 0; i < idcs.length; i++)
{
saveIdentityConstraint(idcs[i]);
@@ -1338,6 +1362,8 @@
public void saveGlobalElement(SchemaGlobalElement elt)
{
+ if (_partial)
+ return;
String handle = _localHandles.handleForElement(elt);
XsbReader saver = new XsbReader(handle);
saver.writeParticleData((SchemaParticle)elt);
@@ -1350,6 +1376,8 @@
public void saveGlobalAttribute(SchemaGlobalAttribute attr)
{
+ if (_partial)
+ return;
String handle = _localHandles.handleForAttribute(attr);
XsbReader saver = new XsbReader(handle);
saver.writeAttributeData(attr);
@@ -1362,6 +1390,8 @@
public void saveModelGroup(SchemaModelGroup grp)
{
+ if (_partial)
+ return;
String handle = _localHandles.handleForModelGroup(grp);
XsbReader saver = new XsbReader(handle);
saver.writeModelGroupData(grp);
@@ -1372,6 +1402,8 @@
public void saveAttributeGroup(SchemaAttributeGroup grp)
{
+ if (_partial)
+ return;
String handle = _localHandles.handleForAttributeGroup(grp);
XsbReader saver = new XsbReader(handle);
saver.writeAttributeGroupData(grp);
@@ -1382,6 +1414,8 @@
public void saveIdentityConstraint(SchemaIdentityConstraint idc)
{
+ if (_partial)
+ return;
String handle = _localHandles.handleForIdentityConstraint(idc);
XsbReader saver = new XsbReader(handle);
saver.writeIdConstraintData(idc);
Modified: xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscComplexTypeResolver.java
Url: http://svn.apache.org/viewcvs/xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscComplexTypeResolver.java?view=diff&rev=125554&p1=xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscComplexTypeResolver.java&r1=125553&p2=xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscComplexTypeResolver.java&r2=125554
==============================================================================
--- xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscComplexTypeResolver.java (original)
+++ xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscComplexTypeResolver.java Tue Jan 18 14:26:38 2005
@@ -381,7 +381,7 @@
}
if (baseType == null)
- state.notFoundError(parseTree.getBase(), SchemaType.TYPE, parseTree.xgetBase());
+ state.notFoundError(parseTree.getBase(), SchemaType.TYPE, parseTree.xgetBase(), true);
}
if (baseType == null)
@@ -509,7 +509,7 @@
baseType = state.findGlobalType(parseTree.getBase(), sImpl.getChameleonNamespace(), targetNamespace);
}
if (baseType == null)
- state.notFoundError(parseTree.getBase(), SchemaType.TYPE, parseTree.xgetBase());
+ state.notFoundError(parseTree.getBase(), SchemaType.TYPE, parseTree.xgetBase(), true);
}
// Recursion
@@ -521,7 +521,7 @@
if (baseType != null && (baseType.isSimpleType() || baseType.getContentType() == SchemaType.SIMPLE_CONTENT))
{
- state.error(XmlErrorCodes.SCHEMA_COMPLEX_TYPE$COMPLEX_CONTENT,
+ state.recover(XmlErrorCodes.SCHEMA_COMPLEX_TYPE$COMPLEX_CONTENT,
new Object[] { QNameHelper.pretty(baseType.getName()) },
parseTree.xgetBase());
baseType = null; // recovery: no inheritance.
@@ -655,7 +655,7 @@
}
if (baseType == null)
{
- state.notFoundError(parseTree.getBase(), SchemaType.TYPE, parseTree.xgetBase());
+ state.notFoundError(parseTree.getBase(), SchemaType.TYPE, parseTree.xgetBase(), true);
// recovery: extends ANY_SIMPLE type
baseType = BuiltinSchemaTypeSystem.ST_ANY_SIMPLE;
}
@@ -667,7 +667,7 @@
if (baseType.isSimpleType())
{
// src-ct.2: complex types with simple content cannot restrict simple types
- state.error(XmlErrorCodes.COMPLEX_TYPE_PROPERTIES$SIMPLE_TYPE_EXTENSION,
+ state.recover(XmlErrorCodes.COMPLEX_TYPE_PROPERTIES$SIMPLE_TYPE_EXTENSION,
new Object[] { QNameHelper.pretty(baseType.getName()) },
parseTree);
// recovery: extends ANY_SIMPLE type
@@ -776,7 +776,7 @@
}
if (baseType == null)
{
- state.notFoundError(parseTree.getBase(), SchemaType.TYPE, parseTree.xgetBase());
+ state.notFoundError(parseTree.getBase(), SchemaType.TYPE, parseTree.xgetBase(), true);
// recovery: extends ANY_SIMPLE type
baseType = BuiltinSchemaTypeSystem.ST_ANY_SIMPLE;
}
@@ -1066,7 +1066,7 @@
}
if (group == null)
{
- state.notFoundError(ref, SchemaType.ATTRIBUTE_GROUP, xsdag.xgetRef());
+ state.notFoundError(ref, SchemaType.ATTRIBUTE_GROUP, xsdag.xgetRef(), false);
continue;
}
if (state.isProcessing(group))
@@ -1284,7 +1284,7 @@
}
if (group == null)
{
- state.notFoundError(ref, SchemaType.MODEL_GROUP, ((Group)parseTree).xgetRef());
+ state.notFoundError(ref, SchemaType.MODEL_GROUP, ((Group)parseTree).xgetRef(), false);
return null;
}
if (state.isProcessing(group))
Modified: xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscResolver.java
Url: http://svn.apache.org/viewcvs/xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscResolver.java?view=diff&rev=125554&p1=xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscResolver.java&r1=125553&p2=xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscResolver.java&r2=125554
==============================================================================
--- xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscResolver.java (original)
+++ xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscResolver.java Tue Jan 18 14:26:38 2005
@@ -118,7 +118,7 @@
sImpl.getChameleonNamespace(), sImpl.getTargetNamespace());
if (substitutionGroup == null)
- StscState.get().notFoundError(elt.getSubstitutionGroup(), SchemaType.ELEMENT, elt.xgetSubstitutionGroup());
+ StscState.get().notFoundError(elt.getSubstitutionGroup(), SchemaType.ELEMENT, elt.xgetSubstitutionGroup(), true);
// recovery - ignore substitution group
else if (! resolveSubstitutionGroup(substitutionGroup) )
substitutionGroup = null;
@@ -282,7 +282,7 @@
key = state.findIdConstraint(keyName, idcs[i].getChameleonNamespace(), idcs[i].getTargetNamespace());
if (key == null)
{
- state.notFoundError(keyName, SchemaType.IDENTITY_CONSTRAINT, xsdkr);
+ state.notFoundError(keyName, SchemaType.IDENTITY_CONSTRAINT, xsdkr, true);
}
else
{
Modified: xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscSimpleTypeResolver.java
Url: http://svn.apache.org/viewcvs/xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscSimpleTypeResolver.java?view=diff&rev=125554&p1=xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscSimpleTypeResolver.java&r1=125553&p2=xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscSimpleTypeResolver.java&r2=125554
==============================================================================
--- xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscSimpleTypeResolver.java (original)
+++ xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscSimpleTypeResolver.java Tue Jan 18 14:26:38 2005
@@ -200,7 +200,7 @@
errorLoc = parseList.xgetItemType();
if (itemImpl == null)
{
- state.notFoundError(itemName, SchemaType.TYPE, parseList.xgetItemType());
+ state.notFoundError(itemName, SchemaType.TYPE, parseList.xgetItemType(), true);
// recovery: treat it as a list of anySimpleType
itemImpl = BuiltinSchemaTypeSystem.ST_ANY_SIMPLE;
}
@@ -307,7 +307,7 @@
SchemaTypeImpl memberImpl = state.findGlobalType(mName, sImpl.getChameleonNamespace(), sImpl.getTargetNamespace());
if (memberImpl == null)
// recovery: skip member
- state.notFoundError(mName, SchemaType.TYPE, parseUnion.xgetMemberTypes());
+ state.notFoundError(mName, SchemaType.TYPE, parseUnion.xgetMemberTypes(), true);
else
memberImplList.add(memberImpl);
}
@@ -443,7 +443,7 @@
}
if (baseImpl == null)
{
- state.notFoundError(baseName, SchemaType.TYPE, parseRestr.xgetBase());
+ state.notFoundError(baseName, SchemaType.TYPE, parseRestr.xgetBase(), true);
// recovery: treat it as an extension of anySimpleType
baseImpl = BuiltinSchemaTypeSystem.ST_ANY_SIMPLE;
}
Modified: xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscState.java
Url: http://svn.apache.org/viewcvs/xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscState.java?view=diff&rev=125554&p1=xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscState.java&r1=125553&p2=xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscState.java&r2=125554
==============================================================================
--- xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscState.java (original)
+++ xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscState.java Tue Jan 18 14:26:38 2005
@@ -61,6 +61,10 @@
private boolean _doingDownloads;
private byte[] _digest = null;
private boolean _noDigest = false;
+
+ // EXPERIMENTAL: recovery from compilation errors and partial type systems
+ private boolean _allowPartial = false;
+ private int _recoveredErrors = 0;
private SchemaTypeLoader _importingLoader;
@@ -292,20 +296,26 @@
{ _errorListener = errorListener; }
/**
- * Passes an error on to the current XmlErrorCodes.
+ * Passes an error on to the current error listener.
* KHK: remove this
*/
public void error(String message, int code, XmlObject loc)
{ addError(_errorListener, message, code, loc); }
/**
- * Passes an error on to the current XmlErrorCodes.
+ * Passes an error on to the current error listener.
*/
public void error(String code, Object[] args, XmlObject loc)
- { addError(_errorListener, code, args, loc); }
-
+ { addError(_errorListener, code, args, loc); }
+
+ /**
+ * Passes a recovered error on to the current error listener.
+ */
+ public void recover(String code, Object[] args, XmlObject loc)
+ { addError(_errorListener, code, args, loc); _recoveredErrors++; }
+
/**
- * Passes an error on to the current XmlErrorCodes.
+ * Passes an error on to the current error listener.
*/
public void warning(String message, int code, XmlObject loc)
{
@@ -313,7 +323,7 @@
}
/**
- * Passes an error on to the current XmlErrorCodes.
+ * Passes an error on to the current error listener.
*/
public void warning(String code, Object[] args, XmlObject loc)
{
@@ -327,13 +337,13 @@
}
/**
- * Passes a warning on to the current XmlErrorCodes.
+ * Passes a warning on to the current error listener.
*/
public void info(String message)
{ addInfo(_errorListener, message); }
/**
- * Passes a warning on to the current XmlErrorCodes.
+ * Passes a warning on to the current error listener.
*/
public void info(String code, Object[] args)
{ addInfo(_errorListener, code, args); }
@@ -359,7 +369,7 @@
location);
errorListener.add(err);
}
-
+
public static void addError(Collection errorListener, String code, Object[] args, File location)
{
XmlError err =
@@ -497,6 +507,8 @@
return; // defaults are all false.
}
+ _allowPartial = options.hasOption("COMPILE_PARTIAL_TYPESYSTEM");
+
_compatMap = (Map)options.get(XmlOptions.COMPILE_SUBSTITUTE_NAMES);
_noUpa = options.hasOption(XmlOptions.COMPILE_NO_UPA_RULE) ? true :
!"true".equals(System.getProperty("xmlbean.uniqueparticleattribution", "true"));
@@ -513,7 +525,7 @@
if (_entityResolver != null)
_doingDownloads = true;
-
+
if (options.hasOption(XmlOptions.COMPILE_MDEF_NAMESPACES))
{
_mdefNamespaces.addAll((Collection)options.get(XmlOptions.COMPILE_MDEF_NAMESPACES));
@@ -559,7 +571,25 @@
{
return _noAnn;
}
-
+
+ /**
+ * True if a partial SchemaTypeSystem should be produced
+ */
+ // EXPERIMENTAL
+ public boolean allowPartial()
+ {
+ return _allowPartial;
+ }
+
+ /**
+ * Get count of recovered errors. Not for public.
+ */
+ // EXPERIMENTAL
+ public int getRecovered()
+ {
+ return _recoveredErrors;
+ }
+
/**
* Intercepts XML names and translates them
* through the compat map, if any.
@@ -1220,13 +1250,16 @@
}
}
- public void notFoundError(QName itemName, int code, XmlObject loc)
+ public void notFoundError(QName itemName, int code, XmlObject loc, boolean recovered)
{
String expected;
String expectedName = QNameHelper.pretty(itemName);
String found = null;
String foundName = null;
String sourceName = null;
+
+ if (recovered)
+ _recoveredErrors++;
switch (code)
{
Modified: xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscTranslator.java
Url: http://svn.apache.org/viewcvs/xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscTranslator.java?view=diff&rev=125554&p1=xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscTranslator.java&r1=125553&p2=xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscTranslator.java&r2=125554
==============================================================================
--- xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscTranslator.java (original)
+++ xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscTranslator.java Tue Jan 18 14:26:38 2005
@@ -643,7 +643,7 @@
SchemaGlobalElement referenced = state.findGlobalElement(ref, chameleon ? targetNamespace : null, targetNamespace);
if (referenced == null)
{
- state.notFoundError(ref, SchemaType.ELEMENT, xsdElt.xgetRef());
+ state.notFoundError(ref, SchemaType.ELEMENT, xsdElt.xgetRef(), true);
// recovery: ignore this element
return null;
}
@@ -731,7 +731,7 @@
{
sType = state.findGlobalType(xsdElt.getType(), chameleon ? targetNamespace : null, targetNamespace );
if (sType == null)
- state.notFoundError(xsdElt.getType(), SchemaType.TYPE, xsdElt.xgetType());
+ state.notFoundError(xsdElt.getType(), SchemaType.TYPE, xsdElt.xgetType(), true);
}
boolean simpleTypedef = false;
@@ -1080,7 +1080,7 @@
SchemaGlobalAttribute referenced = state.findGlobalAttribute(ref, chameleon ? targetNamespace : null, targetNamespace);
if (referenced == null)
{
- state.notFoundError(ref, SchemaType.ATTRIBUTE, xsdAttr.xgetRef());
+ state.notFoundError(ref, SchemaType.ATTRIBUTE, xsdAttr.xgetRef(), true);
// recovery: ignore this element
return null;
}
@@ -1117,7 +1117,7 @@
{
sType = state.findGlobalType(xsdAttr.getType(), chameleon ? targetNamespace : null, targetNamespace );
if (sType == null)
- state.notFoundError(xsdAttr.getType(), SchemaType.TYPE, xsdAttr.xgetType());
+ state.notFoundError(xsdAttr.getType(), SchemaType.TYPE, xsdAttr.xgetType(), true);
}
if (qname.getNamespaceURI().equals("http://www.w3.org/2001/XMLSchema-instance"))
Modified: xmlbeans/trunk/src/xmlcomp/org/apache/xmlbeans/impl/tool/InstanceValidator.java
Url: http://svn.apache.org/viewcvs/xmlbeans/trunk/src/xmlcomp/org/apache/xmlbeans/impl/tool/InstanceValidator.java?view=diff&rev=125554&p1=xmlbeans/trunk/src/xmlcomp/org/apache/xmlbeans/impl/tool/InstanceValidator.java&r1=125553&p2=xmlbeans/trunk/src/xmlcomp/org/apache/xmlbeans/impl/tool/InstanceValidator.java&r2=125554
==============================================================================
--- xmlbeans/trunk/src/xmlcomp/org/apache/xmlbeans/impl/tool/InstanceValidator.java (original)
+++ xmlbeans/trunk/src/xmlcomp/org/apache/xmlbeans/impl/tool/InstanceValidator.java Tue Jan 18 14:26:38 2005
@@ -40,6 +40,7 @@
System.out.println(" -dl enable network downloads for imports and includes");
System.out.println(" -nopvr disable particle valid (restriction) rule");
System.out.println(" -noupa diable unique particle attributeion rule");
+ System.out.println(" -partial allow partial schema type system");
System.out.println(" -license prints license information");
}
@@ -54,6 +55,7 @@
flags.add("dl");
flags.add("noupa");
flags.add("nopvr");
+ flags.add("partial");
CommandLine cl = new CommandLine(args, flags, Collections.EMPTY_SET);
@@ -96,6 +98,7 @@
boolean dl = (cl.getOpt("dl") != null);
boolean nopvr = (cl.getOpt("nopvr") != null);
boolean noupa = (cl.getOpt("noupa") != null);
+ boolean partial = (cl.getOpt("partial") != null);
File[] schemaFiles = cl.filesEndingWith(".xsd");
File[] instanceFiles = cl.filesEndingWith(".xml");
@@ -129,6 +132,8 @@
schemaOptions.setCompileNoPvrRule();
if (noupa)
schemaOptions.setCompileNoUpaRule();
+ if (partial)
+ schemaOptions.put("COMPILE_PARTIAL_TYPESYSTEM");
try
{
@@ -140,10 +145,18 @@
{
e.printStackTrace(System.err);
}
- System.out.println("Schema invalid");
+ System.out.println("Schema invalid:" + (partial ? " couldn't recover from errors" : ""));
for (Iterator i = compErrors.iterator(); i.hasNext(); )
System.out.println(i.next());
return;
+ }
+
+ // recovered from errors, print out errors
+ if (partial && !compErrors.isEmpty())
+ {
+ System.out.println("Schema invalid: partial schema type system recovered");
+ for (Iterator i = compErrors.iterator(); i.hasNext(); )
+ System.out.println(i.next());
}
for (int i = 0; i < instanceFiles.length; i++)
Modified: xmlbeans/trunk/src/xmlcomp/org/apache/xmlbeans/impl/tool/TypeHierarchyPrinter.java
Url: http://svn.apache.org/viewcvs/xmlbeans/trunk/src/xmlcomp/org/apache/xmlbeans/impl/tool/TypeHierarchyPrinter.java?view=diff&rev=125554&p1=xmlbeans/trunk/src/xmlcomp/org/apache/xmlbeans/impl/tool/TypeHierarchyPrinter.java&r1=125553&p2=xmlbeans/trunk/src/xmlcomp/org/apache/xmlbeans/impl/tool/TypeHierarchyPrinter.java&r2=125554
==============================================================================
--- xmlbeans/trunk/src/xmlcomp/org/apache/xmlbeans/impl/tool/TypeHierarchyPrinter.java (original)
+++ xmlbeans/trunk/src/xmlcomp/org/apache/xmlbeans/impl/tool/TypeHierarchyPrinter.java Tue Jan 18 14:26:38 2005
@@ -42,7 +42,7 @@
public static void printUsage()
{
System.out.println("Prints inheritance hierarchy of types defined in a schema.");
- System.out.println("Usage: xsdtree [-noanon] [-nopvr] [-noupa] [-license] file1.xsd file2.xsd ...");
+ System.out.println("Usage: xsdtree [-noanon] [-nopvr] [-noupa] [-partial] [-license] file1.xsd file2.xsd ...");
}
public static void main(String[] args) throws Exception
@@ -56,6 +56,7 @@
flags.add("noanon");
flags.add("noupr");
flags.add("noupa");
+ flags.add("partial");
CommandLine cl = new CommandLine(args, flags, Collections.EMPTY_SET);
if (cl.getOpt("h") != null || cl.getOpt("help") != null || cl.getOpt("usage") != null)
@@ -98,6 +99,7 @@
boolean noanon = (cl.getOpt("noanon") != null);
boolean nopvr = (cl.getOpt("nopvr") != null);
boolean noupa = (cl.getOpt("noupa") != null);
+ boolean partial = (cl.getOpt("partial") != null);
File[] schemaFiles = cl.getFiles();
@@ -130,6 +132,8 @@
schemaOptions.setCompileNoPvrRule();
if (noupa)
schemaOptions.setCompileNoUpaRule();
+ if (partial)
+ schemaOptions.put("COMPILE_PARTIAL_TYPESYSTEM");
try
{
@@ -137,12 +141,20 @@
}
catch (XmlException e)
{
- System.out.println("Schema invalid");
+ System.out.println("Schema invalid:" + (partial ? " couldn't recover from errors" : ""));
if (compErrors.isEmpty())
System.out.println(e.getMessage());
else for (Iterator i = compErrors.iterator(); i.hasNext(); )
System.out.println(i.next());
return;
+ }
+
+ // step 2.5: recovered from errors, print out errors
+ if (partial && !compErrors.isEmpty())
+ {
+ System.out.println("Schema invalid: partial schema type system recovered");
+ for (Iterator i = compErrors.iterator(); i.hasNext(); )
+ System.out.println(i.next());
}
// step 3: go through all the types, and note their base types and namespaces
Modified: xmlbeans/trunk/src/xmlpublic/org/apache/xmlbeans/XmlBeans.java
Url: http://svn.apache.org/viewcvs/xmlbeans/trunk/src/xmlpublic/org/apache/xmlbeans/XmlBeans.java?view=diff&rev=125554&p1=xmlbeans/trunk/src/xmlpublic/org/apache/xmlbeans/XmlBeans.java&r1=125553&p2=xmlbeans/trunk/src/xmlpublic/org/apache/xmlbeans/XmlBeans.java&r2=125554
==============================================================================
--- xmlbeans/trunk/src/xmlpublic/org/apache/xmlbeans/XmlBeans.java (original)
+++ xmlbeans/trunk/src/xmlpublic/org/apache/xmlbeans/XmlBeans.java Tue Jan 18 14:26:38 2005
@@ -586,7 +586,8 @@
* A randomly generated name will be used if the name is null.</p>
*
* <p>The optional {@link BindingConfig} argument is used to control the shape
- * of the generated code.</p>
+ * of the generated code. A <code>BindingConfig</code> isn't used if <code>Filer</code>
+ * is null.</p>
*
* <p>The optional SchemaTypeLoader argument will be
* consulted for already-compiled schema types which may be linked
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xmlbeans.apache.org
For additional commands, e-mail: commits-help@xmlbeans.apache.org