[jboss-svn-commits] JBoss Common SVN: r3335 - in jbossxb/trunk/src/main/java/org/jboss/xb: util and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Jul 8 11:29:03 EDT 2009
Author: alex.loubyansky at jboss.com
Date: 2009-07-08 11:29:03 -0400 (Wed, 08 Jul 2009)
New Revision: 3335
Modified:
jbossxb/trunk/src/main/java/org/jboss/xb/binding/resolver/AbstractMutableSchemaResolver.java
jbossxb/trunk/src/main/java/org/jboss/xb/util/SchemaBindingValidator.java
Log:
JBXB-212
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/resolver/AbstractMutableSchemaResolver.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/resolver/AbstractMutableSchemaResolver.java 2009-07-08 02:20:30 UTC (rev 3334)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/resolver/AbstractMutableSchemaResolver.java 2009-07-08 15:29:03 UTC (rev 3335)
@@ -319,7 +319,7 @@
{
SchemaBindingValidator validator = this.validator;
if(validator == null)
- validator = new SchemaBindingValidator();
+ validator = new SchemaBindingValidator(this);
validator.validate(is, schema);
}
else
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/util/SchemaBindingValidator.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/util/SchemaBindingValidator.java 2009-07-08 02:20:30 UTC (rev 3334)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/util/SchemaBindingValidator.java 2009-07-08 15:29:03 UTC (rev 3335)
@@ -60,6 +60,7 @@
import org.jboss.xb.binding.sunday.unmarshalling.ModelGroupBinding;
import org.jboss.xb.binding.sunday.unmarshalling.ParticleBinding;
import org.jboss.xb.binding.sunday.unmarshalling.SchemaBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.SchemaBindingResolver;
import org.jboss.xb.binding.sunday.unmarshalling.SequenceBinding;
import org.jboss.xb.binding.sunday.unmarshalling.TermBinding;
import org.jboss.xb.binding.sunday.unmarshalling.TypeBinding;
@@ -106,6 +107,8 @@
private Set<QName> validatedTypes = new HashSet<QName>();
private Set<QName> validatedElements = new HashSet<QName>();
+ private SchemaBindingResolver resolver;
+
private boolean loggingEnabled;
public SchemaBindingValidator()
@@ -115,6 +118,15 @@
}
/**
+ * @param resolver default schema resolver
+ */
+ public SchemaBindingValidator(SchemaBindingResolver resolver)
+ {
+ this();
+ this.resolver = resolver;
+ }
+
+ /**
* Resets instance variables (such as a set of validated types, elements and also loggingEnabled property).
* This method is required to invoked before another validation.
* It is called internally at the end of validate(XSModel xsSchema, SchemaBinding schemaBinding).
@@ -200,6 +212,22 @@
}
/**
+ * @return The default resolver used to resolve schemas
+ */
+ public SchemaBindingResolver getSchemaResolver()
+ {
+ return resolver;
+ }
+
+ /**
+ * @param resolver The default resolver used to resolve schemas
+ */
+ public void setSchemaResolver(SchemaBindingResolver resolver)
+ {
+ this.resolver = resolver;
+ }
+
+ /**
* This method will check that the XSD represented with InputSource and SchemaBinding are consistent.
* The consistency is checked to certain degree and is far from 100%. Currently it checks just for basic things
* such as the existence of type definitions, attribute and element declarations and element ordering.
@@ -209,7 +237,13 @@
*/
public void validate(InputSource is, SchemaBinding binding)
{
- XSModel xsModel = Util.loadSchema(is, binding.getSchemaResolver());
+ SchemaBindingResolver resolver = binding.getSchemaResolver();
+ if(resolver == null)
+ {
+ resolver = this.resolver;
+ log("SchemaBinding doesn't have a resolver, the default resolver will be used");
+ }
+ XSModel xsModel = Util.loadSchema(is, resolver);
validate(xsModel, binding);
}
@@ -221,10 +255,14 @@
if(xsdUrl == null)
handleError("Failed to load schema from the classpath: schema/" + xsdName);
- MultiClassSchemaResolver resolver = new MultiClassSchemaResolver();
- resolver.mapLocationToClasses(xsdName, cls);
+ MultiClassSchemaResolver multiClassResolver = new MultiClassSchemaResolver();
+ multiClassResolver.mapLocationToClasses(xsdName, cls);
SchemaBinding binding = resolver.resolve("", null, xsdName);
+ SchemaBindingResolver resolver = this.resolver;
+ if(resolver == null)
+ resolver = multiClassResolver;
+
XSModel xsModel;
try
{
More information about the jboss-svn-commits
mailing list