Java Mailing List Archive

http://www.gg3721.com/

Home » Hibernate Commits List »

[hibernate-commits] Hibernate SVN: r15033 -
 search/trunk/src/test/org/hibernate/search/test/embedded.

hibernate-commits

2008-08-11


Author LoginPost Reply
Author: hardy.ferentschik
Date: 2008-08-11 12:17:19 -0400 (Mon, 11 Aug 2008)
New Revision: 15033

Added:
 search/trunk/src/test/org/hibernate/search/test/embedded/StateCandidate.java
Modified:
 search/trunk/src/test/org/hibernate/search/test/embedded/EmbeddedTest.java
 search/trunk/src/test/org/hibernate/search/test/embedded/State.java
Log:
Testcase for HSEARCH-142

Modified: search/trunk/src/test/org/hibernate/search/test/embedded/EmbeddedTest.java
===================================================================
--- search/trunk/src/test/org/hibernate/search/test/embedded/EmbeddedTest.java  2008-08-11 14:53:01 UTC (rev 15032)
+++ search/trunk/src/test/org/hibernate/search/test/embedded/EmbeddedTest.java  2008-08-11 16:17:19 UTC (rev 15033)
@@(protected) @@

/**
* @author Emmanuel Bernard
+ * @author Hardy Ferentschik
*/
-@(protected)")
public class EmbeddedTest extends SearchTestCase {

 public void testEmbeddedIndexing() throws Exception {
@@(protected) @@
   s.persist( tower );
   tx.commit();

-
   FullTextSession session = Search.getFullTextSession( s );
   QueryParser parser = new QueryParser( "id", new StandardAnalyzer() );
   Query query;
-    List result;
+    List<?> result;

   query = parser.parse( "address.street:place" );
   result = session.createFullTextQuery( query ).list();
@@(protected) @@
   address.getOwnedBy().setName( "Buckhead community" );
   tx.commit();

-
   s.clear();

   session = Search.getFullTextSession( s );
@@(protected) @@
   s.close();

 }
-  
+
 public void testEmbeddedIndexingOneToMany() throws Exception {
   Country country = new Country();
-    country.setName("Germany");
-    List states = new ArrayList<State>();
+    country.setName( "Germany" );
+    List<State> states = new ArrayList<State>();
   State bayern = new State();
-    bayern.setName("Bayern");
+    bayern.setName( "Bayern" );
   State hessen = new State();
-    hessen.setName("Hessen");
+    hessen.setName( "Hessen" );
   State sachsen = new State();
-    sachsen.setName("Sachsen");
-    states.add(bayern);
-    states.add(hessen);
-    states.add(sachsen);
-    country.setStates(states);
+    sachsen.setName( "Sachsen" );
+    states.add( bayern );
+    states.add( hessen );
+    states.add( sachsen );
+    country.setStates( states );

   Session s = openSession();
   Transaction tx = s.beginTransaction();
   s.persist( country );
   tx.commit();

-
   FullTextSession session = Search.getFullTextSession( s );
   QueryParser parser = new QueryParser( "id", new StandardAnalyzer() );
   Query query;
-    List result;
+    List<?> result;

   query = parser.parse( "states.name:Hessen" );
   result = session.createFullTextQuery( query ).list();
   assertEquals( "unable to find property in embedded", 1, result.size() );
   s.close();
-  }  
+  }

 public void testContainedIn() throws Exception {
   Tower tower = new Tower();
@@(protected) @@
   FullTextSession session = Search.getFullTextSession( s );
   QueryParser parser = new QueryParser( "id", new StandardAnalyzer() );
   Query query;
-    List result;
+    List<?> result;

   query = parser.parse( "address.street:peachtree" );
   result = session.createFullTextQuery( query, Tower.class ).list();
@@(protected) @@
   Product p1 = new Product();
   p1.setName( "Candide" );
   p1.getAuthors().add( a );
-    p1.getAuthors().add( a2 ); //be creative
+    p1.getAuthors().add( a2 ); // be creative

   Product p2 = new Product();
   p2.setName( "Le malade imaginaire" );
@@(protected) @@
   p2.getOrders().put( "Emmanuel", o );
   p2.getOrders().put( "Gavin", o2 );

-
   Session s = openSession();
   Transaction tx = s.beginTransaction();
   s.persist( a );
@@(protected) @@

   QueryParser parser = new MultiFieldQueryParser( new String[] { "name", "authors.name" }, new StandardAnalyzer() );
   Query query;
-    List result;
+    List<?> result;

   query = parser.parse( "Hugo" );
   result = session.createFullTextQuery( query, Product.class ).list();
   assertEquals( "collection of embedded ignored", 1, result.size() );

-    //update the collection
+    // update the collection
   Product p = (Product) result.get( 0 );
   p.getAuthors().add( a4 );

-    //PhraseQuery
+    // PhraseQuery
   query = new TermQuery( new Term( "orders.orderNumber", "ZERTYD" ) );
   result = session.createFullTextQuery( query, Product.class ).list();
   assertEquals( "collection of untokenized ignored", 1, result.size() );
@@(protected) @@
   session = Search.getFullTextSession( s );
   query = parser.parse( "Proust" );
   result = session.createFullTextQuery( query, Product.class ).list();
-    //HSEARCH-56
+    // HSEARCH-56
   assertEquals( "update of collection of embedded ignored", 1, result.size() );

   s.delete( s.get( Product.class, p1.getId() ) );
   s.delete( s.get( Product.class, p2.getId() ) );
   tx.commit();
   s.close();
+  }

