You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2016/02/26 13:17:12 UTC

svn commit: r1732463 - in /openmeetings/application: branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/ branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/ branches/3.1.x/openmeetings-db/src/...

Author: solomax
Date: Fri Feb 26 12:17:12 2016
New Revision: 1732463

URL: http://svn.apache.org/viewvc?rev=1732463&view=rev
Log:
[OPENMEETINGS-1336] fetching lazy attributes are now works as expected for user and room

Modified:
    openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
    openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
    openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
    openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
    openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
    openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java

Modified: openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java?rev=1732463&r1=1732462&r2=1732463&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java Fri Feb 26 12:17:12 2016
@@ -29,6 +29,7 @@ import javax.persistence.EntityManager;
 import javax.persistence.PersistenceContext;
 import javax.persistence.TypedQuery;
 
+import org.apache.openjpa.persistence.OpenJPAEntityManager;
 import org.apache.openjpa.persistence.OpenJPAPersistence;
 import org.apache.openjpa.persistence.OpenJPAQuery;
 import org.apache.openmeetings.db.dao.IDataProviderDao;
@@ -61,21 +62,41 @@ public class RoomDao implements IDataPro
 
 	@Override
 	public Room get(Long id) {
-		TypedQuery<Room> q = em.createNamedQuery("getRoomById", Room.class);
-		q.setParameter("id", id);
-		@SuppressWarnings("unchecked")
-		OpenJPAQuery<Room> kq = OpenJPAPersistence.cast(q);
-		kq.getFetchPlan().addFetchGroup("roomModerators");
-		List<Room> l = kq.getResultList();
-		return l.isEmpty() ? null : l.get(0);
+		Room r = null;
+		if (id != null && id > 0) {
+			OpenJPAEntityManager oem = OpenJPAPersistence.cast(em);
+			boolean qrce = oem.getFetchPlan().getQueryResultCacheEnabled();
+			try {
+				oem.getFetchPlan().setQueryResultCacheEnabled(false); //FIXME update in cache during update
+				TypedQuery<Room> q = oem.createNamedQuery("getRoomById", Room.class);
+				q.setParameter("id", id);
+				@SuppressWarnings("unchecked")
+				OpenJPAQuery<Room> kq = OpenJPAPersistence.cast(q);
+				kq.getFetchPlan().addFetchGroups("roomModerators", "roomGroups");
+				List<Room> l = kq.getResultList();
+				r = l.isEmpty() ? r : l.get(0);
+			} finally {
+				oem.getFetchPlan().setQueryResultCacheEnabled(qrce);
+			}
+		} else {
+			log.info("[get] " + "Info: No room id given");
+		}
+		return r;
 	}
 
 	public List<Room> get() {
-		TypedQuery<Room> q = em.createNamedQuery("getBackupRooms", Room.class);
-		@SuppressWarnings("unchecked")
-		OpenJPAQuery<Room> kq = OpenJPAPersistence.cast(q);
-		kq.getFetchPlan().addFetchGroup("roomModerators");
-		return kq.getResultList();
+		OpenJPAEntityManager oem = OpenJPAPersistence.cast(em);
+		boolean qrce = oem.getFetchPlan().getQueryResultCacheEnabled();
+		try {
+			oem.getFetchPlan().setQueryResultCacheEnabled(false); //FIXME update in cache during update
+			TypedQuery<Room> q = oem.createNamedQuery("getBackupRooms", Room.class);
+			@SuppressWarnings("unchecked")
+			OpenJPAQuery<Room> kq = OpenJPAPersistence.cast(q);
+			kq.getFetchPlan().addFetchGroups("roomModerators", "roomGroups");
+			return kq.getResultList();
+		} finally {
+			oem.getFetchPlan().setQueryResultCacheEnabled(qrce);
+		}
 	}
 	
 	public List<Room> get(List<Long> ids) {

Modified: openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java?rev=1732463&r1=1732462&r2=1732463&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java Fri Feb 26 12:17:12 2016
@@ -255,20 +255,23 @@ public class UserDao implements IDataPro
 		if (id != null && id > 0) {
 			OpenJPAEntityManager oem = OpenJPAPersistence.cast(em);
 			boolean qrce = oem.getFetchPlan().getQueryResultCacheEnabled();
-			oem.getFetchPlan().setQueryResultCacheEnabled(false); //FIXME update in cache during update
-			TypedQuery<User> q = oem.createNamedQuery("getUserById", User.class).setParameter("id", id);
-			@SuppressWarnings("unchecked")
-			OpenJPAQuery<User> kq = OpenJPAPersistence.cast(q);
-			kq.getFetchPlan().addFetchGroup("groupUsers");
-			if (force) {
-				kq.getFetchPlan().addFetchGroup("backupexport");
-			}
 			try {
-				u = kq.getSingleResult();
-			} catch (NoResultException ne) {
-				//no-op
+				oem.getFetchPlan().setQueryResultCacheEnabled(false); //FIXME update in cache during update
+				TypedQuery<User> q = oem.createNamedQuery("getUserById", User.class).setParameter("id", id);
+				@SuppressWarnings("unchecked")
+				OpenJPAQuery<User> kq = OpenJPAPersistence.cast(q);
+				kq.getFetchPlan().addFetchGroup("groupUsers");
+				if (force) {
+					kq.getFetchPlan().addFetchGroup("backupexport");
+				}
+				try {
+					u = kq.getSingleResult();
+				} catch (NoResultException ne) {
+					//no-op
+				}
+			} finally {
+				oem.getFetchPlan().setQueryResultCacheEnabled(qrce);
 			}
-			oem.getFetchPlan().setQueryResultCacheEnabled(qrce);
 		} else {
 			log.info("[get] " + "Info: No user id given");
 		}
@@ -304,16 +307,18 @@ public class UserDao implements IDataPro
 	}
 
 	public List<User> getAllBackupUsers() {
+		OpenJPAEntityManager oem = OpenJPAPersistence.cast(em);
+		boolean qrce = oem.getFetchPlan().getQueryResultCacheEnabled();
 		try {
-			TypedQuery<User> q = em.createNamedQuery("getAllUsers", User.class);
+			oem.getFetchPlan().setQueryResultCacheEnabled(false); //FIXME update in cache during update
+			TypedQuery<User> q = oem.createNamedQuery("getAllUsers", User.class);
 			@SuppressWarnings("unchecked")
 			OpenJPAQuery<User> kq = OpenJPAPersistence.cast(q);
 			kq.getFetchPlan().addFetchGroups("backupexport", "groupUsers");
 			return kq.getResultList();
-		} catch (Exception ex2) {
-			log.error("[getAllUsersDeleted] ", ex2);
+		} finally {
+			oem.getFetchPlan().setQueryResultCacheEnabled(qrce);
 		}
-		return null;
 	}
 
 	/**

Modified: openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java?rev=1732463&r1=1732462&r2=1732463&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java Fri Feb 26 12:17:12 2016
@@ -54,7 +54,8 @@ import org.simpleframework.xml.Root;
 
 @Entity
 @FetchGroups({
-	@FetchGroup(name = "roomModerators", attributes = { @FetchAttribute(name = "moderators"), @FetchAttribute(name = "roomGroups") })
+	@FetchGroup(name = "roomModerators", attributes = { @FetchAttribute(name = "moderators") })
+	, @FetchGroup(name = "roomGroups", attributes = { @FetchAttribute(name = "roomGroups") })
 })
 @NamedQueries({
 	@NamedQuery(name = "getNondeletedRooms", query = "SELECT r FROM Room r WHERE r.deleted = false"),

Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java?rev=1732463&r1=1732462&r2=1732463&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java Fri Feb 26 12:17:12 2016
@@ -29,6 +29,7 @@ import javax.persistence.EntityManager;
 import javax.persistence.PersistenceContext;
 import javax.persistence.TypedQuery;
 
+import org.apache.openjpa.persistence.OpenJPAEntityManager;
 import org.apache.openjpa.persistence.OpenJPAPersistence;
 import org.apache.openjpa.persistence.OpenJPAQuery;
 import org.apache.openmeetings.db.dao.IDataProviderDao;
@@ -61,21 +62,41 @@ public class RoomDao implements IDataPro
 
 	@Override
 	public Room get(Long id) {
-		TypedQuery<Room> q = em.createNamedQuery("getRoomById", Room.class);
-		q.setParameter("id", id);
-		@SuppressWarnings("unchecked")
-		OpenJPAQuery<Room> kq = OpenJPAPersistence.cast(q);
-		kq.getFetchPlan().addFetchGroup("roomModerators");
-		List<Room> l = kq.getResultList();
-		return l.isEmpty() ? null : l.get(0);
+		Room r = null;
+		if (id != null && id > 0) {
+			OpenJPAEntityManager oem = OpenJPAPersistence.cast(em);
+			boolean qrce = oem.getFetchPlan().getQueryResultCacheEnabled();
+			try {
+				oem.getFetchPlan().setQueryResultCacheEnabled(false); //FIXME update in cache during update
+				TypedQuery<Room> q = oem.createNamedQuery("getRoomById", Room.class);
+				q.setParameter("id", id);
+				@SuppressWarnings("unchecked")
+				OpenJPAQuery<Room> kq = OpenJPAPersistence.cast(q);
+				kq.getFetchPlan().addFetchGroups("roomModerators", "roomGroups");
+				List<Room> l = kq.getResultList();
+				r = l.isEmpty() ? r : l.get(0);
+			} finally {
+				oem.getFetchPlan().setQueryResultCacheEnabled(qrce);
+			}
+		} else {
+			log.info("[get] " + "Info: No room id given");
+		}
+		return r;
 	}
 
 	public List<Room> get() {
-		TypedQuery<Room> q = em.createNamedQuery("getBackupRooms", Room.class);
-		@SuppressWarnings("unchecked")
-		OpenJPAQuery<Room> kq = OpenJPAPersistence.cast(q);
-		kq.getFetchPlan().addFetchGroup("roomModerators");
-		return kq.getResultList();
+		OpenJPAEntityManager oem = OpenJPAPersistence.cast(em);
+		boolean qrce = oem.getFetchPlan().getQueryResultCacheEnabled();
+		try {
+			oem.getFetchPlan().setQueryResultCacheEnabled(false); //FIXME update in cache during update
+			TypedQuery<Room> q = oem.createNamedQuery("getBackupRooms", Room.class);
+			@SuppressWarnings("unchecked")
+			OpenJPAQuery<Room> kq = OpenJPAPersistence.cast(q);
+			kq.getFetchPlan().addFetchGroups("roomModerators", "roomGroups");
+			return kq.getResultList();
+		} finally {
+			oem.getFetchPlan().setQueryResultCacheEnabled(qrce);
+		}
 	}
 	
 	public List<Room> get(List<Long> ids) {

Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java?rev=1732463&r1=1732462&r2=1732463&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java Fri Feb 26 12:17:12 2016
@@ -255,20 +255,23 @@ public class UserDao implements IDataPro
 		if (id != null && id > 0) {
 			OpenJPAEntityManager oem = OpenJPAPersistence.cast(em);
 			boolean qrce = oem.getFetchPlan().getQueryResultCacheEnabled();
-			oem.getFetchPlan().setQueryResultCacheEnabled(false); //FIXME update in cache during update
-			TypedQuery<User> q = oem.createNamedQuery("getUserById", User.class).setParameter("id", id);
-			@SuppressWarnings("unchecked")
-			OpenJPAQuery<User> kq = OpenJPAPersistence.cast(q);
-			kq.getFetchPlan().addFetchGroup("groupUsers");
-			if (force) {
-				kq.getFetchPlan().addFetchGroup("backupexport");
-			}
 			try {
-				u = kq.getSingleResult();
-			} catch (NoResultException ne) {
-				//no-op
+				oem.getFetchPlan().setQueryResultCacheEnabled(false); //FIXME update in cache during update
+				TypedQuery<User> q = oem.createNamedQuery("getUserById", User.class).setParameter("id", id);
+				@SuppressWarnings("unchecked")
+				OpenJPAQuery<User> kq = OpenJPAPersistence.cast(q);
+				kq.getFetchPlan().addFetchGroup("groupUsers");
+				if (force) {
+					kq.getFetchPlan().addFetchGroup("backupexport");
+				}
+				try {
+					u = kq.getSingleResult();
+				} catch (NoResultException ne) {
+					//no-op
+				}
+			} finally {
+				oem.getFetchPlan().setQueryResultCacheEnabled(qrce);
 			}
-			oem.getFetchPlan().setQueryResultCacheEnabled(qrce);
 		} else {
 			log.info("[get] " + "Info: No user id given");
 		}
@@ -304,16 +307,18 @@ public class UserDao implements IDataPro
 	}
 
 	public List<User> getAllBackupUsers() {
+		OpenJPAEntityManager oem = OpenJPAPersistence.cast(em);
+		boolean qrce = oem.getFetchPlan().getQueryResultCacheEnabled();
 		try {
-			TypedQuery<User> q = em.createNamedQuery("getAllUsers", User.class);
+			oem.getFetchPlan().setQueryResultCacheEnabled(false); //FIXME update in cache during update
+			TypedQuery<User> q = oem.createNamedQuery("getAllUsers", User.class);
 			@SuppressWarnings("unchecked")
 			OpenJPAQuery<User> kq = OpenJPAPersistence.cast(q);
 			kq.getFetchPlan().addFetchGroups("backupexport", "groupUsers");
 			return kq.getResultList();
-		} catch (Exception ex2) {
-			log.error("[getAllUsersDeleted] ", ex2);
+		} finally {
+			oem.getFetchPlan().setQueryResultCacheEnabled(qrce);
 		}
-		return null;
 	}
 
 	/**

Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java?rev=1732463&r1=1732462&r2=1732463&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java Fri Feb 26 12:17:12 2016
@@ -54,7 +54,8 @@ import org.simpleframework.xml.Root;
 
 @Entity
 @FetchGroups({
-	@FetchGroup(name = "roomModerators", attributes = { @FetchAttribute(name = "moderators"), @FetchAttribute(name = "roomGroups") })
+	@FetchGroup(name = "roomModerators", attributes = { @FetchAttribute(name = "moderators") })
+	, @FetchGroup(name = "roomGroups", attributes = { @FetchAttribute(name = "roomGroups") })
 })
 @NamedQueries({
 	@NamedQuery(name = "getNondeletedRooms", query = "SELECT r FROM Room r WHERE r.deleted = false"),