Author: solomax
Date: Wed Feb 27 03:25:38 2013
New Revision: 1450589

URL: http://svn.apache.org/r1450589
Log:
SIP: all methods in SipDao works as expected;
        debugging and Apache header are added;
        documentation is updated

Modified:
    openmeetings/trunk/singlewebapp/docs/red5sip-integration_2.1.html
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/RoomManager.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/SipDao.java
    openmeetings/trunk/singlewebapp/xdocs/red5sip-integration_2.1.xml

Modified: openmeetings/trunk/singlewebapp/docs/red5sip-integration_2.1.html
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/docs/red5sip-integration_2.1.html?rev=1450589&r1=1450588&r2=1450589&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/docs/red5sip-integration_2.1.html (original)
+++ openmeetings/trunk/singlewebapp/docs/red5sip-integration_2.1.html Wed Feb 
27 03:25:38 2013
@@ -863,8 +863,8 @@ limitations under the License.
                                                secret = 12345<br />
                                                deny=0.0.0.0/0.0.0.0<br />
                                                
permit=127.0.0.1/255.255.255.0<br />
-                                               read = all<br />
-                                               write = 
system,call,command,originate<br />
+                                               read = all,reporting<br />
+                                               write = 
all,system,call,command,originate<br />
                                        </i>
                                </blockquote>
                        </div>

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/RoomManager.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/RoomManager.java?rev=1450589&r1=1450588&r2=1450589&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/RoomManager.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/RoomManager.java
 Wed Feb 27 03:25:38 2013
