The issue seems to be reproducible in 3.0 only
I'll handle it
Thanks for the investigation!


On Fri, Apr 19, 2013 at 1:01 AM, Andun Sameera <[email protected]> wrote:

> Hi,
>
> By looking at these results, I have debugged deeper to find something,
>
> Here what I notice is the SID passed to the method argument is not exists
> in the back-end database. I have checked it.
>
> So why we use this logic to get room types? What is the relationship
> between room types and session ?
>
> Thanks!
>
> On Thu, Apr 18, 2013 at 6:05 PM, Andun Sameera <[email protected]> wrote:
>
> > I have did a debug on the following code segment of Conference Service
> > Class,
> >
> > public List<RoomType> getRoomTypes(String SID) {
> >         Long users_id = sessiondataDao.checkSession(SID);
> >         Long user_level = userManager.getUserLevelByID(users_id);
> >         if (authLevelUtil.checkUserLevel(user_level)) {
> >             User user = userManager.getUserById(users_id);
> >             return roomManager.getAllRoomTypes(user.getLanguage_id());
> >         }
> >         return null;
> > }
> >
> > When a OM registered user or OM unregistered user clicks on the "click
> > here to enter room" link, this code executes two times,
> >
> > For the fist time,
> >
> > user_id is -1 and user_level is 1, user=null
> >
> > For the second time,
> >
> > user_id is 0 and user_level is -1,
> > authLevelUtil.checkUserLevel(user_level) is false
> >
> > Both time for the particular session no user is found. Is there a error
> in
> > session persisting logic?
> >
> > Thanks!
> >
> >
> > On Thu, Apr 18, 2013 at 3:35 PM, Andun Sameera <[email protected]>
> wrote:
> >
> >> OK Maxim, Will have a look.
> >>
> >>
> >> On Thu, Apr 18, 2013 at 3:33 PM, Maxim Solodovnik <[email protected]
> >wrote:
> >>
> >>> Just put breakpoint into this method and take a look what is going on
> ...
> >>> Currently we just ignoring these errors, but i believe the code should
> be
> >>> corrected
> >>>
> >>>
> >>> On Thu, Apr 18, 2013 at 5:01 PM, Andun Sameera <[email protected]>
> >>> wrote:
> >>>
> >>> > Hi Maxim,
> >>> >
> >>> > Is there any particular instruction or methods to investigate about
> >>> this ?
> >>> > I will look in to this.
> >>> >
> >>> > Thanks!
> >>> >
> >>> > On Thu, Apr 18, 2013 at 2:54 PM, Maxim Solodovnik <
> >>> [email protected]
> >>> > >wrote:
> >>> >
> >>> > > This need to be investigated ...
> >>> > > maybe additional check is necessary like userId/level is not null
> ...
> >>> > >
> >>> > >
> >>> > > On Sun, Apr 14, 2013 at 3:22 AM, Andun Sameera <[email protected]
> >
> >>> > wrote:
> >>> > >
> >>> > > > Hi All,
> >>> > > >
> >>> > > > The getRoomTypes method of autoloaderBarOnly,  calls the
> >>> > > > getRoomTypes(String SID) method of ConferenceService class. There
> >>> it
> >>> > > > tries to fetch user id form the session suing the backend db like
> >>> > > > this,
> >>> > > >
> >>> > > > Long users_id = sessiondataDao.checkSession(SID);
> >>> > > >
> >>> > > > That is the point where this fails. As I understood there have to
> >>> be a
> >>> > > > entry in the back end db related to the invitation and the
> >>> > > > user(Internal/External).
> >>> > > >
> >>> > > > Some instructions or corrections will be needed to proceed.
> >>> > > >
> >>> > > > Thanks!
> >>> > > >
> >>> > > > On Thu, Apr 11, 2013 at 4:40 PM, Andun Sameera <
> [email protected]
> >>> >
> >>> > > wrote:
> >>> > > > > Hi All,
> >>> > > > >
> >>> > > > > Just now noticed that when a person click on the link "Click
> >>> here to
> >>> > > > > enter room", following exceptions are logged in the server
> >>> console.
> >>> > > > >
> >>> > > > > [ERROR] [NioProcessor-2]
> org.red5.server.service.ServiceInvoker -
> >>> > > > > Error executing call: Service: conferenceservice Method:
> >>> getRoomTypes
> >>> > > > > Num Params: 1 0: e1ed5f812af1a913fcb55a58d5793864
> >>> > > > > java.lang.reflect.InvocationTargetException: null
> >>> > > > >         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> >>> > Method)
> >>> > > > ~[na:1.7.0_17]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> >>> > > > > ~[na:1.7.0_17]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >>> > > > > ~[na:1.7.0_17]
> >>> > > > >         at java.lang.reflect.Method.invoke(Method.java:601)
> >>> > > > ~[na:1.7.0_17]
> >>> > > > >         at
> >>> > > >
> >>> org.red5.server.service.ServiceInvoker.invoke(ServiceInvoker.java:196)
> >>> > > > > [red5-server.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> org.red5.server.service.ServiceInvoker.invoke(ServiceInvoker.java:115)
> >>> > > > > [red5-server.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> org.red5.server.net.rtmp.RTMPHandler.invokeCall(RTMPHandler.java:164)
> >>> > > > > [red5-server.jar:na]
> >>> > > > >         at
> >>> > > >
> org.red5.server.net.rtmp.RTMPHandler.onInvoke(RTMPHandler.java:409)
> >>> > > > > [red5-server.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.red5.server.net.rtmp.BaseRTMPHandler.messageReceived(BaseRTMPHandler.java:132)
> >>> > > > > [red5-server.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.red5.server.net.rtmp.RTMPMinaIoHandler.messageReceived(RTMPMinaIoHandler.java:170)
> >>> > > > > [red5-server.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:690)
> >>> > > > > [mina-core-2.0.7.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:417)
> >>> > > > > [mina-core-2.0.7.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:47)
> >>> > > > > [mina-core-2.0.7.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:765)
> >>> > > > > [mina-core-2.0.7.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.apache.mina.filter.codec.ProtocolCodecFilter$ProtocolDecoderOutputImpl.flush(ProtocolCodecFilter.java:407)
> >>> > > > > [mina-core-2.0.7.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:236)
> >>> > > > > [mina-core-2.0.7.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:417)
> >>> > > > > [mina-core-2.0.7.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:47)
> >>> > > > > [mina-core-2.0.7.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:765)
> >>> > > > > [mina-core-2.0.7.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.red5.server.net.rtmpe.RTMPEIoFilter.messageReceived(RTMPEIoFilter.java:130)
> >>> > > > > [red5-server.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:417)
> >>> > > > > [mina-core-2.0.7.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:47)
> >>> > > > > [mina-core-2.0.7.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:765)
> >>> > > > > [mina-core-2.0.7.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:109)
> >>> > > > > [mina-core-2.0.7.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:417)
> >>> > > > > [mina-core-2.0.7.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:410)
> >>> > > > > [mina-core-2.0.7.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:710)
> >>> > > > > [mina-core-2.0.7.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:664)
> >>> > > > > [mina-core-2.0.7.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:653)
> >>> > > > > [mina-core-2.0.7.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.apache.mina.core.polling.AbstractPollingIoProcessor.access$600(AbstractPollingIoProcessor.java:67)
> >>> > > > > [mina-core-2.0.7.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1124)
> >>> > > > > [mina-core-2.0.7.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
> >>> > > > > [mina-core-2.0.7.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> >>> > > > > [na:1.7.0_17]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> >>> > > > > [na:1.7.0_17]
> >>> > > > >         at java.lang.Thread.run(Thread.java:722) [na:1.7.0_17]
> >>> > > > > Caused by: java.lang.NullPointerException: null
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.apache.openmeetings.remote.ConferenceService.getRoomTypes(ConferenceService.java:416)
> >>> > > > > ~[openmeetings-3.0.0-SNAPSHOT.jar:na]
> >>> > > > >         ... 35 common frames omitted
> >>> > > > >
> >>> > > > > And also this,
> >>> > > > >
> >>> > > > >
> >>> > > > > ERROR 04-11 16:36:08.544 UserService.java 114998 156
> >>> > > > > org.apache.openmeetings.remote.UserService
> >>> [Red5_Scheduler_Worker-1]
> >>> > -
> >>> > > > > [getUserSelf]
> >>> > > > > java.lang.NullPointerException: null
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.apache.openmeetings.remote.UserService.getUserSelf(UserService.java:152)
> >>> > > > > ~[openmeetings-3.0.0-SNAPSHOT.jar:na]
> >>> > > > >         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> >>> > Method)
> >>> > > > ~[na:1.7.0_17]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> >>> > > > > ~[na:1.7.0_17]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >>> > > > > ~[na:1.7.0_17]
> >>> > > > >         at java.lang.reflect.Method.invoke(Method.java:601)
> >>> > > > ~[na:1.7.0_17]
> >>> > > > >         at
> >>> > > >
> >>> org.red5.server.service.ServiceInvoker.invoke(ServiceInvoker.java:196)
> >>> > > > > [red5-server.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> org.red5.server.service.ServiceInvoker.invoke(ServiceInvoker.java:115)
> >>> > > > > [red5-server.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> org.red5.server.net.rtmp.RTMPHandler.invokeCall(RTMPHandler.java:164)
> >>> > > > > [red5-server.jar:na]
> >>> > > > >         at
> >>> > > >
> org.red5.server.net.rtmp.RTMPHandler.onInvoke(RTMPHandler.java:409)
> >>> > > > > [red5-server.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.red5.server.net.rtmp.BaseRTMPHandler.messageReceived(BaseRTMPHandler.java:132)
> >>> > > > > [red5-server.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.red5.server.net.rtmpt.RTMPTHandler.messageReceived(RTMPTHandler.java:124)
> >>> > > > > [red5-server.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.red5.server.net.rtmpt.RTMPTConnection$ProcessJob.execute(RTMPTConnection.java:253)
> >>> > > > > [red5-server.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.red5.server.scheduling.QuartzSchedulingServiceJob.execute(QuartzSchedulingServiceJob.java:56)
> >>> > > > > [red5-server.jar:na]
> >>> > > > >         at
> org.quartz.core.JobRunShell.run(JobRunShell.java:213)
> >>> > > > [quartz-2.1.6.jar:na]
> >>> > > > >         at
> >>> > > >
> >>> > >
> >>> >
> >>>
> org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)
> >>> > > > > [quartz-2.1.6.jar:na]
> >>> > > > >
> >>> > > > >
> >>> > > > > Is this functionality broken ? Shall I come with a Jira?
> >>> > > > > Thanks
> >>> > > > > AndunSLG
> >>> > > > >
> >>> > > > >
> >>> > > > > On Thu, Apr 11, 2013 at 1:26 AM, Andun Sameera <
> >>> [email protected]>
> >>> > > > wrote:
> >>> > > > >> Hi All,
> >>> > > > >>
> >>> > > > >> To check what is going on, I have gone through code where it
> >>> starts
> >>> > > > >> with
> >>> > > >
> >>> > >
> >>> >
> >>>
> singlewebapp/WebContent/src/base/hibernate/hibRtmpConnection.getInvitationByHash
> >>> > > > >> method and until showing the the dash board. In that I have
> >>> noticed
> >>> > > > >> that following code segment of the
> >>> > > > >>
> >>> > >
> >>>
> singlewebapp/WebContent/src/modules/invitation/invitationQuickLoader.lzx
> >>> > > > >> handles the login mechanism of the process.
> >>> > > > >>
> >>> > > > >>          <method name="login">
> >>> > > > >>             this.userlang = Number(this.languages.getValue());
> >>> > > > >>
> >>> this.labellanguages.setAttribute('visibility','hidden');
> >>> > > > >>
> this.languages.setAttribute('visibility','hidden');
> >>> > > > >>             this.connect.setAttribute('visibility','hidden');
> >>> > > > >>
> >>> this.labelloading.setAttribute('visibility','visible');
> >>> > > > >>
> >>> > > > >>             parent.userlang = Number(this.userlang);
> >>> > > > >>
> >>> > > > >>             var userObject = new Array();
> >>> > > > >>
> >>> > > > >>
> >>> > > >
> >>> > >
> >>> >
> >>>
> canvas.setAttribute('currentuser',canvas.thishib.currentInvitation.invitedEMail);
> >>> > > > >>             canvas.setAttribute('user_id',-1);
> >>> > > > >>             canvas.setAttribute('firstName',"");
> >>> > > > >>
> >>> > > >
> >>> > >
> >>> >
> >>>
> canvas.setAttribute('lastName',canvas.thishib.currentInvitation.invitedEMail);
> >>> > > > >>             canvas.setAttribute('mail',canvas.mail);
> >>> > > > >>             canvas.setAttribute('lastLogin','');
> >>> > > > >>             canvas.setAttribute('official_code','');
> >>> > > > >>             canvas.setAttribute('picture_uri','');
> >>> > > > >>             canvas.setAttribute('language','');
> >>> > > > >>
> >>> > > > >>             userObject["login"] =
> >>> > > > canvas.thishib.currentInvitation.invitedEMail;
> >>> > > > >>             userObject["firstname"] = "";
> >>> > > > >>             userObject["lastname"] =
> >>> > > > >> canvas.thishib.currentInvitation.invitedEMail;
> >>> > > > >>             userObject["adresses"] = new Array();
> >>> > > > >>             //userObject["adresses"]["emails"] = new Array();
> >>> > > > >>             userObject["adresses"]["email"] =
> >>> > > > >> canvas.thishib.currentInvitation.invitedEMail;
> >>> > > > >>             //userObject["adresses"]["emails"][0]["mail"] =
> new
> >>> > > Array();
> >>> > > > >>
> >>> //userObject["adresses"]["emails"][0]["mail"]["email"] =
> >>> > > > >> canvas.thishib.currentInvitation.invitedEMail;
> >>> > > > >>
> >>> > > > >>             hib.userobject = userObject;
> >>> > > > >>
> >>> > > > >>             hib.userlang = Number(this.userlang);
> >>> > > > >>             canvas.thishib.loaderVar = new
> >>> > > lz.autoloaderBarOnly(canvas);
> >>> > > > >>             canvas.thishib.loaderVar.setProgress();
> >>> > > > >>             this.close();
> >>> > > > >>
> >>> canvas.thishib.loaderVar.getLanguageByIdAndMax.doCall();
> >>> > > > >>         </method>
> >>> > > > >>
> >>> > > > >> Parallel to this I have checked
> >>> > > > >> /singlewebapp/WebContent/src/base/auth/checkLoginData.lzx to
> >>> find
> >>> > the
> >>> > > > >> login process of given user name name and password. There I
> >>> found
> >>> > that
> >>> > > > >> after submitting correct user name and password, the method
> >>> > > > >> xmlcrm.loginUser return a user object which have all the
> >>> details of
> >>> > > > >> user. That object is assigned to hib.userobject as follows.
> >>> > > > >>
> >>> > > > >> hib.userobject = value;
> >>> > > > >>
> >>> > > > >> So that means  in the above code of invitationQuickLoader,
> >>> > > > >> hib.userobject = userObject; have to do the same thing.
> >>> > > > >>
> >>> > > > >> But I found that on the way of showing the dashboard, in the
> >>> > > > >>
> >>> > > >
> >>> > >
> >>> >
> >>>
> /singlewebapp/WebContent/src/modules/invitation/autoloaderBarOnly.getRoomTypes
> >>> > > > >> method it fails to get room type. Debug log shows that
> >>> getRoomTypes
> >>> > :
> >>> > > > >> null. That means when we logged with invitation hash it cant
> get
> >>> > these
> >>> > > > >> room details.
> >>> > > > >>
> >>> > > > >> Thanks!
> >>> > > > >>
> >>> > > > >> On Thu, Apr 11, 2013 at 12:02 AM, Andun Sameera <
> >>> [email protected]
> >>> > >
> >>> > > > wrote:
> >>> > > > >>> Hi All,
> >>> > > > >>>
> >>> > > > >>> I am investigating following issue at [1]. In that process I
> >>> > > > >>> encountered following problem. I have scheduled some meetings
> >>> using
> >>> > > > >>> following methods,
> >>> > > > >>>
> >>> > > > >>> - Clicking on the calender date to create a meeting and
> >>> sending an
> >>> > > > >>> invitation to registered OM users /external people via iCal
> >>> > > > >>> - Clicking on the calender date to create a meeting and
> >>> sending an
> >>> > > > >>> invitation to registered OM users /external people via simple
> >>> mail
> >>> > > > >>> - Composing a mail with Book Conference room option and
> sending
> >>> > that
> >>> > > > >>> mail to registered OM users /external people.
> >>> > > > >>>
> >>> > > > >>> In each of these situations people will get a mail with link
> >>> "Click
> >>> > > > >>> here to enter room". When I click those links it redirects
> to a
> >>> > > > >>> dashboard and not to the room. This happens to the registered
> >>> OM
> >>> > > users
> >>> > > > >>> as well as unregistered people. Also when I looked at the
> >>> profile
> >>> > of
> >>> > > > >>> that page I found all details are empty for both registered
> >>> users
> >>> > > case
> >>> > > > >>> and external user case.
> >>> > > > >>>
> >>> > > > >>> But with the registered user's case. When we logged in those
> >>> > meeting
> >>> > > > >>> rooms are displayed. So why this want work with clicking the
> >>> link
> >>> > in
> >>> > > > >>> email? Did something wrong with my configuration or setup ?
> >>> Also I
> >>> > am
> >>> > > > >>> checking on
> >>> > > >
> >>> >
> >>>
> singlewebapp/WebContent/src/modules/invitation/invitationQuickLoader.lzx
> >>> > > > >>> to find a reason.
> >>> > > > >>>
> >>> > > > >>> [1] - https://issues.apache.org/jira/browse/OPENMEETINGS-481
> >>> > > > >>>
> >>> > > > >>> Thanks!
> >>> > > > >>> --
> >>> > > > >>> Regards
> >>> > > > >>> Andun S.L. Gunawardana
> >>> > > > >>> Undergraduate
> >>> > > > >>> Department of Computer Science And Engineering
> >>> > > > >>> University of Moratuwa
> >>> > > > >>> Sri Lanka
> >>> > > > >>>
> >>> > > > >>> Blog - http://www.insightforfuture.blogspot.com/
> >>> > > > >>> LinkedIn -
> >>> > > > http://www.linkedin.com/pub/andun-s-l-gunawardana/34/646/703
> >>> > > > >>> Twitter -http://twitter.com/AndunSLG
> >>> > > > >>
> >>> > > > >>
> >>> > > > >>
> >>> > > > >> --
> >>> > > > >> Regards
> >>> > > > >> Andun S.L. Gunawardana
> >>> > > > >> Undergraduate
> >>> > > > >> Department of Computer Science And Engineering
> >>> > > > >> University of Moratuwa
> >>> > > > >> Sri Lanka
> >>> > > > >>
> >>> > > > >> Blog - http://www.insightforfuture.blogspot.com/
> >>> > > > >> LinkedIn -
> >>> > > http://www.linkedin.com/pub/andun-s-l-gunawardana/34/646/703
> >>> > > > >> Twitter -http://twitter.com/AndunSLG
> >>> > > > >
> >>> > > > >
> >>> > > > >
> >>> > > > > --
> >>> > > > > Regards
> >>> > > > > Andun S.L. Gunawardana
> >>> > > > > Undergraduate
> >>> > > > > Department of Computer Science And Engineering
> >>> > > > > University of Moratuwa
> >>> > > > > Sri Lanka
> >>> > > > >
> >>> > > > > Blog - http://www.insightforfuture.blogspot.com/
> >>> > > > > LinkedIn -
> >>> > > http://www.linkedin.com/pub/andun-s-l-gunawardana/34/646/703
> >>> > > > > Twitter -http://twitter.com/AndunSLG
> >>> > > >
> >>> > > >
> >>> > > >
> >>> > > > --
> >>> > > > Regards
> >>> > > > Andun S.L. Gunawardana
> >>> > > > Undergraduate
> >>> > > > Department of Computer Science And Engineering
> >>> > > > University of Moratuwa
> >>> > > > Sri Lanka
> >>> > > >
> >>> > > > Blog - http://www.insightforfuture.blogspot.com/
> >>> > > > LinkedIn -
> >>> > http://www.linkedin.com/pub/andun-s-l-gunawardana/34/646/703
> >>> > > > Twitter -http://twitter.com/AndunSLG
> >>> > > >
> >>> > >
> >>> > >
> >>> > >
> >>> > > --
> >>> > > WBR
> >>> > > Maxim aka solomax
> >>> > >
> >>> >
> >>> >
> >>> >
> >>> > --
> >>> > Regards
> >>> > Andun S.L. Gunawardana
> >>> > Undergraduate
> >>> > Department of Computer Science And Engineering
> >>> > University of Moratuwa
> >>> > Sri Lanka
> >>> >
> >>> > Blog - http://www.insightforfuture.blogspot.com/
> >>> > LinkedIn -
> >>> http://www.linkedin.com/pub/andun-s-l-gunawardana/34/646/703
> >>> > Twitter -http://twitter.com/AndunSLG
> >>> >
> >>>
> >>>
> >>>
> >>> --
> >>> WBR
> >>> Maxim aka solomax
> >>>
> >>
> >>
> >>
> >> --
> >> Regards
> >> Andun S.L. Gunawardana
> >> Undergraduate
> >> Department of Computer Science And Engineering
> >> University of Moratuwa
> >> Sri Lanka
> >>
> >> Blog - http://www.insightforfuture.blogspot.com/
> >> LinkedIn - http://www.linkedin.com/pub/andun-s-l-gunawardana/34/646/703
> >> Twitter -http://twitter.com/AndunSLG
> >>
> >>
> >>
> >>
> >>
> >
> >
> >
> > --
> > Regards
> > Andun S.L. Gunawardana
> > Undergraduate
> > Department of Computer Science And Engineering
> > University of Moratuwa
> > Sri Lanka
> >
> > Blog - http://www.insightforfuture.blogspot.com/
> > LinkedIn - http://www.linkedin.com/pub/andun-s-l-gunawardana/34/646/703
> > Twitter -http://twitter.com/AndunSLG
> >
> >
> >
> >
> >
>
>
>
> --
> Regards
> Andun S.L. Gunawardana
> Undergraduate
> Department of Computer Science And Engineering
> University of Moratuwa
> Sri Lanka
>
> Blog - http://www.insightforfuture.blogspot.com/
> LinkedIn - http://www.linkedin.com/pub/andun-s-l-gunawardana/34/646/703
> Twitter -http://twitter.com/AndunSLG
>



-- 
WBR
Maxim aka solomax

Reply via email to