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 2014/01/19 19:34:38 UTC

svn commit: r1559543 - in /openmeetings/trunk/singlewebapp: WebContent/src/base/ WebContent/src/base/hibernate/ src/axis/java/org/apache/openmeetings/axis/services/ src/db/java/org/apache/openmeetings/db/dao/server/ src/db/java/org/apache/openmeetings/...

Author: solomax
Date: Sun Jan 19 18:34:37 2014
New Revision: 1559543

URL: http://svn.apache.org/r1559543
Log:
[OPENMEETINGS-870] code clean up;
	Download recordings should work as expected;

Added:
    openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/AviRecordingResourceReference.java
    openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/FlvRecordingResourceReference.java
Modified:
    openmeetings/trunk/singlewebapp/WebContent/src/base/hibernate/hibRtmpConnection.lzx
    openmeetings/trunk/singlewebapp/WebContent/src/base/mainAttributes.lzx
    openmeetings/trunk/singlewebapp/WebContent/src/base/mainMethods.lzx
    openmeetings/trunk/singlewebapp/src/axis/java/org/apache/openmeetings/axis/services/RoomWebService.java
    openmeetings/trunk/singlewebapp/src/axis/java/org/apache/openmeetings/axis/services/UserWebService.java
    openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/server/SOAPLoginDao.java
    openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/server/SessiondataDao.java
    openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/user/AbstractUserDao.java
    openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/user/AdminUserDao.java
    openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/user/UserDao.java
    openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/entity/server/RemoteSessionObject.java
    openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/entity/user/User.java
    openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/data/user/UserManager.java
    openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/remote/MainService.java
    openmeetings/trunk/singlewebapp/src/util/java/org/apache/openmeetings/util/OmFileHelper.java
    openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/Application.java
    openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/WebSession.java
    openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/RecordingResourceReference.java

Modified: openmeetings/trunk/singlewebapp/WebContent/src/base/hibernate/hibRtmpConnection.lzx
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/WebContent/src/base/hibernate/hibRtmpConnection.lzx?rev=1559543&r1=1559542&r2=1559543&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/WebContent/src/base/hibernate/hibRtmpConnection.lzx (original)
+++ openmeetings/trunk/singlewebapp/WebContent/src/base/hibernate/hibRtmpConnection.lzx Sun Jan 19 18:34:37 2014
@@ -564,7 +564,9 @@
                     	canvas.initroomid = canvas.wicketroomid;
                         parent.getRoomById.doCall();
                     } else {
-                        canvas.thishib.loaderVar.close();
+                    	if (canvas.thishib.loaderVar != null) {
+	                        canvas.thishib.loaderVar.close();
+                        }
                         parent.getRoomById.doCall();
                     }
                 }

Modified: openmeetings/trunk/singlewebapp/WebContent/src/base/mainAttributes.lzx
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/WebContent/src/base/mainAttributes.lzx?rev=1559543&r1=1559542&r2=1559543&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/WebContent/src/base/mainAttributes.lzx (original)
+++ openmeetings/trunk/singlewebapp/WebContent/src/base/mainAttributes.lzx Sun Jan 19 18:34:37 2014
@@ -322,8 +322,8 @@ the LAST RoomClient Object that has been
 <attribute name="secureHash" value="" type="string" />
 
 <!-- Attributes for wicket login (since it hard not to break anything)-->
-<attribute name="wicketsid" type="string" />
-<attribute name="wicketroomid" value="0" type="number" />
+<attribute name="wicketsid" type="string" value="null"/>
+<attribute name="wicketroomid" type="number" value="0"/>
 
 <!--- skip loading of Language -->
 <attribute name="language_id" value="0" type="number" />

Modified: openmeetings/trunk/singlewebapp/WebContent/src/base/mainMethods.lzx
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/WebContent/src/base/mainMethods.lzx?rev=1559543&r1=1559542&r2=1559543&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/WebContent/src/base/mainMethods.lzx (original)
+++ openmeetings/trunk/singlewebapp/WebContent/src/base/mainMethods.lzx Sun Jan 19 18:34:37 2014
@@ -437,6 +437,7 @@
             hib.userScope = scopeRoomId;
         }
         
+       	canvas.setAttribute('wicketsid', null);
         var wicketsid = lz.Browser.getInitArg('wicketsid');
         var wicketroomid = lz.Browser.getInitArg('wicketroomid');
         if (wicketsid != undefined && wicketroomid != undefined && !isNaN(wicketroomid)) {

Modified: openmeetings/trunk/singlewebapp/src/axis/java/org/apache/openmeetings/axis/services/RoomWebService.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/axis/java/org/apache/openmeetings/axis/services/RoomWebService.java?rev=1559543&r1=1559542&r2=1559543&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/axis/java/org/apache/openmeetings/axis/services/RoomWebService.java (original)
+++ openmeetings/trunk/singlewebapp/src/axis/java/org/apache/openmeetings/axis/services/RoomWebService.java Sun Jan 19 18:34:37 2014
@@ -258,7 +258,7 @@ public class RoomWebService {
 
 			return null;
 		} catch (Exception err) {
-			log.error("[getFlvRecordingByExternalRoomType] ", err);
+			log.error("[getFlvRecordingByExternalRoomTypeAndCreator] ", err);
 			throw new AxisFault(err.getMessage());
 		}
 	}
