[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"); }
