Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions core/src/main/java/com/opensymphony/xwork2/util/ProxyUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,17 @@ public class ProxyUtil {
private static final int CACHE_MAX_SIZE = 10000;
private static final int CACHE_INITIAL_CAPACITY = 256;

private static final boolean HIBERNATE_AVAILABLE = detectHibernate();

private static boolean detectHibernate() {
try {
Class.forName("org.hibernate.proxy.HibernateProxy");
return true;
} catch (ClassNotFoundException e) {
return false;
}
}

// Holder for the cache factory (set by container)
private static volatile ProxyCacheFactory<?, ?> cacheFactory;

Expand Down Expand Up @@ -153,6 +164,7 @@ public static boolean isProxyMember(Member member, Object object) {
* @param object the object to check
*/
public static boolean isHibernateProxy(Object object) {
if (!HIBERNATE_AVAILABLE) return false;
try {
return object != null && HibernateProxy.class.isAssignableFrom(object.getClass());
} catch (NoClassDefFoundError ignored) {
Expand All @@ -166,6 +178,7 @@ public static boolean isHibernateProxy(Object object) {
* @param member the member to check
*/
public static boolean isHibernateProxyMember(Member member) {
if (!HIBERNATE_AVAILABLE) return false;
try {
Class<?> clazz = ClassLoaderUtil.loadClass(HIBERNATE_HIBERNATEPROXY_CLASS_NAME, ProxyUtil.class);
return hasMember(clazz, member);
Expand Down Expand Up @@ -303,6 +316,7 @@ private static boolean hasMember(Class<?> clazz, Member member) {
* @return the target instance of the given object if it is a Hibernate proxy object, otherwise the given object
*/
public static Object getHibernateProxyTarget(Object object) {
if (!HIBERNATE_AVAILABLE) return object;
try {
return Hibernate.unproxy(object);
} catch (NoClassDefFoundError ignored) {
Expand Down
Loading