@@ -288,7 +288,7 @@ public class RoomWebService {
 
 			return null;
 		} catch (Exception err) {
-			log.error("[getFlvRecordingByExternalRoomType] ", err);
+			log.error("[getFlvRecordingByExternalRoomTypeByList] ", err);
 			throw new AxisFault(err.getMessage());
 		}
 	}

Modified: openmeetings/trunk/singlewebapp/src/axis/java/org/apache/openmeetings/axis/services/UserWebService.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/axis/java/org/apache/openmeetings/axis/services/UserWebService.java?rev=1559543&r1=1559542&r2=1559543&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/axis/java/org/apache/openmeetings/axis/services/UserWebService.java (original)
+++ openmeetings/trunk/singlewebapp/src/axis/java/org/apache/openmeetings/axis/services/UserWebService.java Sun Jan 19 18:34:37 2014
@@ -43,9 +43,6 @@ import org.red5.logging.Red5LoggerFactor
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 
-import com.thoughtworks.xstream.XStream;
-import com.thoughtworks.xstream.io.xml.DomDriver;
-
 /**
  * 
  * The Service contains methods to login and create hash to directly enter
@@ -539,16 +536,9 @@ public class UserWebService {
 				RemoteSessionObject remoteSessionObject = new RemoteSessionObject(
 						username, firstname, lastname, profilePictureUrl, email);
 
-				log.debug("username " + username);
-				log.debug("firstname " + firstname);
-				log.debug("lastname " + lastname);
-				log.debug("profilePictureUrl " + profilePictureUrl);
-				log.debug("email " + email);
-
-				// XStream xStream = new XStream(new XppDriver());
-				XStream xStream = new XStream(new DomDriver("UTF-8"));
-				xStream.setMode(XStream.NO_REFERENCES);
-				String xmlString = xStream.toXML(remoteSessionObject);
+				log.debug(remoteSessionObject.toString());
+
+				String xmlString = remoteSessionObject.toXml();
 
 				log.debug("xmlString " + xmlString);
 
@@ -607,18 +597,9 @@ public class UserWebService {
 						username, firstname, lastname, profilePictureUrl,
 						email, externalUserId, externalUserType);
 
-				log.debug("username " + username);
-				log.debug("firstname " + firstname);
-				log.debug("lastname " + lastname);
-				log.debug("profilePictureUrl " + profilePictureUrl);
-				log.debug("email " + email);
-				log.debug("externalUserId " + externalUserId);
-				log.debug("externalUserType " + externalUserType);
-
-				// XStream xStream = new XStream(new XppDriver());
-				XStream xStream = new XStream(new DomDriver("UTF-8"));
-				xStream.setMode(XStream.NO_REFERENCES);
-				String xmlString = xStream.toXML(remoteSessionObject);
+				log.debug(remoteSessionObject.toString());
+
+				String xmlString = remoteSessionObject.toXml();
 
 				log.debug("xmlString " + xmlString);
 
@@ -680,18 +661,9 @@ public class UserWebService {
 						username, firstname, lastname, profilePictureUrl,
 						email, externalUserId, externalUserType);
 
-				log.debug("username " + username);
-				log.debug("firstname " + firstname);
-				log.debug("lastname " + lastname);
-				log.debug("profilePictureUrl " + profilePictureUrl);
-				log.debug("email " + email);
-				log.debug("externalUserId " + externalUserId);
-				log.debug("externalUserType " + externalUserType);
-
-				// XStream xStream = new XStream(new XppDriver());
-				XStream xStream = new XStream(new DomDriver("UTF-8"));
-				xStream.setMode(XStream.NO_REFERENCES);
-				String xmlString = xStream.toXML(remoteSessionObject);
+				log.debug(remoteSessionObject.toString());
+
+				String xmlString = remoteSessionObject.toXml();
 
 				log.debug("xmlString " + xmlString);
 
@@ -781,18 +753,9 @@ public class UserWebService {
 						username, firstname, lastname, profilePictureUrl,
 						email, externalUserId, externalUserType);
 
-				log.debug("username " + username);
-				log.debug("firstname " + firstname);
-				log.debug("lastname " + lastname);
-				log.debug("profilePictureUrl " + profilePictureUrl);
-				log.debug("email " + email);
-				log.debug("externalUserId " + externalUserId);
-				log.debug("externalUserType " + externalUserType);
-
-				// XStream xStream = new XStream(new XppDriver());
-				XStream xStream = new XStream(new DomDriver("UTF-8"));
-				xStream.setMode(XStream.NO_REFERENCES);
-				String xmlString = xStream.toXML(remoteSessionObject);
+				log.debug(remoteSessionObject.toString());
+
+				String xmlString = remoteSessionObject.toXml();
 
 				log.debug("xmlString " + xmlString);
 
@@ -883,19 +846,9 @@ public class UserWebService {
 						username, firstname, lastname, profilePictureUrl,
 						email, externalUserId, externalUserType);
 
-				log.debug("username " + username);
-				log.debug("firstname " + firstname);
-				log.debug("lastname " + lastname);
-				log.debug("profilePictureUrl " + profilePictureUrl);
-				log.debug("email " + email);
-				log.debug("externalUserId " + externalUserId);
-				log.debug("externalUserType " + externalUserType);
-				log.debug("allowRecording " + allowRecording);
-
-				// XStream xStream = new XStream(new XppDriver());
-				XStream xStream = new XStream(new DomDriver("UTF-8"));
-				xStream.setMode(XStream.NO_REFERENCES);
-				String xmlString = xStream.toXML(remoteSessionObject);
+				log.debug(remoteSessionObject.toString());
+
+				String xmlString = remoteSessionObject.toXml();
 
 				log.debug("xmlString " + xmlString);
 
@@ -980,18 +933,9 @@ public class UserWebService {
 						username, firstname, lastname, profilePictureUrl,
 						email, externalUserId, externalUserType);
 
-				log.debug("username " + username);
-				log.debug("firstname " + firstname);
-				log.debug("lastname " + lastname);
-				log.debug("profilePictureUrl " + profilePictureUrl);
-				log.debug("email " + email);
-				log.debug("externalUserId " + externalUserId);
-				log.debug("externalUserType " + externalUserType);
-
-				// XStream xStream = new XStream(new XppDriver());
-				XStream xStream = new XStream(new DomDriver("UTF-8"));
-				xStream.setMode(XStream.NO_REFERENCES);
-				String xmlString = xStream.toXML(remoteSessionObject);
+				log.debug(remoteSessionObject.toString());
+
+				String xmlString = remoteSessionObject.toXml();
 
 				log.debug("xmlString " + xmlString);
 
@@ -1080,19 +1024,10 @@ public class UserWebService {
 						username, firstname, lastname, profilePictureUrl,
 						email, externalUserId, externalUserType);
 
-				log.debug("username " + username);
-				log.debug("firstname " + firstname);
-				log.debug("lastname " + lastname);
-				log.debug("profilePictureUrl " + profilePictureUrl);
-				log.debug("email " + email);
-				log.debug("externalUserId " + externalUserId);
-				log.debug("externalUserType " + externalUserType);
+				log.debug(remoteSessionObject.toString());
 				log.debug("showNickNameDialogAsInt" + showNickNameDialogAsInt);
 
-				// XStream xStream = new XStream(new XppDriver());
-				XStream xStream = new XStream(new DomDriver("UTF-8"));
-				xStream.setMode(XStream.NO_REFERENCES);
-				String xmlString = xStream.toXML(remoteSessionObject);
+				String xmlString = remoteSessionObject.toXml();
 
 				log.debug("xmlString " + xmlString);
 
@@ -1165,18 +1100,9 @@ public class UserWebService {
 						username, firstname, "", "", "", externalUserId,
 						externalUserType);
 
-				log.debug("username " + username);
-				log.debug("firstname " + firstname);
-				log.debug("lastname " + lastname);
-				log.debug("profilePictureUrl " + "");
-				log.debug("email " + "");
-				log.debug("externalUserId " + externalUserId);
-				log.debug("externalUserType " + externalUserType);
-
-				// XStream xStream = new XStream(new XppDriver());
-				XStream xStream = new XStream(new DomDriver("UTF-8"));
-				xStream.setMode(XStream.NO_REFERENCES);
-				String xmlString = xStream.toXML(remoteSessionObject);
+				log.debug(remoteSessionObject.toString());
+
+				String xmlString = remoteSessionObject.toXml();
 
 				log.debug("xmlString " + xmlString);
 

Modified: openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/server/SOAPLoginDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/server/SOAPLoginDao.java?rev=1559543&r1=1559542&r2=1559543&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/server/SOAPLoginDao.java (original)
+++ openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/server/SOAPLoginDao.java Sun Jan 19 18:34:37 2014
@@ -18,6 +18,8 @@
  */
 package org.apache.openmeetings.db.dao.server;
 
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
 import java.util.Date;
 import java.util.List;
 
