Example usage for org.hibernate.event.service.spi EventListenerRegistry appendListeners

List of usage examples for org.hibernate.event.service.spi EventListenerRegistry appendListeners

Introduction

In this page you can find the example usage for org.hibernate.event.service.spi EventListenerRegistry appendListeners.

Prototype

<T> void appendListeners(EventType<T> type, T... listeners);

Source Link

Usage

From source file:at.molindo.esi4j.module.hibernate.DefaultHibernateLifecycleInjector.java

License:Apache License

@Override
public synchronized void injectLifecycle(SessionFactory sessionFactory,
        Esi4JBatchedEventProcessor batchedEventProcessor) {
    if (_listener != null) {
        throw new IllegalStateException("already injected");
    }/*from  w w w. jav  a  2 s  .  c  o  m*/

    SessionFactoryImpl sessionFactoryImpl = (SessionFactoryImpl) sessionFactory;

    EventListenerRegistry registry = sessionFactoryImpl.getServiceRegistry()
            .getService(EventListenerRegistry.class);

    _listener = doCreateListener(sessionFactoryImpl, batchedEventProcessor);

    if (_listener instanceof PostInsertEventListener) {
        if (registerPostCommitListeneres) {
            registry.appendListeners(EventType.POST_COMMIT_INSERT, (PostInsertEventListener) _listener);
        } else {
            registry.appendListeners(EventType.POST_INSERT, (PostInsertEventListener) _listener);
        }
    }

    if (_listener instanceof PostUpdateEventListener) {
        if (registerPostCommitListeneres) {
            registry.appendListeners(EventType.POST_COMMIT_UPDATE, (PostUpdateEventListener) _listener);
        } else {
            registry.appendListeners(EventType.POST_UPDATE, (PostUpdateEventListener) _listener);
        }
    }

    if (_listener instanceof PostDeleteEventListener) {
        if (registerPostCommitListeneres) {
            registry.appendListeners(EventType.POST_COMMIT_DELETE, (PostDeleteEventListener) _listener);
        } else {
            registry.appendListeners(EventType.POST_DELETE, (PostDeleteEventListener) _listener);
        }
    }

    // collections
    if (!registerPostCommitListeneres) {
        if (_listener instanceof PostCollectionRecreateEventListener) {
            registry.appendListeners(EventType.POST_COLLECTION_RECREATE,
                    (PostCollectionRecreateEventListener) _listener);
        }

        if (_listener instanceof PostCollectionRemoveEventListener) {
            registry.appendListeners(EventType.POST_COLLECTION_REMOVE,
                    (PostCollectionRemoveEventListener) _listener);
        }

        if (_listener instanceof PostCollectionUpdateEventListener) {
            registry.appendListeners(EventType.POST_COLLECTION_UPDATE,
                    (PostCollectionUpdateEventListener) _listener);
        }
    }
}

From source file:net.krotscheck.jersey2.hibernate.factory.HibernateSessionFactoryFactory.java

License:Apache License

/**
 * This method automatically adds discovered hibernate event listeners into
 * the hibernate service registry.//from  w w  w.  ja v  a  2 s. co  m
 *
 * @param registry The service registry.
 */
