@Test public void verifyIndexExclusivity() { FullTextSessionBuilder builder = new FullTextSessionBuilder(); FullTextSession ftSession = builder .setProperty("hibernate.search.Book.indexmanager", "near-real-time") .setProperty( "hibernate.search." + Foo.class.getName() + ".indexmanager", "org.hibernate.search.testsupport.indexmanager.RamIndexManager") .addAnnotatedClass(BlogEntry.class) .addAnnotatedClass(Foo.class) .addAnnotatedClass(org.hibernate.search.test.query.Book.class) .addAnnotatedClass(org.hibernate.search.test.query.Author.class) .openFullTextSession(); SearchFactoryImplementor searchFactory = (SearchFactoryImplementor) ftSession.getSearchFactory(); ftSession.close(); IndexManagerHolder allIndexesManager = searchFactory.getIndexManagerHolder(); // checks for the default implementation checkIndexManagerType( allIndexesManager, "org.hibernate.search.test.configuration.BlogEntry", org.hibernate.search.indexes.impl.DirectoryBasedIndexManager.class); // Uses "NRT" taken from shortcut names checkIndexManagerType( allIndexesManager, "Book", org.hibernate.search.indexes.impl.NRTIndexManager.class); // Uses a fully qualified name to load an implementation checkIndexManagerType(allIndexesManager, Foo.class.getName(), RamIndexManager.class); builder.close(); }
private FullTextSessionBuilder createSearchFactory() { loadCountListener = new LoadCountingListener(); FullTextSessionBuilder builder = new FullTextSessionBuilder() .setProperty( "hibernate.search.default.worker.backend", LeakingBackendQueueProcessor.class.getName()) .addAnnotatedClass(LocationGroup.class) .addAnnotatedClass(Location.class) .addLoadEventListener(loadCountListener); return builder.build(); }
public void testUseOfCustomLockingFactory() { assertNull(CustomLockFactoryFactory.optionValue); FullTextSessionBuilder builder = new FullTextSessionBuilder(); builder .addAnnotatedClass(SnowStorm.class) .setProperty("hibernate.search.default.locking_option", "somethingHere") .setProperty( "hibernate.search.default.locking_strategy", "org.hibernate.search.test.directoryProvider.CustomLockFactoryFactory") .build(); builder.close(); assertEquals("somethingHere", CustomLockFactoryFactory.optionValue); }
@Test public void testScenario() { FullTextSessionBuilder fullTextSessionBuilder = createSearchFactory(); try { // check no operations are done: assertOperationsPerformed(0); assertLocationsLoaded(0); // create initial data initializeData(fullTextSessionBuilder); // this should have triggered 5 indexing operations, no entity loadings: assertOperationsPerformed(5); assertLocationsLoaded(0); FullTextSession fullTextSession = fullTextSessionBuilder.openFullTextSession(); // now check index state: assertFoundLocations(fullTextSession, "floor", 5); assertFoundLocations(fullTextSession, "airport", 0); fullTextSession.clear(); try { // we add a new Location to the group: addLocationToGroupCollection(fullTextSession); // NOTHING else should be loaded, there was no need to reindex unrelated Locations! assertLocationsLoaded(0); // of course the new Location should have been indexed: assertOperationsPerformed(1); fullTextSession.clear(); // so now we have 6 Locations in the index, in LocationGroup "floor": assertFoundLocations(fullTextSession, "floor", 6); assertFoundLocations(fullTextSession, "airport", 0); // changing the locationGroup name to Airport: updateLocationGroupName(fullTextSession); fullTextSession.clear(); // check index functionality: assertFoundLocations(fullTextSession, "floor", 0); assertFoundLocations(fullTextSession, "airport", 6); // six locations have been loaded for re-indexing: assertLocationsLoaded(6); // and six update operations have been sent to the backend: assertOperationsPerformed(6); } finally { fullTextSession.close(); } } finally { fullTextSessionBuilder.close(); } }
public void testFailOnInexistentLockingFactory() { FullTextSessionBuilder builder = new FullTextSessionBuilder(); try { builder .addAnnotatedClass(SnowStorm.class) .setProperty("hibernate.search.default.locking_option", "somethingHere") .setProperty( "hibernate.search.default.locking_strategy", "org.hibernate.NotExistingFactory") .build(); builder.close(); fail(); } catch (org.hibernate.HibernateException e) { Throwable causeSearch = e.getCause(); assertNotNull(causeSearch); assertTrue(causeSearch instanceof org.hibernate.search.SearchException); Throwable causeLockin = causeSearch.getCause(); assertNotNull(causeLockin); assertEquals( "Unable to find locking_strategy implementation class: org.hibernate.NotExistingFactory", causeLockin.getMessage()); } }
/** * Initialize the test data. * * @param fulltextSessionBuilder */ private void initializeData(FullTextSessionBuilder fulltextSessionBuilder) { FullTextSession fullTextSession = fulltextSessionBuilder.openFullTextSession(); try { final Transaction transaction = fullTextSession.beginTransaction(); LocationGroup group = new LocationGroup("Floor 1"); fullTextSession.persist(group); for (int i = 0; i < 5; i++) { Location location = new Location("Room 10" + i); fullTextSession.persist(location); group.getLocations().add(location); location.setLocationGroup(group); fullTextSession.merge(group); } transaction.commit(); } finally { fullTextSession.close(); } }