[hibernate-commits] Hibernate SVN: r18510 - core/trunk/annotations/src/test/java/org/hibernate/test/annotations/embedded.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Mon Jan 11 20:16:55 EST 2010


Author: smarlow at redhat.com
Date: 2010-01-11 20:16:55 -0500 (Mon, 11 Jan 2010)
New Revision: 18510

Added:
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/embedded/FavoriteThings.java
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/embedded/InternetFavorites.java
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/embedded/URLFavorite.java
Modified:
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/embedded/EmbeddedTest.java
Log:
HHH-4598 An embeddable class may contains collection of basic types or embeddable objects

Modified: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/embedded/EmbeddedTest.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/embedded/EmbeddedTest.java	2010-01-11 23:46:47 UTC (rev 18509)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/embedded/EmbeddedTest.java	2010-01-12 01:16:55 UTC (rev 18510)
@@ -2,6 +2,9 @@
 package org.hibernate.test.annotations.embedded;
 
 import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
@@ -415,6 +418,68 @@
 		s.close();
 	}
 
+	// make sure we support collection of embeddable objects inside embeddable objects
+	public void testEmbeddableInsideEmbeddable() throws Exception {
+		Session s;
+		Transaction tx;
+
+		Collection<URLFavorite> urls = new ArrayList<URLFavorite>();
+		URLFavorite urlFavorite = new URLFavorite();
+		urlFavorite.setUrl( "http://highscalability.com/" );
+		urls.add(urlFavorite);
+
+		urlFavorite = new URLFavorite();
+		urlFavorite.setUrl( "http://www.jboss.org/" );
+		urls.add(urlFavorite);
+
+		urlFavorite = new URLFavorite();
+		urlFavorite.setUrl( "http://www.hibernate.org/" );
+		urls.add(urlFavorite);
+
+		urlFavorite = new URLFavorite();
+		urlFavorite.setUrl( "http://www.jgroups.org/" );
+		urls.add( urlFavorite );
+
+ 		Collection<String>ideas = new ArrayList<String>();
+		ideas.add( "lionheart" );
+		ideas.add( "xforms" );
+		ideas.add( "dynamic content" );
+		ideas.add( "http" );
+
+		InternetFavorites internetFavorites = new InternetFavorites();
+		internetFavorites.setLinks( urls );
+		internetFavorites.setIdeas( ideas );
+
+		FavoriteThings favoriteThings = new FavoriteThings();
+		favoriteThings.setWeb( internetFavorites );
+
+		s = openSession();
+
+		tx = s.beginTransaction();
+		s.persist(favoriteThings);
+		tx.commit();
+
+		tx = s.beginTransaction();
+		s.flush();
+		favoriteThings = (FavoriteThings) s.get( FavoriteThings.class,  favoriteThings.getId() );
+		assertTrue( "has web", favoriteThings.getWeb() != null );
+		assertTrue( "has ideas", favoriteThings.getWeb().getIdeas() != null );
+		assertTrue( "has favorite idea 'http'",favoriteThings.getWeb().getIdeas().contains("http") );
+		assertTrue( "has favorite idea 'http'",favoriteThings.getWeb().getIdeas().contains("dynamic content") );
+
+		urls = favoriteThings.getWeb().getLinks();
+		assertTrue( "has urls", urls != null);
+		URLFavorite[] favs = new URLFavorite[4];
+		urls.toArray(favs);
+		assertTrue( "has http://www.hibernate.org url favorite link",
+			"http://www.hibernate.org/".equals( favs[0].getUrl() ) ||
+			"http://www.hibernate.org/".equals( favs[1].getUrl() ) ||
+			"http://www.hibernate.org/".equals( favs[2].getUrl() ) ||
+			"http://www.hibernate.org/".equals( favs[3].getUrl() ));
+		tx.commit();
+		s.close();
+	}
+
 	public EmbeddedTest(String x) {
 		super( x );
 	}
@@ -431,7 +496,8 @@
 				InternetProvider.class,
 				CorpType.class,
 				Nationality.class,
-				Manager.class
+				Manager.class,
+				FavoriteThings.class
 		};
 	}
 }

Added: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/embedded/FavoriteThings.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/embedded/FavoriteThings.java	                        (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/embedded/FavoriteThings.java	2010-01-12 01:16:55 UTC (rev 18510)
@@ -0,0 +1,34 @@
+package org.hibernate.test.annotations.embedded;
+
+import javax.persistence.Embedded;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+
+/**
+ * Has collection of embeddable objects inside embeddable objects for testing HHH-4598
+ */
+
+ at Entity
+public class FavoriteThings {
+	@Id
+	int id;
+
+	@Embedded
+	InternetFavorites web;
+
+	public InternetFavorites getWeb() {
+		return web;
+	}
+
+	public void setWeb(InternetFavorites web) {
+		this.web = web;
+	}
+
+	public int getId() {
+		return id;
+	}
+
+	public void setId(int id) {
+		this.id = id;
+	}
+}

Added: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/embedded/InternetFavorites.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/embedded/InternetFavorites.java	                        (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/embedded/InternetFavorites.java	2010-01-12 01:16:55 UTC (rev 18510)
@@ -0,0 +1,32 @@
+package org.hibernate.test.annotations.embedded;
+
+import javax.persistence.Embeddable;
+import javax.persistence.Embedded;
+import java.util.Collection;
+
+ at Embeddable
+public class InternetFavorites {
+
+	@Embedded
+	Collection<URLFavorite> links;
+
+	@Embedded
+	Collection<String> ideas;
+
+	public Collection<String> getIdeas() {
+		return ideas;
+	}
+
+	public void setIdeas(Collection<String> ideas) {
+		this.ideas = ideas;
+	}
+
+	public Collection<URLFavorite> getLinks() {
+
+		return links;
+	}
+
+	public void setLinks(Collection<URLFavorite> links) {
+		this.links = links;
+	}
+}

Added: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/embedded/URLFavorite.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/embedded/URLFavorite.java	                        (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/embedded/URLFavorite.java	2010-01-12 01:16:55 UTC (rev 18510)
@@ -0,0 +1,17 @@
+package org.hibernate.test.annotations.embedded;
+
+import javax.persistence.Embeddable;
+
+ at Embeddable
+public class URLFavorite {
+
+	private String url;
+
+	public String getUrl() {
+		return url;
+	}
+
+	public void setUrl(String url) {
+		this.url = url;
+	}
+}



More information about the hibernate-commits mailing list