private void injectEventListeners(final ServiceRegistry registry) {

    EventListenerRegistry eventRegistry = registry.getService(EventListenerRegistry.class);

    List<PostInsertEventListener> postInsertEvents = locator.getAllServices(PostInsertEventListener.class);
    for (PostInsertEventListener piEventListener : postInsertEvents) {
        logger.trace("Registering PostInsert: " + piEventListener.getClass().getCanonicalName());
        eventRegistry.appendListeners(EventType.POST_INSERT, piEventListener);
    }

    List<PostUpdateEventListener> postUpdateEvents = locator.getAllServices(PostUpdateEventListener.class);
    for (PostUpdateEventListener puEventListener : postUpdateEvents) {
        logger.trace("Registering PostUpdate: " + puEventListener.getClass().getCanonicalName());
        eventRegistry.appendListeners(EventType.POST_UPDATE, puEventListener);
    }

    List<PostDeleteEventListener> postDeleteEvents = locator.getAllServices(PostDeleteEventListener.class);
    for (PostDeleteEventListener pdEventListener : postDeleteEvents) {
        logger.trace("Registering PostDelete: " + pdEventListener.getClass().getCanonicalName());
        eventRegistry.appendListeners(EventType.POST_DELETE, pdEventListener);
    }

    List<PreInsertEventListener> preInsertEvents = locator.getAllServices(PreInsertEventListener.class);
    for (PreInsertEventListener piEventListener : preInsertEvents) {
        logger.trace("Registering PreInsert: " + piEventListener.getClass().getCanonicalName());
        eventRegistry.appendListeners(EventType.PRE_INSERT, piEventListener);
    }

    List<PreUpdateEventListener> preUpdateEvents = locator.getAllServices(PreUpdateEventListener.class);
    for (PreUpdateEventListener puEventListener : preUpdateEvents) {
        logger.trace("Registering PreUpdate: " + puEventListener.getClass().getCanonicalName());
        eventRegistry.appendListeners(EventType.PRE_UPDATE, puEventListener);
    }

    List<PreDeleteEventListener> preDeleteEvents = locator.getAllServices(PreDeleteEventListener.class);
    for (PreDeleteEventListener pdEventListener : preDeleteEvents) {
        logger.trace("Registering PreDelete: " + pdEventListener.getClass().getCanonicalName());
        eventRegistry.appendListeners(EventType.PRE_DELETE, pdEventListener);
    }

    List<PostCommitInsertEventListener> pciEvents = locator.getAllServices(PostCommitInsertEventListener.class);
    for (PostCommitInsertEventListener cpiEventListener : pciEvents) {
        logger.trace("Registering PostCommitInsert: " + cpiEventListener.getClass().getCanonicalName());
        eventRegistry.appendListeners(EventType.POST_COMMIT_INSERT, cpiEventListener);
    }

    List<PostCommitUpdateEventListener> pcuEvents = locator.getAllServices(PostCommitUpdateEventListener.class);
    for (PostCommitUpdateEventListener cpuEventListener : pcuEvents) {
        logger.trace("Registering PostCommitUpdate: " + cpuEventListener.getClass().getCanonicalName());
        eventRegistry.appendListeners(EventType.POST_COMMIT_UPDATE, cpuEventListener);
    }

    List<PostCommitDeleteEventListener> pcdEvents = locator.getAllServices(PostCommitDeleteEventListener.class);
    for (PostCommitDeleteEventListener cpdEventListener : pcdEvents) {
        logger.trace("Registering PostCommitDelete: " + cpdEventListener.getClass().getCanonicalName());
        eventRegistry.appendListeners(EventType.POST_COMMIT_DELETE, cpdEventListener);
    }
}

From source file:org.audit4j.integration.hibernate.bootstrap.Audit4jIntegrator.java

License:Apache License

public void integrate(Configuration configuration, SessionFactoryImplementor sessionFactory,
        SessionFactoryServiceRegistry serviceRegistry) {
    System.out.println("Integrating......");

    //final AuditService auditService = serviceRegistry.getService(AuditService.class);
    final AuditService auditService = new AuditServiceImpl();
    auditService.init();//from  w  w w  .  j a va2s.  co m
    if (!auditService.isInitialized()) {
        throw new InitializationException("Audit4j hibernate integration can not be initialized..");
    }

    // Register listeners..
    final EventListenerRegistry listenerRegistry = serviceRegistry.getService(EventListenerRegistry.class);

    listenerRegistry.appendListeners(EventType.POST_INSERT, new AuditPostInsertEventListenerImpl(auditService));
    listenerRegistry.appendListeners(EventType.POST_UPDATE, new AuditPostUpdateEventListenerImpl(auditService));
    listenerRegistry.appendListeners(EventType.POST_DELETE, new AuditPostDeleteEventListenerImpl(auditService));
}

From source file:org.codehaus.groovy.grails.orm.hibernate.EventListenerIntegrator.java

License:Apache License

@SuppressWarnings("unchecked")
protected <T> void appendListeners(final EventListenerRegistry listenerRegistry, final EventType<T> eventType,
        final Map<String, Object> listeners) {

    Object listener = listeners.get(eventType.eventName());
    if (listener != null) {
        listenerRegistry.appendListeners(eventType, (T) listener);
    }//from   ww  w  . j av  a2s .c o  m
}

From source file:org.flowerplatform.web.database.DatabaseManager.java

License:Open Source License

/**
 * @author Mariana//from   w w w. ja va  2  s  .co m
 */
