Author: epbernard
Date: 2010-06-30 09:42:43 -0400 (Wed, 30 Jun 2010)
New Revision: 19868
Added:
search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/configuration/mutablefactory/
search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/configuration/mutablefactory/A.java
search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/configuration/mutablefactory/B.java
search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/configuration/mutablefactory/MutableFactoryTest.java
Log:
HSEARCH-397 Add tests on mutable factory
Added:
search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/configuration/mutablefactory/A.java
===================================================================
---
search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/configuration/mutablefactory/A.java
(rev 0)
+++
search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/configuration/mutablefactory/A.java 2010-06-30
13:42:43 UTC (rev 19868)
@@ -0,0 +1,36 @@
+package org.hibernate.search.test.configuration.mutablefactory;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+
+import org.hibernate.search.annotations.DocumentId;
+import org.hibernate.search.annotations.Field;
+import org.hibernate.search.annotations.Indexed;
+
+/**
+ * @author Emmanuel Bernard
+ */
+@Indexed
+public class A {
+ private Integer id;
+ private String name;
+
+ @DocumentId
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ @Field
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
Added:
search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/configuration/mutablefactory/B.java
===================================================================
---
search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/configuration/mutablefactory/B.java
(rev 0)
+++
search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/configuration/mutablefactory/B.java 2010-06-30
13:42:43 UTC (rev 19868)
@@ -0,0 +1,37 @@
+package org.hibernate.search.test.configuration.mutablefactory;
+
+import org.hibernate.search.annotations.DocumentId;
+import org.hibernate.search.annotations.Field;
+import org.hibernate.search.annotations.Indexed;
+
+/**
+ * @author Emmanuel Bernard
+ */
+@Indexed
+public class B {
+ private Integer id;
+ private String name;
+
+ public B(Integer id, String name) {
+ this.id = id;
+ this.name = name;
+ }
+
+ @DocumentId
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ @Field
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
\ No newline at end of file
Added:
search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/configuration/mutablefactory/MutableFactoryTest.java
===================================================================
---
search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/configuration/mutablefactory/MutableFactoryTest.java
(rev 0)
+++
search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/configuration/mutablefactory/MutableFactoryTest.java 2010-06-30
13:42:43 UTC (rev 19868)
@@ -0,0 +1,87 @@
+package org.hibernate.search.test.configuration.mutablefactory;
+
+import junit.framework.TestCase;
+import org.apache.lucene.queryParser.QueryParser;
+import org.apache.lucene.search.IndexSearcher;
+import org.apache.lucene.search.Query;
+import org.apache.lucene.search.TopDocs;
+
+import org.hibernate.search.backend.Work;
+import org.hibernate.search.backend.WorkType;
+import org.hibernate.search.engine.SearchFactoryImplementor;
+import org.hibernate.search.impl.MutableSearchFactory;
+import org.hibernate.search.impl.SearchFactoryBuilder;
+import org.hibernate.search.store.DirectoryProvider;
+import org.hibernate.search.store.RAMDirectoryProvider;
+import org.hibernate.search.test.SearchTestCase;
+import org.hibernate.search.test.util.ManualConfiguration;
+import org.hibernate.search.test.util.ManualTransactionContext;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public class MutableFactoryTest extends TestCase {
+
+ public void createEmptyFactory() throws Exception {
+ final ManualConfiguration configuration = new ManualConfiguration();
+ SearchFactoryImplementor sf = new SearchFactoryBuilder().configuration( configuration
).buildSearchFactory();
+ sf.close();
+ }
+
+ public void testAddingClass() throws Exception {
+ ManualConfiguration configuration = new ManualConfiguration()
+ .addProperty( "hibernate.search.default.directory_provider",
RAMDirectoryProvider.class.getName() );
+ //FIXME downcasting of MSF. create a getDelegate() ?
+ MutableSearchFactory sf = (MutableSearchFactory) new
SearchFactoryBuilder().configuration( configuration ).buildSearchFactory();
+ final SearchFactoryBuilder builder = new SearchFactoryBuilder();
+ sf = (MutableSearchFactory) builder.rootFactory( sf )
+ .addClass( A.class )
+ .buildSearchFactory();
+
+ A a = new A();
+ a.setId( 1 );
+ a.setName( "Emmanuel" );
+
+ ManualTransactionContext tc = new ManualTransactionContext();
+
+ Work<A> work = new Work<A>( a, 1, WorkType.INDEX );
+ sf.getWorker().performWork( work, tc );
+
+ tc.end();
+
+ QueryParser parser = new QueryParser( SearchTestCase.getTargetLuceneVersion(),
"name", SearchTestCase.standardAnalyzer );
+ Query luceneQuery = parser.parse( "Emmanuel" );
+
+ //we know there is only one DP
+ DirectoryProvider provider = sf
+ .getDirectoryProviders( A.class )[0];
+ IndexSearcher searcher = new IndexSearcher( provider.getDirectory(), true );
+ TopDocs hits = searcher.search( luceneQuery, 1000 );
+ assertEquals( 1, hits.totalHits );
+
+ searcher.close();
+
+ sf = (MutableSearchFactory) builder.rootFactory( sf )
+ .addClass( B.class )
+ .buildSearchFactory();
+
+ tc = new ManualTransactionContext();
+
+ Work<B> workB = new Work<B>( new B(1, "Noel"), 1, WorkType.INDEX
);
+ sf.getWorker().performWork( workB, tc );
+
+ tc.end();
+
+ luceneQuery = parser.parse( "Noel" );
+
+ //we know there is only one DP
+ provider = sf.getDirectoryProviders( A.class )[0];
+ searcher = new IndexSearcher( provider.getDirectory(), true );
+ hits = searcher.search( luceneQuery, 1000 );
+ assertEquals( 1, hits.totalHits );
+
+ searcher.close();
+
+ sf.close();
+ }
+}
Show replies by date