[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