public void initialize() {
    //      Configuration config = new Configuration();
    //      Properties props = config.getProperties();
    Properties props = new Properties();

    //      props.setProperty(Environment.DRIVER, "org.postgresql.Driver");
    //      props.setProperty(Environment.USER, "postgres");
    //      props.setProperty(Environment.URL, "jdbc:postgresql://localhost/flower-dev-center");
    //      props.setProperty(Environment.PASS, "postgres");
    //      props.setProperty(Environment.DIALECT, PostgresPlusDialect.class.getName());
    //      props.setProperty(Environment.CURRENT_SESSION_CONTEXT_CLASS, "thread");
    //      props.setProperty(Environment.HBM2DDL_AUTO, "create-drop");
    //      props.setProperty(Environment.SHOW_SQL, "true");

    props.setProperty(Environment.DRIVER, "org.h2.Driver");
    props.setProperty(Environment.USER, "sa");
    props.setProperty(Environment.URL, "jdbc:h2:mem:temp_flower_web;MVCC=TRUE");
    props.setProperty(Environment.PASS, "");
    props.setProperty(Environment.DIALECT, H2Dialect.class.getName());
    props.setProperty(Environment.HBM2DDL_AUTO, "create");
    //      props.setProperty(Environment.SHOW_SQL, "true");

    props.setProperty(PersistenceOptions.CASCADE_POLICY_ON_NON_CONTAINMENT, "REFRESH,PERSIST,MERGE");
    props.setProperty(PersistenceOptions.PERSISTENCE_XML, "annotations.xml");
    props.setProperty(PersistenceOptions.JOIN_TABLE_FOR_NON_CONTAINED_ASSOCIATIONS, "false");
    props.setProperty(PersistenceOptions.ALWAYS_VERSION, "false");
    //      props.setProperty(PersistenceOptions.INHERITANCE_MAPPING, "TABLE_PER_CLASS");
    props.setProperty(PersistenceOptions.INHERITANCE_MAPPING, "SINGLE_TABLE");
    props.setProperty(PersistenceOptions.ADD_INDEX_FOR_FOREIGN_KEY, "false");

    // create the HbDataStore using the name
    final HbDataStore hbds = HbHelper.INSTANCE.createRegisterDataStore(DS_NAME);

    // set the properties
    hbds.setDataStoreProperties(props);
    // sets its epackages stored in this datastore
    hbds.setEPackages(new EPackage[] { EntityPackage.eINSTANCE, NotationPackage.eINSTANCE });
    //      ((HbSessionDataStore) hbds).setConfiguration(config); 

    // initialize
    try {
        hbds.initialize();
    } catch (Throwable e) {
        System.err.println(hbds.getMappingXML());
        logger.error("FATAL: error while initializing the HbDataStore", e);
    }
    System.err.println(hbds.getMappingXML());

    factory = hbds.getSessionFactory();
    EventListenerRegistry registry = ((SessionFactoryImpl) factory).getServiceRegistry()
            .getService(EventListenerRegistry.class);
    SecurityEntityListener listener = new SecurityEntityListener();
    registry.appendListeners(EventType.POST_INSERT, listener);
    registry.appendListeners(EventType.POST_DELETE, listener);
    registry.appendListeners(EventType.POST_UPDATE, listener);
    registry.appendListeners(EventType.PRE_DELETE, listener);

    initWithTestData();

    new DatabaseOperationWrapper(new DatabaseOperation() {

        @Override
        public void run() {
            DBVersion dbVersion = null;
            dbVersion = wrapper.find(DBVersion.class, DBVersion.SINGLETON_RECORD_ID);
            if (dbVersion == null) {
                logger.error("Cannot find database version from the database.");
            } else if (dbVersion.getDbVersion() < FlowerProperties.DB_VERSION) {
                logger.error(
                        "Database version mismatch. Database version = {} is lower than expected = {}. Please run the DB update scripts.",
                        dbVersion.getDbVersion(), FlowerProperties.DB_VERSION);
            } else if (dbVersion.getDbVersion() > FlowerProperties.DB_VERSION) {
                logger.warn(
                        "Database version mismatch. Database version = {} is greater than expected = {}. You may continue, but please be aware that the application may malfunction and/or corrupt the data in the DB.",
                        dbVersion.getDbVersion(), FlowerProperties.DB_VERSION);
            } else {
                // same version; everything is OK
                logger.info("Database version check OK. Version = {}", dbVersion.getDbVersion());
            }
        }
    });
}

From source file:org.flowerplatform.web.tests.security.sandbox.SecurityPermissionsTests.java

License:Open Source License

