Package org.hibernate.search.test.configuration

Source Code of org.hibernate.search.test.configuration.EventListenerRegisterTest

// $Id: EventListenerRegisterTest.java 15142 2008-08-28 11:36:34Z sannegrinovero $
package org.hibernate.search.test.configuration;

import java.util.Properties;

import org.hibernate.event.EventListeners;
import org.hibernate.event.PostCollectionRecreateEvent;
import org.hibernate.event.PostCollectionRecreateEventListener;
import org.hibernate.event.PostCollectionRemoveEvent;
import org.hibernate.event.PostCollectionRemoveEventListener;
import org.hibernate.event.PostCollectionUpdateEvent;
import org.hibernate.event.PostCollectionUpdateEventListener;
import org.hibernate.event.PostDeleteEvent;
import org.hibernate.event.PostDeleteEventListener;
import org.hibernate.event.PostInsertEvent;
import org.hibernate.event.PostInsertEventListener;
import org.hibernate.event.PostUpdateEvent;
import org.hibernate.event.PostUpdateEventListener;
import org.hibernate.search.Environment;
import org.hibernate.search.event.EventListenerRegister;
import org.hibernate.search.event.FullTextIndexEventListener;
import org.hibernate.search.event.FullTextIndexCollectionEventListener;

import junit.framework.TestCase;

/**
* @author Sanne Grinovero
*/
@SuppressWarnings("deprecation")
public class EventListenerRegisterTest extends TestCase {
 
  public void testRegisterOnEmptyListeners_CfgDisabled() {
    EventListeners evListeners = new EventListeners();
    EventListenerRegister.enableHibernateSearch( evListeners, makeConfiguration( false ) );
    EventListenerRegister.enableHibernateSearch( evListeners, makeConfiguration( false ) );
    assertPresence( false, evListeners );
  }
 
  public void testRegisterOnEmptyListeners_CfgEnabled() {
    EventListeners evListeners = new EventListeners();
    //tests registering multiple times is idempotent:
    EventListenerRegister.enableHibernateSearch( evListeners, makeConfiguration( true ) );
    EventListenerRegister.enableHibernateSearch( evListeners, makeConfiguration( true ) );
    assertPresence( true, evListeners );
  }
 
  public void testRegisterOnEmptyListeners_CfgAuto() {
    EventListeners evListeners = new EventListeners();
    EventListenerRegister.enableHibernateSearch( evListeners, new Properties() );
    EventListenerRegister.enableHibernateSearch( evListeners, new Properties() );
    assertPresence( true, evListeners );
  }
 
  public void testOnAlreadyRegistered() {
    helperOnAlreadyRegistered( new FullTextIndexEventListener() );
  }
 
  public void testOnAlreadyRegisteredDeprecated() {
    helperOnAlreadyRegistered( new FullTextIndexCollectionEventListener() );
  }
 
  public void testOnPopulatedEventListeners() {
    EventListeners evListeners = makeSomeEventListeners();
    EventListenerRegister.enableHibernateSearch( evListeners, new Properties() );
    EventListenerRegister.enableHibernateSearch( evListeners, new Properties() );
    assertPresence( true, evListeners );
  }
 
  private void helperOnAlreadyRegistered(FullTextIndexEventListener listenerFullText) {
   
    AnotherListener listenerA = new AnotherListener();
    AnotherListener listenerB = new AnotherListener();
   
    EventListeners evListeners = new EventListeners();
    evListeners.setPostInsertEventListeners(
        new PostInsertEventListener[]{ listenerA, listenerB, listenerFullText }  );
    evListeners.setPostUpdateEventListeners(
        new PostUpdateEventListener[]{ listenerA, listenerB, listenerFullText } );
    evListeners.setPostDeleteEventListeners(
        new PostDeleteEventListener[]{ listenerA, listenerB, listenerFullText } );
    evListeners.setPostCollectionRecreateEventListeners(
        new PostCollectionRecreateEventListener[]{ listenerA, listenerB, listenerFullText } );
    evListeners.setPostCollectionRemoveEventListeners(
        new PostCollectionRemoveEventListener[]{ listenerA, listenerB, listenerFullText } );
    evListeners.setPostCollectionUpdateEventListeners(
        new PostCollectionUpdateEventListener[]{ listenerA, listenerB, listenerFullText } );
   
    EventListenerRegister.enableHibernateSearch( evListeners, makeConfiguration( false ) );
    EventListenerRegister.enableHibernateSearch( evListeners, makeConfiguration( false ) );
    EventListenerRegister.enableHibernateSearch( evListeners, makeConfiguration( false ) );
    assertPresence( true, evListeners );
  }
 
