All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.yestech.lib.hibernate.client.ProxyFactoryImpl Maven / Gradle / Ivy

Go to download

A collection of classes that can be used across yestech artifacts/components, but must not be dependant on any yestech component. Most of the code is utility type code. When more than a few classes are found to be in a package or the package start to handle more that a few reposibilities then a new independant component is created and the existing code in yeslib is ported to the new component.

There is a newer version: 1.2.0
Show newest version
package org.yestech.lib.hibernate.client;

import org.hibernate.proxy.ProxyFactory;
import org.hibernate.proxy.HibernateProxy;
import org.hibernate.HibernateException;
import org.hibernate.type.AbstractComponentType;
import org.hibernate.engine.SessionImplementor;

import java.io.Serializable;
import java.lang.reflect.Method;
import java.util.Set;

/**
 *
 *
 */
public class ProxyFactoryImpl implements ProxyFactory
{
    protected static final Class[] NO_CLASSES = new Class[0];

    private Class persistentClass;
    private String entityName;
    private Class[] interfaces;
    private Method getIdentifierMethod;
    private Method setIdentifierMethod;
    private AbstractComponentType componentIdType;
    private Class factory;

    public void postInstantiate(
            final String entityName,
            final Class persistentClass,
            final Set interfaces,
            final Method getIdentifierMethod,
            final Method setIdentifierMethod,
            AbstractComponentType componentIdType)
            throws HibernateException
    {
        this.entityName = entityName;
        this.persistentClass = persistentClass;
        this.interfaces = (Class[]) interfaces.toArray(NO_CLASSES);
        this.getIdentifierMethod = getIdentifierMethod;
        this.setIdentifierMethod = setIdentifierMethod;
        this.componentIdType = componentIdType;
        factory = LazyInitializerImpl.getProxyFactory(persistentClass, this.interfaces);
    }

    public HibernateProxy getProxy(Serializable id, SessionImplementor session)
            throws HibernateException
    {

        return LazyInitializerImpl.getProxy(
                factory,
                entityName,
                persistentClass,
                interfaces,
                getIdentifierMethod,
                setIdentifierMethod,
                componentIdType,
                id,
                session
        );
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy