[hibernate-commits] Hibernate SVN: r19181 - in search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/embedded/nested: containedIn and 1 other directory.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Wed Apr 7 09:48:44 EDT 2010


Author: epbernard
Date: 2010-04-07 09:48:43 -0400 (Wed, 07 Apr 2010)
New Revision: 19181

Added:
   search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/embedded/nested/containedIn/
   search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/embedded/nested/containedIn/HelpItem.java
   search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/embedded/nested/containedIn/HelpItemTag.java
   search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/embedded/nested/containedIn/NestedContainedInTest.java
   search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/embedded/nested/containedIn/Tag.java
Log:
HSEARCH-488 add tests on nested @ContainedIn

Added: search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/embedded/nested/containedIn/HelpItem.java
===================================================================
--- search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/embedded/nested/containedIn/HelpItem.java	                        (rev 0)
+++ search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/embedded/nested/containedIn/HelpItem.java	2010-04-07 13:48:43 UTC (rev 19181)
@@ -0,0 +1,74 @@
+package org.hibernate.search.test.embedded.nested.containedIn;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import javax.persistence.Version;
+
+import org.hibernate.search.annotations.Field;
+import org.hibernate.search.annotations.Indexed;
+import org.hibernate.search.annotations.IndexedEmbedded;
+import org.hibernate.search.annotations.Store;
+
+/**
+ * @author Emmanuel Bernard
+ */
+ at Indexed
+ at Entity
+public class HelpItem {
+
+	@Id
+	@GeneratedValue(strategy = GenerationType.AUTO)
+	private Long id;
+
+	@Version()
+	private Long version;
+
+	@Field(index = org.hibernate.search.annotations.Index.TOKENIZED, store = Store.NO)
+	private String title;
+
+	@OneToMany(fetch = FetchType.LAZY, mappedBy = "helpItem")
+	@IndexedEmbedded
+	private List<HelpItemTag> tags;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Long getVersion() {
+		return version;
+	}
+
+	public void setVersion(Long version) {
+		this.version = version;
+	}
+
+	public String getTitle() {
+		return title;
+	}
+
+	public void setTitle(String title) {
+		this.title = title;
+	}
+
+	public List<HelpItemTag> getTags() {
+		if ( tags == null ) {
+			tags = new ArrayList<HelpItemTag>();
+		}
+		return tags;
+	}
+
+	public void setTags(List<HelpItemTag> tags) {
+		this.tags = tags;
+	}
+}
\ No newline at end of file

Added: search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/embedded/nested/containedIn/HelpItemTag.java
===================================================================
--- search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/embedded/nested/containedIn/HelpItemTag.java	                        (rev 0)
+++ search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/embedded/nested/containedIn/HelpItemTag.java	2010-04-07 13:48:43 UTC (rev 19181)
@@ -0,0 +1,71 @@
+package org.hibernate.search.test.embedded.nested.containedIn;
+
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Version;
+
+import org.hibernate.search.annotations.ContainedIn;
+import org.hibernate.search.annotations.IndexedEmbedded;
+
+/**
+ * @author Emmanuel Bernard
+ */
+ at Entity
+public class HelpItemTag {
+
+	private static final long serialVersionUID = 1L;
+
+	@Id
+	@GeneratedValue(strategy = GenerationType.AUTO)
+	private Long id;
+
+	@Version
+	private Long version;
+
+	@ManyToOne(fetch = FetchType.LAZY)
+	@JoinColumn(name = "helpItem", nullable = false)
+	@ContainedIn
+	private HelpItem helpItem;
+
+	@ManyToOne(fetch = FetchType.LAZY)
+	@JoinColumn(name = "tag", nullable = false)
+	@IndexedEmbedded
+	private Tag tag;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Long getVersion() {
+		return version;
+	}
+
+	public void setVersion(Long version) {
+		this.version = version;
+	}
+
+	public HelpItem getHelpItem() {
+		return helpItem;
+	}
+
+	public void setHelpItem(HelpItem helpItem) {
+		this.helpItem = helpItem;
+	}
+
+	public Tag getTag() {
+		return tag;
+	}
+
+	public void setTag(Tag tag) {
+		this.tag = tag;
+	}
+}

