You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2017/07/08 14:55:30 UTC

[1/3] openmeetings git commit: [OPENMEETINGS-1665] dublicated beans are removed

Repository: openmeetings
Updated Branches:
  refs/heads/master 76b5fd5ea -> a70bde5b1


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/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 e9b707d..b77abf1 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
@@ -41,12 +41,8 @@ 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.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;
@@ -58,13 +54,14 @@ 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.service.room.InvitationManager;
+import org.apache.openmeetings.service.user.UserManager;
 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;
 
 /**
  * RoomService contains methods to manipulate rooms and create invitation hash
@@ -76,22 +73,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 @Features(features = "org.apache.cxf.feature.LoggingFeature")
 @Produces({MediaType.APPLICATION_JSON})
 @Path("/room")
-public class RoomWebService {
+public class RoomWebService extends BaseWebService {
 	private static final Logger log = Red5LoggerFactory.getLogger(RoomWebService.class, webAppRootKey);
 
-	@Autowired
-	private SessiondataDao sessionDao;
-	@Autowired
-	private IUserManager userManager;
-	@Autowired
-	private UserDao userDao;
-	@Autowired
-	private InvitationDao invitationDao;
-	@Autowired
-	private IInvitationManager invitationManager;
-	@Autowired
-	private RoomDao roomDao;
-
 	/**
 	 * Returns an Object of Type RoomsList which contains a list of
 	 * Room-Objects. Every Room-Object contains a Roomtype and all informations
@@ -110,9 +94,8 @@ public class RoomWebService {
 	@Path("/public/{type}")
 	public List<RoomDTO> getPublic(@QueryParam("sid") @WebParam(name="sid") String sid, @PathParam("type") @WebParam(name="type") String type) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) {
-				return RoomDTO.list(roomDao.getPublicRooms(Room.Type.valueOf(type)));
+			if (AuthLevelUtil.hasUserLevel(getRights(sid))) {
+				return RoomDTO.list(getRoomDao().getPublicRooms(Room.Type.valueOf(type)));
 			} else {
 				throw new ServiceException("Insufficient permissions"); //TODO code -26
 			}
@@ -135,10 +118,9 @@ public class RoomWebService {
 	@GET
 	@Path("/{id}")
 	public RoomDTO getRoomById(@QueryParam("sid") @WebParam(name="sid") String sid, @PathParam("id") @WebParam(name="id") Long id) throws ServiceException {
-		Sessiondata sd = sessionDao.check(sid);
-		Set<User.Right> rights = userDao.getRights(sd.getUserId());
+		Set<User.Right> rights = getRights(sid);
 		if (AuthLevelUtil.hasWebServiceLevel(rights) || AuthLevelUtil.hasUserLevel(rights)) {
-			return new RoomDTO(roomDao.get(id));
+			return new RoomDTO(getRoomDao().get(id));
 		} else {
 			throw new ServiceException("Insufficient permissions"); //TODO code -26
 		}
@@ -173,9 +155,10 @@ public class RoomWebService {
 			, @PathParam("externalid") @WebParam(name="externalid") Long externalId
 			, @WebParam(name="room") @QueryParam("room") RoomDTO room) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
+			Sessiondata sd = check(sid);
 			Long userId = sd.getUserId();
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(userId))) {
+				RoomDao roomDao = getRoomDao();
 				Room r = roomDao.getExternal(Room.Type.valueOf(type), externalType, externalId);
 				if (r == null) {
 					r = room.get();
@@ -211,11 +194,11 @@ public class RoomWebService {
 	@Path("/")
 	public RoomDTO add(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="room") @FormParam("room") RoomDTO room) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
+			Sessiondata sd = check(sid);
 			Long userId = sd.getUserId();
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(userId))) {
 				Room r = room.get();
-				r = roomDao.update(r, userId);
+				r = getRoomDao().update(r, userId);
 				return new RoomDTO(r);
 			} else {
 				throw new ServiceException("Insufficient permissions"); //TODO code -26
@@ -276,9 +259,10 @@ public class RoomWebService {
 	@DELETE
 	@Path("/{id}")
 	public ServiceResult delete(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="id") @PathParam("id") long id) throws ServiceException {
-		Sessiondata sd = sessionDao.check(sid);
+		Sessiondata sd = check(sid);
 		Long userId = sd.getUserId();
-		if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
+		if (AuthLevelUtil.hasWebServiceLevel(getRights(userId))) {
+			RoomDao roomDao = getRoomDao();
 			Room r = roomDao.get(id);
 			if (r != null) {
 				roomDao.delete(r, userId);
@@ -311,11 +295,12 @@ public class RoomWebService {
 	@Path("/close/{id}")
 	public ServiceResult close(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="id") @PathParam("id") long id) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
+			Sessiondata sd = check(sid);
 			Long userId = sd.getUserId();
 			log.debug("close " + id);
 
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(userId))) {
+				RoomDao roomDao = getRoomDao();
 				Room room = roomDao.get(id);
 				room.setClosed(true);
 
@@ -356,11 +341,12 @@ public class RoomWebService {
 	@Path("/open/{id}")
 	public ServiceResult open(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="id") @PathParam("id") long id) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
+			Sessiondata sd = check(sid);
 			Long userId = sd.getUserId();
 			log.debug("open " + id);
 
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(userId))) {
+				RoomDao roomDao = getRoomDao();
 				Room room = roomDao.get(id);
 				room.setClosed(false);
 				roomDao.update(room, userId);
@@ -394,9 +380,8 @@ public class RoomWebService {
 	@Path("/kick/{id}")
 	public ServiceResult kick(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="id") @PathParam("id") long id) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
-				boolean result = userManager.kickUsersByRoomId(id);
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(sid))) {
+				boolean result = getBean(UserManager.class).kickUsersByRoomId(id);
 				return new ServiceResult(result ? 1L : 0L, "Kicked", Type.SUCCESS);
 			} else {
 				throw new ServiceException("Insufficient permissions"); //TODO code -26
@@ -423,10 +408,9 @@ public class RoomWebService {
 	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()))) {
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(sid))) {
 				IApplication app = (IApplication)Application.get(OpenmeetingsVariables.wicketApplicationName);
-				List<Room> rooms = roomDao.get(ids);
+				List<Room> rooms = getRoomDao().get(ids);
 
 				for (Room room : rooms) {
 					RoomCountDTO rCountBean = new RoomCountDTO();
@@ -467,15 +451,15 @@ public class RoomWebService {
 			) throws ServiceException
 	{
 		try {
-			Sessiondata sd = sessionDao.check(sid);
+			Sessiondata sd = check(sid);
 			Long userId = sd.getUserId();
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
-				Invitation i = invite.get(userId, userDao, roomDao);
-				i = invitationDao.update(i);
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(userId))) {
+				Invitation i = invite.get(userId, getUserDao(), getRoomDao());
+				i = getBean(InvitationDao.class).update(i);
 
 				if (i != null) {
 					if (sendmail) {
-						invitationManager.sendInvitationLink(i, MessageType.Create, invite.getSubject(), invite.getMessage(), false);
+						getBean(InvitationManager.class).sendInvitationLink(i, MessageType.Create, invite.getSubject(), invite.getMessage(), false);
 					}
 					return new ServiceResult(1L, i.getHash(), Type.SUCCESS);
 				} else {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ServerWebService.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ServerWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ServerWebService.java
index 919f9df..7c66512 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ServerWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ServerWebService.java
@@ -37,8 +37,6 @@ import javax.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
 import org.apache.openmeetings.db.dao.server.ServerDao;
-import org.apache.openmeetings.db.dao.server.SessiondataDao;
-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.server.ServerDTO;
@@ -48,32 +46,28 @@ import org.apache.openmeetings.db.util.AuthLevelUtil;
 import org.apache.openmeetings.webservice.error.ServiceException;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  * This class provides method implementations necessary for OM to manage servers
  * participating in cluster.
- * 
+ *
  * @author solomax, sebawagner
- * 
+ *
  */
 @WebService(serviceName="org.apache.openmeetings.webservice.ServerWebService", targetNamespace = TNS)
 @Features(features = "org.apache.cxf.feature.LoggingFeature")
 @Produces({MediaType.APPLICATION_JSON})
 @Path("/server")
