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;
        }


Reply via email to