@@ -26,7 +28,6 @@ import javax.persistence.PersistenceCont
 import javax.persistence.TypedQuery;
 
 import org.apache.openmeetings.db.entity.server.SOAPLogin;
-import org.apache.openmeetings.util.OpenmeetingsVariables;
 import org.apache.openmeetings.util.crypt.ManageCryptStyle;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
@@ -34,9 +35,7 @@ import org.springframework.transaction.a
 
 @Transactional
 public class SOAPLoginDao {
-
-	private static final Logger log = Red5LoggerFactory.getLogger(
-			SOAPLoginDao.class, OpenmeetingsVariables.webAppRootKey);
+	private static final Logger log = Red5LoggerFactory.getLogger(SOAPLoginDao.class, webAppRootKey);
 
 	@PersistenceContext
 	private EntityManager em;
@@ -82,18 +81,15 @@ public class SOAPLoginDao {
 		return null;
 	}
 
-	public SOAPLogin getSOAPLoginByHash(String hash) {
+	public SOAPLogin get(String hash) {
 		try {
-			String hql = "select sl from SOAPLogin as sl "
-					+ "WHERE sl.hash LIKE :hash";
+			String hql = "select sl from SOAPLogin as sl WHERE sl.hash LIKE :hash";
 			TypedQuery<SOAPLogin> query = em.createQuery(hql, SOAPLogin.class);
 			query.setParameter("hash", hash);
 			List<SOAPLogin> sList = query.getResultList();
 
 			if (sList.size() > 1) {
-				throw new Exception(
-						"there are more then one SOAPLogin with identical hash! "
-								+ hash);
+				throw new Exception("there are more then one SOAPLogin with identical hash! " + hash);
 			}
 
 			if (sList.size() == 1) {
@@ -101,12 +97,12 @@ public class SOAPLoginDao {
 			}
 
 		} catch (Exception ex2) {
-			log.error("[getSOAPLoginByHash]: ", ex2);
+			log.error("[get]: ", ex2);
 		}
 		return null;
 	}
 
-	public void updateSOAPLogin(SOAPLogin soapLogin) {
+	public void update(SOAPLogin soapLogin) {
 		try {
 			if (soapLogin.getSoapLoginId() == 0) {
 				em.persist(soapLogin);
@@ -116,7 +112,7 @@ public class SOAPLoginDao {
 				}
 			}
 		} catch (Exception ex2) {
-			log.error("[updateSOAPLogin]: ", ex2);
+			log.error("[update]: ", ex2);
 		}
 	}
 

Modified: openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/server/SessiondataDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/server/SessiondataDao.java?rev=1559543&r1=1559542&r2=1559543&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/server/SessiondataDao.java (original)
+++ openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/server/SessiondataDao.java Sun Jan 19 18:34:37 2014
@@ -107,7 +107,7 @@ public class SessiondataDao {
 
 			return sd;
 		} catch (Exception ex2) {
-			log.error("[updateUser]: ", ex2);
+			log.error("[getSessionByHash]: ", ex2);
 		}
 		return null;
 	}

Modified: openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/user/AbstractUserDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/user/AbstractUserDao.java?rev=1559543&r1=1559542&r2=1559543&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/user/AbstractUserDao.java (original)
+++ openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/user/AbstractUserDao.java Sun Jan 19 18:34:37 2014
@@ -265,7 +265,7 @@ public class AbstractUserDao  {
 	 * @return
 	 */
 	public boolean checkUserLogin(String login, Long id) {
-		log.debug("checkUserLogin: email = {}, id = {}", login, id);
+		log.debug("checkUserLogin: login = {}, id = {}", login, id);
 		long count = em.createNamedQuery("checkUserLogin", Long.class)
 				.setParameter("login", login)
 				.setParameter("id", id == null ? 0 : id)
@@ -481,4 +481,11 @@ public class AbstractUserDao  {
 		}
 		return query.getSingleResult();
 	}
+
+	public User getExternalUser(String extId, String extType) {
+		return em.createNamedQuery("getExternalUser", User.class)
+				.setParameter("externalId", extId)
+				.setParameter("externalType", extType)
+				.getSingleResult();
+	}
 }

Modified: openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/user/AdminUserDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/user/AdminUserDao.java?rev=1559543&r1=1559542&r2=1559543&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/user/AdminUserDao.java (original)
+++ openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/user/AdminUserDao.java Sun Jan 19 18:34:37 2014
@@ -124,4 +124,8 @@ public class AdminUserDao implements IDa
 	public User getContact(String email, String firstName, String lastName, Long langId, String tzId, long ownerId) {
 		return dao.getContact(email, firstName, lastName, langId, tzId, dao.get(ownerId));
 	}
+	
+	public User getExternalUser(String extId, String extType) {
+		return dao.getExternalUser(extId, extType);
+	}
 }

Modified: openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/user/UserDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/user/UserDao.java?rev=1559543&r1=1559542&r2=1559543&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/user/UserDao.java (original)
+++ openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/user/UserDao.java Sun Jan 19 18:34:37 2014
@@ -83,4 +83,8 @@ public class UserDao {
 	public Long searchCountUserProfile(String text, String offers, String search) {
 		return dao.searchCountUserProfile(text, offers, search);
 	}
+	
+	public User getExternalUser(String extId, String extType) {
+		return dao.getExternalUser(extId, extType);
+	}
 }

Modified: openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/entity/server/RemoteSessionObject.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/entity/server/RemoteSessionObject.java?rev=1559543&r1=1559542&r2=1559543&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/entity/server/RemoteSessionObject.java (original)
+++ openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/entity/server/RemoteSessionObject.java Sun Jan 19 18:34:37 2014
@@ -18,6 +18,19 @@
  */
 package org.apache.openmeetings.db.entity.server;
 
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.StringReader;
+import java.io.StringWriter;
+
+import org.apache.openmeetings.backup.BackupExport;
+import org.red5.logging.Red5LoggerFactory;
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.Root;
+import org.simpleframework.xml.Serializer;
+import org.simpleframework.xml.core.Persister;
+import org.slf4j.Logger;
+
 /**
  * This Class is marshaled as an XML-Object and stored as a String in the DB to make
  * it more easy to extend it
@@ -25,15 +38,22 @@ package org.apache.openmeetings.db.entit
  * @author sebastianwagner
  *
  */
+@Root
 public class RemoteSessionObject {
-	
+	private static final Logger log = Red5LoggerFactory.getLogger(BackupExport.class, webAppRootKey);
+	@Element
 	private String username;
+	@Element
 	private String firstname;
+	@Element
 	private String lastname;
+	@Element
 	private String pictureUrl;
+	@Element
 	private String email;
-	
+	@Element
 	private String externalUserId;
+	@Element
 	private String externalUserType;
 	
 	public RemoteSessionObject(String username, String firstname, String lastname,
@@ -113,5 +133,28 @@ public class RemoteSessionObject {
 	public void setExternalUserType(String externalUserType) {
 		this.externalUserType = externalUserType;
 	}
+
+	public String toXml() throws Exception {
+		StringWriter sw = new StringWriter();
+		Serializer serializer = new Persister();
+		serializer.write(this, sw);
+		return sw.toString();
+	}
+
+	public static RemoteSessionObject fromXml(String xml) {
+		Serializer serializer = new Persister();
+		try {
+			return serializer.read(RemoteSessionObject.class, new StringReader(xml));
+		} catch (Exception e) {
+			log.error("Unexpected error while restoring object from XML: " + xml, e);
+		}
+		return null;
+	}
 	
+	@Override
+	public String toString() {
+		return "RemoteSessionObject [username=" + username + ", firstname=" + firstname + ", lastname=" + lastname
+				+ ", pictureUrl=" + pictureUrl + ", email=" + email + ", externalUserId=" + externalUserId
+				+ ", externalUserType=" + externalUserType + "]";
+	}
 }

Modified: openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/entity/user/User.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/entity/user/User.java?rev=1559543&r1=1559542&r2=1559543&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/entity/user/User.java (original)
+++ openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/entity/user/User.java Sun Jan 19 18:34:37 2014
@@ -97,7 +97,8 @@ import org.simpleframework.xml.Root;
 	@NamedQuery(name = "updatePassword", query = "UPDATE User u SET u.password = :password WHERE u.user_id = :userId"), //
 	@NamedQuery(name = "getNondeletedUsers", query = "SELECT u FROM User u WHERE u.deleted = false"),
 	@NamedQuery(name = "countNondeletedUsers", query = "SELECT COUNT(u) FROM User u WHERE u.deleted = false"),
-	@NamedQuery(name = "getUsersByOrganisationId", query = "SELECT u FROM User u WHERE u.deleted = false AND u.organisation_users.organisation.organisation_id = :organisation_id") 
+	@NamedQuery(name = "getUsersByOrganisationId", query = "SELECT u FROM User u WHERE u.deleted = false AND u.organisation_users.organisation.organisation_id = :organisation_id"), 
+	@NamedQuery(name = "getExternalUser", query = "SELECT u FROM User u WHERE u.deleted = false AND u.externalUserId LIKE :externalId AND u.externalUserType LIKE :externalType") 
 })
 @Table(name = "om_user")
 @Root(name = "user")

Modified: openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/data/user/UserManager.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/data/user/UserManager.java?rev=1559543&r1=1559542&r2=1559543&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/data/user/UserManager.java (original)
+++ openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/data/user/UserManager.java Sun Jan 19 18:34:37 2014
@@ -919,8 +919,7 @@ public class UserManager implements IUse
 			if (address != null) {
 				users.setAdresses(address);
 			} else {
-				users.setAdresses("", "", "", statemanagement.getStateById(1L), "",
-						"", "", "", email);
+				users.setAdresses("", "", "", statemanagement.getStateById(1L), "", "", "", "", email);
 			}
 
 			users.setAvailible(availible);
@@ -959,7 +958,7 @@ public class UserManager implements IUse
 			return user_id;
 
 		} catch (Exception ex2) {
-			log.error("[registerUser]", ex2);
+			log.error("[addUserWithExternalKey]", ex2);
 		}
 		return null;
 	}