@@ -579,7 +579,7 @@ public class RoomManager {
      */
     public Integer getSipConferenceMembersNumber(Long rooms_id) {
        Room r = roomDao.get(rooms_id);
-       return sipDao.countUsers(r.getConfno());
+       return r == null || r.getConfno() == null ? null : 
sipDao.countUsers(r.getConfno());
     }
 
        /**

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/SipDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/SipDao.java?rev=1450589&r1=1450588&r2=1450589&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/SipDao.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/SipDao.java
 Wed Feb 27 03:25:38 2013
@@ -1,16 +1,40 @@
+/*
+ * 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.data.conference.dao;
 
 import org.asteriskjava.manager.ManagerConnection;
 import org.asteriskjava.manager.ManagerConnectionFactory;
+import org.asteriskjava.manager.ResponseEvents;
 import org.asteriskjava.manager.action.ConfbridgeListAction;
 import org.asteriskjava.manager.action.DbDelAction;
 import org.asteriskjava.manager.action.DbDelTreeAction;
 import org.asteriskjava.manager.action.DbGetAction;
 import org.asteriskjava.manager.action.DbPutAction;
+import org.asteriskjava.manager.action.EventGeneratingAction;
 import org.asteriskjava.manager.action.ManagerAction;
+import org.asteriskjava.manager.response.ManagerError;
 import org.asteriskjava.manager.response.ManagerResponse;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
 
 public class SipDao {
+       private static final Logger log = 
Red5LoggerFactory.getLogger(SipDao.class);
        public static final String ASTERISK_OM_FAMILY = "openmeetings";
        public static final String ASTERISK_OM_KEY = "rooms";
        private String sipHostname;
@@ -19,68 +43,93 @@ public class SipDao {
        private String sipPassword;
        private ManagerConnectionFactory factory;
        private ManagerConnection connection;
-       
+
        @SuppressWarnings("unused")
        private SipDao() {
-               //prohibited default constructor
+               // prohibited default constructor
+       }
+
+       public SipDao(String sipHostname, int sipPort, String sipUsername, 
String sipPassword) {
+               this.sipHostname = sipHostname;
+               this.sipPort = sipPort;
+               this.sipUsername = sipUsername;
+               this.sipPassword = sipPassword;
+               factory = new ManagerConnectionFactory(this.sipHostname, 
this.sipPort, this.sipUsername, this.sipPassword);
+               connection = factory.createManagerConnection(); // TODO secure
+       }
+
+       private ManagerResponse exec(ManagerAction action) {
+               try {
+                       connection.login();
+                       ManagerResponse r = connection.sendAction(action);
+                       connection.logoff();
+                       return (r instanceof ManagerError) ? null : r;
+               } catch (Exception e) {
+                       if (log.isDebugEnabled()) {
+                               log.error("Error while executing ManagerAction: 
" + action, e);
+                       }
+               }
+               return null;
+       }
+
+       private ResponseEvents execEvent(EventGeneratingAction action) {
+               try {
+                       connection.login("on");
+                       ResponseEvents r = 
connection.sendEventGeneratingAction(action);
+                       connection.logoff();
+                       if (log.isDebugEnabled() && r != null) {
+                               log.debug(r.getResponse().toString());
+                       }
+                       return (r == null || r.getResponse() instanceof 
ManagerError) ? null : r;
+               } catch (Exception e) {
+                       if (log.isDebugEnabled()) {
+                               log.error("Error while executing 
EventGeneratingAction: " + action, e);
+                       }
+               }
+               return null;
+       }
+
+       private String getKey(String confno) {
+               return ASTERISK_OM_KEY + "/" + confno;
+       }
+
+       public String get(String confno) {
+               String pin = null;
+               DbGetAction da = new DbGetAction(ASTERISK_OM_FAMILY, 
getKey(confno));
+               ManagerResponse r = exec(da);
+               if (r != null) {
+                       pin = r.getResponse();
+               }
+               return pin;
        }
-       
-    public SipDao(String sipHostname, int sipPort, String sipUsername, String 
sipPassword) {
-       this.sipHostname = sipHostname;
-       this.sipPort = sipPort;
-       this.sipUsername = sipUsername;
-       this.sipPassword = sipPassword;
-       factory = new ManagerConnectionFactory(this.sipHostname, this.sipPort, 
this.sipUsername, this.sipPassword);
-       connection = factory.createManagerConnection(); //TODO secure
-    }
-
-    private ManagerResponse exec(ManagerAction action) {
-       try {
-               connection.login();
-               ManagerResponse r = connection.sendAction(action);
-               connection.logoff();
-               return r;
-       } catch (Exception e) {
-               //
-       }
-       return null;
-    }
-    
-    public String get(String confno) {
-       String pin = null;
-       DbGetAction da = new DbGetAction(ASTERISK_OM_FAMILY, ASTERISK_OM_KEY + 
"/" + confno);
-       ManagerResponse r = exec(da);
-       if (r != null) {
-               pin = r.getResponse();
-       }
-       return pin;
-    }
-    
-    public void update(String confno, String pin) {
-       delete(confno);
-               DbPutAction da = new DbPutAction(ASTERISK_OM_FAMILY, 
ASTERISK_OM_KEY + "/" + confno, pin);
+
+       public void update(String confno, String pin) {
+               delete(confno);
+               DbPutAction da = new DbPutAction(ASTERISK_OM_FAMILY, 
getKey(confno), pin);
+               exec(da);
+       }
+
+       public void delete() {
+               DbDelTreeAction da = new DbDelTreeAction(ASTERISK_OM_FAMILY, 
ASTERISK_OM_KEY);
                exec(da);
-    }
-    
-    public void delete() {
-       DbDelTreeAction da = new DbDelTreeAction(ASTERISK_OM_FAMILY, 
ASTERISK_OM_KEY);
+       }
+
+       public void delete(String confno) {
+               DbDelAction da = new DbDelAction(ASTERISK_OM_FAMILY, 
getKey(confno));
                exec(da);
-    }
-    
-    public void delete(String confno) {
-       DbDelAction da = new DbDelAction(ASTERISK_OM_FAMILY, ASTERISK_OM_KEY + 
"/" + confno);
-       exec(da);
-    }
-    
-    public Integer countUsers(String confno) {//TODO fixme
-       if (confno == null) {
-               return null;
-       }
-       ConfbridgeListAction da = new ConfbridgeListAction(confno);
-       ManagerResponse r = exec(da);
-       if (r != null) {
-               
-       }
-       return 0;//TBD
-    }
+       }
+
+       public Integer countUsers(String confno) {
+               if (confno == null) {
+                       return null;
+               }
+               ConfbridgeListAction da = new ConfbridgeListAction(confno);
+               ResponseEvents r = execEvent(da);
+               if (r != null) {
+                       log.debug("SipDao::countUsers size == " + 
r.getEvents().size());
+                       // "- 1" here means: ListComplete event 
+                       return r.getEvents().size() - 1; // TODO check if was 
successfull
+               }
+               return 0;
+       }
 }

Modified: openmeetings/trunk/singlewebapp/xdocs/red5sip-integration_2.1.xml
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/xdocs/red5sip-integration_2.1.xml?rev=1450589&r1=1450588&r2=1450589&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/xdocs/red5sip-integration_2.1.xml (original)
+++ openmeetings/trunk/singlewebapp/xdocs/red5sip-integration_2.1.xml Wed Feb 
27 03:25:38 2013
@@ -188,8 +188,8 @@
                                                secret = 12345<br />
                                                deny=0.0.0.0/0.0.0.0<br />
                                                
permit=127.0.0.1/255.255.255.0<br />
-                                               read = all<br />
-                                               write = 
system,call,command,originate<br />
+                                               read = all,reporting<br />
+                                               write = 
all,system,call,command,originate<br />
                                        </i>
                                </blockquote>
                        </div><br />


Reply via email to