Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  
  package net.anthavio;
  
  
  import org.slf4j.Logger;

Author(s):
vanek
 
 public class HibernateHelper {
 
 	private static final Logger log = LoggerFactory.getLogger(HibernateHelper.class);
 
 	public static final String UNACCESSIBLE_VALUE = "???";
 
 	private static Class<?> hibernateProxyClass;
 
 	private static Method isInitializedMethod;
 
 	private static Class<?> hibernateCollectionClass;
 
 	private static Class<?> hibernateClass;
 
 
 	private static Method getIdentifier;
 
 	static {
 		try {
 			/*
 			 * org.hibernate.Hibernate
 			 * 
 			 * public static boolean isInitialized(Object proxy) { if (proxy
 			 * instanceof HibernateProxy) { return
 			 * (!(((HibernateProxy)proxy).getHibernateLazyInitializer
 			 * ().isUninitialized())); } if (proxy instanceof PersistentCollection) {
 			 * return ((PersistentCollection)proxy).wasInitialized(); } return true; }
 			 */
 			 = Class.forName("org.hibernate.Hibernate");
 			 = .getMethod("isInitialized"Object.class);
 
 			try {
 				 = Class.forName("org.hibernate.proxy.HibernateProxy");
 			} catch (ClassNotFoundException cnfx) {
 				throw new IllegalStateException(
 						"Found org.hibernate.Hibernate class but not org.hibernate.proxy.HibernateProxy");
 			}
 
 			try {
 				//hibernate 3.x - swap lookup order when Hibernate 4.x became more common
 				 = Class.forName("org.hibernate.collection.PersistentCollection");
 			} catch (ClassNotFoundException cnfx) {
 				try {
 					//hibernate 4.x - swap lookup order when Hibernate 3.x became less common
 					 = Class.forName("org.hibernate.collection.spi.PersistentCollection");
 				} catch (ClassNotFoundException cnfx2) {
 					throw new IllegalStateException(
 							"Did not found Hibernate neither 3.x nor 4.x PersistentCollection class");
 				}
 			}
 
 			 = .getMethod("getHibernateLazyInitializer", (Class<?>[]) null);
 
 			Class<?> initializerClass = Class.forName("org.hibernate.proxy.LazyInitializer");
 			 = initializerClass.getMethod("getIdentifier", (Class<?>[]) null);
 
 			// Class<?> collectionClass =
 			// Class.forName("org.hibernate.collection.PersistentCollection");
 			// wasInitialized = collectionClass.getMethod("wasInitialized",
 			// (Class<?>[]) null);
 			.debug("Hibernate support enabled. Hibernate classes are present");
 		} catch (ClassNotFoundException cnfx) {
 			// Hibernate proste neni v classpath
 			.debug("Hibernate support disabled. Hibernate classes not present");
 		} catch (SecurityException sx) {
 			throw new IllegalStateException("Error detecting Hibernate",sx);
 		} catch (NoSuchMethodException nsmx) {
 			throw new IllegalStateException("Error detecting Hibernate",nsmx);
 		}
 	}
 
 	public static boolean isHibernatePresent() {
 		return ( != null);
 	}

If

Parameters:
value is HibernateProxy or PersistentCollection and it is not initialized (not prefetched or lazy loaded) then return only reference identifier
 
 	public static Object getHibernateProxiedValue(Object value) {
 		Class<? extends ObjectvalueClass = value.getClass();
 		if (.isAssignableFrom(valueClass)) {
			try {
				boolean initialized = (Boolean.invoke(nullvalue);
				if (initialized == false) {
					Object lazyInitializer = .invoke(value, (Object[]) null);
					Object identifier = .invoke(lazyInitializer, (Object[]) null);
					return "<id:" + identifier + ">";
				}
catch (Exception x) {
				.warn("Failed access hibernate proxy"x);
				return  + x;
			}
else if (.isAssignableFrom(valueClass)) {
			try {
				boolean initialized = (Boolean.invoke(nullvalue);
				if (initialized == false) {
					return "<lazy>";
				}
catch (Exception x) {
				.warn("Failed access hibernate collection wraper"x);
				return  + x;
			}
		}
		return value;
	}
New to GrepCode? Check out our FAQ X