[OPENMEETINGS-1630] room counters are fixed
Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/7ea97eb3 Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/7ea97eb3 Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/7ea97eb3 Branch: refs/heads/3.2.x Commit: 7ea97eb3d493cc3f79dc5fc233fd0cc262125f81 Parents: 96e7578 Author: Maxim Solodovnik <[email protected]> Authored: Tue Apr 18 17:51:44 2017 +0000 Committer: Maxim Solodovnik <[email protected]> Committed: Tue Apr 18 17:51:44 2017 +0000 ---------------------------------------------------------------------- .../db/dto/basic/ServiceResult.java | 5 +- .../openmeetings/db/dto/room/RoomCountBean.java | 53 ---------------- .../openmeetings/db/dto/room/RoomCountDTO.java | 66 ++++++++++++++++++++ .../openmeetings/webservice/FileWebService.java | 3 +- .../webservice/GroupWebService.java | 11 ++-- .../openmeetings/webservice/RoomWebService.java | 17 ++--- .../openmeetings/webservice/UserWebService.java | 34 +++++----- .../webservice/cluster/UserService.java | 34 +++++----- 8 files changed, 121 insertions(+), 102 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7ea97eb3/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ServiceResult.java ---------------------------------------------------------------------- diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ServiceResult.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ServiceResult.java index 9212ca8..4393b05 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ServiceResult.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ServiceResult.java @@ -29,6 +29,7 @@ import javax.xml.bind.annotation.XmlType; @XmlAccessorType(XmlAccessType.FIELD) public class ServiceResult implements Serializable { private static final long serialVersionUID = 1L; + public static ServiceResult NO_PERMISSION = new ServiceResult(-26L, "Insufficient permissions", Type.ERROR); private long code; private String message; private String type; @@ -39,7 +40,7 @@ public class ServiceResult implements Serializable { } public ServiceResult() {} - + public ServiceResult(long code, String message, String type) { super(); this.code = code; @@ -53,7 +54,7 @@ public class ServiceResult implements Serializable { this.message = message; this.type = type.name(); } - + public long getCode() { return code; } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7ea97eb3/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomCountBean.java ---------------------------------------------------------------------- diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomCountBean.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomCountBean.java deleted file mode 100644 index b612e70..0000000 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomCountBean.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * 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.db.dto.room; - -public class RoomCountBean { - private Long roomId; - private String roomName; - private int roomCount; - private long maxUser; - - public RoomCountBean() {} - - public Long getRoomId() { - return roomId; - } - public void setRoomId(Long roomId) { - this.roomId = roomId; - } - public String getRoomName() { - return roomName; - } - public void setRoomName(String roomName) { - this.roomName = roomName; - } - public int getRoomCount() { - return roomCount; - } - public void setRoomCount(int roomCount) { - this.roomCount = roomCount; - } - public long getMaxUser() { - return maxUser; - } - public void setMaxUser(long maxUser) { - this.maxUser = maxUser; - } -} http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7ea97eb3/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomCountDTO.java ---------------------------------------------------------------------- diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomCountDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomCountDTO.java new file mode 100644 index 0000000..3a6c168 --- /dev/null +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomCountDTO.java @@ -0,0 +1,66 @@ +/* + * 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.db.dto.room; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +@XmlAccessorType(XmlAccessType.FIELD) +public class RoomCountDTO { + private Long roomId; + private String roomName; + private int roomCount; + private long maxUser; + + public RoomCountDTO() {} + + public Long getRoomId() { + return roomId; + } + + public void setRoomId(Long roomId) { + this.roomId = roomId; + } + + public String getRoomName() { + return roomName; + } + + public void setRoomName(String roomName) { + this.roomName = roomName; + } + + public int getRoomCount() { + return roomCount; + } + + public void setRoomCount(int roomCount) { + this.roomCount = roomCount; + } + + public long getMaxUser() { + return maxUser; + } + + public void setMaxUser(long maxUser) { + this.maxUser = maxUser; + } +} http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7ea97eb3/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java ---------------------------------------------------------------------- diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java index ea70478..d4e8326 100644 --- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java +++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java @@ -18,6 +18,7 @@ */ package org.apache.openmeetings.webservice; +import static org.apache.openmeetings.db.dto.basic.ServiceResult.NO_PERMISSION; import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey; import static org.apache.openmeetings.webservice.Constants.TNS; @@ -111,7 +112,7 @@ public class FileWebService { fileDao.delete(f); return new ServiceResult(id, "Deleted", Type.SUCCESS); } else { - return new ServiceResult(-26L, "Insufficient permissions", Type.ERROR); + return NO_PERMISSION; } } catch (Exception e) { log.error("[delete] ", e); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7ea97eb3/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java ---------------------------------------------------------------------- diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java index a18f223..87a6ab6 100644 --- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java +++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java @@ -18,6 +18,7 @@ */ package org.apache.openmeetings.webservice; +import static org.apache.openmeetings.db.dto.basic.ServiceResult.NO_PERMISSION; import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey; import static org.apache.openmeetings.webservice.Constants.TNS; @@ -106,7 +107,7 @@ public class GroupWebService { return new ServiceResult(groupDao.update(o, userId).getId(), "Success", Type.SUCCESS); } else { log.error("Could not create group"); - return new ServiceResult(-26L, "Insufficient permissions", Type.ERROR); + return NO_PERMISSION; } } @@ -161,7 +162,7 @@ public class GroupWebService { } return new ServiceResult(userid, "Success", Type.SUCCESS); } else { - return new ServiceResult(-26L, "Insufficient permissions", Type.ERROR); + return NO_PERMISSION; } } catch (Exception err) { log.error("addUser", err); @@ -205,7 +206,7 @@ public class GroupWebService { } return new ServiceResult(userid, "Success", Type.SUCCESS); } else { - return new ServiceResult(-26L, "Insufficient permissions", Type.ERROR); + return NO_PERMISSION; } } catch (Exception err) { log.error("addUser", err); @@ -253,7 +254,7 @@ public class GroupWebService { } return new ServiceResult(0L, "Not added", Type.SUCCESS); } else { - return new ServiceResult(-26L, "Insufficient permissions", Type.ERROR); + return NO_PERMISSION; } } catch (Exception err) { log.error("[addRoom]", err); @@ -333,7 +334,7 @@ public class GroupWebService { return new ServiceResult(id, "Deleted", Type.SUCCESS); } else { - return new ServiceResult(-26L, "Insufficient permissions", Type.ERROR); + return NO_PERMISSION; } } catch (Exception err) { log.error("deleteUserById", err); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7ea97eb3/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java ---------------------------------------------------------------------- diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java index 98676be..adcfce6 100644 --- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java +++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java @@ -39,18 +39,18 @@ import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import org.apache.cxf.feature.Features; +import org.apache.openmeetings.IApplication; import org.apache.openmeetings.core.util.WebSocketHelper; import org.apache.openmeetings.db.dao.room.IInvitationManager; import org.apache.openmeetings.db.dao.room.InvitationDao; import org.apache.openmeetings.db.dao.room.RoomDao; -import org.apache.openmeetings.db.dao.server.ISessionManager; import org.apache.openmeetings.db.dao.server.SessiondataDao; import org.apache.openmeetings.db.dao.user.IUserManager; import org.apache.openmeetings.db.dao.user.UserDao; import org.apache.openmeetings.db.dto.basic.ServiceResult; import org.apache.openmeetings.db.dto.basic.ServiceResult.Type; import org.apache.openmeetings.db.dto.room.InvitationDTO; -import org.apache.openmeetings.db.dto.room.RoomCountBean; +import org.apache.openmeetings.db.dto.room.RoomCountDTO; import org.apache.openmeetings.db.dto.room.RoomDTO; import org.apache.openmeetings.db.entity.room.Invitation; import org.apache.openmeetings.db.entity.room.Invitation.MessageType; @@ -58,8 +58,10 @@ import org.apache.openmeetings.db.entity.room.Room; import org.apache.openmeetings.db.entity.server.Sessiondata; import org.apache.openmeetings.db.entity.user.User; import org.apache.openmeetings.db.util.AuthLevelUtil; +import org.apache.openmeetings.util.OpenmeetingsVariables; import org.apache.openmeetings.util.message.RoomMessage; import org.apache.openmeetings.webservice.error.ServiceException; +import org.apache.wicket.Application; import org.red5.logging.Red5LoggerFactory; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; @@ -88,8 +90,6 @@ public class RoomWebService { @Autowired private IInvitationManager invitationManager; @Autowired - private ISessionManager sessionManager; - @Autowired private RoomDao roomDao; /** @@ -420,19 +420,20 @@ public class RoomWebService { @WebMethod @GET @Path("/counters") - public List<RoomCountBean> counters(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="id") @QueryParam("id") List<Long> ids) throws ServiceException { - List<RoomCountBean> roomBeans = new ArrayList<>(); + public List<RoomCountDTO> counters(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="id") @QueryParam("id") List<Long> ids) throws ServiceException { + List<RoomCountDTO> roomBeans = new ArrayList<>(); try { Sessiondata sd = sessionDao.check(sid); if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) { + IApplication app = (IApplication)Application.get(OpenmeetingsVariables.wicketApplicationName); List<Room> rooms = roomDao.get(ids); for (Room room : rooms) { - RoomCountBean rCountBean = new RoomCountBean(); + RoomCountDTO rCountBean = new RoomCountDTO(); rCountBean.setRoomId(room.getId()); rCountBean.setRoomName(room.getName()); rCountBean.setMaxUser(room.getNumberOfPartizipants()); - rCountBean.setRoomCount(sessionManager.getClientListByRoom(room.getId()).size()); + rCountBean.setRoomCount(app.getOmRoomClients(room.getId()).size()); roomBeans.add(rCountBean); } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7ea97eb3/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java ---------------------------------------------------------------------- diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java index 30834e7..0ff9f7f 100644 --- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java +++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java @@ -18,6 +18,7 @@ */ package org.apache.openmeetings.webservice; +import static org.apache.openmeetings.db.dto.basic.ServiceResult.NO_PERMISSION; import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey; import static org.apache.openmeetings.webservice.Constants.TNS; import static org.apache.openmeetings.webservice.Constants.USER_SERVICE_NAME; @@ -41,7 +42,7 @@ import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import org.apache.cxf.feature.Features; -import org.apache.openmeetings.core.session.SessionManager; +import org.apache.openmeetings.IApplication; import org.apache.openmeetings.db.dao.basic.ConfigurationDao; import org.apache.openmeetings.db.dao.server.SOAPLoginDao; import org.apache.openmeetings.db.dao.server.SessiondataDao; @@ -59,20 +60,22 @@ import org.apache.openmeetings.db.entity.user.User; import org.apache.openmeetings.db.entity.user.User.Right; import org.apache.openmeetings.db.util.AuthLevelUtil; import org.apache.openmeetings.util.OmException; +import org.apache.openmeetings.util.OpenmeetingsVariables; import org.apache.openmeetings.webservice.cluster.UserService; import org.apache.openmeetings.webservice.error.ServiceException; +import org.apache.wicket.Application; import org.apache.wicket.util.string.Strings; import org.red5.logging.Red5LoggerFactory; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; /** - * + * * The Service contains methods to login and create hash to directly enter * conference rooms, recordings or the application in general - * + * * @author sebawagner - * + * */ @WebService(serviceName = USER_SERVICE_NAME, targetNamespace = TNS, portName = USER_SERVICE_PORT_NAME) @Features(features = "org.apache.cxf.feature.LoggingFeature") @@ -90,8 +93,6 @@ public class UserWebService implements UserService { private UserDao userDao; @Autowired private SessiondataDao sessionDao; - @Autowired - private SessionManager sessionManager; /* (non-Javadoc) * @see org.apache.openmeetings.webservice.cluster.UserService#login(java.lang.String, java.lang.String) @@ -107,7 +108,7 @@ public class UserWebService implements UserService { if (u == null) { return new ServiceResult(-1L, "Login failed", Type.ERROR); } - + Sessiondata sd = sessionDao.create(u.getId(), u.getLanguageId()); log.debug("Login user SID : " + sd.getSessionId()); return new ServiceResult(u.getId(), sd.getSessionId(), Type.SUCCESS); @@ -207,7 +208,7 @@ public class UserWebService implements UserService { } //FIXME no update - + /* (non-Javadoc) * @see org.apache.openmeetings.webservice.cluster.UserService#delete(java.lang.String, long) */ @@ -223,7 +224,7 @@ public class UserWebService implements UserService { return new ServiceResult(id, "Deleted", Type.SUCCESS); } else { - return new ServiceResult(-26L, "Insufficient permissions", Type.ERROR); + return NO_PERMISSION; } } catch (Exception err) { log.error("deleteUserById", err); @@ -253,7 +254,7 @@ public class UserWebService implements UserService { return new ServiceResult(user.getId(), "Deleted", Type.SUCCESS); } else { - return new ServiceResult(-26L, "Insufficient permissions", Type.ERROR); + return NO_PERMISSION; } } catch (Exception err) { log.error("deleteUserByExternalUserIdAndType", err); @@ -305,7 +306,7 @@ public class UserWebService implements UserService { return new ServiceResult(0, hash, Type.SUCCESS); } } else { - return new ServiceResult(-26L, "Insufficient permissions", Type.ERROR); + return NO_PERMISSION; } } catch (Exception err) { log.error("getRoomHash", err); @@ -326,10 +327,10 @@ public class UserWebService implements UserService { Sessiondata sd = sessionDao.check(sid); if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) { Boolean success = userManagement.kickUserByPublicSID(sid, publicSID); - + return new ServiceResult(Boolean.TRUE.equals(success) ? 1L : 0L, Boolean.TRUE.equals(success) ? "deleted" : "not deleted", Type.SUCCESS); } else { - return new ServiceResult(-26L, "Insufficient permissions", Type.ERROR); + return NO_PERMISSION; } } catch (Exception err) { log.error("[kick]", err); @@ -344,11 +345,12 @@ public class UserWebService implements UserService { @WebMethod @GET @Path("/count/{roomid}") - public int count(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="roomid") @PathParam("roomid") Long roomId) { + public ServiceResult count(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="roomid") @PathParam("roomid") Long roomId) { Sessiondata sd = sessionDao.check(sid); if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) { - return sessionManager.getClientListByRoom(roomId).size(); + IApplication app = (IApplication)Application.get(OpenmeetingsVariables.wicketApplicationName); + return new ServiceResult(app.getOmRoomClients(roomId).size(), "count", Type.SUCCESS); } - return -1; + return NO_PERMISSION; } } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7ea97eb3/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/cluster/UserService.java ---------------------------------------------------------------------- diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/cluster/UserService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/cluster/UserService.java index daf9328..6ccba83 100644 --- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/cluster/UserService.java +++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/cluster/UserService.java @@ -45,33 +45,33 @@ public interface UserService { /** * @param user - login or email of Openmeetings user with admin or SOAP-rights * @param pass - password - * + * * @return - {@link ServiceResult} with error code or SID and userId */ ServiceResult login(@WebParam(name="user") @QueryParam("user") String user, @WebParam(name="pass") @QueryParam("pass") String pass); /** * Lists all users in the system! - * + * * @param sid * The SID from getSession - * + * * @return - list of users * @throws ServiceException */ List<UserDTO> get(@WebParam(name="sid") @QueryParam("sid") String sid) throws ServiceException; - + /** * Adds a new User like through the Frontend, but also does activates the * Account To do SSO see the methods to create a hash and use those ones! - * + * * @param sid * The SID from getSession * @param user * user object * @param confirm * whatever or not to send email, leave empty for auto-send - * + * * @return - id of the user added or error code * @throws ServiceException */ @@ -82,30 +82,30 @@ public interface UserService { ) throws ServiceException; /** - * + * * Delete a certain user by its id - * + * * @param sid * The SID from getSession * @param id * the openmeetings user id - * + * * @return - id of the user deleted, error code otherwise * @throws ServiceException */ ServiceResult delete(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="id") @PathParam("id") long id) throws ServiceException; /** - * + * * Delete a certain user by its external user id - * + * * @param sid * The SID from getSession * @param externalId * externalUserId * @param externalType * externalUserId - * + * * @return - id of user deleted, or error code * @throws ServiceException */ @@ -119,14 +119,14 @@ public interface UserService { * Description: sets the SessionObject for a certain SID, after setting this * Session-Object you can use the SID + a RoomId to enter any Room. ... * Session-Hashs are deleted 15 minutes after the creation if not used. - * + * * @param sid * The SID from getSession * @param user * user details to set * @param options * room options to set - * + * * @return - secure hash or error code * @throws ServiceException */ @@ -138,7 +138,7 @@ public interface UserService { /** * Kick a user by its public SID - * + * * @param sid * The SID from getSession * @param publicSID @@ -151,10 +151,10 @@ public interface UserService { /** * Returns the count of users currently in the Room with given id * No admin rights are necessary for this call - * + * * @param sid The SID from UserService.getSession * @param roomId id of the room to get users * @return number of users as int */ - int count(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="roomid") @PathParam("roomid") Long roomId); + ServiceResult count(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="roomid") @PathParam("roomid") Long roomId); }
