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 2018/03/09 16:09:53 UTC

[openmeetings] branch master updated: [OPENMEETINGS-1649] tests should be fixed

This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new a9f09fc  [OPENMEETINGS-1649] tests should be fixed
a9f09fc is described below

commit a9f09fc71609387b5e01eb9afd707d0b42d430af
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Fri Mar 9 23:09:43 2018 +0700

    [OPENMEETINGS-1649] tests should be fixed
---
 openmeetings-core/pom.xml                          |  5 --
 openmeetings-web/pom.xml                           |  1 +
 .../apache/openmeetings/web/app/Application.java   |  5 +-
 openmeetings-web/src/main/webapp/WEB-INF/web.xml   |  2 +-
 .../apache/openmeetings/AbstractWicketTester.java  | 32 ++++++++---
 .../web/pages/install/TestInstall.java             |  4 +-
 .../webservice/AbstractWebServiceTest.java         |  7 ++-
 .../openmeetings/webservice/BaseWebService.java    | 62 +++++++---------------
 .../webservice/CalendarWebService.java             | 26 ++++-----
 .../openmeetings/webservice/FileWebService.java    | 39 +++++++-------
 .../openmeetings/webservice/GroupWebService.java   | 33 +++++-------
 .../webservice/RecordingWebService.java            | 16 +++---
 .../openmeetings/webservice/RoomWebService.java    | 40 +++++++-------
 .../openmeetings/webservice/UserWebService.java    | 32 ++++++-----
 .../openmeetings/webservice/TestBaseService.java   | 14 ++---
 pom.xml                                            |  2 +-
 16 files changed, 156 insertions(+), 164 deletions(-)

diff --git a/openmeetings-core/pom.xml b/openmeetings-core/pom.xml
index bc1be22..e7ec3aa 100644
--- a/openmeetings-core/pom.xml
+++ b/openmeetings-core/pom.xml
@@ -93,11 +93,6 @@
 		</dependency>
 		<dependency>
 			<groupId>org.springframework</groupId>