Added: search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/embedded/nested/containedIn/NestedContainedInTest.java
===================================================================
--- search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/embedded/nested/containedIn/NestedContainedInTest.java	                        (rev 0)
+++ search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/embedded/nested/containedIn/NestedContainedInTest.java	2010-04-07 13:48:43 UTC (rev 19181)
@@ -0,0 +1,89 @@
+package org.hibernate.search.test.embedded.nested.containedIn;
+
+import org.apache.lucene.index.Term;
+import org.apache.lucene.search.Query;
+import org.apache.lucene.search.TermQuery;
+
+import org.hibernate.Transaction;
+import org.hibernate.search.FullTextQuery;
+import org.hibernate.search.FullTextSession;
+import org.hibernate.search.Search;
+import org.hibernate.search.test.SearchTestCase;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public class NestedContainedInTest extends SearchTestCase {
+
+	public void testAddHelpItem() {
+		String tagName = "animal";
+		createHelpItem( tagName );
+		openSession(  );
+		doQuery( tagName );
+		session.close();
+	}
+
+	public void testChangeTagName() {
+
+		String tagName = "animal";
+		createHelpItem( tagName );
+
+		openSession(  );
+		HelpItem check = doQuery( tagName );
+
+		Tag tag = check.getTags().get( 0 ).getTag();
+
+		Transaction tx = session.beginTransaction();
+		String newTagName = "automobile";
+		tag.setName( newTagName );
+		session.saveOrUpdate( tag );
+		tx.commit();
+
+		doQuery( newTagName );
+		session.close();
+	}
+
+	private void createHelpItem(String tagName) {
+		openSession(  );
+		Transaction tx = session.beginTransaction();
+		HelpItem helpItem = new HelpItem();
+		helpItem.setTitle( "The quick brown fox jumps over the lazy dog." );
+
+		Tag tag = new Tag();
+		tag.setName( tagName );
+
+		HelpItemTag helpItemTag = new HelpItemTag();
+		helpItemTag.setHelpItem( helpItem );
+		helpItemTag.setTag( tag );
+
+		helpItem.getTags().add( helpItemTag );
+		tag.getHelpItems().add( helpItemTag );
+
+		session.save( helpItem );
+		session.save( tag );
+		session.save( helpItemTag );
+
+		tx.commit();
+		session.close();
+	}
+
+	private HelpItem doQuery(String tagName) {
+		FullTextSession fullTextSession = Search.getFullTextSession( session );
+		Query termQuery = new TermQuery( new Term( "tags.tag.name", tagName ) );
+		FullTextQuery fullTextQuery =
+				fullTextSession.createFullTextQuery( termQuery, HelpItem.class );
+		HelpItem check = ( HelpItem ) fullTextQuery.uniqueResult();
+		assertNotNull( "No HelpItem with Tag '" + tagName + "' found in Lucene index.", check );
+		assertTrue( check.getTags().get( 0 ).getTag().getName().equals( tagName ) );
+		return check;
+	}
+
+	@Override
+	protected Class<?>[] getMappings() {
+		return new Class<?>[] {
+				HelpItem.class,
+				HelpItemTag.class,
+				Tag.class
+		};
+	}
+}

Added: search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/embedded/nested/containedIn/Tag.java
===================================================================
--- search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/embedded/nested/containedIn/Tag.java	                        (rev 0)
+++ search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/embedded/nested/containedIn/Tag.java	2010-04-07 13:48:43 UTC (rev 19181)
@@ -0,0 +1,76 @@
+package org.hibernate.search.test.embedded.nested.containedIn;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import javax.persistence.Version;
+
+import org.hibernate.search.annotations.Boost;
+import org.hibernate.search.annotations.ContainedIn;
+import org.hibernate.search.annotations.Field;
+import org.hibernate.search.annotations.Store;
+
+/**
+ * @author Emmanuel Bernard
+ */
+ at Entity
+public class Tag {
+	@Id
+	@GeneratedValue(strategy = GenerationType.AUTO)
+	private Long id;
+
+	@Version
+	private Long version;
+
+	@Column(nullable = false, length = 50)
+	@Field(index = org.hibernate.search.annotations.Index.TOKENIZED, store = Store.NO)
+	@Boost(1.5f)
+	private String name;
+
+	@OneToMany(fetch = FetchType.LAZY, mappedBy = "tag")
+	@ContainedIn
+	private List<HelpItemTag> helpItems;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Long getVersion() {
+		return version;
+	}
+
+	public void setVersion(Long version) {
+		this.version = version;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public List<HelpItemTag> getHelpItems() {
+		if ( helpItems == null ) {
+			helpItems = new ArrayList<HelpItemTag>();
+		}
+		return helpItems;
+	}
+
+	public void setHelpItems(List<HelpItemTag> helpItems) {
+		this.helpItems = helpItems;
+	}
+
+}



More information about the hibernate-commits mailing list