All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.hibernate.boot.jaxb.internal.stax.LocalSchemaLocator Maven / Gradle / Ivy

There is a newer version: 6.5.0.CR2
Show newest version
/*
 * Hibernate, Relational Persistence for Idiomatic Java
 *
 * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
 * See the lgpl.txt file in the root directory or .
 */
package org.hibernate.boot.jaxb.internal.stax;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import javax.xml.XMLConstants;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;

import org.jboss.logging.Logger;

/**
 * Helper for resolving XML Schema references locally.
 * 

* Note that *by design* we always use our ClassLoader to perform the lookups here. * * @author Steve Ebersole */ public class LocalSchemaLocator { private static final Logger log = Logger.getLogger( LocalSchemaLocator.class ); /** * Disallow direct instantiation */ private LocalSchemaLocator() { } /** * Given the resource name of a schema, locate its URL reference via ClassLoader lookup. * * @param schemaResourceName The local resource name to the schema * * @return */ public static URL resolveLocalSchemaUrl(String schemaResourceName) { URL url = LocalSchemaLocator.class.getClassLoader().getResource( schemaResourceName ); if ( url == null ) { throw new XmlInfrastructureException( "Unable to locate schema [" + schemaResourceName + "] via classpath" ); } return url; } public static Schema resolveLocalSchema(String schemaName){ return resolveLocalSchema( resolveLocalSchemaUrl( schemaName ) ); } public static Schema resolveLocalSchema(URL schemaUrl) { try { InputStream schemaStream = schemaUrl.openStream(); try { StreamSource source = new StreamSource(schemaUrl.openStream()); SchemaFactory schemaFactory = SchemaFactory.newInstance( XMLConstants.W3C_XML_SCHEMA_NS_URI ); return schemaFactory.newSchema(source); } catch ( Exception e ) { throw new XmlInfrastructureException( "Unable to load schema [" + schemaUrl.toExternalForm() + "]", e ); } finally { try { schemaStream.close(); } catch ( IOException e ) { log.debugf( "Problem closing schema stream - %s", e.toString() ); } } } catch ( IOException e ) { throw new XmlInfrastructureException( "Stream error handling schema url [" + schemaUrl.toExternalForm() + "]" ); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy