[hibernate-commits] Hibernate SVN: r19692 - in search/trunk/hibernate-search/src/main/java/org/hibernate/search: event and 3 other directories.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Fri Jun 4 08:43:37 EDT 2010


Author: epbernard
Date: 2010-06-04 08:43:35 -0400 (Fri, 04 Jun 2010)
New Revision: 19692

Modified:
   search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/FilterDef.java
   search/trunk/hibernate-search/src/main/java/org/hibernate/search/event/FullTextIndexEventListener.java
   search/trunk/hibernate-search/src/main/java/org/hibernate/search/impl/SearchFactoryImpl.java
   search/trunk/hibernate-search/src/main/java/org/hibernate/search/impl/SearchMappingBuilder.java
   search/trunk/hibernate-search/src/main/java/org/hibernate/search/reader/ReaderProviderHelper.java
   search/trunk/hibernate-search/src/main/java/org/hibernate/search/util/ReflectionHelper.java
Log:
HSEARCH-535 setAccessible to true for all field / methods even public

Convert Field.setAccessible and Method.Field.setAccessible use too

Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/FilterDef.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/FilterDef.java	2010-06-04 12:42:46 UTC (rev 19691)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/FilterDef.java	2010-06-04 12:43:35 UTC (rev 19692)
@@ -29,9 +29,11 @@
 import java.util.HashMap;
 import java.util.Map;
 
+import org.hibernate.annotations.common.util.ReflectHelper;
 import org.hibernate.search.SearchException;
 import org.hibernate.search.annotations.FilterCacheModeType;
 import org.hibernate.search.annotations.FullTextFilterDef;
