package org.mongodb.morphia.mapping.lazy.proxy;


Author:Uwe Schaefer, (us@thomas-daily.de)
/** * @author Uwe Schaefer, (us@thomas-daily.de) */
public final class ProxyHelper { private ProxyHelper() { }
If proxied, returns the unwrapped entity.
Params:
  • entity – the entity to check
Type parameters:
  • <T> – the type of the entity
Returns:the bare entity
/** * If proxied, returns the unwrapped entity. * * @param entity the entity to check * @param <T> the type of the entity * @return the bare entity */
@SuppressWarnings("unchecked") public static <T> T unwrap(final T entity) { if (isProxy(entity)) { return (T) asProxy(entity).__unwrap(); } return entity; }
Checks if the Java reference passed is a proxy
Params:
  • entity – the entity to check
Returns:true if the reference is a proxied reference
/** * Checks if the Java reference passed is a proxy * * @param entity the entity to check * @return true if the reference is a proxied reference */
public static boolean isProxy(final Object entity) { return (entity != null && isProxied(entity.getClass())); } private static <T> ProxiedReference asProxy(final T entity) { return ((ProxiedReference) entity); }
Checks if the Class passed is a ProxiedReference
Params:
  • clazz – the class to check
Returns:true if the class is a ProxiedReference
/** * Checks if the Class passed is a ProxiedReference * * @param clazz the class to check * @return true if the class is a ProxiedReference */
public static boolean isProxied(final Class<?> clazz) { return ProxiedReference.class.isAssignableFrom(clazz); }
Returns the class backing this entity
Params:
  • entity – the entity to check
Returns:if proxied, the Class of the proxied type. the entity's Class otherwise
/** * Returns the class backing this entity * * @param entity the entity to check * @return if proxied, the Class of the proxied type. the entity's Class otherwise */
public static Class getReferentClass(final Object entity) { if (isProxy(entity)) { return asProxy(entity).__getReferenceObjClass(); } else { return entity != null ? entity.getClass() : null; } }
Checks if the proxied entity has been fetched.
Params:
  • entity – the entity to check
Returns:true if the proxy hasn't been fetched.
/** * Checks if the proxied entity has been fetched. * * @param entity the entity to check * @return true if the proxy hasn't been fetched. */
public static boolean isUnFetched(final Object entity) { return !isFetched(entity); }
Checks if the proxied entity has been fetched.
Params:
  • entity – the entity to check
Returns:true if the proxy has been fetched.
/** * Checks if the proxied entity has been fetched. * * @param entity the entity to check * @return true if the proxy has been fetched. */
public static boolean isFetched(final Object entity) { return entity == null || !isProxy(entity) || asProxy(entity).__isFetched(); } }