+  /**
+   * Tests that updating an indexed embedded object updates the Lucene index as well.
+   *
+   * @throws Exception in case the test fails
+   * @see HSEARCH-142
+   */
+  public void testEmbeddedObjectUpdate() throws Exception {
+
+    State state = new State();
+    state.setName( "Bavaria" );
+    StateCandidate candiate = new StateCandidate();
+    candiate.setName( "Mueller" );
+    candiate.setState( state );
+
+    Session s = openSession();
+    Transaction tx = s.beginTransaction();
+    s.persist( candiate );
+    tx.commit();
+    s.clear();
+
+    FullTextSession session = Search.getFullTextSession( s );
+    tx = session.beginTransaction();
+
+    QueryParser parser = new MultiFieldQueryParser( new String[] { "name", "state.name" }, new StandardAnalyzer() );
+    Query query;
+    List<?> result;
+
+    query = parser.parse( "Bavaria" );
+    result = session.createFullTextQuery( query, StateCandidate.class ).list();
+    assertEquals( "IndexEmbedded ignored.", 1, result.size() );
+    tx.commit();
+    s.clear();
+    
+    tx = s.beginTransaction();
+    // remove the following line to see the test fails. It should not be necessary to
+    // to also update the name of the candidate. Only updating the state should work
+    // as well.
+    candiate.setName( "Beckstein" );
+    state.setName( "Hessen" );
+    candiate = (StateCandidate) s.merge( candiate );
+    tx.commit();
+    s.clear();
+    
+    tx = s.beginTransaction();
+    session = Search.getFullTextSession( s );
+    query = parser.parse( "Hessen" );
+    result = session.createFullTextQuery( query, StateCandidate.class ).list();
+    assertEquals( "IndexEmbedded ignored.", 1, result.size() );
+    tx.commit();
+    s.clear();
+    s.close();
 }

-  protected void configure(org.hibernate.cfg.Configuration cfg) {
+  protected void configure( org.hibernate.cfg.Configuration cfg ) {
   super.configure( cfg );
 }

-  protected Class[] getMappings() {
-    return new Class[] {
-        Tower.class,
-        Address.class,
-        Product.class,
-        Order.class,
-        Author.class,
-        Country.class,
-        State.class
-    };
+  protected Class<?>[] getMappings() {
+    return new Class[] { Tower.class, Address.class, Product.class, Order.class, Author.class, Country.class,
+        State.class, StateCandidate.class };
 }
}

Modified: search/trunk/src/test/org/hibernate/search/test/embedded/State.java
===================================================================
--- search/trunk/src/test/org/hibernate/search/test/embedded/State.java  2008-08-11 14:53:01 UTC (rev 15032)
+++ search/trunk/src/test/org/hibernate/search/test/embedded/State.java  2008-08-11 16:17:19 UTC (rev 15033)
@@(protected) @@
-// $Id:$
+// $Id$
package org.hibernate.search.test.embedded;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
+import javax.persistence.OneToOne;

+import org.hibernate.search.annotations.ContainedIn;
import org.hibernate.search.annotations.Field;

/**
@@(protected) @@
 
 @Field
 private String name;
+  
+  @ContainedIn
+  @OneToOne(mappedBy = "state")
+  private StateCandidate candidate;

 public Integer getId() {
   return id;
@@(protected) @@
 public void setName(String name) {
   this.name = name;
 }
+
+  public StateCandidate getCandidate() {
+    return candidate;
+  }
+
+  public void setCandidate( StateCandidate candidate ) {
+    this.candidate = candidate;
+  }
}

Added: search/trunk/src/test/org/hibernate/search/test/embedded/StateCandidate.java
===================================================================
--- search/trunk/src/test/org/hibernate/search/test/embedded/StateCandidate.java                  (rev 0)
+++ search/trunk/src/test/org/hibernate/search/test/embedded/StateCandidate.java  2008-08-11 16:17:19 UTC (rev 15033)
@@(protected) @@
+package org.hibernate.search.test.embedded;
+
+// $Id:$
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.OneToOne;
+
+import org.hibernate.search.annotations.DocumentId;
+import org.hibernate.search.annotations.Field;
+import org.hibernate.search.annotations.Indexed;
+import org.hibernate.search.annotations.IndexedEmbedded;
+
+/**
+ *
+ * @author Hardy Ferentschik
+ */
+@(protected)
+@(protected)
+public class StateCandidate implements Person {
+
+  @Id @GeneratedValue
+  @DocumentId
+  private int id;
+  
+  @Field
+  private String name;
+  
+  @OneToOne(cascade = CascadeType.ALL)
+  private Address address;
+  
+  @IndexedEmbedded
+  @OneToOne(cascade = CascadeType.ALL)
+  private State state;
+  
+  public State getState() {
+    return state;
+  }
+
+  public void setState( State state ) {
+    this.state = state;
+  }
+
+  public Address getAddress() {
+    return address;
+  }
+
+  public String getName() {
+    return name;
+  }
+
+  public void setAddress( Address address ) {
+    this.address = address;
+
+  }
+
+  public void setName( String name ) {
+    this.name = name;
+  }
+
+  public int getId() {
+    return id;
+  }
+
+  public void setId( int id ) {
+    this.id = id;
+  }
+}


Property changes on: search/trunk/src/test/org/hibernate/search/test/embedded/StateCandidate.java
___________________________________________________________________
Name: svn:eol-style
 + native

_______________________________________________
hibernate-commits mailing list
hibernate-commits@(protected)
https://lists.jboss.org/mailman/listinfo/hibernate-commits
©2008 gg3721.com - Jax Systems, LLC, U.S.A.