+import org.hibernate.search.util.ReflectionHelper;
 
 /**
  * A wrapper class which encapsulates all required information to create a defined filter.
@@ -82,7 +84,7 @@
 	}
 
 	public void addSetter(String name, Method method) {
-		if ( method.isAccessible() ) method.setAccessible( true );
+		ReflectionHelper.setAccessible( method );
 		setters.put( name, method );
 	}
 

Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/event/FullTextIndexEventListener.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/event/FullTextIndexEventListener.java	2010-06-04 12:42:46 UTC (rev 19691)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/event/FullTextIndexEventListener.java	2010-06-04 12:43:35 UTC (rev 19692)
@@ -64,6 +64,7 @@
 import org.hibernate.search.engine.SearchFactoryImplementor;
 import org.hibernate.search.impl.SearchFactoryImpl;
 import org.hibernate.search.util.LoggerFactory;
+import org.hibernate.search.util.ReflectionHelper;
 import org.hibernate.search.util.WeakIdentityHashMap;
 
 import static org.hibernate.search.event.FullTextIndexEventListener.Installation.MULTIPLE_INSTANCE;
@@ -286,7 +287,7 @@
 		is.defaultReadObject();
 		Class<FullTextIndexEventListener> cl = FullTextIndexEventListener.class;
 		Field f = cl.getDeclaredField("flushSynch");
-		f.setAccessible( true );
+		ReflectionHelper.setAccessible( f );
 		Map<Session,Synchronization> flushSynch = new WeakIdentityHashMap<Session,Synchronization>(0);
 		// setting a final field by reflection during a readObject is considered as safe as in a constructor:
 		f.set( this, flushSynch );

Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/impl/SearchFactoryImpl.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/impl/SearchFactoryImpl.java	2010-06-04 12:42:46 UTC (rev 19691)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/impl/SearchFactoryImpl.java	2010-06-04 12:43:35 UTC (rev 19692)
@@ -88,6 +88,7 @@
 import org.hibernate.search.store.optimization.OptimizerStrategy;
 import org.hibernate.search.util.LoggerFactory;
 import org.hibernate.search.util.PluginLoader;
+import org.hibernate.search.util.ReflectionHelper;
 import org.hibernate.util.StringHelper;
 import org.slf4j.Logger;
 import org.hibernate.search.exception.ErrorHandler;
@@ -337,9 +338,7 @@
 									+ filterDef.getImpl().getName() + "." + method.getName()
 					);
 				}
-				if ( !method.isAccessible() ) {
-					method.setAccessible( true );
-				}
+				ReflectionHelper.setAccessible( method );
 				filterDef.setFactoryMethod( method );
 			}
 			if ( method.isAnnotationPresent( Key.class ) ) {
@@ -349,9 +348,7 @@
 									+ filterDef.getImpl().getName() + "." + method.getName()
 					);
 				}
-				if ( !method.isAccessible() ) {
-					method.setAccessible( true );
-				}
+				ReflectionHelper.setAccessible( method );
 				filterDef.setKeyMethod( method );
 			}
 

Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/impl/SearchMappingBuilder.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/impl/SearchMappingBuilder.java	2010-06-04 12:42:46 UTC (rev 19691)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/impl/SearchMappingBuilder.java	2010-06-04 12:43:35 UTC (rev 19692)
@@ -33,6 +33,7 @@
 import org.hibernate.search.annotations.Factory;
 import org.hibernate.search.util.LoggerFactory;
 import org.hibernate.annotations.common.util.ReflectHelper;
+import org.hibernate.search.util.ReflectionHelper;
 
 import org.slf4j.Logger;
 
@@ -82,7 +83,7 @@
 		for (Method method : methods) {
 			if (method.isAnnotationPresent(Factory.class)) {
 				count++;
-				makeMethodAccessibleIfRequired(method);
+				ReflectionHelper.setAccessible( method );
 				mapping = getNewInstanceOfSearchMapping(clazz, method);
 			}
 		}
@@ -102,12 +103,6 @@
 		return mapping;
 	}
 
-	private static void makeMethodAccessibleIfRequired(Method method) {
-		if ( !method.isAccessible() ) {
-			method.setAccessible( true );
-		}
-	}
-	
 	private static void validateMappingFactoryDefinition(int count, Class<?> factory) {
 		if (count == 0) {
 			throw new SearchException("No @Factory method defined for building programmatic api on " + factory);

Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/reader/ReaderProviderHelper.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/reader/ReaderProviderHelper.java	2010-06-04 12:42:46 UTC (rev 19691)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/reader/ReaderProviderHelper.java	2010-06-04 12:43:35 UTC (rev 19692)
@@ -35,6 +35,7 @@
 import org.apache.lucene.search.MultiSearcher;
 import org.apache.lucene.search.Searchable;
 import org.hibernate.search.SearchException;
+import org.hibernate.search.util.ReflectionHelper;
 
 /**
  * @author Emmanuel Bernard
@@ -46,7 +47,7 @@
 	private static Field getSubReadersField() {
 		try {
 			Field field = MultiReader.class.getDeclaredField( "subReaders" );
-			if ( ! field.isAccessible() ) field.setAccessible( true );
+			ReflectionHelper.setAccessible( field );
 			return field;
 		}
 		catch (NoSuchFieldException e) {

Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/util/ReflectionHelper.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/util/ReflectionHelper.java	2010-06-04 12:42:46 UTC (rev 19691)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/util/ReflectionHelper.java	2010-06-04 12:43:35 UTC (rev 19692)
@@ -24,6 +24,9 @@
  */
 package org.hibernate.search.util;
 
+import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.Member;
+import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 
 import org.hibernate.annotations.common.reflection.XMember;
@@ -52,6 +55,9 @@
 				member.getName(); //explicit field name
 	}
 
+	/**
+	 * Always use this method to set accessibility regardless of the visibility.
+	 */
 	public static void setAccessible(XMember member) {
 		try {
 			//always set accessible to true as it bypass the security model checks
@@ -65,6 +71,22 @@
 		}
 	}
 
+	/**
+	 * Always use this method to set accessibility regardless of the visibility.
+	 */
+	public static void setAccessible(AccessibleObject member) {
+		try {
+			//always set accessible to true as it bypass the security model checks
+			// at execution time and is faster.
+			member.setAccessible( true );
+		}
+		catch ( SecurityException se ) {
+			if ( !Modifier.isPublic( ( (Member) member ).getModifiers() ) ) {
+				throw se;
+			}
+		}
+	}
+
 	public static Object getMemberValue(Object bean, XMember getter) {
 		Object value;
 		try {



More information about the hibernate-commits mailing list