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 2012/12/21 05:11:20 UTC

svn commit: r1424802 - in /incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings: axis/services/ conference/room/ data/basic/dao/ quartz/scheduler/ remote/red5/ test/cluster/

Author: solomax
Date: Fri Dec 21 04:11:19 2012
New Revision: 1424802

URL: http://svn.apache.org/viewvc?rev=1424802&view=rev
Log:
SIP: verification is added while retrieving active room list (to filter out the only "SIP transport" user);
code cleanup;

Modified:
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/RoomWebService.java
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/conference/room/RoomClient.java
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDao.java
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/quartz/scheduler/ClusterSlaveJob.java
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/test/cluster/TestHashMapStore.java
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/test/cluster/TestHashMapStoreSyncBug.java

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/RoomWebService.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/RoomWebService.java?rev=1424802&r1=1424801&r2=1424802&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/RoomWebService.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/RoomWebService.java Fri Dec 21 04:11:19 2012
@@ -895,7 +895,6 @@ public class RoomWebService {
 		try {
 			Long users_id = sessionManagement.checkSession(SID);
 			Long user_level = userManagement.getUserLevelByID(users_id);
-			Users u = userManagement.getUserById(users_id);
 			if (authLevelManagement.checkWebServiceLevel(user_level)) {
 				return roommanagement.addRoom(3L, name, roomtypes_id, comment,
 						numberOfPartizipants, ispublic, null, appointment,

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java?rev=1424802&r1=1424801&r2=1424802&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java Fri Dec 21 04:11:19 2012
@@ -136,9 +136,20 @@ public class ServerWebService {
 		Long user_level = userManagement.getUserLevelByID(users_id);
 
 		if (authLevelManagement.checkWebServiceLevel(user_level)) {
-			return serversDao.saveServer(id, name, address, port, user, pass,
-					webapp, protocol, active, comment, users_id)
-					.getId();
+			Server s = serversDao.get(id);
+			if (s == null) {
+				s = new Server();
+			}
+			s.setName(name);
+			s.setAddress(address);
+			s.setPort(port);
+			s.setUser(user);
+			s.setPass(pass);
+			s.setWebapp(webapp);
+			s.setProtocol(protocol);
+			s.setActive(active);
+			s.setComment(comment);
+			return serversDao.update(s, users_id).getId();
 		} else {
 			log.warn("Insuffisient permissions");
 			return -1;
@@ -160,11 +171,15 @@ public class ServerWebService {
 		Long user_level = userManagement.getUserLevelByID(users_id);
 
 		if (authLevelManagement.checkWebServiceLevel(user_level)) {
-			return serversDao.delete(id);
+			Server s = serversDao.get(id);
+			if (s != null) {
+				serversDao.delete(s, users_id);
+				return true;
+			}
 		} else {
 			log.warn("Insuffisient permissions");
-			return false;
 		}
+		return false;
 	}
 
 	/**

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/conference/room/RoomClient.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/conference/room/RoomClient.java?rev=1424802&r1=1424801&r2=1424802&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/conference/room/RoomClient.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/conference/room/RoomClient.java Fri Dec 21 04:11:19 2012
@@ -179,6 +179,7 @@ public class RoomClient implements Seria
 	 */
 	private Boolean zombieCheckFlag = false;
     private Boolean micMuted = false;
+    private boolean sipTransport = false;
     
     public RoomClient() {
     	
@@ -614,6 +615,14 @@ public class RoomClient implements Seria
 				+ " avsettings: " + this.getAvsettings() //
 				;
 	}
+
+	public boolean isSipTransport() {
+		return sipTransport;
+	}
+
+	public void setSipTransport(boolean sipTransport) {
+		this.sipTransport = sipTransport;
+	}
 	
 	
 	

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDao.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDao.java?rev=1424802&r1=1424801&r2=1424802&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDao.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDao.java Fri Dec 21 04:11:19 2012
@@ -24,7 +24,6 @@ import java.util.List;
 import javax.persistence.EntityManager;
 import javax.persistence.NoResultException;
 import javax.persistence.PersistenceContext;
-import javax.persistence.PersistenceException;
 import javax.persistence.TypedQuery;
 
 import org.apache.openmeetings.OpenmeetingsVariables;
@@ -157,63 +156,6 @@ public class ServerDao implements IDataP
 		return list.size() > 0 ? list.get(0) : null;
 	}
 
-	/**
-	 * @deprecated user standard mechanism of
-	 *             {@link IDataProviderDao#update(org.apache.openmeetings.persistence.beans.OmEntity, long)}
-	 * @param id
-	 * @param name
-	 * @param address
-	 * @return
-	 */
-	@Deprecated
-	public Server saveServer(long id, String name, String address, int port,
-			String user, String pass, String webapp, String protocol,
-			Boolean active, String comment, long userId) {
-		Server s = get(id);
-		if (s == null) {
-			s = new Server();
-			s.setInserted(new Date());
-			s.setInsertedby(usersDao.get(userId));
-		} else {
-			s.setUpdated(new Date());
-			s.setUpdatedby(usersDao.get(userId));
-			if (active != null && !active) {
-				clientListManager.cleanSessionsOfDeletedOrDeactivatedServer(s);
-			}
-		}
-		s.setName(name);
-		s.setAddress(address);
-		s.setPort(port);
-		s.setUser(user);
-		s.setPass(pass);
-		s.setWebapp(webapp);
-		s.setProtocol(protocol);
-		s.setActive(active);
-		s.setComment(comment);
-
-		return em.merge(s);
-		
-	}
-
-	/**
-	 * @deprecated use standard mechanism of
-	 *             {@link IDataProviderDao#delete(org.apache.openmeetings.persistence.beans.OmEntity, long)}
-	 * @param id
-	 * @return
-	 */
-	@Deprecated
-	public boolean delete(long id) {
-		Server s = get(id);
-		if (s == null) {
-			return false;
-		}
-		s.setDeleted(true);
-		s = em.merge(s);
-		//remove any active session with this server
-		clientListManager.cleanSessionsOfDeletedOrDeactivatedServer(s);
-		return true;
-	}
-
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -222,33 +164,24 @@ public class ServerDao implements IDataP
 	 * .beans.OmEntity, long)
 	 */
 	public Server update(Server entity, long userId) {
-		try {
-			if (entity.getActive() != null && !entity.getActive()) {
-				clientListManager.cleanSessionsOfDeletedOrDeactivatedServer(entity);
+		if (entity.getActive() != null && !entity.getActive()) {
+			clientListManager.cleanSessionsOfDeletedOrDeactivatedServer(entity);
+		}
+		
+		entity.setDeleted(false);
+		if (entity.getId() > 0) {
+			if (userId > 0) {
+				entity.setUpdated(new Date());
+				entity.setUpdatedby(usersDao.get(userId));
 			}
-			
-			if (entity.getId() <= 0) {
+			em.merge(entity);
+		} else {
+			if (userId > 0) {
 				entity.setInserted(new Date());
 				entity.setInsertedby(usersDao.get(userId));
-				entity.setDeleted(false);
-				em.persist(entity);
-			} else {
-				entity.setUpdated(new Date());
-				entity.setUpdatedby(usersDao.get(userId));
-				entity.setDeleted(false);
-				em.merge(entity);
 			}
-		} catch (PersistenceException ex) {
-			log.error("[update LdapConfig]", ex);
-		}
-		return entity;
-	}
-
-	public Server update(Server entity) {
-		if (entity.getActive() != null && !entity.getActive()) {
-			clientListManager.cleanSessionsOfDeletedOrDeactivatedServer(entity);
+			em.persist(entity);
 		}
-		em.merge(entity);
 		return entity;
 	}
 
@@ -260,7 +193,7 @@ public class ServerDao implements IDataP
 	 * .beans.OmEntity, long)
 	 */
 	public void delete(Server entity, long userId) {
-		if (entity.getId() >= 0) {
+		if (entity.getId() > 0) {
 			clientListManager.cleanSessionsOfDeletedOrDeactivatedServer(entity);
 			entity.setUpdated(new Date());
 			entity.setUpdatedby(usersDao.get(userId));

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/quartz/scheduler/ClusterSlaveJob.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/quartz/scheduler/ClusterSlaveJob.java?rev=1424802&r1=1424801&r2=1424802&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/quartz/scheduler/ClusterSlaveJob.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/quartz/scheduler/ClusterSlaveJob.java Fri Dec 21 04:11:19 2012
@@ -120,7 +120,7 @@ public class ClusterSlaveJob implements 
 		clientListManager.syncSlaveClientSession(server, slaveClients);
 
 		server.setLastPing(Calendar.getInstance());
-		serverDao.update(server);
+		serverDao.update(server, -1L);
 
 	}
 	

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java?rev=1424802&r1=1424801&r2=1424802&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java Fri Dec 21 04:11:19 2012
@@ -2992,10 +2992,23 @@ public class ScopeApplicationAdapter ext
 	 * SIP transport methods
 	 */
 
+	private List<Long> getVerifyedActiveRoomIds(Server s) {
+		List<Long> result = new ArrayList<Long>(clientListManager.getActiveRoomIdsByServer(s));
+		//verify
+		for (Iterator<Long> i = result.iterator(); i.hasNext();) {
+			Long id = i.next();
+			List<RoomClient> rcs = clientListManager.getClientListByRoom(id, s);
+			if (rcs.size() == 0 || (rcs.size() == 1 && rcs.get(0).isSipTransport())) {
+				i.remove();
+			}
+		}
+		return result;
+	}
+	
 	public synchronized List<Long> getActiveRoomIds() {
-		List<Long> result = new ArrayList<Long>(clientListManager.getActiveRoomIdsByServer(null));
+		List<Long> result = getVerifyedActiveRoomIds(null);
 		for (Server s : serverDao.getActiveServers()) {
-			result.addAll(clientListManager.getActiveRoomIdsByServer(s));
+			result.addAll(getVerifyedActiveRoomIds(s));
 		}
 		return result;
 	}
@@ -3056,6 +3069,7 @@ public class ScopeApplicationAdapter ext
         currentClient.setAvsettings("av");
         currentClient.setVWidth(120);
         currentClient.setVHeight(90);
+        currentClient.setSipTransport(true);
         this.clientListManager.updateClientByStreamId(streamid, currentClient, false);
 
         Collection<Set<IConnection>> conCollection = current

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/test/cluster/TestHashMapStore.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/test/cluster/TestHashMapStore.java?rev=1424802&r1=1424801&r2=1424802&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/test/cluster/TestHashMapStore.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/test/cluster/TestHashMapStore.java Fri Dec 21 04:11:19 2012
@@ -97,20 +97,47 @@ public class TestHashMapStore extends Ab
 
 		Server s1 = serverDao.get(1L);
 		if (s1 == null) {
-			serverDao.saveServer(1L, "name 1", "127.0.0.1", 5080, "swagner",
-					"qweqwe", "openmeetings", "http", true, "", 1L);
+			Server s = new Server();
+			s.setName("name 1");
+			s.setAddress("127.0.0.1");
+			s.setPort(5080);
+			s.setUser("swagner");
+			s.setPass("qweqwe");
+			s.setWebapp("openmeetings");
+			s.setProtocol("http");
+			s.setActive(true);
+			s.setComment("");
+			serverDao.update(s, 1L);
 			s1 = serverDao.get(1L);
 		}
 		Server s2 = serverDao.get(2L);
 		if (s2 == null) {
-			serverDao.saveServer(2L, "name 2", "127.0.0.1", 5080, "swagner",
-					"qweqwe", "openmeetings", "http", true, "", 1L);
+			Server s = new Server();
+			s.setName("name 2");
+			s.setAddress("127.0.0.1");
+			s.setPort(5080);
+			s.setUser("swagner");
+			s.setPass("qweqwe");
+			s.setWebapp("openmeetings");
+			s.setProtocol("http");
+			s.setActive(true);
+			s.setComment("");
+			serverDao.update(s, 1L);
 			s2 = serverDao.get(2L);
 		}
 		Server s3 = serverDao.get(3L);
 		if (s3 == null) {
-			serverDao.saveServer(3L, "name 3", "127.0.0.1", 5080, "swagner",
-					"qweqwe", "openmeetings", "http", true, "", 1L);
+			Server s = new Server();
+			s.setName("name 3");
+			s.setAddress("127.0.0.1");
+			s.setPort(5080);
+			s.setUser("swagner");
+			s.setPass("qweqwe");
+			s.setWebapp("openmeetings");
+			s.setProtocol("http");
+			s.setActive(true);
+			s.setComment("");
+			serverDao.update(s, 1L);
 			s3 = serverDao.get(3L);
 		}
 

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/test/cluster/TestHashMapStoreSyncBug.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/test/cluster/TestHashMapStoreSyncBug.java?rev=1424802&r1=1424801&r2=1424802&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/test/cluster/TestHashMapStoreSyncBug.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/test/cluster/TestHashMapStoreSyncBug.java Fri Dec 21 04:11:19 2012
@@ -66,8 +66,17 @@ public class TestHashMapStoreSyncBug ext
 
 		Server s1 = serverDao.get(1L);
 		if (s1 == null) {
-			serverDao.saveServer(1L, "name 1", "127.0.0.1", 5080, "swagner",
-					"qweqwe", "openmeetings", "http", true, "", 1L);
+			Server s = new Server();
+			s.setName("name 1");
+			s.setAddress("127.0.0.1");
+			s.setPort(5080);
+			s.setUser("swagner");
+			s.setPass("qweqwe");
+			s.setWebapp("openmeetings");
+			s.setProtocol("http");
+			s.setActive(true);
+			s.setComment("");
+			serverDao.update(s, 1L);
 			s1 = serverDao.get(1L);
 		}