Repository: openmeetings
Updated Branches:
  refs/heads/master cb0294886 -> 28cac665b


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/28cac665/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/AppointmentLogic.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/AppointmentLogic.java
 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/AppointmentLogic.java
index 380932e..b573a93 100644
--- 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/AppointmentLogic.java
+++ 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/AppointmentLogic.java
@@ -26,15 +26,13 @@ import static 
org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
 import java.util.ArrayList;
 import java.util.Calendar;
-import java.util.Date;
 import java.util.List;
 import java.util.TimeZone;
 
+import org.apache.openmeetings.core.notifier.NotifierService;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
 import org.apache.openmeetings.db.dao.calendar.MeetingMemberDao;
-import org.apache.openmeetings.db.dao.label.LabelDao;
-import org.apache.openmeetings.db.dao.room.IInvitationManager;
 import org.apache.openmeetings.db.dao.room.InvitationDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
@@ -42,17 +40,16 @@ import 
org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.db.entity.calendar.Appointment.Reminder;
 import org.apache.openmeetings.db.entity.calendar.MeetingMember;
 import org.apache.openmeetings.db.entity.room.Invitation;
-import org.apache.openmeetings.db.entity.room.Invitation.MessageType;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.util.TimezoneUtil;
-import 
org.apache.openmeetings.service.mail.template.subject.AbstractSubjectEmailTemplate;
-import 
org.apache.openmeetings.service.mail.template.subject.AppointmentReminderTemplate;
 import org.apache.wicket.util.string.Strings;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