@BeforeClass
public static void setUp() {
    EclipseDependentTestSuiteBase.setUp();

    Configuration config = new Configuration();
    Properties props = config.getProperties();
    props.setProperty(Environment.DRIVER, "org.h2.Driver");
    props.setProperty(Environment.USER, "sa");
    props.setProperty(Environment.URL, "jdbc:h2:mem:temp_flower_web;MVCC=TRUE");
    props.setProperty(Environment.PASS, "");
    props.setProperty(Environment.DIALECT, H2Dialect.class.getName());
    props.setProperty(Environment.HBM2DDL_AUTO, "create");
    props.setProperty(Environment.SHOW_SQL, "true");

    props.setProperty(PersistenceOptions.CASCADE_POLICY_ON_NON_CONTAINMENT, "REFRESH,PERSIST,MERGE");
    props.setProperty(PersistenceOptions.PERSISTENCE_XML, "annotations.xml");
    props.setProperty(PersistenceOptions.JOIN_TABLE_FOR_NON_CONTAINED_ASSOCIATIONS, "false");
    props.setProperty(PersistenceOptions.ALWAYS_VERSION, "false");
    //      props.setProperty(PersistenceOptions.INHERITANCE_MAPPING, "TABLE_PER_CLASS");
    props.setProperty(PersistenceOptions.INHERITANCE_MAPPING, "SINGLE_TABLE");
    props.setProperty(PersistenceOptions.ADD_INDEX_FOR_FOREIGN_KEY, "false");

    //      props.setProperty(Environment.DRIVER, "org.postgresql.Driver");
    //      props.setProperty(Environment.USER, "postgres");
    //      props.setProperty(Environment.URL, "jdbc:postgresql://localhost/flower-dev-center");
    //      props.setProperty(Environment.PASS, "postgres");
    //      props.setProperty(Environment.DIALECT, PostgresPlusDialect.class.getName());
    //      props.setProperty(Environment.CURRENT_SESSION_CONTEXT_CLASS, "thread");
    //      props.setProperty(Environment.HBM2DDL_AUTO, "create-drop");
    //      props.setProperty(Environment.SHOW_SQL, "true");

    // the name of the session factory
    String hbName = "Entity";
    // create the HbDataStore using the name
    final HbDataStore hbds = HbHelper.INSTANCE.createRegisterDataStore(hbName);

    // set the properties
    hbds.setDataStoreProperties(props);/*  w ww  .j  a v  a 2s  . c  om*/
    // sets its epackages stored in this datastore
    hbds.setEPackages(new EPackage[] { EntityPackage.eINSTANCE });
    ((HbSessionDataStore) hbds).setConfiguration(config);

    try {
        // initialize
        hbds.initialize();
    } catch (Exception e) {
        System.out.println(e);
    }

    WebPlugin.getInstance().getDatabaseManager().setFactory(hbds.getSessionFactory());
    EventListenerRegistry registry = ((SessionFactoryImpl) hbds.getSessionFactory()).getServiceRegistry()
            .getService(EventListenerRegistry.class);
    SecurityEntityListener listener = new SecurityEntityListener();
    registry.appendListeners(EventType.POST_INSERT, listener);
    registry.appendListeners(EventType.POST_DELETE, listener);
    registry.appendListeners(EventType.POST_UPDATE, listener);
    registry.appendListeners(EventType.PRE_DELETE, listener);

    Utils.deleteAllData();

    System.setProperty("java.security.policy",
            new File(TestUtil.getResourcesDir(SecurityPermissionsTests.class) + "all.policy")
                    .getAbsolutePath());
    PolicyFile policyFile = new PolicyFile();
    Policy.setPolicy(new FlowerWebPolicyTest(policyFile));
    Policy.getPolicy().refresh();
    System.setSecurityManager(new SecurityManager());

    // disable sending mails during testing
    CommonPlugin.getInstance().getFlowerProperties().remove("mail.smtp.host");
    SendMailService service = (SendMailService) CommunicationPlugin.getInstance().getServiceRegistry()
            .getService(SendMailService.SERVICE_ID);
    service.initializeProperties();
}

From source file:org.grails.orm.hibernate.EventListenerIntegrator.java

License:Apache License

@SuppressWarnings("unchecked")
protected <T> void appendListeners(final EventListenerRegistry listenerRegistry, final EventType<T> eventType,
        final Map<String, Object> listeners) {

    Object listener = listeners.get(eventType.eventName());
    if (listener != null) {
        if (shouldOverrideListeners(eventType, listener)) {
            // since ClosureEventTriggeringInterceptor extends DefaultSaveOrUpdateEventListener we want to override instead of append the listener here
            // to avoid there being 2 implementations which would impact performance too
            listenerRegistry.setListeners(eventType, (T) listener);
        } else {/*from w  ww  . j a  v  a 2 s  .  c o m*/
            listenerRegistry.appendListeners(eventType, (T) listener);
        }
    }
}