  private EventListeners makeSomeEventListeners() {
   
    AnotherListener listenerA = new AnotherListener();
    AnotherListener listenerB = new AnotherListener();
    AnotherListener listenerC = new AnotherListener();
   
    EventListeners evListeners = new EventListeners();
    evListeners.setPostInsertEventListeners(
        new PostInsertEventListener[]{ listenerA, listenerB, listenerC }  );
    evListeners.setPostUpdateEventListeners(
        new PostUpdateEventListener[]{ listenerA, listenerB, listenerC } );
    evListeners.setPostDeleteEventListeners(
        new PostDeleteEventListener[]{ listenerA, listenerB, listenerC } );
    evListeners.setPostCollectionRecreateEventListeners(
        new PostCollectionRecreateEventListener[]{ listenerA, listenerB, listenerC } );
    evListeners.setPostCollectionRemoveEventListeners(
        new PostCollectionRemoveEventListener[]{ listenerA, listenerB, listenerC } );
    evListeners.setPostCollectionUpdateEventListeners(
        new PostCollectionUpdateEventListener[]{ listenerA, listenerB, listenerC } );
   
    return evListeners;
  }
 
  private void assertPresence(boolean expected, EventListeners evListeners) {
    assertEquals( expected, isPresent( evListeners.getPostInsertEventListeners() ) );
    assertEquals( expected, isPresent( evListeners.getPostUpdateEventListeners() ) );
    assertEquals( expected, isPresent( evListeners.getPostDeleteEventListeners() ) );
    assertEquals( expected, isPresent( evListeners.getPostCollectionRecreateEventListeners() ) );
    assertEquals( expected, isPresent( evListeners.getPostCollectionRemoveEventListeners() ) );
    assertEquals( expected, isPresent( evListeners.getPostCollectionUpdateEventListeners() ) );
  }

  private static Properties makeConfiguration(boolean enableSearch) {
    Properties p = new Properties();
    p.setProperty( Environment.AUTOREGISTER_LISTENERS, String.valueOf( enableSearch ) );
    return p;
  }

  private static boolean isPresent(Object[] listeners) {
    if (listeners==null)
      return false;
    boolean found = false; // to verify class present at most once.
    for (Object eventListener : listeners) {
      if ( FullTextIndexEventListener.class == eventListener.getClass() ) {
        assertFalse( found );
        found = true;
      }
      if ( FullTextIndexCollectionEventListener.class == eventListener.getClass() ) {
        assertFalse( found );
        found = true;
      }
    }
    return found;
  }
 
  private static class AnotherListener implements PostDeleteEventListener,
  PostInsertEventListener, PostUpdateEventListener,
  PostCollectionRecreateEventListener, PostCollectionRemoveEventListener,
  PostCollectionUpdateEventListener {
   
    //empty methods: just needing any implementation of these listeners.

    public void onPostDelete(PostDeleteEvent event) {
    }

    public void onPostInsert(PostInsertEvent event) {
    }

    public void onPostUpdate(PostUpdateEvent event) {
    }

    public void onPostRecreateCollection(PostCollectionRecreateEvent event) {
    }

    public void onPostRemoveCollection(PostCollectionRemoveEvent event) {
    }

    public void onPostUpdateCollection(PostCollectionUpdateEvent event) {
    }
   
  }

}
TOP

Related Classes of org.hibernate.search.test.configuration.EventListenerRegisterTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.