+@Component
 public class AppointmentLogic {
        private static final Logger log = 
Red5LoggerFactory.getLogger(AppointmentLogic.class, webAppRootKey);
 
@@ -63,8 +60,6 @@ public class AppointmentLogic {
        @Autowired
        private RoomDao roomDao;
        @Autowired
-       private IInvitationManager invitationManager;
-       @Autowired
        private TimezoneUtil timezoneUtil;
        @Autowired
        private InvitationDao invitationDao;
@@ -72,6 +67,8 @@ public class AppointmentLogic {
        private UserDao userDao;
        @Autowired
        private MeetingMemberDao meetingMemberDao;
+       @Autowired
+       private NotifierService notifierService;
 
        // 
--------------------------------------------------------------------------------------------
 
@@ -85,26 +82,8 @@ public class AppointmentLogic {
        }
 
        private void sendReminder(User u, Appointment a, Invitation inv) throws 
Exception {
-               if (inv == null) {
-                       log.error(String.format("Error retrieving Invitation 
for member %s in Appointment %s"
-                                       , u.getAddress().getEmail(), 
a.getTitle()));
-                       return;
-               }
-
-               TimeZone tz = timezoneUtil.getTimeZone(u.getTimeZoneId());
-
-               long langId = u.getLanguageId();
-               // Get the required labels one time for all meeting members. The
-               // Language of the email will be the system default language
-
-               String smsSubject = 
generateSMSSubject(LabelDao.getString("1158", langId), a);
-
-               AbstractSubjectEmailTemplate t = 
AppointmentReminderTemplate.get(u, a, tz);
-               invitationManager.sendInvitationLink(inv, MessageType.Create, 
t.getSubject(), t.getEmail(), false);
-
-               
invitationManager.sendInvitationReminderSMS(u.getAddress().getPhone(), 
smsSubject, langId);
+               notifierService.notify(u, a, inv);
                if (inv.getHash() != null) {
-                       inv.setUpdated(new Date());
                        invitationDao.update(inv);
                }
        }
@@ -175,11 +154,6 @@ public class AppointmentLogic {
                }
        }
 
-       private String generateSMSSubject(String labelid1158, Appointment ment) 
{
-               String subj = cfgDao.getString("sms.subject", null);
-               return subj == null || subj.length() == 0 ? labelid1158 + " " + 
ment.getTitle() : subj;
-       }
-
        public Appointment getAppointment(String appointmentName,
                        String appointmentLocation, String 
appointmentDescription,
                        Calendar appointmentstart, Calendar appointmentend,

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/28cac665/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/iCalUtils.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/iCalUtils.java
 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/iCalUtils.java
index 59133e3..ff3fb4d 100644
--- 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/iCalUtils.java
+++ 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/iCalUtils.java
@@ -72,6 +72,7 @@ import net.fortuna.ical4j.model.property.Version;
  * Class which provides iCalendar Utilities.
  * This class's functions could be made static, as they are not instantiated 
anyway.
  */
+@org.springframework.stereotype.Component
 public class iCalUtils {
        private static final Logger log = 
Red5LoggerFactory.getLogger(iCalUtils.class, webAppRootKey);
        public static final String PROD_ID = "-//Events Calendar//Apache 
Openmeetings//EN";

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/28cac665/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/EmailManager.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/EmailManager.java
 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/EmailManager.java
index eaaae1e..cd52067 100644
--- 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/EmailManager.java
+++ 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/EmailManager.java
@@ -34,11 +34,13 @@ import 
org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
 /**
  * @author swagner
  *
  */
+@Component
 public class EmailManager {
        private static final Logger log = 
Red5LoggerFactory.getLogger(EmailManager.class, webAppRootKey);
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/28cac665/openmeetings-service/src/main/java/org/apache/openmeetings/service/notifier/MailNotifier.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/notifier/MailNotifier.java
 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/notifier/MailNotifier.java
new file mode 100644
index 0000000..be2399a
--- /dev/null
+++ 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/notifier/MailNotifier.java
@@ -0,0 +1,58 @@
+/*
+ * 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.service.notifier;
+
+import java.util.TimeZone;
+
+import javax.annotation.PostConstruct;
+
+import org.apache.openmeetings.core.notifier.INotifier;
+import org.apache.openmeetings.core.notifier.NotifierService;
+import org.apache.openmeetings.db.dao.room.IInvitationManager;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.room.Invitation;
+import org.apache.openmeetings.db.entity.room.Invitation.MessageType;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.util.TimezoneUtil;
+import 
org.apache.openmeetings.service.mail.template.subject.AbstractSubjectEmailTemplate;
+import 
org.apache.openmeetings.service.mail.template.subject.AppointmentReminderTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class MailNotifier implements INotifier {
+       @Autowired
+       private NotifierService notifier;
+       @Autowired
+       private IInvitationManager invitationManager;
+       @Autowired
+       private TimezoneUtil timezoneUtil;
+
+       @PostConstruct
+       private void register() {
+               notifier.addNotifier(this);
+       }
+
+       @Override
+       public void notify(User u, Appointment a, Invitation inv) throws 
Exception {
+               TimeZone tz = timezoneUtil.getTimeZone(u.getTimeZoneId());
+               AbstractSubjectEmailTemplate t = 
AppointmentReminderTemplate.get(u, a, tz);
+               invitationManager.sendInvitationLink(inv, MessageType.Create, 
t.getSubject(), t.getEmail(), false);
+       }
+}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/28cac665/openmeetings-service/src/main/java/org/apache/openmeetings/service/notifier/TextNotifier.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/notifier/TextNotifier.java
 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/notifier/TextNotifier.java
new file mode 100644
index 0000000..35f2df0
--- /dev/null
+++ 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/notifier/TextNotifier.java
@@ -0,0 +1,71 @@
+/*
+ * 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.service.notifier;
+
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REMINDER_MESSAGE;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import javax.annotation.PostConstruct;
+
+import org.apache.openmeetings.core.notifier.INotifier;
+import org.apache.openmeetings.core.notifier.NotifierService;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.label.LabelDao;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.room.Invitation;
+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;
+import org.springframework.core.task.TaskExecutor;
+import org.springframework.stereotype.Component;
+
+@Component
+public class TextNotifier implements INotifier {
+       private static final Logger log = 
Red5LoggerFactory.getLogger(TextNotifier.class, webAppRootKey);
+       @Autowired
+       private NotifierService notifier;
+       @Autowired
+       protected TaskExecutor taskExecutor;
+       @Autowired
+       protected ConfigurationDao cfgDao;
+
+       @PostConstruct
+       private void register() {
+               notifier.addNotifier(this);
+       }
+
+       @Override
+       public void notify(User u, Appointment a, Invitation inv) throws 
Exception {
+               if (u.getAddress() == null || 
Strings.isEmpty(u.getAddress().getPhone())) {
+                       log.debug("User has no Phone, skip sending 
notification");
+                       return;
+               }
+               final String phone = u.getAddress().getPhone();
+               String msg = cfgDao.getString(CONFIG_REMINDER_MESSAGE, null);
+               if (Strings.isEmpty(msg)) {
+                       msg = String.format("%s %s", LabelDao.getString("1158", 
u.getLanguageId()), a.getTitle());
+               }
+               final String reminderMsg = msg;
+               taskExecutor.execute(() -> {
+                       log.debug("Sending Text to: {}, msg is: {}", phone, 
reminderMsg);
+               });
+       }
+}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/28cac665/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/ReminderJob.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/ReminderJob.java
 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/ReminderJob.java
index c99107b..13edce1 100644
--- 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/ReminderJob.java
+++ 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/ReminderJob.java
@@ -30,7 +30,9 @@ import org.apache.openmeetings.util.InitializationContainer;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
+@Component("reminderJob")
 public class ReminderJob extends AbstractJob {
        private static Logger log = 
Red5LoggerFactory.getLogger(ReminderJob.class, webAppRootKey);
        @Autowired

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/28cac665/openmeetings-service/src/main/java/org/apache/openmeetings/service/room/InvitationManager.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/room/InvitationManager.java
 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/room/InvitationManager.java
index a4bf382..ebc0a5e 100644
--- 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/room/InvitationManager.java
+++ 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/room/InvitationManager.java
@@ -30,7 +30,6 @@ import java.util.UUID;
 
 import org.apache.openmeetings.IApplication;
 import org.apache.openmeetings.core.mail.MailHandler;
-import org.apache.openmeetings.core.mail.SMSHandler;
 import org.apache.openmeetings.db.dao.room.IInvitationManager;
 import org.apache.openmeetings.db.dao.room.InvitationDao;
 import org.apache.openmeetings.db.entity.basic.MailMessage;
@@ -55,12 +54,14 @@ import org.apache.wicket.util.string.Strings;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
 /**
  *
  * @author swagner
  *
  */
+@Component
 public class InvitationManager implements IInvitationManager {
        private static final Logger log = 
Red5LoggerFactory.getLogger(InvitationManager.class, webAppRootKey);
 
@@ -69,8 +70,6 @@ public class InvitationManager implements IInvitationManager {
        @Autowired
        private MailHandler mailHandler;
        @Autowired
-       private SMSHandler smsHandler;
-       @Autowired
        private TimezoneUtil timezoneUtil;
 
        /**
@@ -150,25 +149,6 @@ public class InvitationManager implements 
IInvitationManager {
        }
 
        /**
-        * This method sends invitation reminder SMS
-        * @param phone user's phone
-        * @param subject
-        * @return
-        */
-       @Override
-       public boolean sendInvitationReminderSMS(String phone, String subject, 
long languageId) {
-               if (!Strings.isEmpty(phone)) {
-                       log.debug("sendInvitationReminderSMS to " + phone + ": 
" + subject);
-                       try {
-                               return smsHandler.sendSMS(phone, subject, 
languageId);
-                       } catch (Exception e) {
-                               log.error("sendInvitationReminderSMS", e);
-                       }
-               }
-               return false;
-       }
-
-       /**
         * @author vasya
         *
         * @param member

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/28cac665/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
index 34d0c6c..4b5b0af 100644
--- 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
+++ 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
@@ -63,12 +63,14 @@ import org.red5.logging.Red5LoggerFactory;
 import org.red5.server.api.scope.IScope;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
 /**
  *
  * @author swagner
  *
  */
+@Component
 public class UserManager implements IUserManager {
        private static final Logger log = 
Red5LoggerFactory.getLogger(UserManager.class, webAppRootKey);
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/28cac665/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
 
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
index b8cc1f6..7fa53a5 100644
--- 
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
+++ 
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
@@ -85,6 +85,7 @@ public class OpenmeetingsVariables {
        public static final String CONFIG_KEYCODE_EXCLUSIVE = 
"exclusive.audio.keycode";
        public static final String CONFIG_KEYCODE_MUTE = "mute.keycode";
        public static final String CONFIG_MYROOMS_ENABLED = 
"personal.rooms.enabled";
+       public static final String CONFIG_REMINDER_MESSAGE = "reminder.message";
 
        public static final String HEADER_XFRAME_SAMEORIGIN = "SAMEORIGIN";
        public static final String HEADER_CSP_SELF = "default-src 'self'; 
style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 
'unsafe-eval'; img-src 'self' data:;";

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/28cac665/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/IcalHandler.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/IcalHandler.java
 
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/IcalHandler.java
index 31fb980..0a5592d 100644
--- 
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/IcalHandler.java
+++ 
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/IcalHandler.java
@@ -111,14 +111,14 @@ public class IcalHandler {
        // 
---------------------------------------------------------------------------------------
        public String addNewMeeting(Date startDate, Date endDate, String name,
                        List<Map<String, String>> attendees, String description,
-                       Map<String, String> organizer, String uid, String 
javaTzId) throws Exception
+                       Map<String, String> organizer, String uid, String 
javaTzId)
        {
 
                TimeZoneRegistry registry = 
TimeZoneRegistryFactory.getInstance().createRegistry();
 
                TimeZone timeZone = registry.getTimeZone(javaTzId);
                if (timeZone == null) {
-                       throw new Exception("Unable to get time zone by id 
provided: " + javaTzId);
+                       throw new RuntimeException("Unable to get time zone by 
id provided: " + javaTzId);
                }
 
                DateTime start = new DateTime(startDate);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/28cac665/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 f0d267c..bad459e 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
@@ -40,21 +40,6 @@
        <context:annotation-config />
        <context:component-scan base-package="org.apache.openmeetings" />
 
-       <!-- Start of Services exposed to red5 -->
-       <bean id="web.handler" 
class="org.apache.openmeetings.core.remote.ScopeApplicationAdapter" />
-       <bean id="mobile.service" 
class="org.apache.openmeetings.core.remote.MobileService" />
-       <!-- End of Services exposed to red5 -->
-
-       <bean id="mainservice" 
class="org.apache.openmeetings.core.remote.MainService" />
-       <bean id="recordingservice" 
class="org.apache.openmeetings.core.remote.RecordingService" />
-       <bean id="openmeetings.SessionManager" 
class="org.apache.openmeetings.core.session.SessionManager"/>
-       <bean id="openmeetings.FileProcessor" 
class="org.apache.openmeetings.core.data.file.FileProcessor" />
-       <bean id="openmeetings.FlvExplorerConverter" 
class="org.apache.openmeetings.core.converter.FlvExplorerConverter" />
-       <bean id="openmeetings.RecordingConverterTask" 
class="org.apache.openmeetings.core.data.record.converter.RecordingConverterTask"
 />
-       <bean id="openmeetings.InterviewConverterTask" 
class="org.apache.openmeetings.core.data.record.converter.InterviewConverterTask"
 />
-       <bean id="openmeetings.InterviewConverter" 
class="org.apache.openmeetings.core.converter.InterviewConverter" />
-       <bean id="openmeetings.RecordingConverter" 
class="org.apache.openmeetings.core.converter.RecordingConverter" />
-
        <!--
                        5000            == 5 sec
                        300000          == 5 min
@@ -91,7 +76,6 @@
        <bean id="triggerCleanExpiredResetHash" 
class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"
                        p:jobDetail-ref="cleanExpiredResetHashJobDetails" 
p:startDelay="5000" p:repeatInterval="3600000" />
 
-       <bean id="reminderJob" 
class="org.apache.openmeetings.service.quartz.scheduler.ReminderJob"/>
        <bean id="meetingReminderJobDetail" 
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
                        p:targetObject-ref="reminderJob" 
p:targetMethod="remindMeetings" p:concurrent="false" />
        <bean id="triggerMeetingReminder" 
class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"
@@ -102,7 +86,6 @@
                        p:jobDetail-ref="expiringRecordingJobDetail" 
p:startDelay="5000" p:repeatInterval="3600000"/>
 
        <!-- Mail related jobs -->
-       <bean id="mailHandler" 
class="org.apache.openmeetings.core.mail.MailHandler" />
        <bean id="resetSendingMailStatus" 
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
                        p:targetObject-ref="mailHandler" 
p:targetMethod="resetSendingStatus" p:concurrent="false" />
        <bean id="triggerResetSendingMailStatus" 
class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"
@@ -130,7 +113,6 @@
        <!-- End of Services -->
 
        <!-- Interface Transactional -->
-       <bean id="roomDao" class="org.apache.openmeetings.db.dao.room.RoomDao"/>
        <bean id="sipDao" class="org.apache.openmeetings.db.dao.room.SipDao">
        <!-- Should be uncommented and updated with real values for Asterisk
                <constructor-arg index="0" value="127.0.0.1"/>
@@ -141,50 +123,8 @@
                <property name="uid" 
value="87dddad4-9ca5-475b-860f-2e0825d02b76"/>
        -->
        </bean>
-       <bean id="invitationDao" 
class="org.apache.openmeetings.db.dao.room.InvitationDao" />
-       <bean id="groupDao" 
class="org.apache.openmeetings.db.dao.user.GroupDao" />
-       <bean id="groupUserDao" 
class="org.apache.openmeetings.db.dao.user.GroupUserDao" />
-       <bean id="pollDao" class="org.apache.openmeetings.db.dao.room.PollDao" 
/>
-       <bean id="labelDao" 
class="org.apache.openmeetings.db.dao.label.LabelDao" />
-       <bean id="configurationDao" 
class="org.apache.openmeetings.db.dao.basic.ConfigurationDao" />
-       <bean id="appointmentDao" 
class="org.apache.openmeetings.db.dao.calendar.AppointmentDao" />
-       <bean id="sessionDao" 
class="org.apache.openmeetings.db.dao.server.SessiondataDao" />
-       <bean id="roomModeratorDao" 
class="org.apache.openmeetings.db.dao.room.RoomModeratorDao" />
-       <bean id="roomGroupDao" 
class="org.apache.openmeetings.db.dao.room.RoomGroupDao"/>
-       <bean id="conferenceLogDao" 
class="org.apache.openmeetings.db.dao.log.ConferenceLogDao" />
-       <bean id="fileItemLogDao" 
class="org.apache.openmeetings.db.dao.file.FileItemLogDao" />
-       <bean id="fileItemDao" 
class="org.apache.openmeetings.db.dao.file.FileItemDao" />
-       <bean id="recordingDao" 
class="org.apache.openmeetings.db.dao.record.RecordingDao" />
-       <bean id="recordingMetaDataDao" 
class="org.apache.openmeetings.db.dao.record.RecordingMetaDataDao" />
-       <bean id="recordingMetaDeltaDao" 
class="org.apache.openmeetings.db.dao.record.RecordingMetaDeltaDao" />
-       <bean id="ldapConfigDao" 
class="org.apache.openmeetings.db.dao.server.LdapConfigDao" />
-       <bean id="meetingMemberDao" 
class="org.apache.openmeetings.db.dao.calendar.MeetingMemberDao" />
-       <bean id="privateMessageFolderDao" 
class="org.apache.openmeetings.db.dao.user.PrivateMessageFolderDao" />
-       <bean id="privateMessageDao" 
class="org.apache.openmeetings.db.dao.user.PrivateMessageDao" />
-       <bean id="soapLoginDao" 
class="org.apache.openmeetings.db.dao.server.SOAPLoginDao" />
-       <bean id="userContactDao" 
class="org.apache.openmeetings.db.dao.user.UserContactDao" />
-       <bean id="userDao" class="org.apache.openmeetings.db.dao.user.UserDao" 
/>
-       <bean id="chatDao" class="org.apache.openmeetings.db.dao.basic.ChatDao" 
/>
-       <bean id="mailMessageDao" 
class="org.apache.openmeetings.db.dao.basic.MailMessageDao" />
-       <bean id="oauth2Dao" 
class="org.apache.openmeetings.db.dao.server.OAuth2Dao" />
-       <bean id="omCalendarDao" 
class="org.apache.openmeetings.db.dao.calendar.OmCalendarDao" />
-
-       <bean id="userManager" 
class="org.apache.openmeetings.service.user.UserManager" />
-       <bean id="appointmentLogic" 
class="org.apache.openmeetings.service.calendar.AppointmentLogic" />
-       <bean id="emailManagement" 
class="org.apache.openmeetings.service.mail.EmailManager" />
-       <bean id="invitationManagement" 
class="org.apache.openmeetings.service.room.InvitationManager" />
 
-       <!-- No Interface -->
-       <bean id="imageConverter" 
class="org.apache.openmeetings.core.converter.ImageConverter" />
-       <bean id="documentConverter" 
class="org.apache.openmeetings.core.converter.DocumentConverter" />
-       <bean id="smsHandler" 
class="org.apache.openmeetings.core.mail.SMSHandler" />
-       <bean id="importInitvalues" 
class="org.apache.openmeetings.installation.ImportInitvalues" />
-       <bean id="ldapLoginManagement" 
class="org.apache.openmeetings.core.ldap.LdapLoginManagement" />
-       <bean id="timezoneUtil" 
class="org.apache.openmeetings.db.util.TimezoneUtil" />
-       <bean id="backupExport" 
class="org.apache.openmeetings.backup.BackupExport" />
-       <bean id="backupImport" 
class="org.apache.openmeetings.backup.BackupImport" />
        <bean id="appointmentManager" 
class="org.apache.openmeetings.service.calendar.caldav.AppointmentManager" 
destroy-method="destroy"/>
-       <bean id="iCalUtils" 
class="org.apache.openmeetings.service.calendar.caldav.iCalUtils"/>
 
        <!-- Thread Executor -->
        <bean id="taskExecutor" 
class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/28cac665/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
index 4475d20..6fcee68 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/cxf-servlet.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/cxf-servlet.xml
@@ -20,10 +20,12 @@
 -->
 <beans xmlns="http://www.springframework.org/schema/beans";
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+               xmlns:context="http://www.springframework.org/schema/context";
                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://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context.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";
        >
@@ -31,15 +33,8 @@
        <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="userWebService" 
class="org.apache.openmeetings.webservice.UserWebService"/>
-       <bean id="netTestWebService" 
class="org.apache.openmeetings.webservice.NetTestWebService" />
+       <context:annotation-config />
+       <context:component-scan 
base-package="org.apache.openmeetings.webservice" />
 
        <!-- (writeXsiType=false) -->
        <jaxrs:server id="server" address="/">
@@ -49,10 +44,10 @@
                        <ref bean="fileWebService"/>
                        <ref bean="groupWebService"/>
                        <ref bean="infoWebService"/>
+                       <ref bean="netTestWebService"/> <!-- JaxRs only -->
                        <ref bean="recordWebService"/>
                        <ref bean="roomWebService"/>
                        <ref bean="userWebService"/>
-                       <ref bean="netTestWebService"/> <!-- JaxRs only -->
                </jaxrs:serviceBeans>
                <jaxrs:providers>
                        <bean id="appDtoMessageBodyWriter" 
class="org.apache.openmeetings.webservice.util.AppointmentMessageBodyWriter" />

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/28cac665/openmeetings-web/src/main/webapp/WEB-INF/classes/logback-config.xml
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/webapp/WEB-INF/classes/logback-config.xml 
b/openmeetings-web/src/main/webapp/WEB-INF/classes/logback-config.xml
index 3c55b02..d20f62c 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/logback-config.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/logback-config.xml
@@ -23,7 +23,7 @@
 
        <jmxConfigurator contextName="${current_openmeetings_context_name}" />
 
-       <appender name="FLOG2" 
class="ch.qos.logback.core.rolling.RollingFileAppender">
+       <appender name="FILE" 
class="ch.qos.logback.core.rolling.RollingFileAppender">
                <File>log/${current_openmeetings_context_name}.log</File>
                <Append>false</Append>
                <Encoding>UTF-8</Encoding>
@@ -45,7 +45,7 @@
                        <maxHistory>50</maxHistory>
                </rollingPolicy>
        </appender>
-       <appender name="CONSOLE2" class="ch.qos.logback.core.ConsoleAppender">
+       <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
                <layout class="ch.qos.logback.classic.PatternLayout">
                        <pattern>%5p %d{MM-dd HH:mm:ss.SSS } %r %L %c{15} 
[%.15thread] - %m%n</pattern>
                </layout>
@@ -59,7 +59,7 @@
        <logger name="org.apache.mina.filter.ssl.SslFilter" level="ERROR" />
        <logger name="org.apache.wicket" level="WARN" />
        <root level="DEBUG">
-               <appender-ref ref="FLOG2" />
-               <appender-ref ref="CONSOLE2" />
+               <appender-ref ref="FILE" />
+               <appender-ref ref="CONSOLE" />
        </root>
 </configuration>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/28cac665/openmeetings-web/src/main/webapp/WEB-INF/red5-web.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/red5-web.xml 
b/openmeetings-web/src/main/webapp/WEB-INF/red5-web.xml
index a3e0aa2..4723baf 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/red5-web.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/red5-web.xml
@@ -29,7 +29,7 @@
 
        <bean id="web.context" class="org.red5.server.Context" 
autowire="byType" />
 
-       <bean id="web.scope" class="org.red5.server.scope.WebScope" 
init-method="register">
+       <bean id="web.scope" class="org.red5.server.scope.WebScope">
                <property name="server" ref="red5.server" />
                <property name="parent" ref="global.scope" />
                <property name="context" ref="web.context" />

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/28cac665/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 880d01a..f01512d 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
@@ -54,6 +54,7 @@ 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.stereotype.Service;
 
 /**
  * CalendarService contains methods to create, edit delete calendar meetings
@@ -61,6 +62,7 @@ import org.slf4j.Logger;
  * @author sebawagner
  *
  */
+@Service("calendarWebService")
 
@WebService(serviceName="org.apache.openmeetings.webservice.CalendarWebService",
 targetNamespace = TNS)
 @Features(features = "org.apache.cxf.feature.LoggingFeature")
 @Produces({MediaType.APPLICATION_JSON})

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/28cac665/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 2366082..b58ad4e 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
@@ -39,6 +39,7 @@ import 
org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
 import org.apache.openmeetings.db.entity.server.Sessiondata;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
+import org.springframework.stereotype.Service;
 
 /**
  *
@@ -47,6 +48,7 @@ import org.slf4j.Logger;
  * @author solomax
  *
  */
+@Service("errorWebService")
 @WebService(serviceName="org.apache.openmeetings.webservice.ErrorWebService", 
targetNamespace = TNS)
 @Features(features = "org.apache.cxf.feature.LoggingFeature")
 @Produces({MediaType.APPLICATION_JSON})

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/28cac665/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 1afcef2..9d530f3 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
@@ -56,6 +56,7 @@ 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.stereotype.Service;
 
 /**
  *
@@ -65,6 +66,7 @@ import org.slf4j.Logger;
  * @author sebawagner
  *
  */
+@Service("fileWebService")
 @WebService(serviceName="org.apache.openmeetings.webservice.FileWebService", 
targetNamespace = TNS)
 @Features(features = "org.apache.cxf.feature.LoggingFeature")
 @Produces({MediaType.APPLICATION_JSON})

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/28cac665/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 6960fc3..3a6dbfb 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
@@ -58,6 +58,7 @@ 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.stereotype.Service;
 
 /**
  *
@@ -67,6 +68,7 @@ import org.slf4j.Logger;
  * @author sebawagner
  *
  */
+@Service("groupWebService")
 @WebService(serviceName="org.apache.openmeetings.webservice.GroupWebService", 
targetNamespace = TNS)
 @Features(features = "org.apache.cxf.feature.LoggingFeature")
 @Produces({MediaType.APPLICATION_JSON})

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/28cac665/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/InfoWebService.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/InfoWebService.java
 
b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/InfoWebService.java
index 24a9816..2298998 100644
--- 
a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/InfoWebService.java
+++ 
b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/InfoWebService.java
@@ -29,14 +29,16 @@ import javax.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
 import org.apache.openmeetings.db.dto.basic.Info;
+import org.springframework.stereotype.Service;
 
 /**
- * 
+ *
  * The Service contains methods to get localized errors
- * 
+ *
  * @author solomax
- * 
+ *
  */
+@Service("infoWebService")
 @WebService(serviceName="org.apache.openmeetings.webservice.InfoWebService", 
targetNamespace = TNS)
 @Features(features = "org.apache.cxf.feature.LoggingFeature")
 @Produces({MediaType.APPLICATION_JSON})
@@ -44,7 +46,7 @@ import org.apache.openmeetings.db.dto.basic.Info;
 public class InfoWebService {
        /**
         * Method to get current OpenMeetings version
-        * 
+        *
         * @return - version
         */
        @WebMethod

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/28cac665/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/NetTestWebService.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/NetTestWebService.java
 
b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/NetTestWebService.java
index 5c255be..1ec4e8b 100644
--- 
a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/NetTestWebService.java
+++ 
b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/NetTestWebService.java
@@ -38,67 +38,69 @@ import javax.ws.rs.core.Response.ResponseBuilder;
 import org.apache.cxf.jaxrs.ext.multipart.Multipart;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
+import org.springframework.stereotype.Service;
 
+@Service("netTestWebService")
 @Path("/networktest")
 public class NetTestWebService {
        private static final Logger log = 
Red5LoggerFactory.getLogger(UserWebService.class, webAppRootKey);
-    enum TestType {
-        UNKNOWN,
-        PING,
-        JITTER,
-        DOWNLOAD_SPEED,
-        UPLOAD_SPEED
-    }
+       enum TestType {
+               UNKNOWN,
+               PING,
+               JITTER,
+               DOWNLOAD_SPEED,
+               UPLOAD_SPEED
+       }
 
-    private static final int PING_PACKET_SIZE = 64;
-    private static final int JITTER_PACKET_SIZE = 1024;
-    private static final int DOWNLOAD_PACKET_SIZE = 1024*1024;
+       private static final int PING_PACKET_SIZE = 64;
+       private static final int JITTER_PACKET_SIZE = 1024;
+       private static final int DOWNLOAD_PACKET_SIZE = 1024*1024;
 
-    private final byte[] pingData;
-    private final byte[] jitterData;
-    private final byte[] downloadData;
+       private final byte[] pingData;
+       private final byte[] jitterData;
+       private final byte[] downloadData;
 
        public NetTestWebService() {
-        pingData = new byte[PING_PACKET_SIZE];
-        jitterData = new byte[JITTER_PACKET_SIZE];
-        downloadData = new byte[DOWNLOAD_PACKET_SIZE];
+               pingData = new byte[PING_PACKET_SIZE];
+               jitterData = new byte[JITTER_PACKET_SIZE];
+               downloadData = new byte[DOWNLOAD_PACKET_SIZE];
 
-        Arrays.fill(pingData, (byte) '0');
-        Arrays.fill(jitterData, (byte) '0');
-        Arrays.fill(downloadData, (byte) '0');
+               Arrays.fill(pingData, (byte) '0');
+               Arrays.fill(jitterData, (byte) '0');
+               Arrays.fill(downloadData, (byte) '0');
        }
 
        @GET
        @Produces(MediaType.APPLICATION_OCTET_STREAM)
        @Path("/")
        public Response get(@QueryParam("type") String type) {
-        TestType testType = getTypeByString(type);
-        log.debug("Network test:: get");
-
-        // choose data to send
-        byte[] data = new byte[0];
-        switch (testType) {
-            case PING:
-                data = pingData;
-                break;
-            case JITTER:
-                data = jitterData;
-                break;
-            case DOWNLOAD_SPEED:
-                data = downloadData;
-                break;
+               TestType testType = getTypeByString(type);
+               log.debug("Network test:: get");
+
+               // choose data to send
+               byte[] data = new byte[0];
+               switch (testType) {
+                       case PING:
+                               data = pingData;
+                               break;
+                       case JITTER:
+                               data = jitterData;
+                               break;
+                       case DOWNLOAD_SPEED:
+                               data = downloadData;
+                               break;
                        case UPLOAD_SPEED:
                                break;
                        default:
                                break;
-        }
+               }
 
-        ResponseBuilder response = 
Response.ok().type(MediaType.APPLICATION_OCTET_STREAM).entity(new 
ByteArrayInputStream(data));
-        //response.header("Content-Disposition", "attachment; 
filename=test.png");
-        response.header("Cache-Control", "no-cache");
-        response.header("Content-Length", String.valueOf(data.length));
-        return response.build();
-    }
+               ResponseBuilder response = 
Response.ok().type(MediaType.APPLICATION_OCTET_STREAM).entity(new 
ByteArrayInputStream(data));
+               //response.header("Content-Disposition", "attachment; 
filename=test.png");
+               response.header("Cache-Control", "no-cache");
+               response.header("Content-Length", String.valueOf(data.length));
+               return response.build();
+       }
 
        @POST
        @Consumes(MediaType.MULTIPART_FORM_DATA)
@@ -106,20 +108,19 @@ public class NetTestWebService {
        public void upload(@Multipart(value = "stream", type = 
MediaType.APPLICATION_OCTET_STREAM) InputStream stream) throws IOException {
                byte[] b = new byte[1024];
                while (stream.read(b) >= 0 ) {};
-    }
-
-
-    private static TestType getTypeByString(String typeString) {
-        if ("ping".equals(typeString)) {
-            return TestType.PING;
-        } else if ("jitter".equals(typeString)) {
-            return TestType.JITTER;
-        } else if ("download".equals(typeString)) {
-            return TestType.DOWNLOAD_SPEED;
-        } else if ("upload".equals(typeString)) {
-            return TestType.UPLOAD_SPEED;
-        }
+       }
 
-        return TestType.UNKNOWN;
-    }
+       private static TestType getTypeByString(String typeString) {
+               if ("ping".equals(typeString)) {
+                       return TestType.PING;
+               } else if ("jitter".equals(typeString)) {
+                       return TestType.JITTER;
+               } else if ("download".equals(typeString)) {
+                       return TestType.DOWNLOAD_SPEED;
+               } else if ("upload".equals(typeString)) {
+                       return TestType.UPLOAD_SPEED;
+               }
+
+               return TestType.UNKNOWN;
+       }
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/28cac665/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 f51e473..aea9735 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
@@ -43,6 +43,7 @@ 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.stereotype.Service;
 
 /**
  *
@@ -51,6 +52,7 @@ import org.slf4j.Logger;
  * @author solomax
  *
  */
+@Service("recordWebService")
 
@WebService(serviceName="org.apache.openmeetings.webservice.RecordingWebService",
 targetNamespace = TNS)
 @Features(features = "org.apache.cxf.feature.LoggingFeature")
 @Produces({MediaType.APPLICATION_JSON})

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/28cac665/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
 
b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
index 397b3be..3b29664 100644
--- 
a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
+++ 
b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
@@ -63,6 +63,7 @@ import 
org.apache.openmeetings.webservice.error.ServiceException;
 import org.apache.wicket.Application;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
+import org.springframework.stereotype.Service;
 
 /**
  * RoomService contains methods to manipulate rooms and create invitation hash
@@ -70,6 +71,7 @@ import org.slf4j.Logger;
  * @author sebawagner
  *
  */
+@Service("roomWebService")
 @WebService(serviceName="org.apache.openmeetings.webservice.RoomWebService", 
targetNamespace = TNS)
 @Features(features = "org.apache.cxf.feature.LoggingFeature")
 @Produces({MediaType.APPLICATION_JSON})
@@ -452,7 +454,7 @@ public class RoomWebService extends BaseWebService {
        @WebMethod
        @POST
        @Path("/hash")
-       private ServiceResult hash(@WebParam(name="sid") @QueryParam("sid") 
String sid
+       public ServiceResult hash(@WebParam(name="sid") @QueryParam("sid") 
String sid
                        , @WebParam(name="invite") @QueryParam("invite") 
InvitationDTO invite
                        , @WebParam(name="sendmail") @QueryParam("sendmail") 
boolean sendmail
                        ) throws ServiceException

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/28cac665/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
 
b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
index a9ea2b5..bec8307 100644
--- 
a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
+++ 
b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
@@ -74,6 +74,7 @@ import org.apache.wicket.validation.Validatable;
 import org.apache.wicket.validation.ValidationError;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
+import org.springframework.stereotype.Service;
 
 /**
  *
@@ -83,6 +84,7 @@ import org.slf4j.Logger;
  * @author sebawagner
  *
  */
+@Service("userWebService")
 @WebService(serviceName = USER_SERVICE_NAME, targetNamespace = TNS, portName = 
USER_SERVICE_PORT_NAME)
 @Features(features = "org.apache.cxf.feature.LoggingFeature")
 @Produces({MediaType.APPLICATION_JSON})

Reply via email to