From source file:org.granite.test.tide.hibernate4.data.TestHibernate4ChangeSetApplier.java

License:Open Source License

@Override
protected void initPersistence() {
    AnnotationConfiguration configuration = new AnnotationConfiguration()
            .addAnnotatedClass(AbstractEntity.class).addAnnotatedClass(Address.class)
            .addAnnotatedClass(Contact1.class).addAnnotatedClass(Country.class).addAnnotatedClass(Person1.class)
            .addAnnotatedClass(Phone.class).addAnnotatedClass(Contact2.class)
            .addAnnotatedClass(Classification.class).addAnnotatedClass(Person2.class)
            .addAnnotatedClass(Phone2.class).addAnnotatedClass(OrderRepo.class).addAnnotatedClass(Order.class)
            .addAnnotatedClass(LineItemBag.class).addAnnotatedClass(LineItemList.class)
            .addAnnotatedClass(Order2.class).addAnnotatedClass(LineItemBag2.class)
            .addAnnotatedClass(LineItemList2.class).addAnnotatedClass(AbstractEntitySoftDelete.class)
            .addAnnotatedClass(AddressSoftDelete.class).addAnnotatedClass(ContactSoftDelete.class)
            .addAnnotatedClass(CountrySoftDelete.class).addAnnotatedClass(PersonSoftDelete.class)
            .addAnnotatedClass(PhoneSoftDelete.class).addAnnotatedClass(Patient.class)
            .addAnnotatedClass(Patient3.class).addAnnotatedClass(Medication.class)
            .addAnnotatedClass(Medication3.class).addAnnotatedClass(Prescription.class)
            .addAnnotatedClass(Person3.class).addAnnotatedClass(Contact3.class)
            .addAnnotatedClass(Patient2.class).addAnnotatedClass(Visit2.class).addAnnotatedClass(Test2.class)
            .addAnnotatedClass(Alert.class).addAnnotatedClass(VitalSignTest2.class)
            .addAnnotatedClass(VitalSignObservation2.class).addAnnotatedClass(VitalSignTest3.class)
            .addAnnotatedClass(VitalSignObservation3.class)
            .setProperty("hibernate.dialect", org.hibernate.dialect.H2Dialect.class.getName())
            .setProperty("hibernate.hbm2ddl.auto", "create-drop").setProperty("hibernate.show_sql", "true")
            .setProperty("hibernate.connection.driver_class", org.h2.Driver.class.getName())
            .setProperty("hibernate.connection.url", "jdbc:h2:mem:test-changeset")
            .setProperty("hibernate.connection.username", "sa")
            .setProperty("hibernate.connection.password", "");

    sessionFactory = configuration.buildSessionFactory();

    EventListenerRegistry registry = ((SessionFactoryImpl) sessionFactory).getServiceRegistry()
            .getService(EventListenerRegistry.class);
    registry.appendListeners(EventType.POST_INSERT, new HibernateDataChangePublishListener());
    registry.appendListeners(EventType.POST_UPDATE, new HibernateDataChangePublishListener());
    registry.appendListeners(EventType.POST_DELETE, new HibernateDataChangePublishListener());
}

From source file:org.granite.test.tide.hibernate4.spring.TestHibernate4TideDataPublishHibernate.java

License:Open Source License

@Before
public void setUp() throws Exception {
    super.setUp();

    EventListenerRegistry registry = ((SessionFactoryImpl) sessionFactory).getServiceRegistry()
            .getService(EventListenerRegistry.class);
    registry.appendListeners(EventType.POST_INSERT, new HibernateDataPublishListener());
    registry.appendListeners(EventType.POST_UPDATE, new HibernateDataPublishListener());
    registry.appendListeners(EventType.POST_DELETE, new HibernateDataPublishListener());
}

From source file:org.libreplan.business.hibernate.notification.HibernateDatabaseModificationsListener.java

License:Open Source License

@PostConstruct
private void registerHibernateListeners() {
    SessionFactoryImpl impl = (SessionFactoryImpl) sessionFactory;
    EventListenerRegistry registry = impl.getServiceRegistry().getService(EventListenerRegistry.class);

    registry.appendListeners(EventType.POST_INSERT, this);
    registry.appendListeners(EventType.POST_UPDATE, this);
    registry.appendListeners(EventType.POST_DELETE, this);

    hibernateListenersRegistered = true;
}