From hibernate-commits at lists.jboss.org Wed Jun 10 06:55:23 2009 Content-Type: multipart/mixed; boundary="===============8718213720548864015==" MIME-Version: 1.0 From: hibernate-commits at lists.jboss.org To: hibernate-commits at lists.jboss.org Subject: [hibernate-commits] Hibernate SVN: r16734 - validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine. Date: Wed, 10 Jun 2009 06:44:43 -0400 Message-ID: --===============8718213720548864015== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Author: hardy.ferentschik Date: 2009-06-10 06:44:41 -0400 (Wed, 10 Jun 2009) New Revision: 16734 Removed: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validati= on/engine/DefaultValidationProviderResolver.java Log: Deleted obsolete class Deleted: validator/trunk/hibernate-validator/src/main/java/org/hibernate/va= lidation/engine/DefaultValidationProviderResolver.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validat= ion/engine/DefaultValidationProviderResolver.java 2009-06-10 10:43:12 UTC (= rev 16733) +++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validat= ion/engine/DefaultValidationProviderResolver.java 2009-06-10 10:44:41 UTC (= rev 16734) @@ -1,121 +0,0 @@ -package org.hibernate.validation.engine; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.URL; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.List; -import java.util.Map; -import java.util.WeakHashMap; -import javax.validation.ValidationException; -import javax.validation.ValidationProviderResolver; -import javax.validation.spi.ValidationProvider; - -/** - * Find ValidationProvider according to the default Val= idationProviderResolver defined in the - * Bean Validation specification. This implementation uses the current cla= ssloader or the classloader which has loaded - * the current class if the current class loader is unavailable. The class= loader is used to retrieve the Service Provider files. - *

- * This class implements the Service Provider pattern described here. - * Since we cannot rely on Java 6 we have to reimplement the Service= functionality. - *

- * - * Duplicated from the private innner class Validation#DefaultValidationPr= oviderResolver - * - * @author Emmanuel Bernard - * @author Hardy Ferentschik - */ -public class DefaultValidationProviderResolver implements ValidationProvid= erResolver { - - //cache per classloader for an appropriate discovery - //keep them in a weak hashmap to avoid memory leaks and allow proper hot = redeployment - //TODO use a WeakConcurrentHashMap - private static final Map> providers= PerClassloader =3D - new WeakHashMap>(); - - private static final String SERVICES_FILE =3D "META-INF/services/" + Vali= dationProvider.class.getName(); - - public List getValidationProviders() { - ClassLoader classloader =3D Thread.currentThread().getContextClassLoader= (); - if ( classloader =3D=3D null ) { - classloader =3D DefaultValidationProviderResolver.class.getClassLoader(= ); - } - - List providers; - synchronized ( providersPerClassloader ) { - providers =3D providersPerClassloader.get( classloader ); - } - - if ( providers =3D=3D null ) { - providers =3D new ArrayList(); - String name =3D null; - try { - Enumeration providerDefinitions =3D classloader.getResources( SER= VICES_FILE ); - while ( providerDefinitions.hasMoreElements() ) { - URL url =3D providerDefinitions.nextElement(); - InputStream stream =3D url.openStream(); - BufferedReader reader =3D new BufferedReader( new InputStreamReader( = stream ), 100 ); - try { - name =3D reader.readLine(); - while ( name !=3D null ) { - name =3D name.trim(); - if ( !name.startsWith( "#" ) ) { - final Class providerClass =3D loadClass( - name, - DefaultValidationProviderResolver.class - ); - - providers.add( - ( ValidationProvider ) providerClass.newInstance() - ); - } - name =3D reader.readLine(); - } - } - finally { - reader.close(); - } - } - } - catch ( IOException e ) { - throw new ValidationException( "Unable to read " + SERVICES_FILE, e ); - } - catch ( ClassNotFoundException e ) { - //TODO is it better to not fail the whole loading because of a black s= heep? - throw new ValidationException( "Unable to load Bean Validation provide= r " + name, e ); - } - catch ( IllegalAccessException e ) { - throw new ValidationException( "Unable to instanciate Bean Validation = provider" + name, e ); - } - catch ( InstantiationException e ) { - throw new ValidationException( "Unable to instanciate Bean Validation = provider" + name, e ); - } - - synchronized ( providersPerClassloader ) { - providersPerClassloader.put( classloader, providers ); - } - } - - return providers; - } - - private static Class loadClass(String name, Class caller) throws Class= NotFoundException { - try { - //try context classloader, if fails try caller classloader - ClassLoader loader =3D Thread.currentThread().getContextClassLoader(); - if ( loader !=3D null ) { - return loader.loadClass( name ); - } - } - catch ( ClassNotFoundException e ) { - //trying caller classloader - if ( caller =3D=3D null ) { - throw e; - } - } - return Class.forName( name, true, caller.getClassLoader() ); - } -} --===============8718213720548864015==--