/** * Get the class of an instance or the underlying class * of a proxy (without initializing the proxy!). It is * almost always better to use the entity name! */ public static Class getClassWithoutInitializingProxy(Object object) { if (object instanceof HibernateProxy) { HibernateProxy proxy = (HibernateProxy) object; LazyInitializer li = proxy.getHibernateLazyInitializer(); return li.getPersistentClass(); } else { return object.getClass(); } }
/** * Returns the class object of the specified persistent object returning the actual persistent * class in case it is a hibernate proxy * * @param persistentObject * @return the Class object */ private Class<?> getActualType(Object persistentObject) { Class<?> type = persistentObject.getClass(); if (persistentObject instanceof HibernateProxy) { type = ((HibernateProxy) persistentObject).getHibernateLazyInitializer().getPersistentClass(); } return type; }
@SuppressWarnings("rawtypes") @Override public Class getPersistentClass() { return this.lazyInitializer.getPersistentClass(); }
public static Class<?> getClassForHibernateObject(Object object) { if (object instanceof HibernateProxy) { LazyInitializer lazyInitializer = ((HibernateProxy) object).getHibernateLazyInitializer(); return lazyInitializer.getPersistentClass(); } else { return object.getClass(); } }
protected String getProxyDetachedState(HibernateProxy proxy) { LazyInitializer initializer = proxy.getHibernateLazyInitializer(); StringBuilder sb = new StringBuilder(); sb.append(initializer.getClass().getName()) .append(':'); if (initializer.getPersistentClass() != null) sb.append(initializer.getPersistentClass().getName()); sb.append(':'); if (initializer.getEntityName() != null) sb.append(initializer.getEntityName()); return sb.toString(); }
/** * Get the class of an instance or the underlying class * of a proxy (without initializing the proxy!). It is * almost always better to use the entity name! */ public static Class getClassWithoutInitializingProxy(Object object) { if (object instanceof HibernateProxy) { HibernateProxy proxy = (HibernateProxy) object; LazyInitializer li = proxy.getHibernateLazyInitializer(); return li.getPersistentClass(); } else { return object.getClass(); } }
/** * Get the class of an instance or the underlying class * of a proxy (without initializing the proxy!). It is * almost always better to use the entity name! */ public static Class getClassWithoutInitializingProxy(Object object) { if (object instanceof HibernateProxy) { HibernateProxy proxy = (HibernateProxy) object; LazyInitializer li = proxy.getHibernateLazyInitializer(); return li.getPersistentClass(); } else { return object.getClass(); } }
/** * Get the class of an instance or the underlying class * of a proxy (without initializing the proxy!). It is * almost always better to use the entity name! */ public static Class getClassWithoutInitializingProxy(Object object) { if (object instanceof HibernateProxy) { HibernateProxy proxy = (HibernateProxy) object; LazyInitializer li = proxy.getHibernateLazyInitializer(); return li.getPersistentClass(); } else { return object.getClass(); } }
/** * Get the class of an instance or the underlying class * of a proxy (without initializing the proxy!). It is * almost always better to use the entity name! */ public static Class getClassWithoutInitializingProxy(Object object) { if (object instanceof HibernateProxy) { HibernateProxy proxy = (HibernateProxy) object; LazyInitializer li = proxy.getHibernateLazyInitializer(); return li.getPersistentClass(); } else { return object.getClass(); } }
/** * Get the class of an instance or the underlying class * of a proxy (without initializing the proxy!). It is * almost always better to use the entity name! */ public static Class getClassWithoutInitializingProxy(Object object) { if (object instanceof HibernateProxy) { HibernateProxy proxy = (HibernateProxy) object; LazyInitializer li = proxy.getHibernateLazyInitializer(); return li.getPersistentClass(); } else { return object.getClass(); } }
public Class<?> getActualClass(Object obj) { return isProxy(obj.getClass()) ? getInitializer(obj).getPersistentClass() : obj.getClass(); } }
private Optional<ObjectAccessProxy<T>> fromLazyInitializer(LazyInitializer lazyInitializer) { return Optional.of(new ObjectAccessProxy(() -> lazyInitializer.getImplementation(), lazyInitializer.getPersistentClass(), lazyInitializer.getIdentifier())); } }
private Optional<ObjectAccessProxy<T>> fromLazyInitializer(LazyInitializer lazyInitializer) { return Optional.of(new ObjectAccessProxy(() -> lazyInitializer.getImplementation(), lazyInitializer.getPersistentClass(), lazyInitializer.getIdentifier())); } }
/** * On the hibernate v2 net.sf.cglib.proxy.Factory interface 'getCallback' method, * return the lazy initializer with details about the proxy. */ private static Callback getCallback(final Object proxy, final int i) { if (i != 0) { throw new IndexOutOfBoundsException(); } org.hibernate.proxy.LazyInitializer lazy = null; if (proxy instanceof org.hibernate.proxy.HibernateProxy) { lazy = ((org.hibernate.proxy.HibernateProxy) proxy).getHibernateLazyInitializer(); } return (Callback) LazyInitializerV2Adapter.adapt( lazy, lazy != null ? lazy.getPersistentClass() : proxy.getClass(), lazy != null ? lazy.getIdentifier() : null); }
Class<?> t = arguments[i].getClass(); if (arguments[i] instanceof HibernateProxy) { t = ((HibernateProxy) arguments[i]).getHibernateLazyInitializer().getPersistentClass();
protected Class<?> getClass(ExtendedObjectOutput out, Object v) { Class<?> cls = v.getClass(); if (v instanceof HibernateProxy) { LazyInitializer initializer = ((HibernateProxy)v).getHibernateLazyInitializer(); String className = ( initializer.isUninitialized() ? initializer.getEntityName() : initializer.getImplementation().getClass().getName() ); if (className != null && className.length() > 0) { try { cls = out.getReflection().loadClass(className); } catch (ClassNotFoundException e) { cls = initializer.getPersistentClass(); } } } return cls; } }
@Override public Class<?> getClass(Object o) { if (o instanceof HibernateProxy) { HibernateProxy proxy = (HibernateProxy)o; LazyInitializer initializer = proxy.getHibernateLazyInitializer(); String className = ( initializer.isUninitialized() ? initializer.getEntityName() : initializer.getImplementation().getClass().getName() ); if (className != null && className.length() > 0) { try { return TypeUtil.forName(className); } catch (Exception e) { log.warn(e, "Could not get class with initializer: %s for: %s", initializer.getClass().getName(), className); } } // fallback... return initializer.getPersistentClass(); } return super.getClass(o); }
@Test public void shouldRunHibernateLazyInitialization() throws Exception { LazyInitializer initializer = mock(LazyInitializer.class); SomeProxy proxy = new SomeProxy(initializer); proxy.name = "my name"; proxy.aField = "abc"; when(initializer.getPersistentClass()).thenReturn(Client.class); serialization.from(proxy).serialize(); assertThat(result(), is("{\"client\": {\"name\": \"my name\",\"aField\": \"abc\"}}")); verify(initializer).initialize(); }
Class<?> persistentClass = proxy.getHibernateLazyInitializer().getPersistentClass(); if (!serializableProxyAdapters.containsKey(persistentClass)) { try {