[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