Modified: openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/remote/MainService.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/remote/MainService.java?rev=1559543&r1=1559542&r2=1559543&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/remote/MainService.java (original)
+++ openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/remote/MainService.java Sun Jan 19 18:34:37 2014
@@ -53,6 +53,7 @@ import org.apache.openmeetings.remote.re
 import org.apache.openmeetings.remote.util.SessionVariablesUtil;
 import org.apache.openmeetings.util.AuthLevelUtil;
 import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.apache.wicket.util.string.Strings;
 import org.red5.logging.Red5LoggerFactory;
 import org.red5.server.api.IConnection;
 import org.red5.server.api.Red5;
@@ -61,9 +62,6 @@ import org.red5.server.api.service.IPend
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 
-import com.thoughtworks.xstream.XStream;
-import com.thoughtworks.xstream.io.xml.DomDriver;
-
 import edu.emory.mathcs.backport.java.util.Arrays;
 
 /**
@@ -200,7 +198,7 @@ public class MainService implements IPen
 
 			log.debug("swfURL " + clientURL);
 
-			SOAPLogin soapLogin = soapLoginDao.getSOAPLoginByHash(secureHash);
+			SOAPLogin soapLogin = soapLoginDao.get(secureHash);
 
 			if (soapLogin.getUsed()) {
 
@@ -217,8 +215,7 @@ public class MainService implements IPen
 				}
 			}
 
-			Long loginReturn = this.loginUserByRemote(soapLogin
-					.getSessionHash());
+			Long loginReturn = loginUserByRemote(soapLogin.getSessionHash());
 
 			IConnection current = Red5.getConnectionLocal();
 			String streamId = current.getClient().getId();
@@ -246,7 +243,7 @@ public class MainService implements IPen
 
 				soapLogin.setClientURL(clientURL);
 
-				soapLoginDao.updateSOAPLogin(soapLogin);
+				soapLoginDao.update(soapLogin);
 
 				// Create Return Object and hide the validated
 				// sessionHash that is stored server side
@@ -323,44 +320,23 @@ public class MainService implements IPen
 		try {
 			Long users_id = sessiondataDao.checkSession(SID);
 			Long user_level = userManager.getUserLevelByID(users_id);
-			if (AuthLevelUtil.checkWebServiceLevel(
-					user_level)) {
-
+			if (AuthLevelUtil.checkWebServiceLevel(user_level)) {
 				Sessiondata sd = sessiondataDao.getSessionByHash(SID);
 				if (sd == null || sd.getSessionXml() == null) {
 					return new Long(-37);
 				} else {
+					RemoteSessionObject userObject = RemoteSessionObject.fromXml(sd.getSessionXml());
 
-					// XStream xStream = new XStream(new XppDriver());
-					XStream xStream = new XStream(new DomDriver("UTF-8"));
-					xStream.setMode(XStream.NO_REFERENCES);
-
-					String xmlString = sd.getSessionXml();
-					RemoteSessionObject userObject = (RemoteSessionObject) xStream
-							.fromXML(xmlString);
-
-					log.debug("userObject.getUsername(), userObject.getFirstname(), userObject.getLastname() "
-							+ userObject.getUsername()
-							+ ", "
-							+ userObject.getFirstname()
-							+ ", "
-							+ userObject.getLastname());
+					log.debug(userObject.toString());
 
 					IConnection current = Red5.getConnectionLocal();
 					String streamId = current.getClient().getId();
-					Client currentClient = this.sessionManager
-							.getClientByStreamId(streamId, null);
+					Client currentClient = sessionManager.getClientByStreamId(streamId, null);
 
 					// Check if this User is simulated in the OpenMeetings
 					// Database
 
-					log.debug("userObject.getExternalUserId() -1- "
-							+ userObject.getExternalUserId());
-
-					if (userObject.getExternalUserId() != null
-							&& userObject.getExternalUserId() != null && 
-							!"".equals(userObject.getExternalUserId())) {
-
+					if (!Strings.isEmpty(userObject.getExternalUserId())) {
 						// If so we need to check that we create this user in
 						// OpenMeetings and update its record
 
@@ -387,7 +363,6 @@ public class MainService implements IPen
 							currentClient.setUser_id(userId);
 							SessionVariablesUtil.setUserId(current.getClient(), userId);
 						} else {
-
 							user.setPictureuri(userObject.getPictureUrl());
 
 							userManager.updateUser(user);
@@ -397,25 +372,19 @@ public class MainService implements IPen
 						}
 					}
 
-					log.debug("userObject.getExternalUserId() -2- "
-							+ currentClient.getUser_id());
+					log.debug("userObject.getExternalUserId() -2- " + currentClient.getUser_id());
 
-					currentClient
-							.setUserObject(userObject.getUsername(),
-									userObject.getFirstname(),
-									userObject.getLastname());
+					currentClient.setUserObject(userObject.getUsername(), userObject.getFirstname(), userObject.getLastname());
 					currentClient.setPicture_uri(userObject.getPictureUrl());
 					currentClient.setMail(userObject.getEmail());
 
 					log.debug("UPDATE USER BY STREAMID " + streamId);
 
 					if (currentClient.getUser_id() != null) {
-						sessiondataDao.updateUser(SID,
-								currentClient.getUser_id());
+						sessiondataDao.updateUser(SID, currentClient.getUser_id());
 					}
 
-					this.sessionManager.updateClientByStreamId(streamId,
-							currentClient, false, null);
+					sessionManager.updateClientByStreamId(streamId, currentClient, false, null);
 
 					return new Long(1);
 				}

Modified: openmeetings/trunk/singlewebapp/src/util/java/org/apache/openmeetings/util/OmFileHelper.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/util/java/org/apache/openmeetings/util/OmFileHelper.java?rev=1559543&r1=1559542&r2=1559543&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/util/java/org/apache/openmeetings/util/OmFileHelper.java (original)
+++ openmeetings/trunk/singlewebapp/src/util/java/org/apache/openmeetings/util/OmFileHelper.java Sun Jan 19 18:34:37 2014
@@ -194,11 +194,11 @@ public class OmFileHelper {
 	}
 	
 	public static File getMp4Recording(String name) {
-		return new File(getDir(getStreamsDir(), HIBERNATE_DIR), name + MP4_EXTENSION);
+		return getRecording(name + MP4_EXTENSION);
 	}
 	
 	public static File getOggRecording(String name) {
-		return new File(getDir(getStreamsDir(), HIBERNATE_DIR), name + OGG_EXTENSION);
+		return getRecording(name + OGG_EXTENSION);
 	}
 	
 	public static File getStreamsSubDir(Long id) {

Modified: openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/Application.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/Application.java?rev=1559543&r1=1559542&r2=1559543&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/Application.java (original)
+++ openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/Application.java Sun Jan 19 18:34:37 2014
@@ -40,6 +40,8 @@ import org.apache.openmeetings.web.user.
 import org.apache.openmeetings.web.user.dashboard.RssWidgetDescriptor;
 import org.apache.openmeetings.web.user.dashboard.StartWidgetDescriptor;
 import org.apache.openmeetings.web.user.dashboard.WelcomeWidgetDescriptor;
+import org.apache.openmeetings.web.util.AviRecordingResourceReference;
+import org.apache.openmeetings.web.util.FlvRecordingResourceReference;
 import org.apache.openmeetings.web.util.Mp4RecordingResourceReference;
 import org.apache.openmeetings.web.util.OggRecordingResourceReference;
 import org.apache.openmeetings.web.util.UserDashboardPersister;
@@ -123,6 +125,8 @@ public class Application extends Authent
 		mountPage("signin", getSignInPageClass());
 		mountPage("activate", ActivatePage.class);
 		mountPage("reset", ResetPage.class);
+		mountResource("/recordings/avi/${id}", new AviRecordingResourceReference());
+		mountResource("/recordings/flv/${id}", new FlvRecordingResourceReference());
 		mountResource("/recordings/mp4/${id}", new Mp4RecordingResourceReference());
 		mountResource("/recordings/ogg/${id}", new OggRecordingResourceReference());
 	}

Modified: openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/WebSession.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/WebSession.java?rev=1559543&r1=1559542&r2=1559543&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/WebSession.java (original)
+++ openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/WebSession.java Sun Jan 19 18:34:37 2014
@@ -30,6 +30,7 @@ import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.Arrays;
 import java.util.Calendar;
+import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Locale;
@@ -39,12 +40,16 @@ import java.util.TimeZone;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.label.FieldLanguageDao;
 import org.apache.openmeetings.db.dao.label.FieldLanguagesValuesDao;
+import org.apache.openmeetings.db.dao.server.SOAPLoginDao;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.AdminUserDao;
 import org.apache.openmeetings.db.dao.user.ILdapLoginManagement;
 import org.apache.openmeetings.db.dao.user.IUserManager;
 import org.apache.openmeetings.db.dao.user.StateDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.label.FieldLanguage;
+import org.apache.openmeetings.db.entity.server.RemoteSessionObject;
+import org.apache.openmeetings.db.entity.server.SOAPLogin;
 import org.apache.openmeetings.db.entity.server.Sessiondata;
 import org.apache.openmeetings.db.entity.user.State;
 import org.apache.openmeetings.db.entity.user.User;
@@ -88,6 +93,7 @@ public class WebSession extends Abstract
 	private String baseUrl = null;
 	private Locale browserLocale = null;
 	private int browserTZOffset = Integer.MIN_VALUE;
+	private Long recordingId;
 	private static Set<Long> STRINGS_WITH_APP = new HashSet<Long>(); //FIXME need to be removed
 	static {
 		STRINGS_WITH_APP.addAll(Arrays.asList(499L, 500L, 506L, 511L, 512L, 513L, 517L, 532L, 622L, 804L
@@ -106,6 +112,7 @@ public class WebSession extends Abstract
 		userLevel = -1;
 		SID = null;
 		sdf = null;
+		recordingId = null;
 	}
 	
 	@Override
@@ -161,6 +168,62 @@ public class WebSession extends Abstract
 		return userId > -1;
 	}
 
+	public boolean signIn(String secureHash) {
+		//FIXME code is duplicated from MainService, need to be unified
+		SOAPLoginDao soapDao = getBean(SOAPLoginDao.class);
+		SOAPLogin soapLogin = soapDao.get(secureHash);
+		if (!soapLogin.getUsed()) { //add code for  || (soapLogin.getAllowSameURLMultipleTimes())
+			SessiondataDao sessionDao = getBean(SessiondataDao.class);
+			Sessiondata sd = sessionDao.getSessionByHash(soapLogin.getSessionHash());
+			if (sd != null && sd.getSessionXml() != null) {
+				RemoteSessionObject remoteUser = RemoteSessionObject.fromXml(sd.getSessionXml());
+				if (remoteUser != null && !Strings.isEmpty(remoteUser.getExternalUserId())) {
+					AdminUserDao userDao = getBean(AdminUserDao.class);
+					User user = userDao.getExternalUser(remoteUser.getExternalUserId(), remoteUser.getExternalUserType());
+					if (user == null) {
+						user = userDao.getNewUserInstance(null);
+						user.setFirstname(remoteUser.getFirstname());
+						user.setLastname(remoteUser.getLastname());
+						user.setLogin(remoteUser.getUsername()); //FIXME check if login UNIQUE
+						user.setExternalUserId(remoteUser.getExternalUserId());
+						user.setExternalUserType(remoteUser.getExternalUserType());
+						user.getAdresses().setEmail(remoteUser.getEmail());
+						user.setPictureuri(remoteUser.getPictureUrl());
+					} else {
+						user.setFirstname(remoteUser.getFirstname());
+						user.setLastname(remoteUser.getLastname());
+						user.setPictureuri(remoteUser.getPictureUrl());
+					}
+					user = userDao.update(user, null);
+
+					soapLogin.setUsed(true);
+					soapLogin.setUseDate(new Date());
+					//soapLogin.setClientURL(clientURL); //FIXME
+					soapDao.update(soapLogin);
+
+					sessionDao.updateUser(SID, user.getUser_id());
+					setUser(user);
+					recordingId = soapLogin.getRoomRecordingId();
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+	
+	private void setUser(User u) {
+		userId = u.getUser_id();
+		userLevel = u.getLevel_id();
+		languageId = u.getLanguage_id();
+		tz = getBean(TimezoneUtil.class).getTimeZone(u);
+		ISO8601FORMAT.setTimeZone(tz);
+		//FIXMW locale need to be set by User language first
+		sdf = DateFormat.getDateTimeInstance(SHORT, SHORT, getLocale());
+		if (null == getId()) {
+			bind();
+		}
+	}
+	
 	public boolean signIn(String login, String password, String ldapConfigFileName) {
 		Sessiondata sessData = getBean(SessiondataDao.class).startsession();
 		SID = sessData.getSession_id();
@@ -169,17 +232,7 @@ public class WebSession extends Abstract
 				: getBean(ILdapLoginManagement.class).doLdapLogin(login, password, null, null, SID, ldapConfigFileName);
 		
 		if (u instanceof User) {
-			User user = (User)u;
-			userId = user.getUser_id();
-			userLevel = user.getLevel_id();
-			languageId = user.getLanguage_id();
-			tz = getBean(TimezoneUtil.class).getTimeZone(user);
-			ISO8601FORMAT.setTimeZone(tz);
-			//FIXMW locale need to be set by User language first
-			sdf = DateFormat.getDateTimeInstance(SHORT, SHORT, getLocale());
-			if (null == getId()) {
-				bind();
-			}
+			setUser((User)u);
 			return true;
 		}
 		return false;
@@ -223,6 +276,10 @@ public class WebSession extends Abstract
 		return get().userId;
 	}
 	
+	public static Long getRecordingId() {
+		return get().recordingId;
+	}
+	
 	public static TimeZone getUserTimeZone() {
 		return get().tz;
 	}

Added: openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/AviRecordingResourceReference.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/AviRecordingResourceReference.java?rev=1559543&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/AviRecordingResourceReference.java (added)
+++ openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/AviRecordingResourceReference.java Sun Jan 19 18:34:37 2014
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.util;
+
+import static org.apache.openmeetings.util.OmFileHelper.getRecording;
+
+import java.io.File;
+
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+
+public class AviRecordingResourceReference extends RecordingResourceReference {
+	private static final long serialVersionUID = 6181482949621024822L;
+
+	public AviRecordingResourceReference() {
+		super(AviRecordingResourceReference.class);
+	}
+	
+	@Override
+	public String getContentType() {
+		return "video/avi";
+	}
+	
+	@Override
+	String getFileName(FlvRecording r) {
+		return r.getAlternateDownload();
+	}
+	
+	@Override
+	File getFile(FlvRecording r) {
+		return getRecording(r.getAlternateDownload());
+	}
+}

Added: openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/FlvRecordingResourceReference.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/FlvRecordingResourceReference.java?rev=1559543&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/FlvRecordingResourceReference.java (added)
+++ openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/FlvRecordingResourceReference.java Sun Jan 19 18:34:37 2014
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.util;
+
+import static org.apache.openmeetings.util.OmFileHelper.getRecording;
+
+import java.io.File;
+
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+
+public class FlvRecordingResourceReference extends RecordingResourceReference {
+	private static final long serialVersionUID = 6181482949621024822L;
+
+	public FlvRecordingResourceReference() {
+		super(FlvRecordingResourceReference.class);
+	}
+	
+	@Override
+	public String getContentType() {
+		return "video/flv";
+	}
+	
+	@Override
+	String getFileName(FlvRecording r) {
+		return r.getFileHash();
+	}
+	
+	@Override
+	File getFile(FlvRecording r) {
+		return getRecording(r.getFileHash());
+	}
+}

Modified: openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/RecordingResourceReference.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/RecordingResourceReference.java?rev=1559543&r1=1559542&r2=1559543&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/RecordingResourceReference.java (original)
+++ openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/RecordingResourceReference.java Sun Jan 19 18:34:37 2014
@@ -20,6 +20,7 @@ package org.apache.openmeetings.web.util
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getRecordingId;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.red5.logging.Red5LoggerFactory.getLogger;
 
@@ -165,21 +166,43 @@ public abstract class RecordingResourceR
 	abstract String getFileName(FlvRecording r);
 	abstract File getFile(FlvRecording r);
 	
-	private FlvRecording getRecording(Attributes attributes) {
-		PageParameters params = attributes.getParameters();
-		StringValue id = params.get("id");
-		if (WebSession.get().isSignedIn() && !id.isEmpty()) {
-			FlvRecording r = getBean(FlvRecordingDao.class).get(id.toLongObject());
-			if (r.getOwnerId() == null || getUserId() == r.getOwnerId()) {
+	private Long getLong(StringValue id) {
+		Long result = null;
+		try {
+			result = id.toLongObject();
+		} catch(Exception e) {
+			//no-op
+		}
+		return result;
+	}
+	
+	private FlvRecording getRecording(Long id) {
+		FlvRecording r = getBean(FlvRecordingDao.class).get(id);
+		if (r.getOwnerId() == null || getUserId() == r.getOwnerId()) {
+			return r;
+		}
+		//FIXME UGLY need to be optimized
+		for (Organisation_Users ou : getBean(UserDao.class).get(getUserId()).getOrganisation_users()) {
+			if (ou.getOrganisation().getOrganisation_id().equals(r.getOrganization_id())) {
 				return r;
 			}
-			//FIXME UGLY need to be optimized
-			for (Organisation_Users ou : getBean(UserDao.class).get(getUserId()).getOrganisation_users()) {
-				if (ou.getOrganisation().getOrganisation_id().equals(r.getOrganization_id())) {
-					return r;
-				}
+		}
+		//TODO investigate if these checks are enough
+		return null;
+	}
+	
+	private FlvRecording getRecording(Attributes attributes) {
+		PageParameters params = attributes.getParameters();
+		StringValue idStr = params.get("id");
+		Long id = getLong(idStr);
+		WebSession ws = WebSession.get();
+		if (id != null && ws.isSignedIn()) {
+			return getRecording(id);
+		} else {
+			ws.invalidate();
+			if (ws.signIn(idStr.toString())) {
+				return getRecording(getRecordingId());
 			}
-			//TODO investigate if these checks are enough
 		}
 		return null;
 	}