[java-opensaml COMMIT] /trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/common/xml/SAMLSchemaBuilder.java

noreply at shibboleth.net noreply at shibboleth.net
Fri Nov 6 22:45:35 EST 2015


Author: putmanb
Date: Fri Nov  6 22:45:35 2015
New Revision: 4407

URL: http://svn.shibboleth.net/view/java-opensaml?rev=4407&view=rev
Log:
OSJ-110 and OSJ-111: Adjust handling in error cases.

In cases where configureBuilder() does throw, as it can now, make sure we leave things in
a known and acceptable state.
When injecting an external SchemaBuilder, clear the cached schema before configuring, that way
it's already cleared if the configure throws.
When in getSAMLSchema(), if lazy initing a new SchemaBuilder and the configure fails, clear
out the builder reference so it's not left in a half-inited state and used on the next call.

Modified:
    trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/common/xml/SAMLSchemaBuilder.java

Modified: trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/common/xml/SAMLSchemaBuilder.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/common/xml/SAMLSchemaBuilder.java?rev=4407&r1=4406&r2=4407&view=diff
==============================================================================
--- trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/common/xml/SAMLSchemaBuilder.java	(original)
+++ trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/common/xml/SAMLSchemaBuilder.java	Fri Nov  6 22:45:35 2015
@@ -184,8 +184,8 @@
      */
     public synchronized void setSchemaBuilder(@Nonnull final SchemaBuilder builder) {
         schemaBuilder = Constraint.isNotNull(builder, "SchemaBuilder cannot be null");
+        cachedSchema = null;
         configureBuilder();
-        cachedSchema = null;
     }
 
     /**
@@ -198,9 +198,14 @@
     @Nonnull public synchronized Schema getSAMLSchema() throws SAXException {
         if (cachedSchema == null) {
             if (schemaBuilder == null) {
-                schemaBuilder = new SchemaBuilder();
-                schemaBuilder.setResourceResolver(new ClasspathResolver());
-                configureBuilder();
+                try {
+                    schemaBuilder = new SchemaBuilder();
+                    schemaBuilder.setResourceResolver(new ClasspathResolver());
+                    configureBuilder();
+                } catch (RuntimeException e) {
+                    schemaBuilder = null;
+                    throw e;
+                }
             }
             cachedSchema = schemaBuilder.buildSchema();
             return cachedSchema;



More information about the commits mailing list