Class HibernateTransformers


  • public class HibernateTransformers
    extends java.lang.Object
    Static transformers for Hibernate plugin.
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static void annotationMetaDataProviderRegisterVariable​(org.hotswap.agent.javassist.CtClass ctClass)  
      static void beanMetaDataManagerRegisterVariable​(org.hotswap.agent.javassist.CtClass ctClass)  
      static void proxyHibernatePersistence​(org.hotswap.agent.javassist.CtClass clazz)
      Override HibernatePersistence.createContainerEntityManagerFactory() to return EntityManagerFactory proxy object.
      static void proxySessionFactory​(java.lang.ClassLoader classLoader, org.hotswap.agent.javassist.ClassPool classPool, org.hotswap.agent.javassist.CtClass clazz)  
      static void removeSessionFactoryImplFinalFlag​(org.hotswap.agent.javassist.CtClass clazz)
      Remove final flag from SessionFactoryImpl - we need to create a proxy on session factory and cannot use SessionFactory interface, because hibernate makes type cast to impl.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • HibernateTransformers

        public HibernateTransformers()
    • Method Detail

      • proxyHibernatePersistence

        @OnClassLoadEvent(classNameRegexp="(org.hibernate.ejb.HibernatePersistence)|(org.hibernate.jpa.HibernatePersistenceProvider)|(org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider)|(org.springframework.orm.jpa.vendor.SpringHibernateEjbPersistenceProvider)")
        public static void proxyHibernatePersistence​(org.hotswap.agent.javassist.CtClass clazz)
                                              throws java.lang.Exception
        Override HibernatePersistence.createContainerEntityManagerFactory() to return EntityManagerFactory proxy object. EntityManagerFactoryProxy holds reference to all proxied factories and on refresh command replaces internal factory with fresh instance.

        Two variants covered - createContainerEntityManagerFactory and createEntityManagerFactory.

        After the entity manager factory and it's proxy are instantiated, plugin init method is invoked.

        Throws:
        java.lang.Exception
      • removeSessionFactoryImplFinalFlag

        @OnClassLoadEvent(classNameRegexp="org.hibernate.internal.SessionFactoryImpl")
        public static void removeSessionFactoryImplFinalFlag​(org.hotswap.agent.javassist.CtClass clazz)
                                                      throws java.lang.Exception
        Remove final flag from SessionFactoryImpl - we need to create a proxy on session factory and cannot use SessionFactory interface, because hibernate makes type cast to impl.
        Throws:
        java.lang.Exception
      • proxySessionFactory

        @OnClassLoadEvent(classNameRegexp="org.hibernate.cfg.Configuration")
        public static void proxySessionFactory​(java.lang.ClassLoader classLoader,
                                               org.hotswap.agent.javassist.ClassPool classPool,
                                               org.hotswap.agent.javassist.CtClass clazz)
                                        throws java.lang.Exception
        Throws:
        java.lang.Exception
      • beanMetaDataManagerRegisterVariable

        @OnClassLoadEvent(classNameRegexp="org.hibernate.validator.internal.metadata.BeanMetaDataManager")
        public static void beanMetaDataManagerRegisterVariable​(org.hotswap.agent.javassist.CtClass ctClass)
                                                        throws org.hotswap.agent.javassist.CannotCompileException
        Throws:
        org.hotswap.agent.javassist.CannotCompileException
      • annotationMetaDataProviderRegisterVariable

        @OnClassLoadEvent(classNameRegexp="org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider")
        public static void annotationMetaDataProviderRegisterVariable​(org.hotswap.agent.javassist.CtClass ctClass)
                                                               throws org.hotswap.agent.javassist.CannotCompileException
        Throws:
        org.hotswap.agent.javassist.CannotCompileException