[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 <[email protected]>
Authored: Sat Jul 8 21:38:44 2017 +0700
Committer: Maxim Solodovnik <[email protected]>
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("[email protected]", 
"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");
                        }

Reply via email to