-public class ServerWebService {
+public class ServerWebService extends BaseWebService {
 	private static final Logger log = Red5LoggerFactory.getLogger(ServerWebService.class, webAppRootKey);
 
-	@Autowired
-	private SessiondataDao sessionDao;
-	@Autowired
-	private UserDao userDao;
-	@Autowired
-	private ServerDao serverDao;
+	private static ServerDao getDao() {
+		return getBean(ServerDao.class);
+	}
 
 	/**
 	 * Method to retrieve the list of the servers participating in cluster
-	 * 
+	 *
 	 * @param sid
 	 *            - session id to identify the user making request
 	 * @param start
@@ -91,10 +85,8 @@ public class ServerWebService {
 			) throws ServiceException
 	{
 		log.debug("getServers enter");
-		Sessiondata sd = sessionDao.check(sid);
-
-		if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
-			return ServerDTO.list(serverDao.get(start, max));
+		if (AuthLevelUtil.hasWebServiceLevel(getRights(sid))) {
+			return ServerDTO.list(getDao().get(start, max));
 		} else {
 			log.warn("Insuffisient permissions");
 			throw new ServiceException("Insufficient permissions"); //TODO code -26
@@ -104,7 +96,7 @@ public class ServerWebService {
 	/**
 	 * Method to retrieve the total count of the servers participating in
 	 * cluster
-	 * 
+	 *
 	 * @param sid
 	 *            - session id to identify the user making request
 	 * @return total count of the servers participating in cluster
@@ -114,10 +106,8 @@ public class ServerWebService {
 	@Path("/count")
 	public long count(@QueryParam("sid") @WebParam(name="sid") String sid) throws ServiceException {
 		log.debug("getServerCount enter");
-		Sessiondata sd = sessionDao.check(sid);
-
-		if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
-			return serverDao.count();
+		if (AuthLevelUtil.hasWebServiceLevel(getRights(sid))) {
+			return getDao().count();
 		} else {
 			throw new ServiceException("Insufficient permissions"); //TODO code -26
 		}
@@ -125,7 +115,7 @@ public class ServerWebService {
 
 	/**
 	 * Method to add/update server
-	 * 
+	 *
 	 * @param sid
 	 *            - session id to identify the user making request
 	 * @param server
@@ -137,11 +127,11 @@ public class ServerWebService {
 	@Path("/")
 	public ServerDTO add(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="server") @QueryParam("server") ServerDTO server) throws ServiceException {
 		log.debug("saveServerCount enter");
-		Sessiondata sd = sessionDao.check(sid);
+		Sessiondata sd = check(sid);
 		Long userId = sd.getUserId();
-		if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
+		if (AuthLevelUtil.hasWebServiceLevel(getRights(userId))) {
 			Server s = server.get();
-			return new ServerDTO(serverDao.update(s, userId));
+			return new ServerDTO(getDao().update(s, userId));
 		} else {
 			log.warn("Insuffisient permissions");
 			throw new ServiceException("Insufficient permissions"); //TODO code -26
@@ -150,7 +140,7 @@ public class ServerWebService {
 
 	/**
 	 * Method to delete server
-	 * 
+	 *
 	 * @param sid
 	 *            - session id to identify the user making request
 	 * @param id
@@ -162,10 +152,11 @@ public class ServerWebService {
 	@Path("/{id}")
 	public ServiceResult delete(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="id") @PathParam("id") long id) throws ServiceException {
 		log.debug("saveServerCount enter");
-		Sessiondata sd = sessionDao.check(sid);
+		Sessiondata sd = check(sid);
 		Long userId = sd.getUserId();
 
-		if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
+		if (AuthLevelUtil.hasWebServiceLevel(getRights(userId))) {
+			ServerDao serverDao = getDao();
 			Server s = serverDao.get(id);
 			if (s != null) {
 				serverDao.delete(s, userId);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/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 2882d04..594196b 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
@@ -47,12 +47,10 @@ import javax.ws.rs.core.MediaType;
 import org.apache.cxf.feature.Features;
 import org.apache.openmeetings.IApplication;
 import org.apache.openmeetings.core.remote.ScopeApplicationAdapter;
+import org.apache.openmeetings.core.session.SessionManager;
 import org.apache.openmeetings.core.util.StrongPasswordValidator;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
-import org.apache.openmeetings.db.dao.server.ISessionManager;
 import org.apache.openmeetings.db.dao.server.SOAPLoginDao;
-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;
@@ -66,6 +64,7 @@ import org.apache.openmeetings.db.entity.user.Address;
 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.service.user.UserManager;
 import org.apache.openmeetings.util.OmException;
 import org.apache.openmeetings.util.OpenmeetingsVariables;
 import org.apache.openmeetings.webservice.cluster.UserService;
@@ -79,7 +78,6 @@ import org.apache.wicket.validation.ValidationError;
 import org.red5.logging.Red5LoggerFactory;
 import org.red5.server.api.scope.IScope;
 import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  *
@@ -93,22 +91,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 @Features(features = "org.apache.cxf.feature.LoggingFeature")
 @Produces({MediaType.APPLICATION_JSON})
 @Path("/user")
-public class UserWebService implements UserService {
+public class UserWebService extends BaseWebService implements UserService {
 	private static final Logger log = Red5LoggerFactory.getLogger(UserWebService.class, webAppRootKey);
-	@Autowired
-	private ConfigurationDao cfgDao;
-	@Autowired
-	private IUserManager userManager;
-	@Autowired
-	private SOAPLoginDao soapLoginDao;
-	@Autowired
-	private UserDao userDao;
-	@Autowired
-	private SessiondataDao sessionDao;
-	@Autowired
-	private ISessionManager sessionManager;
-	@Autowired
-	private ScopeApplicationAdapter scopeApplicationAdapter;
 
 	/* (non-Javadoc)
 	 * @see org.apache.openmeetings.webservice.cluster.UserService#login(java.lang.String, java.lang.String)
@@ -120,12 +104,12 @@ public class UserWebService implements UserService {
 	public ServiceResult login(@WebParam(name="user") @QueryParam("user") String user, @WebParam(name="pass") @QueryParam("pass") String pass) {
 		try {
 			log.debug("Login user");
-			User u = userDao.login(user, pass);
+			User u = getUserDao().login(user, pass);
 			if (u == null) {
 				return new ServiceResult(-1L, "Login failed", Type.ERROR);
 			}
 
-			Sessiondata sd = sessionDao.create(u.getId(), u.getLanguageId());
+			Sessiondata sd = getSessionDao().create(u.getId(), u.getLanguageId());
 			log.debug("Login user: {}", u.getId());
 			return new ServiceResult(u.getId(), sd.getSessionId(), Type.SUCCESS);
 		} catch (OmException oe) {
@@ -145,9 +129,8 @@ public class UserWebService implements UserService {
 	@Path("/")
 	public List<UserDTO> get(@WebParam(name="sid") @QueryParam("sid") String sid) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
-				return UserDTO.list(userDao.getAllUsers());
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(sid))) {
+				return UserDTO.list(getUserDao().getAllUsers());
 			} else {
 				throw new ServiceException("Insufficient permissions"); //TODO code -26
 			}
@@ -171,15 +154,20 @@ public class UserWebService implements UserService {
 			) throws ServiceException
 	{
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
+			Sessiondata sd = check(sid);
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(sd.getUserId()))) {
+				UserDao userDao = getUserDao();
 				User testUser = userDao.getExternalUser(user.getExternalId(), user.getExternalType());
 
 				if (testUser != null) {
 					throw new ServiceException("User does already exist!");
 				}
 
-				String jName_timeZone = cfgDao.getConfValue("default.timezone", String.class, "");
+				ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
+				String tz = user.getTimeZoneId();
+				if (Strings.isEmpty(tz)) {
+					tz = cfgDao.getConfValue("default.timezone", String.class, "");
+				}
 				if (user.getAddress() == null) {
 					user.setAddress(new Address());
 					user.getAddress().setCountry(Locale.getDefault().getCountry());
@@ -198,12 +186,12 @@ public class UserWebService implements UserService {
 					log.debug("addNewUser::weak password '{}', msg: {}", user.getPassword(), sb);
 					throw new ServiceException(sb.toString());
 				}
-				Long userId = userManager.registerUser(user.getLogin(), user.getPassword(),
+				Long userId = getBean(UserManager.class).registerUser(user.getLogin(), user.getPassword(),
 						user.getLastname(), user.getFirstname(), user.getAddress().getEmail(), new Date(), user.getAddress().getStreet(),
 						user.getAddress().getAdditionalname(), user.getAddress().getFax(), user.getAddress().getZip(), user.getAddress().getCountry()
 						, user.getAddress().getTown(), user.getLanguageId(),
 						"", false, true, // generate SIP Data if the config is enabled
-						jName_timeZone, confirm);
+						tz, confirm);
 
 				if (userId == null || userId < 0) {
 					throw new ServiceException("Unknown error");
@@ -245,8 +233,9 @@ public class UserWebService implements UserService {
 	@Path("/{id}")
 	public ServiceResult delete(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="id") @PathParam("id") long id) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasAdminLevel(userDao.getRights(sd.getUserId()))) {
+			Sessiondata sd = check(sid);
+			if (AuthLevelUtil.hasAdminLevel(getRights(sd.getUserId()))) {
+				UserDao userDao = getUserDao();
 				userDao.delete(userDao.get(id), sd.getUserId());
 
 				return new ServiceResult(id, "Deleted", Type.SUCCESS);
@@ -272,8 +261,9 @@ public class UserWebService implements UserService {
 			) throws ServiceException
 	{
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasAdminLevel(userDao.getRights(sd.getUserId()))) {
+			Sessiondata sd = check(sid);
+			if (AuthLevelUtil.hasAdminLevel(getRights(sd.getUserId()))) {
+				UserDao userDao = getUserDao();
 				User user = userDao.getExternalUser(externalId, externalType);
 
 				// Setting user deleted
@@ -303,8 +293,8 @@ public class UserWebService implements UserService {
 			) throws ServiceException
 	{
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
+			Sessiondata sd = check(sid);
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(sd.getUserId()))) {
 				RemoteSessionObject remoteSessionObject = new RemoteSessionObject(
 						user.getLogin(), user.getFirstname(), user.getLastname()
 						, user.getProfilePictureUrl(), user.getEmail()
@@ -317,7 +307,7 @@ public class UserWebService implements UserService {
 				log.debug("xmlString " + xmlString);
 
 				//TODO LandingZone are not configurable for now
-				String hash = soapLoginDao.addSOAPLogin(sid, options.getRoomId(),
+				String hash = getBean(SOAPLoginDao.class).addSOAPLogin(sid, options.getRoomId(),
 						options.isModerator(), options.isShowAudioVideoTest(), options.isAllowSameURLMultipleTimes(),
 						options.getRecordingId(),
 						"room", // LandingZone,
@@ -329,7 +319,7 @@ public class UserWebService implements UserService {
 						sd.setPermanent(true);
 					}
 					sd.setXml(xmlString);
-					sessionDao.update(sd);
+					getSessionDao().update(sd);
 					return new ServiceResult(0, hash, Type.SUCCESS);
 				}
 			} else {
@@ -354,8 +344,8 @@ public class UserWebService implements UserService {
 	 * @param uid
 	 * @return - true in case user have sufficient permissions, null otherwise
 	 */
-	private boolean kickUserByUid(String uid) {
-		StreamClient rcl = sessionManager.getClientByUid(uid, null);
+	private static boolean kickUserByUid(String uid) {
+		StreamClient rcl = getBean(SessionManager.class).getClientByUid(uid, null);
 
 		if (rcl == null) {
 			return true;
@@ -364,13 +354,14 @@ public class UserWebService implements UserService {
 		if (rcl.getRoomId() != null) {
 			scopeName = rcl.getRoomId().toString();
 		}
-		IScope currentScope = scopeApplicationAdapter.getRoomScope(scopeName);
+		ScopeApplicationAdapter apapter = getBean(ScopeApplicationAdapter.class);
+		IScope currentScope = apapter.getRoomScope(scopeName);
 
 		Map<Integer, String> messageObj = new HashMap<>();
 		messageObj.put(0, "kick");
 
-		scopeApplicationAdapter.sendMessageById(messageObj, rcl.getId(), currentScope);
-		scopeApplicationAdapter.roomLeaveByScope(rcl, currentScope);
+		apapter.sendMessageById(messageObj, rcl.getId(), currentScope);
+		apapter.roomLeaveByScope(rcl, currentScope);
 
 		return true;
 	}
@@ -384,8 +375,7 @@ public class UserWebService implements UserService {
 	@Path("/kick/{uid}")
 	public ServiceResult kick(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="uid") @PathParam("uid") String uid) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(sid))) {
 				boolean success = kickUserByUid(uid);
 
 				return new ServiceResult(Boolean.TRUE.equals(success) ? 1L : 0L, Boolean.TRUE.equals(success) ? "deleted" : "not deleted", Type.SUCCESS);
@@ -406,8 +396,7 @@ public class UserWebService implements UserService {
 	@GET
 	@Path("/count/{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()))) {
+		if (AuthLevelUtil.hasUserLevel(getRights(sid))) {
 			IApplication app = (IApplication)Application.get(OpenmeetingsVariables.wicketApplicationName);
 			return new ServiceResult(app.getOmRoomClients(roomId).size(), "count", Type.SUCCESS);
 		}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 14d5d6c..0679d51 100644
--- a/pom.xml
+++ b/pom.xml
@@ -193,33 +193,6 @@
 			</modules>
 		</profile>
 		<profile>
-			<id>read-build-number</id>
-			<activation>
-				<file><exists>build.properties</exists></file>
-			</activation>
-			<build>
-				<plugins>
-					<plugin>
-						<groupId>org.codehaus.mojo</groupId>
-						<artifactId>properties-maven-plugin</artifactId>
-						<executions>
-							<execution>
-								<phase>validate</phase>
-								<goals>
-									<goal>read-project-properties</goal>
-								</goals>
-								<configuration>
-									<files>
-										<file>build.properties</file>
-									</files>
-								</configuration>
-							</execution>
-						</executions>
-					</plugin>
-				</plugins>
-			</build>
-		</profile>
-		<profile>
 			<id>generate-third-party</id>
 			<build>
 				<plugins>
@@ -1011,11 +984,6 @@
 					<artifactId>maven-jarsigner-plugin</artifactId>
 					<version>1.4</version>
 				</plugin>
-				<plugin>
-					<groupId>org.codehaus.mojo</groupId>
-					<artifactId>properties-maven-plugin</artifactId>
-					<version>1.0.0</version>
-				</plugin>
 
 				<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
 				<plugin>


[3/3] openmeetings git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/openmeetings

Posted by so...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/openmeetings


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/a70bde5b
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/a70bde5b
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/a70bde5b

Branch: refs/heads/master
Commit: a70bde5b166f7f52d69619a9f3da47d074861d20
Parents: 06d42c9 76b5fd5
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Sat Jul 8 21:55:19 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Sat Jul 8 21:55:19 2017 +0700

----------------------------------------------------------------------
 .../apache/openmeetings/db/entity/room/Room.java | 19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)
----------------------------------------------------------------------



[2/3] openmeetings git commit: [OPENMEETINGS-1665] dublicated beans are removed

Posted by so...@apache.org.
[OPENMEETINGS-1665] dublicated beans are removed


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/06d42c9f
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/06d42c9f
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/06d42c9f

Branch: refs/heads/master
Commit: 06d42c9f4a93d4b3b4ab05c3936006a28fca6a1f
Parents: a63a2e3
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Sat Jul 8 21:38:44 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Sat Jul 8 21:53:45 2017 +0700

----------------------------------------------------------------------
 .../org/apache/openmeetings/IApplication.java   |  1 +
 .../apache/openmeetings/db/dto/basic/Info.java  |  7 ++
 .../openmeetings/db/util/TimezoneUtil.java      |  9 ++-
 openmeetings-util/pom.xml                       | 17 ++++
 .../org/apache/openmeetings/util/Version.java   | 30 ++++----
 .../apache/openmeetings/util/version.properties | 21 +++++
 openmeetings-web/pom.xml                        |  7 ++
 .../openmeetings/web/app/Application.java       |  5 ++
 .../WEB-INF/classes/applicationContext.xml      | 64 +++-------------
 .../main/webapp/WEB-INF/classes/cxf-servlet.xml | 74 ++++++++++++++++++
 .../src/main/webapp/WEB-INF/web.xml             | 55 +++++++------
 .../test/AbstractJUnitDefaults.java             |  6 +-
 .../test/invitiation/TestInvitation.java        |  7 +-
 .../openmeetings/test/user/TestUserContact.java |  4 +-
 .../openmeetings/test/user/TestUserGroup.java   |  2 +-
 .../test/webservice/AbstractWebServiceTest.java | 46 ++++++++++-
 .../test/webservice/TestCalendarService.java    | 10 +--
 .../test/webservice/TestFileService.java        | 23 +-----
 .../test/webservice/TestGroupService.java       | 20 -----
 .../test/webservice/TestRecordingService.java   |  7 +-
 .../test/webservice/TestUserService.java        | 27 ++-----
 .../openmeetings/webservice/BaseWebService.java | 63 +++++++++++++++
 .../webservice/CalendarWebService.java          | 70 ++++++++---------
 .../webservice/ErrorWebService.java             | 13 +---
 .../openmeetings/webservice/FileWebService.java | 77 +++++++++----------
 .../webservice/GroupWebService.java             | 66 ++++++++--------
 .../webservice/RecordingWebService.java         | 54 ++++++-------
 .../openmeetings/webservice/RoomWebService.java | 78 ++++++++-----------
 .../webservice/ServerWebService.java            | 49 +++++-------
 .../openmeetings/webservice/UserWebService.java | 81 +++++++++-----------
 pom.xml                                         | 32 --------
 31 files changed, 526 insertions(+), 499 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java b/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java
index e0cd5e8..c275e66 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java
@@ -33,6 +33,7 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
 
 public interface IApplication {
 	<T> T getOmBean(Class<T> clazz);
+	<T> T _getOmBean(Class<T> clazz);
 	ServletContext getServletContext();
 	IRequestMapper getRootRequestMapper();
 	Supplier<IExceptionMapper> getExceptionMapperProvider();

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Info.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Info.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Info.java
index 3b585bf..a32dd66 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Info.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Info.java
@@ -24,6 +24,7 @@ import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 
+import org.apache.openmeetings.util.InitializationContainer;
 import org.apache.openmeetings.util.Version;
 
 @XmlRootElement
@@ -33,11 +34,13 @@ public class Info implements Serializable {
 	private final String version;
 	private final String revision;
 	private final String buildDate;
+	private final boolean inited;
 
 	public Info() {
 		version = Version.getVersion();
 		revision = Version.getRevision();
 		buildDate = Version.getBuildDate();
+		inited = InitializationContainer.initComplete;
 	}
 
 	public String getVersion() {
@@ -51,4 +54,8 @@ public class Info implements Serializable {
 	public String getBuildDate() {
 		return buildDate;
 	}
+
+	public boolean isInited() {
+		return inited;
+	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/TimezoneUtil.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/TimezoneUtil.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/TimezoneUtil.java
index f2d185c..3898589 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/TimezoneUtil.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/TimezoneUtil.java
@@ -25,6 +25,7 @@ import java.util.TimeZone;
 
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.entity.user.User;
+import org.apache.wicket.util.string.Strings;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -39,18 +40,18 @@ public class TimezoneUtil {
 	 * Parameters: ID - the ID for a TimeZone, either an abbreviation such as "PST", a full name such as
 	 * "America/Los_Angeles", or a custom ID such as "GMT-8:00". Note that the support of abbreviations is for JDK 1.1.x
 	 * compatibility only and full names should be used.
-	 * 
+	 *
 	 * Returns: the specified TimeZone, or the GMT zone if the given ID cannot be understood. <br/>
 	 * <br/>
 	 * TODO: Fall-back mechanism and maybe a log output if the given timeZoneId is not found in the list of available
 	 * TimeZones of the current java.util.TimeZone package of the Java SDK the the user is running <br/>
-	 * 
+	 *
 	 * @param timeZoneId
 	 * @return
 	 */
 
 	public TimeZone getTimeZone(String timeZoneId) {
-		if (timeZoneId == null || timeZoneId.equals("")) {
+		if (Strings.isEmpty(timeZoneId)) {
 			return getDefaultTimeZone();
 		}
 
@@ -79,7 +80,7 @@ public class TimezoneUtil {
 
 	/**
 	 * Returns the timezone based on the user profile, if not return the timezone from the server
-	 * 
+	 *
 	 * @param user
 	 * @return
 	 */

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/openmeetings-util/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-util/pom.xml b/openmeetings-util/pom.xml
index ceeda5e..cd9666c 100644
--- a/openmeetings-util/pom.xml
+++ b/openmeetings-util/pom.xml
@@ -41,7 +41,24 @@
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-bundle-plugin</artifactId>
 			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-jar-plugin</artifactId>
+				<executions>
+					<execution>
+						<goals>
+							<goal>test-jar</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
 		</plugins>
+		<resources>
+			<resource>
+				<directory>src/main/resources</directory>
+				<filtering>true</filtering>
+			</resource>
+		</resources>
 	</build>
 	<profiles>
 		<profile>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/openmeetings-util/src/main/java/org/apache/openmeetings/util/Version.java
----------------------------------------------------------------------
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/Version.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/Version.java
index 7ad8c08..525fc38 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/Version.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/Version.java
@@ -19,10 +19,7 @@
 package org.apache.openmeetings.util;
 
 import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.jar.Attributes;
-import java.util.jar.Manifest;
+import java.util.Properties;
 
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
@@ -33,38 +30,41 @@ public class Version {
 	private static String version = null;
 	private static String revision = null;
 	private static String buildDate = null;
-	
-	private static Attributes getAttributes() throws MalformedURLException, IOException {
-		String jarUrl = Version.class.getResource(Version.class.getSimpleName() + ".class").toString();
-		return new Manifest(new URL(jarUrl.substring(0, jarUrl.indexOf('!')) + "!/META-INF/MANIFEST.MF").openStream()).getMainAttributes();
+
+	private static void init() throws IOException {
+		Properties props = new Properties();
+		props.load(Version.class.getResourceAsStream("version.properties"));
+		version = props.getProperty("version");
+		revision = props.getProperty("revision");
+		buildDate = props.getProperty("date");
 	}
-	
+
 	public static String getVersion() {
 		if (version == null) {
 			try {
-				version = getAttributes().getValue("Product-Version");
+				init();
 			} catch (Exception e) {
 				log.error("Error", e);
 			}
 		}
 		return version;
 	}
-	
+
 	public static String getRevision() {
 		if (revision == null) {
 			try {
-				revision = getAttributes().getValue("Git-Revision");
+				init();
 			} catch (Exception e) {
 				log.error("Error", e);
 			}
 		}
 		return revision;
 	}
-	
+
 	public static String getBuildDate() {
 		if (buildDate == null) {
 			try {
-				buildDate = getAttributes().getValue("Built-On");
+				init();
 			} catch (Exception e) {
 				log.error("Error", e);
 			}
@@ -85,7 +85,7 @@ public class Version {
 		}
 		sb.append("#\n");
 	}
-	
+
 	public static void logOMStarted() {
 		StringBuilder sb = new StringBuilder("\n");
 		getLine(sb, "", '#');

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/openmeetings-util/src/main/resources/org/apache/openmeetings/util/version.properties
----------------------------------------------------------------------
diff --git a/openmeetings-util/src/main/resources/org/apache/openmeetings/util/version.properties b/openmeetings-util/src/main/resources/org/apache/openmeetings/util/version.properties
new file mode 100644
index 0000000..a907b98
--- /dev/null
+++ b/openmeetings-util/src/main/resources/org/apache/openmeetings/util/version.properties
@@ -0,0 +1,21 @@
+################################################################################
+##
+##  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.
+##
+################################################################################
+version=${project.version}
+date=${maven.build.timestamp}
+revision=${buildNumber}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/openmeetings-web/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/pom.xml b/openmeetings-web/pom.xml
index 38897ea..8d4d994 100644
--- a/openmeetings-web/pom.xml
+++ b/openmeetings-web/pom.xml
@@ -483,6 +483,13 @@
 		</dependency>
 		<dependency>
 			<groupId>org.apache.openmeetings</groupId>
+			<artifactId>openmeetings-util</artifactId>
+			<version>${project.version}</version>
+			<type>test-jar</type>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.openmeetings</groupId>
 			<artifactId>openmeetings-core</artifactId>
 			<version>${project.version}</version>
 			<type>test-jar</type>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
index d4b2148..7ba1417 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
@@ -607,6 +607,11 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 		return Application.getBean(clazz);
 	}
 
+	@Override
+	public <T> T _getOmBean(Class<T> clazz) { //FIXME hack for web services support (should be in separate module for now
+		return Application.get()._getBean(clazz);
+	}
+
 	public static String getContactsLink() {
 		return PROFILE_MESSAGES.getLink();
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
index 0a6729a..a3015a2 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
@@ -19,19 +19,15 @@
 
 -->
 <beans xmlns="http://www.springframework.org/schema/beans"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xmlns:tx="http://www.springframework.org/schema/tx"
-	xmlns:context="http://www.springframework.org/schema/context"
-	xmlns:jaxrs="http://cxf.apache.org/jaxrs"
-	xmlns:jaxws="http://cxf.apache.org/jaxws"
-	xmlns:p="http://www.springframework.org/schema/p"
-	xsi:schemaLocation="
-		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
-		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
-		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
-		http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
-		http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd"
-		>
+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		xmlns:tx="http://www.springframework.org/schema/tx"
+		xmlns:context="http://www.springframework.org/schema/context"
+		xmlns:p="http://www.springframework.org/schema/p"
+		xsi:schemaLocation="
+			http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
+			http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
+			http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"
+	>
 	<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
 		<property name="persistenceUnitName" value="openmeetings" />
 	</bean>
@@ -226,46 +222,4 @@
 		<property name="maxPoolSize" value="10" />
 		<property name="queueCapacity" value="25" />
 	</bean>
-
-	<!-- CXF beans -->
-	<bean id="calendarWebService" class="org.apache.openmeetings.webservice.CalendarWebService" />
-	<bean id="errorWebService" class="org.apache.openmeetings.webservice.ErrorWebService" />
-	<bean id="fileWebService" class="org.apache.openmeetings.webservice.FileWebService" />
-	<bean id="groupWebService" class="org.apache.openmeetings.webservice.GroupWebService" />
-	<bean id="infoWebService" class="org.apache.openmeetings.webservice.InfoWebService" />
-	<bean id="recordWebService" class="org.apache.openmeetings.webservice.RecordingWebService" />
-	<bean id="roomWebService" class="org.apache.openmeetings.webservice.RoomWebService" />
-	<bean id="serverWebService" class="org.apache.openmeetings.webservice.ServerWebService" />
-	<bean id="userWebService" class="org.apache.openmeetings.webservice.UserWebService" />
-	<bean id="netTestWebService" class="org.apache.openmeetings.webservice.NetTestWebService" />
-	
-	<!-- (writeXsiType=false) -->
-	<jaxrs:server id="server" address="/">
-		<jaxrs:serviceBeans>
-			<ref bean="calendarWebService"/>
-			<ref bean="errorWebService"/>
-			<ref bean="fileWebService"/>
-			<ref bean="groupWebService"/>
-			<ref bean="infoWebService"/>
-			<ref bean="recordWebService"/>
-			<ref bean="roomWebService"/>
-			<ref bean="serverWebService"/>
-			<ref bean="userWebService"/>
-			<ref bean="netTestWebService"/> <!-- JaxRs only -->
-		</jaxrs:serviceBeans>
-		<jaxrs:providers>
-			<bean id="appDtoMessageBodyWriter" class="org.apache.openmeetings.webservice.util.AppointmentMessageBodyWriter" />
-			<bean id="appDtoListMessageBodyWriter" class="org.apache.openmeetings.webservice.util.AppointmentListMessageBodyWriter" />
-			<bean id="omParamProvider" class="org.apache.openmeetings.webservice.util.OmParamConverterProvider"/>
-		</jaxrs:providers>
-	</jaxrs:server>
-	<jaxws:endpoint id="calendarServiceWS" address="/CalendarService" implementor="#calendarWebService"/>
-	<jaxws:endpoint id="errorServiceWS" address="/ErrorService" implementor="#errorWebService" />
-	<jaxws:endpoint id="groupServiceWS" address="/GroupService" implementor="#groupWebService" />
-	<jaxws:endpoint id="infoServiceWS" address="/InfoService" implementor="#infoWebService" />
-	<jaxws:endpoint id="fileServiceWS" address="/FileService" implementor="#fileWebService" />
-	<jaxws:endpoint id="recordServiceWS" address="/RecordService" implementor="#recordWebService" />
-	<jaxws:endpoint id="roomServiceWS" address="/RoomService" implementor="#roomWebService" />
-	<jaxws:endpoint id="serverServiceWS" address="/ServerService" implementor="#serverWebService" />
-	<jaxws:endpoint id="userServiceWS" address="/UserService" implementor="#userWebService" />
 </beans>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/openmeetings-web/src/main/webapp/WEB-INF/classes/cxf-servlet.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/cxf-servlet.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/cxf-servlet.xml
new file mode 100644
index 0000000..3fc11be
--- /dev/null
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/cxf-servlet.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		xmlns:jaxrs="http://cxf.apache.org/jaxrs"
+		xmlns:jaxws="http://cxf.apache.org/jaxws"
+		xsi:schemaLocation="
+			http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
+			http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+			http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd"
+	>
+	<!-- CXF beans -->
+	<import resource="classpath:META-INF/cxf/cxf.xml" />
+	<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
+
+	<bean id="calendarWebService" class="org.apache.openmeetings.webservice.CalendarWebService" />
+	<bean id="errorWebService" class="org.apache.openmeetings.webservice.ErrorWebService" />
+	<bean id="fileWebService" class="org.apache.openmeetings.webservice.FileWebService" />
+	<bean id="groupWebService" class="org.apache.openmeetings.webservice.GroupWebService" />
+	<bean id="infoWebService" class="org.apache.openmeetings.webservice.InfoWebService" />
+	<bean id="recordWebService" class="org.apache.openmeetings.webservice.RecordingWebService" />
+	<bean id="roomWebService" class="org.apache.openmeetings.webservice.RoomWebService" />
+	<bean id="serverWebService" class="org.apache.openmeetings.webservice.ServerWebService" />
+	<bean id="userWebService" class="org.apache.openmeetings.webservice.UserWebService"/>
+	<bean id="netTestWebService" class="org.apache.openmeetings.webservice.NetTestWebService" />
+
+	<!-- (writeXsiType=false) -->
+	<jaxrs:server id="server" address="/">
+		<jaxrs:serviceBeans>
+			<ref bean="calendarWebService"/>
+			<ref bean="errorWebService"/>
+			<ref bean="fileWebService"/>
+			<ref bean="groupWebService"/>
+			<ref bean="infoWebService"/>
+			<ref bean="recordWebService"/>
+			<ref bean="roomWebService"/>
+			<ref bean="serverWebService"/>
+			<ref bean="userWebService"/>
+			<ref bean="netTestWebService"/> <!-- JaxRs only -->
+		</jaxrs:serviceBeans>
+		<jaxrs:providers>
+			<bean id="appDtoMessageBodyWriter" class="org.apache.openmeetings.webservice.util.AppointmentMessageBodyWriter" />
+			<bean id="appDtoListMessageBodyWriter" class="org.apache.openmeetings.webservice.util.AppointmentListMessageBodyWriter" />
+			<bean id="omParamProvider" class="org.apache.openmeetings.webservice.util.OmParamConverterProvider"/>
+		</jaxrs:providers>
+	</jaxrs:server>
+	<jaxws:endpoint id="calendarServiceWS" address="/CalendarService" implementor="#calendarWebService"/>
+	<jaxws:endpoint id="errorServiceWS" address="/ErrorService" implementor="#errorWebService" />
+	<jaxws:endpoint id="groupServiceWS" address="/GroupService" implementor="#groupWebService" />
+	<jaxws:endpoint id="infoServiceWS" address="/InfoService" implementor="#infoWebService" />
+	<jaxws:endpoint id="fileServiceWS" address="/FileService" implementor="#fileWebService" />
+	<jaxws:endpoint id="recordServiceWS" address="/RecordService" implementor="#recordWebService" />
+	<jaxws:endpoint id="roomServiceWS" address="/RoomService" implementor="#roomWebService" />
+	<jaxws:endpoint id="serverServiceWS" address="/ServerService" implementor="#serverWebService" />
+	<jaxws:endpoint id="userServiceWS" address="/UserService" implementor="#userWebService" />
+</beans>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/openmeetings-web/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/web.xml b/openmeetings-web/src/main/webapp/WEB-INF/web.xml
index 1e89d1a..fb83a38 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/web.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/web.xml
@@ -25,32 +25,28 @@
 		<param-name>globalScope</param-name>
 		<param-value>default</param-value>
 	</context-param>
+	<context-param>
+		<param-name>contextConfigLocation</param-name>
+		<param-value>/WEB-INF/red5-*.xml</param-value>
+	</context-param>
+	<context-param>
+		<param-name>locatorFactorySelector</param-name>
+		<param-value>red5.xml</param-value>
+	</context-param>
+	<context-param>
+		<param-name>parentContextKey</param-name>
+		<param-value>default.context</param-value>
+	</context-param>
 
 	<listener>
 		<listener-class>org.apache.openmeetings.util.OMContextListener</listener-class>
 	</listener>
 
-	<servlet>
-		<servlet-name>CXFServlet</servlet-name>
-		<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
-		<init-param>
-			<param-name>config-location</param-name>
-			<param-value>classpath:applicationContext.xml</param-value>
-		</init-param>
-		<load-on-startup>1</load-on-startup>
-		<async-supported>true</async-supported>
-	</servlet>
-	<servlet-mapping>
-		<servlet-name>CXFServlet</servlet-name>
-		<url-pattern>/services/*</url-pattern>
-	</servlet-mapping>
-
 	<filter>
 		<filter-name>LoggerContextFilter</filter-name>
 		<filter-class>org.red5.logging.LoggerContextFilter</filter-class>
 		<async-supported>true</async-supported>
 	</filter>
-
 	<filter-mapping>
 		<filter-name>LoggerContextFilter</filter-name>
 		<url-pattern>/*</url-pattern>
@@ -77,19 +73,20 @@
 		<filter-name>OpenmeetingsApplication</filter-name>
 		<url-pattern>/*</url-pattern>
 	</filter-mapping>
-
-	<context-param>
-		<param-name>contextConfigLocation</param-name>
-		<param-value>/WEB-INF/red5-*.xml</param-value>
-	</context-param>
-	<context-param>
-		<param-name>locatorFactorySelector</param-name>
-		<param-value>red5.xml</param-value>
-	</context-param>
-	<context-param>
-		<param-name>parentContextKey</param-name>
-		<param-value>default.context</param-value>
-	</context-param>
+	<servlet>
+		<servlet-name>CXFServlet</servlet-name>
+		<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
+		<init-param>
+			<param-name>config-location</param-name>
+			<param-value>classpath:cxf-servlet.xml</param-value>
+		</init-param>
+		<load-on-startup>1</load-on-startup>
+		<async-supported>true</async-supported>
+	</servlet>
+	<servlet-mapping>
+		<servlet-name>CXFServlet</servlet-name>
+		<url-pattern>/services/*</url-pattern>
+	</servlet-mapping>
 
 	<!-- remove the following servlet tags if you want to disable remoting for this application -->
 	<servlet>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
index cb301aa..b0c0a6c 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
@@ -135,8 +135,8 @@ public abstract class AbstractJUnitDefaults extends AbstractSpringTest {
 		return getUser(UUID.randomUUID().toString());
 	}
 
-	protected String getRandomPass(String uuid) {
-		return "pass" + uuid;
+	protected String createPass() {
+		return "pass1_!@#$%_A";
 	}
 
 	public User getUser(String uuid) throws Exception {
@@ -149,7 +149,7 @@ public abstract class AbstractJUnitDefaults extends AbstractSpringTest {
 		u.getAddress().setEmail(String.format("email%s@local", uuid));
 		u.setRights(UserDao.getDefaultRights());
 		u.setTimeZoneId("Asia/Bangkok");
-		u.updatePassword(cfgDao, getRandomPass(uuid));
+		u.updatePassword(cfgDao, createPass());
 		u.setLanguageId(1L);
 		return u;
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/openmeetings-web/src/test/java/org/apache/openmeetings/test/invitiation/TestInvitation.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/invitiation/TestInvitation.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/invitiation/TestInvitation.java
index 2c49435..2c97de5 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/invitiation/TestInvitation.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/invitiation/TestInvitation.java
@@ -24,14 +24,12 @@ import java.time.LocalDateTime;
 
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.entity.room.Invitation;
 import org.apache.openmeetings.db.entity.room.Invitation.MessageType;
 import org.apache.openmeetings.db.entity.room.Invitation.Valid;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.service.room.InvitationManager;
 import org.apache.openmeetings.test.AbstractWicketTester;
-import org.apache.openmeetings.webservice.UserWebService;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
@@ -39,16 +37,13 @@ public class TestInvitation extends AbstractWicketTester {
 	@Autowired
 	private InvitationManager invitationManager;
 	@Autowired
-	private UserWebService userWebService;
-	@Autowired
 	private UserDao userDao;
 	@Autowired
 	private RoomDao roomDao;
 
 	@Test
 	public void testSendInvitationLink() throws Exception {
-		ServiceResult result = userWebService.login(username, userpass);
-		User us = userDao.get(result.getCode());
+		User us = userDao.getByLogin(username, User.Type.user, null);
 
 		LocalDateTime from = LocalDateTime.now().plusDays(1).withHour(12).withMinute(0).withSecond(0);
 		User invitee = userDao.getContact("sebawagner@apache.org", "Testname", "Testlastname", us.getId());

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserContact.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserContact.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserContact.java
index 0cce759..a313612 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserContact.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserContact.java
@@ -52,7 +52,7 @@ public class TestUserContact extends AbstractWicketTester {
 		User u = getUser(uuid);
 		u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
 		u = userDao.update(u, null);
-		assertTrue("Password should be set as expected", userDao.verifyPassword(u.getId(), getRandomPass(uuid)));
+		assertTrue("Password should be set as expected", userDao.verifyPassword(u.getId(), createPass()));
 
 		User u1 = userDao.get(u.getId());
 		assertNotNull("Just created user should not be null", u1);
@@ -64,7 +64,7 @@ public class TestUserContact extends AbstractWicketTester {
 	public void testCreateUser() throws Exception {
 		String uuid = UUID.randomUUID().toString();
 		User u = createUser(uuid);
-		assertTrue("Password should be set as expected", userDao.verifyPassword(u.getId(), getRandomPass(uuid)));
+		assertTrue("Password should be set as expected", userDao.verifyPassword(u.getId(), createPass()));
 	}
 
 	@Test

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserGroup.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserGroup.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserGroup.java
index e084165..a7c36b6 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserGroup.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserGroup.java
@@ -87,7 +87,7 @@ public class TestUserGroup extends AbstractJUnitDefaults {
 		assertNotNull("User successfully created", u.getId());
 		checkEmptyGroup("dao.get()", userDao.get(u.getId()));
 		try {
-			checkEmptyGroup("dao.login()", userDao.login(u.getAddress().getEmail(), getRandomPass(uuid)));
+			checkEmptyGroup("dao.login()", userDao.login(u.getAddress().getEmail(), createPass()));
 			fail("User with no Group is unable to login");
 		} catch (OmException e) {
 			assertTrue("Expected Om Exception", "No Group assigned to user".equals(e.getMessage()));

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java
index b649613..047ac58 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java
@@ -18,8 +18,10 @@
  */
 package org.apache.openmeetings.test.webservice;
 
+import static org.apache.openmeetings.db.util.ApplicationHelper.getWicketTester;
 import static org.apache.openmeetings.util.OmFileHelper.getOmHome;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 
 import java.io.File;
 import java.nio.file.Files;
@@ -29,11 +31,18 @@ import java.util.UUID;
 import org.apache.catalina.LifecycleState;
 import org.apache.catalina.startup.Tomcat;
 import org.apache.cxf.jaxrs.client.WebClient;
+import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
+import org.apache.openmeetings.db.dto.user.UserDTO;
+import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.webservice.util.AppointmentMessageBodyReader;
+import org.apache.wicket.util.tester.WicketTester;
+import org.junit.After;
 import org.junit.AfterClass;
+import org.junit.Assert;
 import org.junit.BeforeClass;
 
 public class AbstractWebServiceTest extends AbstractJUnitDefaults {
@@ -41,10 +50,17 @@ public class AbstractWebServiceTest extends AbstractJUnitDefaults {
 	public final static String CONTEXT = "/openmeetings";
 	public final static String BASE_SERVICES_URL = "http://localhost:8080" + CONTEXT + "/services";
 	public final static String USER_SERVICE_URL = BASE_SERVICES_URL + "/user";
+	public final static String INFO_SERVICE_URL = BASE_SERVICES_URL + "/info";
+	public final static long TIMEOUT = 5 * 60 * 1000;
+	protected WicketTester tester;
 
 	public static WebClient getClient(String url) {
-		return WebClient.create(url, Arrays.asList(new AppointmentMessageBodyReader()))
+		WebClient c = WebClient.create(url, Arrays.asList(new AppointmentMessageBodyReader()))
 				.accept("application/json").type("application/json");
+		HTTPClientPolicy p = WebClient.getConfig(c).getHttpConduit().getClient();
+		p.setConnectionTimeout(TIMEOUT);
+		p.setReceiveTimeout(TIMEOUT);
+		return c;
 	}
 
 	public static ServiceResult login() {
@@ -76,6 +92,21 @@ public class AbstractWebServiceTest extends AbstractJUnitDefaults {
 		tomcat.start();
 	}
 
+	@Override
+	public void setUp() throws Exception {
+		super.setUp();
+		tester = getWicketTester();
+		assertNotNull("Web session should not be null", WebSession.get());
+	}
+
+	@After
+	public void tearDown() {
+		if (tester != null) {
+			//can be null in case exception on initialization
+			tester.destroy();
+		}
+	}
+
 	@AfterClass
 	public static void destroy() throws Exception {
 		if (tomcat.getServer() != null && tomcat.getServer().getState() != LifecycleState.DESTROYED) {
@@ -85,4 +116,17 @@ public class AbstractWebServiceTest extends AbstractJUnitDefaults {
 			tomcat.destroy();
 		}
 	}
+
+	public void webCreateUser(User u) {
+		ServiceResult r = login();
+		UserDTO dto = new UserDTO(u);
+		dto.setPassword(createPass());
+		UserDTO user = getClient(USER_SERVICE_URL)
+				.path("/")
+				.query("sid", r.getMessage())
+				.query("user", dto.toString())
+				.query("confirm", false).post(null, UserDTO.class);
+		Assert.assertNotNull(user.getId());
+		u.setId(user.getId());
+	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
index 54170fb..8af988b 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
@@ -69,8 +69,8 @@ public class TestCalendarService extends AbstractWebServiceTest {
 		String uuid = UUID.randomUUID().toString();
 		User u = getUser(uuid);
 		u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
-		u = createUser(u);
-		ServiceResult sr = login(u.getLogin(), getRandomPass(uuid));
+		webCreateUser(u);
+		ServiceResult sr = login(u.getLogin(), createPass());
 
 		Date start = new Date();
 		Appointment a = createAppointment(getAppointment(u, r, start, new Date(start.getTime() + ONE_HOUR)));
@@ -131,8 +131,8 @@ public class TestCalendarService extends AbstractWebServiceTest {
 		String uuid = UUID.randomUUID().toString();
 		User u = getUser(uuid);
 		u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
-		u = createUser(u);
-		ServiceResult sr = login(u.getLogin(), getRandomPass(uuid));
+		webCreateUser(u);
+		ServiceResult sr = login(u.getLogin(), createPass());
 		return sr.getMessage();
 	}
 
@@ -176,7 +176,7 @@ public class TestCalendarService extends AbstractWebServiceTest {
 		User u = getUser(uuid);
 		u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
 		u = createUser(u);
-		ServiceResult sr = login(u.getLogin(), getRandomPass(uuid));
+		ServiceResult sr = login(u.getLogin(), createPass());
 
 		Response resp = getClient(CALENDAR_SERVICE_URL)
 				.path("/")

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestFileService.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestFileService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestFileService.java
index 400d1cd..4816c9c 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestFileService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestFileService.java
@@ -18,7 +18,6 @@
  */
 package org.apache.openmeetings.test.webservice;
 
-import static org.apache.openmeetings.db.util.ApplicationHelper.getWicketTester;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
@@ -39,23 +38,15 @@ import org.apache.cxf.jaxrs.ext.multipart.Attachment;
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.file.FileExplorerItemDTO;
 import org.apache.openmeetings.db.entity.file.FileItem;
-import org.apache.openmeetings.web.app.WebSession;
-import org.apache.wicket.util.tester.WicketTester;
-import org.junit.After;
+import org.apache.openmeetings.util.NonJenkinsTests;
 import org.junit.Test;
+import org.junit.experimental.categories.Category;
 
 public class TestFileService extends AbstractWebServiceTest {
 	public final static String FILE_SERVICE_URL = BASE_SERVICES_URL + "/file";
-	protected WicketTester tester;
-
-	@Override
-	public void setUp() throws Exception {
-		super.setUp();
-		tester = getWicketTester();
-		assertNotNull("Web session should not be null", WebSession.get());
-	}
 
 	@Test
+	@Category(NonJenkinsTests.class)
 	public void addFileTest() throws IOException {
 		ServiceResult r = login();
 
@@ -92,12 +83,4 @@ public class TestFileService extends AbstractWebServiceTest {
 			}
 		}
 	}
-
-	@After
-	public void tearDown() {
-		if (tester != null) {
-			//can be null in case exception on initialization
-			tester.destroy();
-		}
-	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestGroupService.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestGroupService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestGroupService.java
index c96356c..7ace9ee 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestGroupService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestGroupService.java
@@ -18,7 +18,6 @@
  */
 package org.apache.openmeetings.test.webservice;
 
-import static org.apache.openmeetings.db.util.ApplicationHelper.getWicketTester;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
@@ -26,22 +25,11 @@ import javax.ws.rs.core.Response;
 
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
-import org.apache.openmeetings.web.app.WebSession;
-import org.apache.wicket.util.tester.WicketTester;
-import org.junit.After;
 import org.junit.Test;
 
 public class TestGroupService extends AbstractWebServiceTest {
-	protected WicketTester tester;
 	public final static String GROUP_SERVICE_URL = BASE_SERVICES_URL + "/group";
 
-	@Override
-	public void setUp() throws Exception {
-		super.setUp();
-		tester = getWicketTester();
-		assertNotNull("Web session should not be null", WebSession.get());
-	}
-
 	@Test
 	public void putTest() {
 		ServiceResult r = login();
@@ -76,12 +64,4 @@ public class TestGroupService extends AbstractWebServiceTest {
 			assertEquals("OM Call should be successful", r1.getType(), Type.SUCCESS.name());
 		}
 	}
-
-	@After
-	public void tearDown() {
-		if (tester != null) {
-			//can be null in case exception on initialization
-			tester.destroy();
-		}
-	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestRecordingService.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestRecordingService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestRecordingService.java
index a6202ce..da11098 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestRecordingService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestRecordingService.java
@@ -26,7 +26,6 @@ import java.util.Collection;
 import java.util.UUID;
 
 import org.apache.openmeetings.db.dao.record.RecordingDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.record.RecordingDTO;
 import org.apache.openmeetings.db.entity.record.Recording;
@@ -39,18 +38,16 @@ public class TestRecordingService extends AbstractWebServiceTest {
 	private final static String UNIT_TEST_GROUP = "om_unit_tests";
 	@Autowired
 	private RecordingDao recordingDao;
-	@Autowired
-	private UserDao userDao;
 
 	private User getExternalUser() throws Exception {
 		String uuid = UUID.randomUUID().toString();
 		User u = getUser(uuid);
 		u.setExternalType(UNIT_TEST_GROUP);
 		u.setExternalId(uuid);
-		u = userDao.update(u, null);
+		webCreateUser(u);
 		return u;
 	}
-	
+
 	@Test
 	public void testExternal() throws Exception {
 		User u = getExternalUser();

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
index 3aa1375..d091db7 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
@@ -18,12 +18,13 @@
  */
 package org.apache.openmeetings.test.webservice;
 
-import static org.apache.openmeetings.db.util.ApplicationHelper.getWicketTester;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 import java.util.Locale;
+import java.util.Random;
+import java.util.TimeZone;
 import java.util.UUID;
 
 import javax.ws.rs.core.Form;
@@ -37,20 +38,9 @@ import org.apache.openmeetings.db.dto.user.UserDTO;
 import org.apache.openmeetings.db.entity.user.Address;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.wicket.util.string.StringValue;
-import org.apache.wicket.util.tester.WicketTester;
-import org.junit.After;
 import org.junit.Test;
 
 public class TestUserService extends AbstractWebServiceTest {
-	protected WicketTester tester;
-
-	@Override
-	public void setUp() throws Exception {
-		super.setUp();
-		tester = getWicketTester();
-		assertNotNull("Web session should not be null", WebSession.get());
-	}
-
 	@Test
 	public void invalidLoginTest() {
 		ServiceResult r = loginNoCheck("invalid-user", "bad pass");
@@ -93,6 +83,9 @@ public class TestUserService extends AbstractWebServiceTest {
 
 	@Test
 	public void addUserTest() {
+		Random rnd = new Random();
+		String[] tzList = TimeZone.getAvailableIDs();
+		String tz = TimeZone.getTimeZone(tzList[rnd.nextInt(tzList.length)]).getID();
 		ServiceResult r = login();
 		UserDTO u = new UserDTO();
 		String uuid = UUID.randomUUID().toString();
@@ -103,6 +96,7 @@ public class TestUserService extends AbstractWebServiceTest {
 		u.setAddress(new Address());
 		u.getAddress().setEmail(uuid + "@local");
 		u.getAddress().setCountry(Locale.getDefault().getCountry());
+		u.setTimeZoneId(tz);
 		u.setExternalId(uuid);
 		u.setExternalType("OmJunitTests");
 		UserDTO user = getClient(USER_SERVICE_URL)
@@ -113,13 +107,6 @@ public class TestUserService extends AbstractWebServiceTest {
 		assertNotNull("Valid UserDTO should be returned", user);
 		assertNotNull("Id should not be NULL", user.getId());
 		assertEquals("OM Call should be successful", u.getLogin(), user.getLogin());
-	}
-
-	@After
-	public void tearDown() {
-		if (tester != null) {
-			//can be null in case exception on initialization
-			tester.destroy();
-		}
+		assertEquals("OM Call should be successful", tz, user.getTimeZoneId());
 	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/BaseWebService.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/BaseWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/BaseWebService.java
new file mode 100644
index 0000000..0f663db
--- /dev/null
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/BaseWebService.java
@@ -0,0 +1,63 @@
+/*
+ * 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.webservice;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.wicketApplicationName;
+
+import java.util.Set;
+
+import org.apache.openmeetings.IApplication;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.server.Sessiondata;
+import org.apache.openmeetings.db.entity.user.User.Right;
+import org.apache.wicket.Application;
+
+public abstract class BaseWebService {
+	static <T> T getBean(Class<T> clazz) {
+		IApplication iapp = (IApplication)Application.get(wicketApplicationName);
+		return iapp._getOmBean(clazz);
+	}
+
+	static SessiondataDao getSessionDao() {
+		return getBean(SessiondataDao.class);
+	}
+
+	static Sessiondata check(String sid) {
+		return getSessionDao().check(sid);
+	}
+
+	static Set<Right> getRights(String sid) {
+		Sessiondata sd = check(sid);
+		return getRights(sd.getUserId());
+	}
+
+	static UserDao getUserDao() {
+		return getBean(UserDao.class);
+	}
+
+	static RoomDao getRoomDao() {
+		return getBean(RoomDao.class);
+	}
+
+	static Set<Right> getRights(Long id) {
+		return getUserDao().getRights(id);
+	}
+}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
index d52554e..aca0b44 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
@@ -41,8 +41,6 @@ import javax.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
-import org.apache.openmeetings.db.dao.room.RoomDao;
-import org.apache.openmeetings.db.dao.server.SessiondataDao;
 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;
@@ -55,7 +53,6 @@ import org.apache.openmeetings.db.util.AuthLevelUtil;
 import org.apache.openmeetings.webservice.error.ServiceException;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  * CalendarService contains methods to create, edit delete calendar meetings
@@ -67,18 +64,12 @@ import org.springframework.beans.factory.annotation.Autowired;
 @Features(features = "org.apache.cxf.feature.LoggingFeature")
 @Produces({MediaType.APPLICATION_JSON})
 @Path("/calendar")
-public class CalendarWebService {
+public class CalendarWebService extends BaseWebService {
 	private static final Logger log = Red5LoggerFactory.getLogger(CalendarWebService.class, webAppRootKey);
 
-	@Autowired
-	private AppointmentDao appointmentDao;
-	@Autowired
-	private SessiondataDao sessionDao;
-	@Autowired
-	private UserDao userDao;
-	@Autowired
-	private RoomDao roomDao;
-
+	private static AppointmentDao getDao() {
+		return getBean(AppointmentDao.class);
+	}
 	/**
 	 * Load appointments by a start / end range for the current SID
 	 *
@@ -101,9 +92,9 @@ public class CalendarWebService {
 	{
 		log.debug("range : startdate - " + start.getTime() + ", enddate - " + end.getTime());
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) {
-				return AppointmentDTO.list(appointmentDao.getInRange(sd.getUserId(), start.getTime(), end.getTime()));
+			Sessiondata sd = check(sid);
+			if (AuthLevelUtil.hasUserLevel(getRights(sd.getUserId()))) {
+				return AppointmentDTO.list(getDao().getInRange(sd.getUserId(), start.getTime(), end.getTime()));
 			} else {
 				throw new ServiceException("Insufficient permissions"); //TODO code -26
 			}
@@ -141,9 +132,8 @@ public class CalendarWebService {
 	{
 		log.debug("rangeForUser : startdate - " + start.getTime() + ", enddate - " + end.getTime());
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
-				return AppointmentDTO.list(appointmentDao.getInRange(userid, start.getTime(), end.getTime()));
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(sid))) {
+				return AppointmentDTO.list(getDao().getInRange(userid, start.getTime(), end.getTime()));
 			} else {
 				throw new ServiceException("Insufficient permissions"); //TODO code -26
 			}
@@ -167,9 +157,9 @@ public class CalendarWebService {
 	@Path("/next")
 	public AppointmentDTO next(@QueryParam("sid") @WebParam(name="sid") String sid) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) {
-				Appointment a = appointmentDao.getNext(sd.getUserId(), new Date());
+			Sessiondata sd = check(sid);
+			if (AuthLevelUtil.hasUserLevel(getRights(sd.getUserId()))) {
+				Appointment a = getDao().getNext(sd.getUserId(), new Date());
 				return a == null ? null : new AppointmentDTO(a);
 			} else {
 				throw new ServiceException("Insufficient permissions"); //TODO code -26
@@ -197,9 +187,8 @@ public class CalendarWebService {
 	@Path("/next/{userid}")
 	public AppointmentDTO nextForUser(@QueryParam("sid") @WebParam(name="sid") String sid, @PathParam("userid") @WebParam(name="userid") long userid) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
-				Appointment a = appointmentDao.getNext(userid, new Date());
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(sid))) {
+				Appointment a = getDao().getNext(userid, new Date());
 				return a == null ? null : new AppointmentDTO(a);
 			} else {
 				throw new ServiceException("Insufficient permissions"); //TODO code -26
@@ -225,9 +214,9 @@ public class CalendarWebService {
 	@Path("/room/{roomid}")
 	public AppointmentDTO getByRoom(@QueryParam("sid") @WebParam(name="sid") String sid, @PathParam("roomid") @WebParam(name="roomid") long roomid) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) {
-				Appointment app = appointmentDao.getByRoom(sd.getUserId(), roomid);
+			Sessiondata sd = check(sid);
+			if (AuthLevelUtil.hasUserLevel(getRights(sd.getUserId()))) {
+				Appointment app = getDao().getByRoom(sd.getUserId(), roomid);
 				if (app != null) {
 					return new AppointmentDTO(app);
 				}
@@ -258,9 +247,9 @@ public class CalendarWebService {
 	@Path("/title/{title}")
 	public List<AppointmentDTO> getByTitle(@QueryParam("sid") @WebParam(name="sid") String sid, @PathParam("title") @WebParam(name="title") String title) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) {
-				return AppointmentDTO.list(appointmentDao.searchAppointmentsByTitle(sd.getUserId(), title));
+			Sessiondata sd = check(sid);
+			if (AuthLevelUtil.hasUserLevel(getRights(sd.getUserId()))) {
+				return AppointmentDTO.list(getDao().searchAppointmentsByTitle(sd.getUserId(), title));
 			} else {
 				throw new ServiceException("Insufficient permissions"); //TODO code -26
 			}
@@ -291,7 +280,8 @@ public class CalendarWebService {
 		log.debug("save SID:" + sid);
 
 		try {
-			Sessiondata sd = sessionDao.check(sid);
+			UserDao userDao = getUserDao();
+			Sessiondata sd = check(sid);
 			log.debug("save userId:" + sd);
 			User u = userDao.get(sd.getUserId());
 			if (!AuthLevelUtil.hasWebServiceLevel(u.getRights())
@@ -304,15 +294,16 @@ public class CalendarWebService {
 			}
 			//TODO check if objects passed with IDs are correct
 			if (AuthLevelUtil.hasUserLevel(u.getRights())) {
-				Appointment a = appointment.get(userDao, appointmentDao, u);
+				AppointmentDao dao = getDao();
+				Appointment a = appointment.get(userDao, dao, u);
 				if (a.getRoom().getId() != null) {
 					if (a.getRoom().isAppointment()) {
 						a.getRoom().setIspublic(false);
 					} else {
-						a.setRoom(roomDao.get(a.getRoom().getId()));
+						a.setRoom(getRoomDao().get(a.getRoom().getId()));
 					}
 				}
-				return new AppointmentDTO(appointmentDao.update(a, u.getId()));
+				return new AppointmentDTO(dao.update(a, u.getId()));
 			} else {
 				log.error("save : wrong user level");
 				throw new ServiceException("Insufficient permissions"); //TODO code -26
@@ -346,10 +337,11 @@ public class CalendarWebService {
 	@Path("/{id}")
 	public ServiceResult delete(@QueryParam("sid") @WebParam(name="sid") String sid, @PathParam("id") @WebParam(name="id") Long id) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			Set<Right> rights = userDao.getRights(sd.getUserId());
+			Sessiondata sd = check(sid);
+			Set<Right> rights = getRights(sd.getUserId());
 
-			Appointment a = appointmentDao.get(id);
+			AppointmentDao dao = getDao();
+			Appointment a = dao.get(id);
 			if (AuthLevelUtil.hasWebServiceLevel(rights) || AuthLevelUtil.hasAdminLevel(rights)) {
 				// fine
 			} else if (AuthLevelUtil.hasUserLevel(rights)) {
@@ -360,7 +352,7 @@ public class CalendarWebService {
 			} else {
 				throw new ServiceException("Not allowed to preform that action, Authenticate the SID first");
 			}
-			appointmentDao.delete(a, sd.getUserId());
+			dao.delete(a, sd.getUserId());
 
 			return new ServiceResult(id, "Deleted", Type.SUCCESS);
 		} catch (ServiceException err) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java
index f5a0a1a..87a00db 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java
@@ -35,13 +35,11 @@ import javax.ws.rs.core.MediaType;
 import org.apache.cxf.feature.Features;
 import org.apache.openmeetings.db.dao.basic.ErrorDao;
 import org.apache.openmeetings.db.dao.label.LabelDao;
-import org.apache.openmeetings.db.dao.server.SessiondataDao;
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.entity.basic.ErrorValue;
 import org.apache.openmeetings.db.entity.server.Sessiondata;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  *
@@ -54,14 +52,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 @Features(features = "org.apache.cxf.feature.LoggingFeature")
 @Produces({MediaType.APPLICATION_JSON})
 @Path("/error")
-public class ErrorWebService {
+public class ErrorWebService extends BaseWebService {
 	private static final Logger log = Red5LoggerFactory.getLogger(ErrorWebService.class, webAppRootKey);
 
-	@Autowired
-	private ErrorDao errorDao;
-	@Autowired
-	private SessiondataDao sessionDao;
-
 	/**
 	 * loads an Error-Object. If a Method returns a negative Result, its an
 	 * Error-id, it needs a languageId to specify in which language you want to
@@ -81,7 +74,7 @@ public class ErrorWebService {
 	public ServiceResult get(@WebParam(name="id") @PathParam("id") long id, @WebParam(name="lang") @PathParam("lang") long lang) {
 		try {
 			if (id < 0) {
-				ErrorValue eValues = errorDao.get(-1 * id);
+				ErrorValue eValues = getBean(ErrorDao.class).get(-1 * id);
 				if (eValues != null) {
 					log.debug("eValues.getLabelId() = " + eValues.getLabelId());
 					log.debug("eValues.getErrorType() = " + eValues.getType());
@@ -105,7 +98,7 @@ public class ErrorWebService {
 	@Path("/report/")
 	public void report(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="message") @QueryParam("message") String message) {
 		if (sid != null && message != null) {
-			Sessiondata sd = sessionDao.check(sid);
+			Sessiondata sd = check(sid);
 			if (sd.getId() != null) {
 				log.error("[CLIENT MESSAGE] " + message);
 			}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/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 d4e8326..bcadbff 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
@@ -44,8 +44,6 @@ import org.apache.cxf.feature.Features;
 import org.apache.cxf.jaxrs.ext.multipart.Multipart;
 import org.apache.openmeetings.core.data.file.FileProcessor;
 import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
-import org.apache.openmeetings.db.dao.server.SessiondataDao;
-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.file.FileExplorerItemDTO;
@@ -58,7 +56,6 @@ import org.apache.openmeetings.util.process.ConverterProcessResultList;
 import org.apache.openmeetings.webservice.error.ServiceException;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  *
@@ -72,17 +69,12 @@ import org.springframework.beans.factory.annotation.Autowired;
 @Features(features = "org.apache.cxf.feature.LoggingFeature")
 @Produces({MediaType.APPLICATION_JSON})
 @Path("/file")
-public class FileWebService {
+public class FileWebService extends BaseWebService {
 	private static final Logger log = Red5LoggerFactory.getLogger(FileWebService.class, webAppRootKey);
 
-	@Autowired
-	private SessiondataDao sessionDao;
-	@Autowired
-	private UserDao userDao;
-	@Autowired
-	private FileExplorerItemDao fileDao;
-	@Autowired
-	private FileProcessor fileProcessor;
+	private static FileExplorerItemDao getDao() {
+		return getBean(FileExplorerItemDao.class);
+	}
 
 	/**
 	 * deletes files or folders based on it id
@@ -98,18 +90,19 @@ public class FileWebService {
 	@Path("/{id}")
 	public ServiceResult delete(@QueryParam("sid") @WebParam(name="sid") String sid, @PathParam("id") @WebParam(name="id") Long id) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
+			Sessiondata sd = check(sid);
 
-			FileExplorerItem f = fileDao.get(id);
+			FileExplorerItemDao dao = getDao();
+			FileExplorerItem f = dao.get(id);
 			if (f == null) {
 				return new ServiceResult(-1L, "Bad id", Type.ERROR);
 			}
 			Long userId = sd.getUserId();
-			Set<Right> rights = userDao.getRights(userId);
+			Set<Right> rights = getRights(userId);
 			if (AuthLevelUtil.hasWebServiceLevel(rights)
 				|| (AuthLevelUtil.hasUserLevel(rights) && userId.equals(f.getOwnerId())))
 			{
-				fileDao.delete(f);
+				dao.delete(f);
 				return new ServiceResult(id, "Deleted", Type.SUCCESS);
 			} else {
 				return NO_PERMISSION;
@@ -141,11 +134,10 @@ public class FileWebService {
 			)
 	{
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
-				FileExplorerItem f = fileDao.get(externalId, externalType);
-				fileDao.delete(f);
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(sid))) {
+				FileExplorerItemDao dao = getDao();
+				FileExplorerItem f = dao.get(externalId, externalType);
+				dao.delete(f);
 				return new ServiceResult(f.getId(), "Deleted", Type.SUCCESS);
 			}
 		} catch (Exception err) {
@@ -177,14 +169,14 @@ public class FileWebService {
 			) throws ServiceException
 	{
 		try {
-			Sessiondata sd = sessionDao.check(sid);
+			Sessiondata sd = check(sid);
 			Long userId = sd.getUserId();
 
 			FileExplorerItem f = file == null ? null : file.get();
 			if (f == null || f.getId() != null) {
 				throw new ServiceException("Bad id");//TODO err code -1 ????
 			}
-			Set<Right> rights = userDao.getRights(userId);
+			Set<Right> rights = getRights(userId);
 			/* FIXME TODO permissions
 			if (AuthLevelUtil.hasWebServiceLevel(rights)
 					|| (AuthLevelUtil.hasUserLevel(rights) && userId.equals(f.getOwnerId())))*/
@@ -194,12 +186,12 @@ public class FileWebService {
 				//TODO permissions
 				if (stream != null) {
 					//TODO attachment
-					ConverterProcessResultList result = fileProcessor.processFile(f, stream);
+					ConverterProcessResultList result = getBean(FileProcessor.class).processFile(f, stream);
 					if (result.hasError()) {
 						throw new ServiceException(result.getLogMessage());
 					}
 				} else {
-					f = fileDao.update(f);
+					f = getDao().update(f);
 				}
 				return new FileExplorerItemDTO(f);
 			} else {
@@ -231,21 +223,22 @@ public class FileWebService {
 			) throws ServiceException
 	{
 		try {
-			Sessiondata sd = sessionDao.check(sid);
+			Sessiondata sd = check(sid);
 			Long userId = sd.getUserId();
 
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
+			if (AuthLevelUtil.hasUserLevel(getRights(userId))) {
 				log.debug("roomId " + roomId);
 
+				FileExplorerItemDao dao = getDao();
 				FileExplorerObject fileExplorerObject = new FileExplorerObject();
 
 				// Home File List
-				List<FileExplorerItem> fList = fileDao.getByOwner(userId);
-				fileExplorerObject.setUser(fList, fileDao.getSize(fList));
+				List<FileExplorerItem> fList = dao.getByOwner(userId);
+				fileExplorerObject.setUser(fList, dao.getSize(fList));
 
 				// Public File List
-				List<FileExplorerItem> rList = fileDao.getByRoom(roomId);
-				fileExplorerObject.setRoom(rList, fileDao.getSize(rList));
+				List<FileExplorerItem> rList = dao.getByRoom(roomId);
+				fileExplorerObject.setRoom(rList, dao.getSize(rList));
 
 				return fileExplorerObject;
 			} else {
@@ -281,21 +274,22 @@ public class FileWebService {
 			) throws ServiceException
 	{
 		try {
-			Sessiondata sd = sessionDao.check(sid);
+			Sessiondata sd = check(sid);
 			Long userId = sd.getUserId();
 
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
+			if (AuthLevelUtil.hasUserLevel(getRights(userId))) {
 				log.debug("getRoomByParent " + parentId);
 
+				FileExplorerItemDao dao = getDao();
 				List<FileExplorerItem> list = new ArrayList<>();
 				if (parentId < 0) {
 					if (parentId == -1) {
-						list = fileDao.getByOwner(userId);
+						list = dao.getByOwner(userId);
 					} else {
-						list = fileDao.getByRoom(roomId);
+						list = dao.getByRoom(roomId);
 					}
 				} else {
-					list = fileDao.getByParent(parentId);
+					list = dao.getByParent(parentId);
 				}
 				return FileExplorerItemDTO.list(list);
 			} else {
@@ -330,12 +324,11 @@ public class FileWebService {
 			, @WebParam(name="name") @PathParam("name") String name) throws ServiceException
 	{
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) {
+			if (AuthLevelUtil.hasUserLevel(getRights(sid))) {
 				// FIXME TODO: check if this user is allowed to change this file
 
 				log.debug("rename " + id);
-				FileExplorerItem f = fileDao.rename(id, name);
+				FileExplorerItem f = getDao().rename(id, name);
 				return f == null ? null : new FileExplorerItemDTO(f);
 			} else {
 				throw new ServiceException("Insufficient permissions"); //TODO code -26
@@ -369,12 +362,12 @@ public class FileWebService {
 			, @WebParam(name="parentid") @PathParam("parentid") long parentId) throws ServiceException
 	{
 		try {
-			Sessiondata sd = sessionDao.check(sid);
+			Sessiondata sd = check(sid);
 			Long userId = sd.getUserId();
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
+			if (AuthLevelUtil.hasUserLevel(getRights(userId))) {
 				// FIXME TODO A test is required that checks if the user is allowed to move the file
 				log.debug("move " + id);
-				FileExplorerItem f = fileDao.move(id, parentId, userId, roomId);
+				FileExplorerItem f = getDao().move(id, parentId, userId, roomId);
 				return f == null ? null : new FileExplorerItemDTO(f);
 			} else {
 				throw new ServiceException("Insufficient permissions"); //TODO code -26

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/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 16431cd..e7209a2 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
@@ -41,7 +41,6 @@ import javax.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
 import org.apache.openmeetings.db.dao.room.RoomDao;
-import org.apache.openmeetings.db.dao.server.SessiondataDao;
 import org.apache.openmeetings.db.dao.user.GroupDao;
 import org.apache.openmeetings.db.dao.user.GroupUserDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
@@ -59,7 +58,6 @@ import org.apache.openmeetings.db.util.AuthLevelUtil;
 import org.apache.openmeetings.webservice.error.ServiceException;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  *
@@ -73,19 +71,12 @@ import org.springframework.beans.factory.annotation.Autowired;
 @Features(features = "org.apache.cxf.feature.LoggingFeature")
 @Produces({MediaType.APPLICATION_JSON})
 @Path("/group")
-public class GroupWebService {
+public class GroupWebService extends BaseWebService {
 	private static final Logger log = Red5LoggerFactory.getLogger(GroupWebService.class, webAppRootKey);
 
-	@Autowired
-	private GroupDao groupDao;
-	@Autowired
-	private GroupUserDao groupUserDao;
-	@Autowired
-	private UserDao userDao;
-	@Autowired
-	private RoomDao roomDao;
-	@Autowired
-	private SessiondataDao sessionDao;
+	private static GroupDao getDao() {
+		return getBean(GroupDao.class);
+	}
 
 	/**
 	 * add a new group
@@ -100,12 +91,12 @@ public class GroupWebService {
 	@POST
 	@Path("/")
 	public ServiceResult add(@QueryParam("sid") @WebParam(name="sid") String sid, @QueryParam("name") @WebParam(name="name") String name) throws ServiceException {
-		Sessiondata sd = sessionDao.check(sid);
+		Sessiondata sd = check(sid);
 		Long userId = sd.getUserId();
-		if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
+		if (AuthLevelUtil.hasWebServiceLevel(getRights(userId))) {
 			Group o = new Group();
 			o.setName(name);
-			return new ServiceResult(groupDao.update(o, userId).getId(), "Success", Type.SUCCESS);
+			return new ServiceResult(getDao().update(o, userId).getId(), "Success", Type.SUCCESS);
 		} else {
 			log.error("Could not create group");
 			return NO_PERMISSION;
@@ -123,9 +114,8 @@ public class GroupWebService {
 	@GET
 	@Path("/")
 	public List<Group> get(@QueryParam("sid") @WebParam(name="sid") String sid) throws ServiceException {
-		Sessiondata sd = sessionDao.check(sid);
-		if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
-			return groupDao.get(0, Integer.MAX_VALUE);
+		if (AuthLevelUtil.hasWebServiceLevel(getRights(sid))) {
+			return getDao().get(0, Integer.MAX_VALUE);
 		} else {
 			log.error("Insufficient permissions");
 			throw new ServiceException("Insufficient permissions"); //TODO code -26
@@ -153,12 +143,13 @@ public class GroupWebService {
 			) throws ServiceException
 	{
 		try {
-			Sessiondata sd = sessionDao.check(sid);
+			Sessiondata sd = check(sid);
 			Long authUserId = sd.getUserId();
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(authUserId))) {
-				if (!groupUserDao.isUserInGroup(id, userid)) {
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(authUserId))) {
+				if (!getBean(GroupUserDao.class).isUserInGroup(id, userid)) {
+					UserDao userDao = getUserDao();
 					User u = userDao.get(userid);
-					u.getGroupUsers().add(new GroupUser(groupDao.get(id), u));
+					u.getGroupUsers().add(new GroupUser(getDao().get(id), u));
 					userDao.update(u, authUserId);
 				}
 				return new ServiceResult(userid, "Success", Type.SUCCESS);
@@ -192,10 +183,11 @@ public class GroupWebService {
 			) throws ServiceException
 	{
 		try {
-			Sessiondata sd = sessionDao.check(sid);
+			Sessiondata sd = check(sid);
 			Long authUserId = sd.getUserId();
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(authUserId))) {
-				if (groupUserDao.isUserInGroup(id, userid)) {
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(authUserId))) {
+				if (getBean(GroupUserDao.class).isUserInGroup(id, userid)) {
+					UserDao userDao = getUserDao();
 					User u = userDao.get(userid);
 					for (Iterator<GroupUser> iter = u.getGroupUsers().iterator(); iter.hasNext(); ) {
 						GroupUser gu = iter.next();
@@ -233,9 +225,10 @@ public class GroupWebService {
 			) throws ServiceException
 	{
 		try {
-			Sessiondata sd = sessionDao.check(sid);
+			Sessiondata sd = check(sid);
 			Long userId = sd.getUserId();
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(userId))) {
+				RoomDao roomDao = getRoomDao();
 				Room r = roomDao.get(roomid);
 				if (r != null) {
 					if (r.getRoomGroups() == null) {
@@ -248,7 +241,7 @@ public class GroupWebService {
 						}
 					}
 					if (!found) {
-						r.getRoomGroups().add(new RoomGroup(groupDao.get(id), r));
+						r.getRoomGroups().add(new RoomGroup(getDao().get(id), r));
 						roomDao.update(r, userId);
 						return new ServiceResult(1L, "Success", Type.SUCCESS);
 					}
@@ -292,14 +285,14 @@ public class GroupWebService {
 			) throws ServiceException
 	{
 		try {
-			Sessiondata sd = sessionDao.check(sid);
 			SearchResult<User> result = new SearchResult<>();
 			result.setObjectName(User.class.getName());
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
-				result.setRecords(groupUserDao.count(id));
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(sid))) {
+				GroupUserDao dao = getBean(GroupUserDao.class);
+				result.setRecords(dao.count(id));
 				result.setResult(new ArrayList<User>());
 				String order = isAlphanumeric(orderby) ? orderby : "id";
-				for (GroupUser ou : groupUserDao.get(id, null, start, max, order + " " + (asc ? "ASC" : "DESC"))) {
+				for (GroupUser ou : dao.get(id, null, start, max, order + " " + (asc ? "ASC" : "DESC"))) {
 					result.getResult().add(ou.getUser());
 				}
 			} else {
@@ -328,11 +321,12 @@ public class GroupWebService {
 	@Path("/{id}")
 	public ServiceResult delete(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="id") @PathParam("id") long id) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
+			Sessiondata sd = check(sid);
 			Long authUserId = sd.getUserId();
 
-			if (AuthLevelUtil.hasAdminLevel(userDao.getRights(authUserId))) {
-				groupDao.delete(groupDao.get(id), authUserId);
+			if (AuthLevelUtil.hasAdminLevel(getRights(authUserId))) {
+				GroupDao dao = getDao();
+				dao.delete(dao.get(id), authUserId);
 
 				return new ServiceResult(id, "Deleted", Type.SUCCESS);
 			} else {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/06d42c9f/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java
index 0120ff8..87c33c2 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java
@@ -36,55 +36,48 @@ import javax.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
 import org.apache.openmeetings.db.dao.record.RecordingDao;
-import org.apache.openmeetings.db.dao.server.SessiondataDao;
-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.record.RecordingDTO;
-import org.apache.openmeetings.db.entity.server.Sessiondata;
 import org.apache.openmeetings.db.util.AuthLevelUtil;
 import org.apache.openmeetings.webservice.error.ServiceException;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
 
 /**
- * 
+ *
  * The Service contains methods to work with recordings
- * 
+ *
  * @author solomax
- * 
+ *
  */
 @WebService(serviceName="org.apache.openmeetings.webservice.RecordingWebService", targetNamespace = TNS)
 @Features(features = "org.apache.cxf.feature.LoggingFeature")
 @Produces({MediaType.APPLICATION_JSON})
 @Path("/record")
-public class RecordingWebService {
+public class RecordingWebService extends BaseWebService {
 	private static final Logger log = Red5LoggerFactory.getLogger(RecordingWebService.class, webAppRootKey);
-	@Autowired
-	private SessiondataDao sessionDao;
-	@Autowired
-	private UserDao userDao;
-	@Autowired
-	private RecordingDao recordingDao;
 
+	private static RecordingDao getDao() {
+		return getBean(RecordingDao.class);
+	}
 	/**
 	 * Deletes a flv recording
-	 * 
+	 *
 	 * @param sid
 	 *            The SID of the User. This SID must be marked as Loggedin
 	 * @param id
 	 *            the id of the recording
-	 *            
+	 *
 	 * @throws {@link ServiceException} in case of any error
 	 */
 	@DELETE
 	@Path("/{id}")
 	public ServiceResult delete(@QueryParam("sid") @WebParam(name="sid") String sid, @PathParam("id") @WebParam(name="id") Long id) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
-				recordingDao.delete(recordingDao.get(id));
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(sid))) {
+				RecordingDao dao = getDao();
+				dao.delete(dao.get(id));
 				return new ServiceResult(id, "Deleted", Type.SUCCESS);
 			} else {
 				throw new ServiceException("Not allowed to preform that action, Authenticate the SID first");
@@ -99,11 +92,11 @@ public class RecordingWebService {
 
 	/**
 	 * Gets a list of flv recordings
-	 * 
+	 *
 	 * @param sid The SID of the User. This SID must be marked as Loggedin
 	 * @param externalId the externalUserId
 	 * @param externalType the externalUserType
-	 *            
+	 *
 	 * @return - list of flv recordings
 	 * @throws ServiceException
 	 */
@@ -114,9 +107,8 @@ public class RecordingWebService {
 			, @PathParam("externaltype") @WebParam(name="externaltype") String externalType
 			, @PathParam("externalid") @WebParam(name="externalid") String externalId) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
-				return RecordingDTO.list(recordingDao.getByExternalId(externalId, externalType));
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(sid))) {
+				return RecordingDTO.list(getDao().getByExternalId(externalId, externalType));
 			} else {
 				throw new ServiceException("Not allowed to preform that action, Authenticate the SID first");
 			}
@@ -130,7 +122,7 @@ public class RecordingWebService {
 
 	/**
 	 * Gets a list of flv recordings
-	 * 
+	 *
 	 * @param sid
 	 *            The SID of the User. This SID must be marked as Loggedin
 	 * @param externalType
@@ -144,9 +136,8 @@ public class RecordingWebService {
 	public List<RecordingDTO> getExternalByType(@WebParam(name="sid") @QueryParam("sid") String sid
 			, @PathParam("externaltype") @WebParam(name="externaltype") String externalType) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
-				return RecordingDTO.list(recordingDao.getByExternalType(externalType));
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(sid))) {
+				return RecordingDTO.list(getDao().getByExternalType(externalType));
 			} else {
 				throw new ServiceException("Not allowed to preform that action, Authenticate the SID first");
 			}
@@ -160,7 +151,7 @@ public class RecordingWebService {
 
 	/**
 	 * Get list of recordings
-	 * 
+	 *
 	 * @param sid
 	 *            The SID of the User. This SID must be marked as Loggedin
 	 * @param roomId
@@ -174,9 +165,8 @@ public class RecordingWebService {
 	public List<RecordingDTO> getExternalByRoom(@WebParam(name="sid") @QueryParam("sid") String sid
 			, @PathParam("roomid") @WebParam(name="roomid") Long roomId) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
-				return RecordingDTO.list(recordingDao.getByRoomId(roomId));
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(sid))) {
+				return RecordingDTO.list(getDao().getByRoomId(roomId));
 			} else {
 				throw new ServiceException("Not allowed to preform that action, Authenticate the SID first");
 			}