That's a good practice for the guy who commits the patch to explain why it is being committed. :-)
The actual service purpose is only motivated by jabber. The service offers a possibility to schedule 1:1 conferences in existing private rooms without admin permissions. The latter may not be the case for implementation, I just wanted that to work this way. Thus better to call this "OneToOneService", not "JabberService". Jabber is most popular use case. I send an invitation to my friend via jabber and enter the room using the same URL. Why openmeetings invitations are not sufficient? I see who is online via jabber, and then immediately attack them with meeting joining requests. Elena implemented the auto-invite button for jitsi. This would be hopefully integrated into jitsi, and we get more people at our demo server. -- With best regards / с наилучшими пожеланиями, Alexei Fedotov / Алексей Федотов, http://dataved.ru/ +7 916 562 8095 On Sat, Apr 7, 2012 at 1:15 PM, [email protected] <[email protected]> wrote: > Hi Alexei, > > I would like to know what is the meaning of the JabberService? I can't find > out how those SOAP/REST methods should help to integrate / connect to a > JabberService from OpenMeetings or vice versa. > > Can you please help? > > Sebastian > > > 2012/3/23 Maxim Solodovnik <[email protected]> >> >> I think Alexey can answer your question. >> On Mar 24, 2012 2:22 AM, "[email protected]" <[email protected]> >> wrote: >> >> > How do you connect to jabber service using openmeetings? >> > Am 23.03.2012 20:06 schrieb "Maxim Solodovnik" <[email protected]>: >> > >> > > What do you mean by "need no jars" ? >> > > after sources structure was changed, build.xml should not be changed >> > > on >> > > new services add ... >> > > >> > > On Sat, Mar 24, 2012 at 02:03, [email protected] >> > > <[email protected]>wrote: >> > > >> > > > Does the Jabber Service need no JARs? How is it intend to work? >> > > > >> > > > Thanks! >> > > > Sebastian >> > > > >> > > > 2012/3/23 <[email protected]>: >> > > > > Author: solomax >> > > > > Date: Fri Mar 23 18:55:15 2012 >> > > > > New Revision: 1304560 >> > > > > >> > > > > URL: http://svn.apache.org/viewvc?rev=1304560&view=rev >> > > > > Log: >> > > > > OPENMEETINGS-100 is fixed >> > > > > >> > > > > Added: >> > > > > >> > > > >> > > >> > >> > incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/axis/services/JabberWebService.java >> > > > > >> > > > >> > > >> > >> > incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/axis/services/JabberWebServiceFacade.java >> > > > > Removed: >> > > > > incubator/openmeetings/trunk/singlewebapp/src/app/ >> > > > > Modified: >> > > > > >> > > > >> > > >> > >> > incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml >> > > > > >> > incubator/openmeetings/trunk/singlewebapp/src/META-INF/services.xml >> > > > > >> > > > > Modified: >> > > > >> > > >> > >> > incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml >> > > > > URL: >> > > > >> > > >> > >> > http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml?rev=1304560&r1=1304559&r2=1304560&view=diff >> > > > > >> > > > >> > > >> > >> > ============================================================================== >> > > > > --- >> > > > >> > > >> > >> > incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml >> > > > (original) >> > > > > +++ >> > > > >> > > >> > >> > incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml >> > > > Fri Mar 23 18:55:15 2012 >> > > > > @@ -254,6 +254,7 @@ >> > > > > <bean id="roomWebService" >> > > > class="org.openmeetings.axis.services.RoomWebService" /> >> > > > > <bean id="fileWebService" >> > > > class="org.openmeetings.axis.services.FileWebService" /> >> > > > > <bean id="calendarWebService" >> > > > class="org.openmeetings.axis.services.CalendarWebService" /> >> > > > > + <bean id="jabberWebService" >> > > > class="org.openmeetings.axis.services.JabberWebService" /> >> > > > > >> > > > > <!-- Servlet Facade Beans --> >> > > > > <bean id="backupExport" >> > > > class="org.openmeetings.servlet.outputhandler.BackupExport" /> >> > > > > >> > > > > Modified: >> > > > incubator/openmeetings/trunk/singlewebapp/src/META-INF/services.xml >> > > > > URL: >> > > > >> > > >> > >> > http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/META-INF/services.xml?rev=1304560&r1=1304559&r2=1304560&view=diff >> > > > > >> > > > >> > > >> > >> > ============================================================================== >> > > > > --- >> > incubator/openmeetings/trunk/singlewebapp/src/META-INF/services.xml >> > > > (original) >> > > > > +++ >> > incubator/openmeetings/trunk/singlewebapp/src/META-INF/services.xml >> > > > Fri Mar 23 18:55:15 2012 >> > > > > @@ -47,4 +47,16 @@ >> > > > > </messageReceivers> >> > > > > <parameter name="ServiceClass" >> > > > >> > > >> > >> > locked="xsd:false">org.openmeetings.axis.services.CalendarWebServiceFacade</parameter> >> > > > > </service> >> > > > > + <service name="JabberService"> >> > > > > + <description>Jabber Service</description> >> > > > > + <messageReceivers> >> > > > > + <messageReceiver >> > > > > + mep="http://www.w3.org/2004/08/wsdl/in-only" >> > > > > + >> > > > class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/> >> > > > > + <messageReceiver >> > > > > + mep="http://www.w3.org/2004/08/wsdl/in-out" >> > > > > + >> > > > class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/> >> > > > > + </messageReceivers> >> > > > > + <parameter name="ServiceClass" >> > > > >> > > >> > >> > locked="xsd:false">org.openmeetings.axis.services.JabberWebServiceFacade</parameter> >> > > > > + </service> >> > > > > </serviceGroup> >> > > > > >> > > > > Added: >> > > > >> > > >> > >> > incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/axis/services/JabberWebService.java >> > > > > URL: >> > > > >> > > >> > >> > http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/axis/services/JabberWebService.java?rev=1304560&view=auto >> > > > > >> > > > >> > > >> > >> > ============================================================================== >> > > > > --- >> > > > >> > > >> > >> > incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/axis/services/JabberWebService.java >> > > > (added) >> > > > > +++ >> > > > >> > > >> > >> > incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/axis/services/JabberWebService.java >> > > > Fri Mar 23 18:55:15 2012 >> > > > > @@ -0,0 +1,86 @@ >> > > > > +package org.openmeetings.axis.services; >> > > > > + >> > > > > +import java.util.List; >> > > > > + >> > > > > +import org.openmeetings.app.OpenmeetingsVariables; >> > > > > +import org.openmeetings.app.data.basic.AuthLevelmanagement; >> > > > > +import org.openmeetings.app.data.basic.Sessionmanagement; >> > > > > +import org.openmeetings.app.data.conference.Invitationmanagement; >> > > > > +import org.openmeetings.app.data.user.Usermanagement; >> > > > > +import >> > > org.openmeetings.app.persistence.beans.domain.Organisation_Users; >> > > > > +import >> > org.openmeetings.app.persistence.beans.invitation.Invitations; >> > > > > +import org.openmeetings.app.persistence.beans.rooms.Rooms; >> > > > > +import >> > > org.openmeetings.app.persistence.beans.rooms.Rooms_Organisation; >> > > > > +import org.openmeetings.app.persistence.beans.user.Users; >> > > > > +import org.openmeetings.app.remote.ConferenceService; >> > > > > +import org.red5.logging.Red5LoggerFactory; >> > > > > +import org.slf4j.Logger; >> > > > > +import org.springframework.beans.factory.annotation.Autowired; >> > > > > + >> > > > > +public class JabberWebService { >> > > > > + private static final Logger log = >> > Red5LoggerFactory.getLogger( >> > > > > + JabberWebService.class, >> > > > OpenmeetingsVariables.webAppRootKey); >> > > > > + >> > > > > + @Autowired >> > > > > + private AuthLevelmanagement authLevelManagement; >> > > > > + @Autowired >> > > > > + private Usermanagement userManagement; >> > > > > + @Autowired >> > > > > + private Sessionmanagement sessionManagement; >> > > > > + @Autowired >> > > > > + private ConferenceService conferenceService; >> > > > > + @Autowired >> > > > > + private Invitationmanagement invitationManagement; >> > > > > + >> > > > > + public List<Rooms> getAvailableRooms(String SID) { >> > > > > + log.debug("getAvailableRooms enter"); >> > > > > + >> > > > > + List<Rooms> result = this.conferenceService >> > > > > + >> > > > .getAppointedMeetingRoomsWithoutType(SID); >> > > > > + >> > > > > + List<Rooms> pbl = >> > > > this.conferenceService.getRoomsPublicWithoutType(SID); >> > > > > + if (pbl != null) { >> > > > > + result.addAll(pbl); >> > > > > + } >> > > > > + >> > > > > + Long users_id = >> > > this.sessionManagement.checkSession(SID); >> > > > > + Users u = >> > > > > this.userManagement.getUserById(users_id); >> > > > > + for (Organisation_Users ou : >> > > u.getOrganisation_users()) { >> > > > > + List<Rooms_Organisation> rol = >> > > > this.conferenceService >> > > > > + >> > > > .getRoomsByOrganisationWithoutType(SID, ou >> > > > > + >> > > > .getOrganisation().getOrganisation_id().longValue()); >> > > > > + if (rol != null) { >> > > > > + for (Rooms_Organisation ro : rol) >> > > > > { >> > > > > + result.add(ro.getRoom()); >> > > > > + } >> > > > > + } >> > > > > + } >> > > > > + for (Rooms r : result) { >> > > > > + r.setCurrentusers(null); >> > > > > + } >> > > > > + return result; >> > > > > + } >> > > > > + >> > > > > + public int getUserCount(String SID, Long roomId) { >> > > > > + Long users_id = >> > > this.sessionManagement.checkSession(SID); >> > > > > + Long user_level = >> > > > this.userManagement.getUserLevelByID(users_id); >> > > > > + >> > > > > + if >> > > (this.authLevelManagement.checkUserLevel(user_level)) >> > > > { >> > > > > + return >> > > > this.conferenceService.getRoomClientsMapByRoomId(roomId) >> > > > > + .size(); >> > > > > + } >> > > > > + return -1; >> > > > > + } >> > > > > + >> > > > > + public String getInvitationHash(String SID, String >> > > > > username, >> > > > Long room_id) { >> > > > > + Long users_id = >> > > this.sessionManagement.checkSession(SID); >> > > > > + Long user_level = >> > > > this.userManagement.getUserLevelByID(users_id); >> > > > > + Invitations invitation = >> > > > this.invitationManagement.addInvitationLink( >> > > > > + user_level, username, username, >> > > > username, username, username, >> > > > > + room_id, "", >> > > > > Boolean.valueOf(false), >> > > > null, Integer.valueOf(3), >> > > > > + null, null, users_id, "", >> > > > Long.valueOf(1L), >> > > > > + Boolean.valueOf(false), null, >> > > > > null, >> > > > null); >> > > > > + >> > > > > + return ((invitation == null) ? null : >> > > > invitation.getHash()); >> > > > > + } >> > > > > +} >> > > > > >> > > > > Added: >> > > > >> > > >> > >> > incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/axis/services/JabberWebServiceFacade.java >> > > > > URL: >> > > > >> > > >> > >> > http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/axis/services/JabberWebServiceFacade.java?rev=1304560&view=auto >> > > > > >> > > > >> > > >> > >> > ============================================================================== >> > > > > --- >> > > > >> > > >> > >> > incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/axis/services/JabberWebServiceFacade.java >> > > > (added) >> > > > > +++ >> > > > >> > > >> > >> > incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/axis/services/JabberWebServiceFacade.java >> > > > Fri Mar 23 18:55:15 2012 >> > > > > @@ -0,0 +1,51 @@ >> > > > > +package org.openmeetings.axis.services; >> > > > > + >> > > > > +import javax.servlet.ServletContext; >> > > > > + >> > > > > +import org.apache.axis2.context.MessageContext; >> > > > > +import org.apache.axis2.transport.http.HTTPConstants; >> > > > > +import org.openmeetings.app.OpenmeetingsVariables; >> > > > > +import org.openmeetings.app.persistence.beans.rooms.Rooms; >> > > > > +import org.red5.logging.Red5LoggerFactory; >> > > > > +import org.slf4j.Logger; >> > > > > +import org.springframework.context.ApplicationContext; >> > > > > +import >> > > > org.springframework.web.context.support.WebApplicationContextUtils; >> > > > > + >> > > > > +public class JabberWebServiceFacade { >> > > > > + private static final Logger log = Red5LoggerFactory >> > > > > + .getLogger(JabberWebServiceFacade.class, >> > > > > + >> > > > OpenmeetingsVariables.webAppRootKey); >> > > > > + >> > > > > + private ServletContext getServletContext() throws >> > > > > Exception { >> > > > > + MessageContext mc = >> > > > MessageContext.getCurrentMessageContext(); >> > > > > + return ((ServletContext) mc >> > > > > + >> > > > .getProperty(HTTPConstants.MC_HTTP_SERVLETCONTEXT)); >> > > > > + } >> > > > > + >> > > > > + private JabberWebService getJabberServiceProxy() { >> > > > > + try { >> > > > > + ApplicationContext context = >> > > > WebApplicationContextUtils >> > > > > + >> > > > .getWebApplicationContext(getServletContext()); >> > > > > + >> > > > > + return ((JabberWebService) >> > > > context.getBean("jabberWebService")); >> > > > > + } catch (Exception err) { >> > > > > + log.error("[getJabberServiceProxy]", err); >> > > > > + } >> > > > > + return null; >> > > > > + } >> > > > > + >> > > > > + @SuppressWarnings("cast") >> > > > > + public Rooms[] getAvailableRooms(String SID) { >> > > > > + return ((Rooms[]) >> > > > getJabberServiceProxy().getAvailableRooms(SID) >> > > > > + .toArray(new Rooms[0])); >> > > > > + } >> > > > > + >> > > > > + public int getUserCount(String SID, Long roomId) { >> > > > > + return getJabberServiceProxy().getUserCount(SID, >> > > roomId); >> > > > > + } >> > > > > + >> > > > > + public String getInvitationHash(String SID, String >> > > > > username, >> > > > Long room_id) { >> > > > > + return getJabberServiceProxy() >> > > > > + .getInvitationHash(SID, username, >> > > > room_id); >> > > > > + } >> > > > > +} >> > > > > \ No newline at end of file >> > > > > >> > > > > >> > > > >> > > > >> > > > >> > > > -- >> > > > Sebastian Wagner >> > > > http://www.openmeetings.de >> > > > http://incubator.apache.org/openmeetings/ >> > > > http://www.webbase-design.de >> > > > http://www.wagner-sebastian.com >> > > > [email protected] >> > > > >> > > >> > > >> > > >> > > -- >> > > WBR >> > > Maxim aka solomax >> > > >> > > > > > > -- > Sebastian Wagner > http://www.openmeetings.de > http://incubator.apache.org/openmeetings/ > http://www.webbase-design.de > http://www.wagner-sebastian.com > [email protected]