-			<artifactId>spring-websocket</artifactId>
-			<version>${spring.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework</groupId>
 			<artifactId>spring-webmvc</artifactId>
 			<version>${spring.version}</version>
 		</dependency>
diff --git a/openmeetings-web/pom.xml b/openmeetings-web/pom.xml
index c51d872..60a7718 100644
--- a/openmeetings-web/pom.xml
+++ b/openmeetings-web/pom.xml
@@ -465,6 +465,7 @@
 						<backups.dir>${old-backups.dir}</backups.dir>
 						<catalina.useNaming>true</catalina.useNaming>
 						<current_openmeetings_log_dir>${project.build.directory}</current_openmeetings_log_dir>
+						<current_openmeetings_context_name>openmeetings</current_openmeetings_context_name>
 					</systemPropertyVariables>
 					<skip>${maven.test.skip}</skip>
 				</configuration>
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 cf51be5..01b3587 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
@@ -121,6 +121,7 @@ import org.apache.wicket.validation.validator.UrlValidator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
 import org.springframework.stereotype.Component;
 import org.springframework.web.context.WebApplicationContext;
 import org.wicketstuff.dashboard.WidgetRegistry;
@@ -161,6 +162,8 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 	private ITopic<IClusterWsMessage> hazelWsTopic;
 
 	@Autowired
+	private ApplicationContext ctx;
+	@Autowired
 	private ConfigurationDao cfgDao;
 	@Autowired
 	private RecordingDao recordingDao;
@@ -272,7 +275,7 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 		mountResource("/room/preview/${id}", new RoomPreviewResourceReference());
 		mountResource("/profile/${id}", new ProfileImageResourceReference());
 		mountResource("/group/${id}", new GroupLogoResourceReference());
-		getComponentInstantiationListeners().add(new SpringComponentInjector(this));
+		getComponentInstantiationListeners().add(new SpringComponentInjector(this, ctx, true));
 
 		log.debug("InitComponent::PostConstruct");
 		try {
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/web.xml b/openmeetings-web/src/main/webapp/WEB-INF/web.xml
index 93f9a2a..1a3fdc7 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/web.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/web.xml
@@ -93,7 +93,7 @@
 			<http-method>GET</http-method>
 			<http-method>POST</http-method>
 		</web-resource-collection>
-		<!-- no auth-constraint tag here -->
+		<!-- no auth-constraint means everybody allowed -->
 	</security-constraint>
 	<security-constraint>
 		<web-resource-collection>
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractWicketTester.java b/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractWicketTester.java
index 6d5015d..14847db 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractWicketTester.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractWicketTester.java
@@ -19,6 +19,7 @@
 package org.apache.openmeetings;
 
 import static org.apache.openmeetings.db.util.ApplicationHelper.ensureApplication;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.getWicketApplicationName;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.setInitComplete;
 import static org.apache.wicket.util.string.Strings.escapeMarkup;
 import static org.junit.Assert.assertEquals;
@@ -33,23 +34,28 @@ import java.util.Locale;
 import java.util.function.Consumer;
 
 import javax.servlet.ServletContext;
+import javax.servlet.ServletContextEvent;
 
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.User.Type;
+import org.apache.openmeetings.util.OMContextListener;
 import org.apache.openmeetings.util.OmException;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.pages.MainPage;
+import org.apache.wicket.RuntimeConfigurationType;
+import org.apache.wicket.ThreadContext;
 import org.apache.wicket.behavior.AbstractAjaxBehavior;
 import org.apache.wicket.feedback.ExactLevelFeedbackMessageFilter;
 import org.apache.wicket.feedback.FeedbackMessage;
-import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.protocol.http.mock.MockServletContext;
 import org.apache.wicket.protocol.ws.util.tester.WebSocketTester;
 import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.tester.WicketTester;
 import org.junit.Assert;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.context.support.XmlWebApplicationContext;
 
 import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog;
@@ -61,12 +67,26 @@ public class AbstractWicketTester extends AbstractJUnitDefaults {
 	public static final String PATH_MENU = "main-container:main:topControls:menu:menu";
 	protected WicketTester tester;
 
-	public static WicketTester getWicketTester() {
-		return getWicketTester(-1);
+	@Autowired
+	private Application app;
+
+	public static WicketTester getWicketTester(Application app) {
+		return getWicketTester(app, -1);
 	}
 
-	public static WicketTester getWicketTester(long langId) {
-		WebApplication app = (WebApplication)ensureApplication(langId);
+	public static WicketTester getWicketTester(Application app, long langId) {
+		if (app.getName() == null) {
+			//FIXME TODO re-use this for templates
+			app.setName(getWicketApplicationName());
+			app.setServletContext(new MockServletContext(app, null));
+			app.setConfigurationType(RuntimeConfigurationType.DEPLOYMENT);
+			ServletContext sc = app.getServletContext();
+			OMContextListener omcl = new OMContextListener();
+			omcl.contextInitialized(new ServletContextEvent(sc));
+			ThreadContext.setApplication(app);
+			app.initApplication();
+		}
+		ensureApplication(langId); // to ensure WebSession is attached
 
 		WicketTester tester = new WicketTester(app, app.getServletContext());
 		setInitComplete(true);
@@ -96,7 +116,7 @@ public class AbstractWicketTester extends AbstractJUnitDefaults {
 	@Override
 	public void setUp() throws Exception {
 		super.setUp();
-		tester = getWicketTester();
+		tester = getWicketTester(app);
 		assertNotNull("Web session should not be null", WebSession.get());
 		Locale[] locales = Locale.getAvailableLocales();
 		tester.getSession().setLocale(locales[rnd.nextInt(locales.length)]);
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/install/TestInstall.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/install/TestInstall.java
index 15dbada..961bd97 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/install/TestInstall.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/install/TestInstall.java
@@ -28,6 +28,7 @@ import static org.apache.openmeetings.AbstractWicketTester.checkErrors;
 import static org.apache.openmeetings.AbstractWicketTester.countErrors;
 import static org.apache.openmeetings.AbstractWicketTester.getButtonBehavior;
 import static org.apache.openmeetings.AbstractWicketTester.getWicketTester;
+import static org.apache.openmeetings.db.util.ApplicationHelper.ensureApplication;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_APP_NAME;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.setWicketApplicationName;
 import static org.junit.Assert.assertFalse;
@@ -44,6 +45,7 @@ import java.util.TimeZone;
 import org.apache.openmeetings.AbstractSpringTest;
 import org.apache.openmeetings.AbstractWicketTester;
 import org.apache.openmeetings.util.crypt.SCryptImplementation;
+import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.wicket.behavior.AbstractAjaxBehavior;
 import org.apache.wicket.util.tester.FormTester;
@@ -78,7 +80,7 @@ public class TestInstall {
 		setWicketApplicationName(DEFAULT_APP_NAME);
 		tempFolder = Files.createTempDirectory("omtempdb").toFile();
 		setDerbyHome(tempFolder);
-		tester = getWicketTester();
+		tester = getWicketTester((Application)ensureApplication(-1L));
 		assertNotNull("Web session should not be null", WebSession.get());
 		Locale[] locales = Locale.getAvailableLocales();
 		tester.getSession().setLocale(locales[rnd.nextInt(locales.length)]);
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/AbstractWebServiceTest.java b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/AbstractWebServiceTest.java
index 6490105..6e3ec32 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/AbstractWebServiceTest.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/AbstractWebServiceTest.java
@@ -52,6 +52,7 @@ import org.apache.openmeetings.db.dto.room.RoomDTO;
 import org.apache.openmeetings.db.dto.user.UserDTO;
 import org.apache.openmeetings.db.entity.file.BaseFileItem;
 import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.webservice.util.AppointmentMessageBodyReader;
 import org.apache.wicket.util.tester.WicketTester;
@@ -59,6 +60,7 @@ import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
+import org.springframework.beans.factory.annotation.Autowired;
 
 public class AbstractWebServiceTest extends AbstractJUnitDefaults {
 	private static Tomcat tomcat;
@@ -72,6 +74,9 @@ public class AbstractWebServiceTest extends AbstractJUnitDefaults {
 	public static final long TIMEOUT = 5 * 60 * 1000;
 	protected WicketTester tester;
 
+	@Autowired
+	private Application app;
+
 	public static WebClient getClient(String url) {
 		WebClient c = WebClient.create(url, Arrays.asList(new AppointmentMessageBodyReader()))
 				.accept("application/json").type("application/json");
@@ -119,7 +124,7 @@ public class AbstractWebServiceTest extends AbstractJUnitDefaults {
 	@Override
 	public void setUp() throws Exception {
 		super.setUp();
-		tester = getWicketTester();
+		tester = getWicketTester(app);
 		assertNotNull("Web session should not be null", WebSession.get());
 	}
 
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
index d790264..d6da8f2 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/BaseWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/BaseWebService.java
@@ -18,7 +18,6 @@
  */
 package org.apache.openmeetings.webservice;
 
-import static org.apache.openmeetings.util.OpenmeetingsVariables.getWicketApplicationName;
 import static org.apache.openmeetings.webservice.error.ServiceException.NO_PERMISSION;
 
 import java.util.HashSet;
@@ -26,7 +25,6 @@ import java.util.Set;
 import java.util.function.Function;
 import java.util.function.Predicate;
 
-import org.apache.openmeetings.IApplication;
 import org.apache.openmeetings.db.dao.file.FileItemDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
@@ -36,76 +34,52 @@ 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.webservice.error.ServiceException;
-import org.apache.wicket.Application;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 
 public abstract class BaseWebService {
 	private static final Logger log = LoggerFactory.getLogger(BaseWebService.class);
 
-	static IApplication getApp() {
-		return (IApplication)Application.get(getWicketApplicationName());
-	}
-
-	static <T> T getBean(Class<T> clazz) {
-		T b = null;
-		try {
-			b = getApp()._getOmBean(clazz);
-		} catch (Exception e) {
-			throw new ServiceException(e.getMessage());
-		}
-		if (b == null) {
-			throw new ServiceException("");
-		}
-		return b;
-	}
-
-	static SessiondataDao getSessionDao() {
-		return getBean(SessiondataDao.class);
-	}
+	@Autowired
+	protected SessiondataDao sessionDao;
+	@Autowired
+	protected UserDao userDao;
+	@Autowired
+	protected RoomDao roomDao;
+	@Autowired
+	protected FileItemDao fileDao;
 
 	// this one is fail safe
-	static Sessiondata check(String sid) {
+	Sessiondata check(String sid) {
 		try {
-			return getSessionDao().check(sid);
-		} catch (ServiceException e) {
+			return sessionDao.check(sid);
+		} catch (Exception e) {
 			log.debug("Exception while checking sid", e);
 		}
 		return new Sessiondata();
 	}
 
-	static Set<Right> getRights(String sid) {
+	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 FileItemDao getFileDao() {
-		return getBean(FileItemDao.class);
-	}
-
 	// this one is fail safe
-	static Set<Right> getRights(Long id) {
+	Set<Right> getRights(Long id) {
 		try {
-			return getUserDao().getRights(id);
-		} catch (ServiceException e) {
+			return userDao.getRights(id);
+		} catch (Exception e) {
 			log.debug("Exception while getting rights", e);
 		}
 		return new HashSet<>();
 	}
 
-	static <T> T performCall(String sid, User.Right level, Function<Sessiondata, T> action) {
+	<T> T performCall(String sid, User.Right level, Function<Sessiondata, T> action) {
 		return performCall(sid, sd -> AuthLevelUtil.check(getRights(sd.getUserId()), level), action);
 	}
 
-	static <T> T performCall(String sid, Predicate<Sessiondata> allowed, Function<Sessiondata, T> action) {
+	<T> T performCall(String sid, Predicate<Sessiondata> allowed, Function<Sessiondata, T> action) {
 		try {
 			Sessiondata sd = check(sid);
 			if (allowed.test(sd)) {
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 f292b4c..dd2969a 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
@@ -40,7 +40,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.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.calendar.AppointmentDTO;
@@ -51,6 +50,7 @@ import org.apache.openmeetings.db.util.AuthLevelUtil;
 import org.apache.openmeetings.webservice.error.ServiceException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 /**
@@ -67,9 +67,8 @@ import org.springframework.stereotype.Service;
 public class CalendarWebService extends BaseWebService {
 	private static final Logger log = LoggerFactory.getLogger(CalendarWebService.class);
 
-	private static AppointmentDao getDao() {
-		return getBean(AppointmentDao.class);
-	}
+	@Autowired
+	private AppointmentDao dao;
 	/**
 	 * Load appointments by a start / end range for the current SID
 	 *
@@ -93,7 +92,7 @@ public class CalendarWebService extends BaseWebService {
 				, start == null ? "" : start.getTime()
 				, end == null ? "" : end.getTime());
 		return performCall(sid, User.Right.Room
-				, sd -> AppointmentDTO.list(getDao().getInRange(sd.getUserId(), start.getTime(), end.getTime())));
+				, sd -> AppointmentDTO.list(dao.getInRange(sd.getUserId(), start.getTime(), end.getTime())));
 	}
 
 	/**
@@ -123,7 +122,7 @@ public class CalendarWebService extends BaseWebService {
 				, start == null ? "" : start.getTime()
 				, end == null ? "" : end.getTime());
 		return performCall(sid, User.Right.Soap
-				, sd -> AppointmentDTO.list(getDao().getInRange(userid, start.getTime(), end.getTime())));
+				, sd -> AppointmentDTO.list(dao.getInRange(userid, start.getTime(), end.getTime())));
 	}
 
 	/**
@@ -137,7 +136,7 @@ public class CalendarWebService extends BaseWebService {
 	@Path("/next")
 	public AppointmentDTO next(@QueryParam("sid") @WebParam(name="sid") String sid) {
 		return performCall(sid, User.Right.Room, sd -> {
-			Appointment a = getDao().getNext(sd.getUserId(), new Date());
+			Appointment a = dao.getNext(sd.getUserId(), new Date());
 			return a == null ? null : new AppointmentDTO(a);
 		});
 	}
@@ -156,7 +155,7 @@ public class CalendarWebService extends BaseWebService {
 	@Path("/next/{userid}")
 	public AppointmentDTO nextForUser(@QueryParam("sid") @WebParam(name="sid") String sid, @PathParam("userid") @WebParam(name="userid") long userid) {
 		return performCall(sid, User.Right.Soap, sd -> {
-			Appointment a = getDao().getNext(userid, new Date());
+			Appointment a = dao.getNext(userid, new Date());
 			return a == null ? null : new AppointmentDTO(a);
 		});
 	}
@@ -175,7 +174,7 @@ public class CalendarWebService extends BaseWebService {
 	@Path("/room/{roomid}")
 	public AppointmentDTO getByRoom(@QueryParam("sid") @WebParam(name="sid") String sid, @PathParam("roomid") @WebParam(name="roomid") long roomid) {
 		return performCall(sid, User.Right.Room, sd -> {
-			Appointment a = getDao().getByRoom(sd.getUserId(), roomid);
+			Appointment a = dao.getByRoom(sd.getUserId(), roomid);
 			return a == null ? null : new AppointmentDTO(a);
 		});
 	}
@@ -193,7 +192,7 @@ public class CalendarWebService extends BaseWebService {
 	@GET
 	@Path("/title/{title}")
 	public List<AppointmentDTO> getByTitle(@QueryParam("sid") @WebParam(name="sid") String sid, @PathParam("title") @WebParam(name="title") String title) {
-		return performCall(sid, User.Right.Room, sd -> AppointmentDTO.list(getDao().searchByTitle(sd.getUserId(), title)));
+		return performCall(sid, User.Right.Room, sd -> AppointmentDTO.list(dao.searchByTitle(sd.getUserId(), title)));
 	}
 
 	/**
@@ -213,7 +212,6 @@ public class CalendarWebService extends BaseWebService {
 		//Seems to be create
 		log.debug("save SID: {}", sid);
 
-		UserDao userDao = getUserDao();
 		return performCall(sid, sd -> {
 				User u = userDao.get(sd.getUserId());
 				if (!AuthLevelUtil.hasUserLevel(u.getRights())) {
@@ -225,13 +223,12 @@ public class CalendarWebService extends BaseWebService {
 						|| appointment.getOwner().getId().equals(u.getId());
 			}, sd -> {
 				User u = userDao.get(sd.getUserId());
-				AppointmentDao dao = getDao();
-				Appointment a = appointment.get(userDao, getFileDao(), dao, u);
+				Appointment a = appointment.get(userDao, fileDao, dao, u);
 				if (a.getRoom().getId() != null) {
 					if (a.getRoom().isAppointment()) {
 						a.getRoom().setIspublic(false);
 					} else {
-						a.setRoom(getRoomDao().get(a.getRoom().getId()));
+						a.setRoom(roomDao.get(a.getRoom().getId()));
 					}
 				}
 				return new AppointmentDTO(dao.update(a, u.getId()));
@@ -256,7 +253,6 @@ public class CalendarWebService extends BaseWebService {
 	@DELETE
 	@Path("/{id}")
 	public ServiceResult delete(@QueryParam("sid") @WebParam(name="sid") String sid, @PathParam("id") @WebParam(name="id") Long id) {
-		AppointmentDao dao = getDao();
 		Appointment a = dao.get(id);
 		return performCall(sid, sd -> {
 				Set<Right> rights = getRights(sd.getUserId());
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 a06e520..4bce540 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
@@ -40,7 +40,6 @@ import javax.ws.rs.core.MediaType;
 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.FileItemDao;
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
 import org.apache.openmeetings.db.dto.file.FileExplorerObject;
@@ -53,6 +52,7 @@ import org.apache.openmeetings.util.process.ProcessResultList;
 import org.apache.openmeetings.webservice.error.ServiceException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 /**
@@ -71,6 +71,9 @@ import org.springframework.stereotype.Service;
 public class FileWebService extends BaseWebService {
 	private static final Logger log = LoggerFactory.getLogger(FileWebService.class);
 
+	@Autowired
+	private FileProcessor fileProcessor;
+
 	/**
 	 * deletes files or folders based on it id
 	 *
@@ -83,8 +86,7 @@ public class FileWebService extends BaseWebService {
 	@DELETE
 	@Path("/{id}")
 	public ServiceResult delete(@QueryParam("sid") @WebParam(name="sid") String sid, @PathParam("id") @WebParam(name="id") Long id) {
-		FileItemDao dao = getFileDao();
-		FileItem f = dao.get(id);
+		FileItem f = fileDao.get(id);
 		return performCall(sid, sd -> {
 				Long userId = sd.getUserId();
 				Set<Right> rights = getRights(userId);
@@ -95,7 +97,7 @@ public class FileWebService extends BaseWebService {
 				if (f == null) {
 					return new ServiceResult("Bad id", Type.ERROR);
 				}
-				dao.delete(f);
+				fileDao.delete(f);
 				return new ServiceResult("Deleted", Type.SUCCESS);
 			});
 	}
@@ -121,9 +123,8 @@ public class FileWebService extends BaseWebService {
 			)
 	{
 		return performCall(sid, User.Right.Soap, sd -> {
-			FileItemDao dao = getFileDao();
-			FileItem f = dao.get(externalId, externalType);
-			dao.delete(f);
+			FileItem f = fileDao.get(externalId, externalType);
+			fileDao.delete(f);
 			return new ServiceResult("Deleted", Type.SUCCESS);
 		});
 	}
@@ -157,7 +158,7 @@ public class FileWebService extends BaseWebService {
 			f.setInsertedBy(sd.getUserId());
 			if (stream != null) {
 				try {
-					ProcessResultList result = getBean(FileProcessor.class).processFile(f, stream);
+					ProcessResultList result = fileProcessor.processFile(f, stream);
 					if (result.hasError()) {
 						throw new ServiceException(result.getLogMessage());
 					}
@@ -165,7 +166,7 @@ public class FileWebService extends BaseWebService {
 					throw new ServiceException(e.getMessage());
 				}
 			} else {
-				f = getFileDao().update(f);
+				f = fileDao.update(f);
 			}
 			return new FileItemDTO(f);
 		});
@@ -189,16 +190,15 @@ public class FileWebService extends BaseWebService {
 	{
 		log.debug("getRoom::roomId {}", roomId);
 		return performCall(sid, User.Right.Room, sd -> {
-			FileItemDao dao = getFileDao();
 			FileExplorerObject fileExplorerObject = new FileExplorerObject();
 
 			// Home File List
-			List<FileItem> fList = dao.getByOwner(sd.getUserId());
-			fileExplorerObject.setUser(fList, dao.getSize(fList));
+			List<FileItem> fList = fileDao.getByOwner(sd.getUserId());
+			fileExplorerObject.setUser(fList, fileDao.getSize(fList));
 
 			// Public File List
-			List<FileItem> rList = dao.getByRoom(roomId);
-			fileExplorerObject.setRoom(rList, dao.getSize(rList));
+			List<FileItem> rList = fileDao.getByRoom(roomId);
+			fileExplorerObject.setRoom(rList, fileDao.getSize(rList));
 
 			return fileExplorerObject;
 		});
@@ -226,16 +226,15 @@ public class FileWebService extends BaseWebService {
 	{
 		log.debug("getRoomByParent {}", parentId);
 		return performCall(sid, User.Right.Room, sd -> {
-			FileItemDao dao = getFileDao();
 			List<FileItem> list;
 			if (parentId < 0) {
 				if (parentId == -1) {
-					list = dao.getByOwner(sd.getUserId());
+					list = fileDao.getByOwner(sd.getUserId());
 				} else {
-					list = dao.getByRoom(roomId);
+					list = fileDao.getByRoom(roomId);
 				}
 			} else {
-				list = dao.getByParent(parentId);
+				list = fileDao.getByParent(parentId);
 			}
 			return FileItemDTO.list(list);
 		});
@@ -262,7 +261,7 @@ public class FileWebService extends BaseWebService {
 	{
 		log.debug("rename {}", id);
 		return performCall(sid, User.Right.Soap, sd -> {
-			FileItem f = getFileDao().rename(id, name);
+			FileItem f = fileDao.rename(id, name);
 			return f == null ? null : new FileItemDTO(f);
 		});
 	}
@@ -290,7 +289,7 @@ public class FileWebService extends BaseWebService {
 	{
 		log.debug("move {}", id);
 		return performCall(sid, User.Right.Soap, sd -> {
-			FileItem f = getFileDao().move(id, parentId, sd.getUserId(), roomId);
+			FileItem f = fileDao.move(id, parentId, sd.getUserId(), roomId);
 			return f == null ? null : new FileItemDTO(f);
 		});
 	}
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 829e4e8..64999f2 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
@@ -38,10 +38,8 @@ import javax.ws.rs.QueryParam;
 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.user.GroupDao;
 import org.apache.openmeetings.db.dao.user.GroupUserDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.dto.basic.SearchResult;
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
@@ -54,6 +52,7 @@ import org.apache.openmeetings.db.entity.user.GroupUser;
 import org.apache.openmeetings.db.entity.user.User;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 /**
@@ -72,9 +71,10 @@ import org.springframework.stereotype.Service;
 public class GroupWebService extends BaseWebService {
 	private static final Logger log = LoggerFactory.getLogger(GroupWebService.class);
 
-	private static GroupDao getDao() {
-		return getBean(GroupDao.class);
-	}
+	@Autowired
+	private GroupDao groupDao;
+	@Autowired
+	private GroupUserDao groupUserDao;
 
 	/**
 	 * add a new group
@@ -92,7 +92,7 @@ public class GroupWebService extends BaseWebService {
 		return performCall(sid, User.Right.Soap, sd -> {
 			Group o = new Group();
 			o.setName(name);
-			return new ServiceResult(String.valueOf(getDao().update(o, sd.getUserId()).getId()), Type.SUCCESS);
+			return new ServiceResult(String.valueOf(groupDao.update(o, sd.getUserId()).getId()), Type.SUCCESS);
 		});
 	}
 
@@ -106,7 +106,7 @@ public class GroupWebService extends BaseWebService {
 	@GET
 	@Path("/")
 	public List<GroupDTO> get(@QueryParam("sid") @WebParam(name="sid") String sid) {
-		return performCall(sid, User.Right.Soap, sd -> GroupDTO.list(getDao().get(0, Integer.MAX_VALUE)));
+		return performCall(sid, User.Right.Soap, sd -> GroupDTO.list(groupDao.get(0, Integer.MAX_VALUE)));
 	}
 
 	/**
@@ -130,10 +130,9 @@ public class GroupWebService extends BaseWebService {
 			)
 	{
 		return performCall(sid, User.Right.Soap, sd -> {
-			if (!getBean(GroupUserDao.class).isUserInGroup(id, userid)) {
-				UserDao userDao = getUserDao();
+			if (!groupUserDao.isUserInGroup(id, userid)) {
 				User u = userDao.get(userid);
-				u.getGroupUsers().add(new GroupUser(getDao().get(id), u));
+				u.getGroupUsers().add(new GroupUser(groupDao.get(id), u));
 				userDao.update(u, sd.getUserId());
 			}
 			return new ServiceResult(String.valueOf(userid), Type.SUCCESS);
@@ -161,8 +160,7 @@ public class GroupWebService extends BaseWebService {
 			)
 	{
 		return performCall(sid, User.Right.Soap, sd -> {
-			if (getBean(GroupUserDao.class).isUserInGroup(id, userid)) {
-				UserDao userDao = getUserDao();
+			if (groupUserDao.isUserInGroup(id, userid)) {
 				User u = userDao.get(userid);
 				for (Iterator<GroupUser> iter = u.getGroupUsers().iterator(); iter.hasNext(); ) {
 					GroupUser gu = iter.next();
@@ -194,7 +192,6 @@ public class GroupWebService extends BaseWebService {
 			)
 	{
 		return performCall(sid, User.Right.Soap, sd -> {
-			RoomDao roomDao = getRoomDao();
 			Room r = roomDao.get(roomid);
 			if (r != null) {
 				if (r.getGroups() == null) {
@@ -207,7 +204,7 @@ public class GroupWebService extends BaseWebService {
 					}
 				}
 				if (!found) {
-					r.getGroups().add(new RoomGroup(getDao().get(id), r));
+					r.getGroups().add(new RoomGroup(groupDao.get(id), r));
 					roomDao.update(r, sd.getUserId());
 					return new ServiceResult("Success", Type.SUCCESS);
 				}
@@ -247,11 +244,10 @@ public class GroupWebService extends BaseWebService {
 		return performCall(sid, User.Right.Soap, sd -> {
 			SearchResult<User> result = new SearchResult<>();
 			result.setObjectName(User.class.getName());
-			GroupUserDao dao = getBean(GroupUserDao.class);
-			result.setRecords(dao.count(id));
+			result.setRecords(groupUserDao.count(id));
 			result.setResult(new ArrayList<User>());
 			String order = isAlphanumeric(orderby) ? orderby : "id";
-			for (GroupUser ou : dao.get(id, null, start, max, order + " " + (asc ? "ASC" : "DESC"))) {
+			for (GroupUser ou : groupUserDao.get(id, null, start, max, order + " " + (asc ? "ASC" : "DESC"))) {
 				result.getResult().add(ou.getUser());
 			}
 			return new UserSearchResult(result);
@@ -272,8 +268,7 @@ public class GroupWebService extends BaseWebService {
 	@Path("/{id}")
 	public ServiceResult delete(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="id") @PathParam("id") long id) {
 		return performCall(sid, User.Right.Admin, sd -> {
-			GroupDao dao = getDao();
-			dao.delete(dao.get(id), sd.getUserId());
+			groupDao.delete(groupDao.get(id), sd.getUserId());
 
 			return new ServiceResult("Deleted", Type.SUCCESS);
 		});
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 eaa7890..4104986 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
@@ -41,6 +41,7 @@ import org.apache.openmeetings.db.dto.record.RecordingDTO;
 import org.apache.openmeetings.db.entity.user.User;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 /**
@@ -58,9 +59,9 @@ import org.springframework.stereotype.Service;
 public class RecordingWebService extends BaseWebService {
 	private static final Logger log = LoggerFactory.getLogger(RecordingWebService.class);
 
-	private static RecordingDao getDao() {
-		return getBean(RecordingDao.class);
-	}
+	@Autowired
+	private RecordingDao recordingDao;
+
 	/**
 	 * Deletes a flv recording
 	 *
@@ -75,8 +76,7 @@ public class RecordingWebService extends BaseWebService {
 	@Path("/{id}")
 	public ServiceResult delete(@QueryParam("sid") @WebParam(name="sid") String sid, @PathParam("id") @WebParam(name="id") Long id) {
 		return performCall(sid, User.Right.Soap, sd -> {
-			RecordingDao dao = getDao();
-			dao.delete(dao.get(id));
+			recordingDao.delete(recordingDao.get(id));
 			return new ServiceResult("Deleted", Type.SUCCESS);
 		});
 	}
@@ -97,7 +97,7 @@ public class RecordingWebService extends BaseWebService {
 			, @PathParam("externaltype") @WebParam(name="externaltype") String externalType
 			, @PathParam("externalid") @WebParam(name="externalid") String externalId) {
 		log.debug("getExternal:: type {}, id {}", externalType, externalId);
-		return performCall(sid, User.Right.Soap, sd -> RecordingDTO.list(getDao().getByExternalId(externalId, externalType)));
+		return performCall(sid, User.Right.Soap, sd -> RecordingDTO.list(recordingDao.getByExternalId(externalId, externalType)));
 	}
 
 	/**
@@ -114,7 +114,7 @@ public class RecordingWebService extends BaseWebService {
 	@Path("/{externaltype}")
 	public List<RecordingDTO> getExternalByType(@WebParam(name="sid") @QueryParam("sid") String sid
 			, @PathParam("externaltype") @WebParam(name="externaltype") String externalType) {
-		return performCall(sid, User.Right.Soap, sd -> RecordingDTO.list(getDao().getByExternalType(externalType)));
+		return performCall(sid, User.Right.Soap, sd -> RecordingDTO.list(recordingDao.getByExternalType(externalType)));
 	}
 
 	/**
@@ -131,6 +131,6 @@ public class RecordingWebService extends BaseWebService {
 	@Path("/room/{roomid}")
 	public List<RecordingDTO> getExternalByRoom(@WebParam(name="sid") @QueryParam("sid") String sid
 			, @PathParam("roomid") @WebParam(name="roomid") Long roomId) {
-		return performCall(sid, User.Right.Soap, sd -> RecordingDTO.list(getDao().getByRoomId(roomId)));
+		return performCall(sid, User.Right.Soap, sd -> RecordingDTO.list(recordingDao.getByRoomId(roomId)));
 	}
 }
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 eb81dbb..4909497 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
@@ -39,7 +39,6 @@ import javax.ws.rs.core.MediaType;
 import org.apache.cxf.feature.Features;
 import org.apache.openmeetings.core.util.WebSocketHelper;
 import org.apache.openmeetings.db.dao.room.InvitationDao;
-import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.user.IUserManager;
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
@@ -57,6 +56,7 @@ import org.apache.openmeetings.service.room.InvitationManager;
 import org.apache.openmeetings.webservice.error.ServiceException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 /**
@@ -73,6 +73,15 @@ import org.springframework.stereotype.Service;
 public class RoomWebService extends BaseWebService {
 	private static final Logger log = LoggerFactory.getLogger(RoomWebService.class);
 
+	@Autowired
+	private IUserManager userManager;
+	@Autowired
+	private IClientManager clientManager;
+	@Autowired
+	private InvitationDao inviteDao;
+	@Autowired
+	private InvitationManager inviteManager;
+
 	/**
 	 * Returns an Object of Type RoomsList which contains a list of
 	 * Room-Objects. Every Room-Object contains a Roomtype and all informations
@@ -90,7 +99,7 @@ public class RoomWebService extends BaseWebService {
 	@GET
 	@Path("/public/{type}")
 	public List<RoomDTO> getPublic(@QueryParam("sid") @WebParam(name="sid") String sid, @PathParam("type") @WebParam(name="type") String type) {
-		return performCall(sid, User.Right.Room, sd -> RoomDTO.list(getRoomDao().getPublicRooms(Room.Type.valueOf(type))));
+		return performCall(sid, User.Right.Room, sd -> RoomDTO.list(roomDao.getPublicRooms(Room.Type.valueOf(type))));
 	}
 
 	/**
@@ -104,18 +113,17 @@ public class RoomWebService extends BaseWebService {
 	@GET
 	@Path("/{id}")
 	public RoomDTO getRoomById(@QueryParam("sid") @WebParam(name="sid") String sid, @PathParam("id") @WebParam(name="id") Long id) {
-		return performCall(sid, User.Right.Soap, sd -> new RoomDTO(getRoomDao().get(id)));
+		return performCall(sid, User.Right.Soap, sd -> new RoomDTO(roomDao.get(id)));
 	}
 
 	/*
 	 * This method is required to set additional fields on room sub-objects
 	 * for ex: RoomFile.roomId
 	 */
-	private static Room updateRtoRoom(Room r, Long userId) {
+	private Room updateRtoRoom(Room r, Long userId) {
 		if (r.getFiles() == null) {
 			r.setFiles(new ArrayList<>());
 		}
-		RoomDao roomDao = getRoomDao();
 		if (r.getId() == null) {
 			List<RoomFile> files = r.getFiles();
 			r.setFiles(null);
@@ -155,13 +163,12 @@ public class RoomWebService extends BaseWebService {
 			, @PathParam("externalid") @WebParam(name="externalid") String externalId
 			, @WebParam(name="room") @QueryParam("room") RoomDTO room) {
 		return performCall(sid, User.Right.Soap, sd -> {
-			RoomDao roomDao = getRoomDao();
 			Room r = roomDao.getExternal(Room.Type.valueOf(type), externalType, externalId);
 			if (r == null) {
 				if (room == null) {
 					return null;
 				} else {
-					r = room.get(getFileDao());
+					r = room.get(fileDao);
 					r.setExternalType(externalType);
 					r.setExternalId(externalId);
 					r = updateRtoRoom(r, sd.getUserId());
@@ -188,7 +195,7 @@ public class RoomWebService extends BaseWebService {
 	@Path("/")
 	public RoomDTO add(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="room") @FormParam("room") RoomDTO room) {
 		return performCall(sid, User.Right.Soap, sd -> {
-			Room r = room.get(getFileDao());
+			Room r = room.get(fileDao);
 			r = updateRtoRoom(r, sd.getUserId());
 			return new RoomDTO(r);
 		});
@@ -207,7 +214,6 @@ public class RoomWebService extends BaseWebService {
 	@Path("/{id}")
 	public ServiceResult delete(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="id") @PathParam("id") long id) {
 		return performCall(sid, User.Right.Soap, sd -> {
-			RoomDao roomDao = getRoomDao();
 			Room r = roomDao.get(id);
 			if (r == null) {
 				return new ServiceResult("Not found", Type.SUCCESS);
@@ -238,13 +244,12 @@ public class RoomWebService extends BaseWebService {
 	public ServiceResult close(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="id") @PathParam("id") long id) {
 		return performCall(sid, User.Right.Soap, sd -> {
 			Long userId = sd.getUserId();
-			RoomDao roomDao = getRoomDao();
 			Room room = roomDao.get(id);
 			room.setClosed(true);
 
 			roomDao.update(room, userId);
 
-			WebSocketHelper.sendRoom(new RoomMessage(room.getId(),  getUserDao().get(userId),  RoomMessage.Type.roomClosed));
+			WebSocketHelper.sendRoom(new RoomMessage(room.getId(), userDao.get(userId),  RoomMessage.Type.roomClosed));
 
 			return new ServiceResult("Closed", Type.SUCCESS);
 		});
@@ -269,7 +274,6 @@ public class RoomWebService extends BaseWebService {
 	@Path("/open/{id}")
 	public ServiceResult open(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="id") @PathParam("id") long id) {
 		return performCall(sid, User.Right.Soap, sd -> {
-			RoomDao roomDao = getRoomDao();
 			Room room = roomDao.get(id);
 			room.setClosed(false);
 			roomDao.update(room, sd.getUserId());
@@ -294,7 +298,7 @@ public class RoomWebService extends BaseWebService {
 	@Path("/kick/{id}")
 	public ServiceResult kick(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="id") @PathParam("id") long id) {
 		return performCall(sid, User.Right.Soap, sd -> {
-			boolean result = getBean(IUserManager.class).kickUsersByRoomId(id);
+			boolean result = userManager.kickUsersByRoomId(id);
 			return new ServiceResult(result ? "Kicked" : "Not kicked", Type.SUCCESS);
 		});
 	}
@@ -312,14 +316,14 @@ public class RoomWebService extends BaseWebService {
 	public List<RoomCountDTO> counters(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="id") @QueryParam("id") List<Long> ids) {
 		return performCall(sid, User.Right.Soap, sd -> {
 			List<RoomCountDTO> roomBeans = new ArrayList<>();
-			List<Room> rooms = getRoomDao().get(ids);
+			List<Room> rooms = roomDao.get(ids);
 
 			for (Room room : rooms) {
 				RoomCountDTO rCountBean = new RoomCountDTO();
 				rCountBean.setRoomId(room.getId());
 				rCountBean.setRoomName(room.getName());
 				rCountBean.setMaxUser(room.getCapacity());
-				rCountBean.setRoomCount(getBean(IClientManager.class).listByRoom(room.getId()).size());
+				rCountBean.setRoomCount(clientManager.listByRoom(room.getId()).size());
 
 				roomBeans.add(rCountBean);
 			}
@@ -345,13 +349,13 @@ public class RoomWebService extends BaseWebService {
 	{
 		log.debug("[hash] invite {}", invite);
 		return performCall(sid, User.Right.Soap, sd -> {
-			Invitation i = invite.get(sd.getUserId(), getUserDao(), getRoomDao());
-			i = getBean(InvitationDao.class).update(i);
+			Invitation i = invite.get(sd.getUserId(), userDao, roomDao);
+			i = inviteDao.update(i);
 
 			if (i != null) {
 				if (sendmail) {
 					try {
-						getBean(InvitationManager.class).sendInvitationLink(i, MessageType.Create, invite.getSubject(), invite.getMessage(), false);
+						inviteManager.sendInvitationLink(i, MessageType.Create, invite.getSubject(), invite.getMessage(), false);
 					} catch (Exception e) {
 						throw new ServiceException(e.getMessage());
 					}
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 383e79b..7a6d14e 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
@@ -46,8 +46,6 @@ import org.apache.cxf.feature.Features;
 import org.apache.openmeetings.core.util.StrongPasswordValidator;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.server.SOAPLoginDao;
-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.RoomOptionsDTO;
@@ -69,6 +67,7 @@ import org.apache.wicket.validation.Validatable;
 import org.apache.wicket.validation.ValidationError;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 /**
@@ -87,6 +86,15 @@ import org.springframework.stereotype.Service;
 public class UserWebService extends BaseWebService {
 	private static final Logger log = LoggerFactory.getLogger(UserWebService.class);
 
+	@Autowired
+	private ConfigurationDao cfgDao;
+	@Autowired
+	private UserManager userManager;
+	@Autowired
+	private IClientManager clientManager;
+	@Autowired
+	private SOAPLoginDao soapDao;
+
 	/**
 	 * @param user - login or email of Openmeetings user with admin or SOAP-rights
 	 * @param pass - password
@@ -99,12 +107,12 @@ public class UserWebService extends BaseWebService {
 	public ServiceResult login(@WebParam(name="user") @QueryParam("user") String user, @WebParam(name="pass") @QueryParam("pass") String pass) {
 		try {
 			log.debug("Login user");
-			User u = getUserDao().login(user, pass);
+			User u = userDao.login(user, pass);
 			if (u == null) {
 				return new ServiceResult("error.bad.credentials", Type.ERROR);
 			}
 
-			Sessiondata sd = getSessionDao().create(u.getId(), u.getLanguageId());
+			Sessiondata sd = sessionDao.create(u.getId(), u.getLanguageId());
 			log.debug("Login user: {}", u.getId());
 			return new ServiceResult(sd.getSessionId(), Type.SUCCESS);
 		} catch (OmException oe) {
@@ -127,7 +135,7 @@ public class UserWebService extends BaseWebService {
 	@GET
 	@Path("/")
 	public List<UserDTO> get(@WebParam(name="sid") @QueryParam("sid") String sid) {
-		return performCall(sid, User.Right.Soap, sd -> UserDTO.list(getUserDao().getAllUsers()));
+		return performCall(sid, User.Right.Soap, sd -> UserDTO.list(userDao.getAllUsers()));
 	}
 
 	/**
@@ -153,7 +161,6 @@ public class UserWebService extends BaseWebService {
 			)
 	{
 		return performCall(sid, User.Right.Soap, sd -> {
-			UserDao userDao = getUserDao();
 			User testUser = userDao.getExternalUser(user.getExternalId(), user.getExternalType());
 
 			if (testUser != null) {
@@ -171,7 +178,6 @@ public class UserWebService extends BaseWebService {
 			if (user.getLanguageId() == null) {
 				user.setLanguageId(1L);
 			}
-			ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
 			IValidator<String> passValidator = new StrongPasswordValidator(true, getMinPasswdLength(cfgDao), user.get(userDao));
 			Validatable<String> passVal = new Validatable<>(user.getPassword());
 			passValidator.validate(passVal);
@@ -183,7 +189,7 @@ public class UserWebService extends BaseWebService {
 				log.debug("addNewUser::weak password '{}', msg: {}", user.getPassword(), sb);
 				throw new ServiceException(sb.toString());
 			}
-			Object _user = getBean(UserManager.class).registerUser(user.getLogin(), user.getPassword(),
+			Object _user = userManager.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(),
@@ -231,7 +237,6 @@ public class UserWebService extends BaseWebService {
 	@Path("/{id}")
 	public ServiceResult delete(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="id") @PathParam("id") long id) {
 		return performCall(sid, User.Right.Admin, sd -> {
-			UserDao userDao = getUserDao();
 			userDao.delete(userDao.get(id), sd.getUserId());
 
 			return new ServiceResult("Deleted", Type.SUCCESS);
@@ -260,7 +265,6 @@ public class UserWebService extends BaseWebService {
 			)
 	{
 		return performCall(sid, User.Right.Admin, sd -> {
-			UserDao userDao = getUserDao();
 			User user = userDao.getExternalUser(externalId, externalType);
 
 			// Setting user deleted
@@ -305,7 +309,7 @@ public class UserWebService extends BaseWebService {
 
 			log.debug("xmlString " + xmlString);
 
-			String hash = getBean(SOAPLoginDao.class).addSOAPLogin(sid, options.getRoomId(),
+			String hash = soapDao.addSOAPLogin(sid, options.getRoomId(),
 					options.isModerator(), options.isShowAudioVideoTest(), options.isAllowSameURLMultipleTimes(),
 					options.getRecordingId(),
 					options.isAllowRecording()
@@ -316,7 +320,7 @@ public class UserWebService extends BaseWebService {
 					sd.setPermanent(true);
 				}
 				sd.setXml(xmlString);
-				getSessionDao().update(sd);
+				sessionDao.update(sd);
 				return new ServiceResult(hash, Type.SUCCESS);
 			}
 			return UNKNOWN;
@@ -336,7 +340,7 @@ public class UserWebService extends BaseWebService {
 	@Path("/kick/{uid}")
 	public ServiceResult kick(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="uid") @PathParam("uid") String uid) {
 		return performCall(sid, User.Right.Soap, sd -> {
-			boolean success = getBean(IUserManager.class).kickById(uid);
+			boolean success = userManager.kickById(uid);
 
 			return new ServiceResult(Boolean.TRUE.equals(success) ? "kicked" : "not kicked", Type.SUCCESS);
 		});
@@ -354,6 +358,6 @@ public class UserWebService extends BaseWebService {
 	@GET
 	@Path("/count/{roomid}")
 	public ServiceResult count(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="roomid") @PathParam("roomid") Long roomId) {
-		return performCall(sid, User.Right.Soap, sd -> new ServiceResult(String.valueOf(getBean(IClientManager.class).listByRoom(roomId).size()), Type.SUCCESS));
+		return performCall(sid, User.Right.Soap, sd -> new ServiceResult(String.valueOf(clientManager.listByRoom(roomId).size()), Type.SUCCESS));
 	}
 }
diff --git a/openmeetings-webservice/src/test/java/org/apache/openmeetings/webservice/TestBaseService.java b/openmeetings-webservice/src/test/java/org/apache/openmeetings/webservice/TestBaseService.java
index 344fb14..051b965 100644
--- a/openmeetings-webservice/src/test/java/org/apache/openmeetings/webservice/TestBaseService.java
+++ b/openmeetings-webservice/src/test/java/org/apache/openmeetings/webservice/TestBaseService.java
@@ -25,7 +25,6 @@ import static org.junit.Assert.fail;
 
 import java.util.Set;
 
-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.openmeetings.webservice.error.ServiceException;
@@ -44,13 +43,8 @@ public class TestBaseService {
 	}
 
 	@Test
-	public void testGetBeanExc() {
-		checkException(() -> BaseWebService.getBean(UserDao.class));
-	}
-
-	@Test
 	public void testCheck() {
-		Sessiondata sd = BaseWebService.check(null);
+		Sessiondata sd = new BaseWebService() {}.check(null);
 		assertNotNull("NOT null Sessiondata should be returned", sd);
 		assertNull("UserId should be null", sd.getUserId());
 	}
@@ -62,17 +56,17 @@ public class TestBaseService {
 
 	@Test
 	public void testGetRights1() {
-		checkRights(BaseWebService.getRights(1L));
+		checkRights(new BaseWebService() {}.getRights(1L));
 	}
 
 	@Test
 	public void testGetRights2() {
-		checkRights(BaseWebService.getRights(""));
+		checkRights(new BaseWebService() {}.getRights(""));
 	}
 
 	@Test
 	public void testPerformCall() {
-		checkException(() -> BaseWebService.performCall("", sd -> true
+		checkException(() -> new BaseWebService() {}.performCall("", sd -> true
 				, sd -> { throw new RuntimeException("test"); }));
 	}
 }
diff --git a/pom.xml b/pom.xml
index b6340b4..95db933 100644
--- a/pom.xml
+++ b/pom.xml
@@ -64,7 +64,7 @@
 		<red5-client.version>1.0.10-M4</red5-client.version>
 		<spring.version>4.3.14.RELEASE</spring.version>
 		<mina.version>2.0.16</mina.version>
-		<tomcat.version>9.0.5</tomcat.version>
+		<tomcat.version>9.0.6</tomcat.version>
 		<ical4j.version>2.1.5</ical4j.version>
 		<cxf.version>3.2.2</cxf.version>
 		<selenium.version>3.9.1</selenium.version>

-- 
To stop receiving notification emails like this one, please contact
solomax@apache.org.