I think you should also be able to find the wsdl for the service by giving the url shown at the OSGI console Please refer the following link on how to view the wsdl for the service(under the "Writing the service stub" section)
http://wso2.com/library/tutorials/2014/03/how-to-write-a-wso2-carbon-component/ On Wed, Mar 18, 2015 at 2:46 PM, Fathima Dilhasha <dilha...@wso2.com> wrote: > The service is listed in OSGI console. Where else can I check to see why > the service is not found? > > *M.N.F. Dilhasha* > Software Engineering Intern | *WSO2 Lanka* > > email : > *dilha...@wso2.com <dilha...@wso2.com>*mobile : +94 77 8449321 > > On Wed, Mar 18, 2015 at 2:37 PM, Danushka Fernando <danush...@wso2.com> > wrote: > >> Null pointer is coming from Carbon Context. So seems somehow osgi service >> is not found. >> >> Thanks & Regards >> Danushka Fernando >> Software Engineer >> WSO2 inc. http://wso2.com/ >> Mobile : +94716332729 >> >> On Wed, Mar 18, 2015 at 1:18 PM, Fathima Dilhasha <dilha...@wso2.com> >> wrote: >> >>> Hi, >>> >>> Yeah 'createProject' is a method I introduced. I've patched it to my >>> AppFactory instance. >>> Okay, I will debug backend code and see. >>> >>> Thanks. >>> >>> Regards, >>> Dilhasha >>> >>> *M.N.F. Dilhasha* >>> Software Engineering Intern | *WSO2 Lanka* >>> >>> email : >>> *dilha...@wso2.com <dilha...@wso2.com>*mobile : +94 77 8449321 >>> >>> On Wed, Mar 18, 2015 at 1:04 PM, Mahesh Chinthaka <mahe...@wso2.com> >>> wrote: >>> >>>> Hi, >>>> >>>> Is this 'createProject' method implemented by you inside >>>> IssueTrackerService ?? Because in my code I cannot see such a method in >>>> IssueTrackerService. >>>> You can debug the backend code to find out the place where NP occurs. >>>> >>>> >>>> On Wed, Mar 18, 2015 at 11:40 AM, Fathima Dilhasha <dilha...@wso2.com> >>>> wrote: >>>> >>>>> Hi, >>>>> >>>>> I tried logging in between the steps. >>>>> >>>>> * tenantId and tenantDomain are not null >>>>> * The null pointer exception takes place in the following line. >>>>> >>>>> server.osgiService('org.wso2.carbon.appfactory.issuetracking.service.IssueTrackerService').createProject(applicationName", >>>>> issueTrackerConfig); >>>>> >>>>> Is it because the server cannot track the OSGI service I'm referring >>>>> to? (The service is listed in the OSGI cosole) >>>>> >>>>> How can I figure it out? >>>>> >>>>> Thanks. >>>>> Regards, >>>>> Dilhasha >>>>> >>>>> *M.N.F. Dilhasha* >>>>> Software Engineering Intern | *WSO2 Lanka* >>>>> >>>>> email : >>>>> *dilha...@wso2.com <dilha...@wso2.com>*mobile : +94 77 8449321 >>>>> >>>>> On Wed, Mar 18, 2015 at 11:14 AM, Fathima Dilhasha <dilha...@wso2.com> >>>>> wrote: >>>>> >>>>>> Hi Mahesh, >>>>>> >>>>>> Thanks for the points. I'll work on those and see. >>>>>> >>>>>> Regards, >>>>>> Dilhasha >>>>>> >>>>>> *M.N.F. Dilhasha* >>>>>> Software Engineering Intern | *WSO2 Lanka* >>>>>> >>>>>> email : >>>>>> *dilha...@wso2.com <dilha...@wso2.com>*mobile : +94 77 8449321 >>>>>> >>>>>> On Wed, Mar 18, 2015 at 11:13 AM, Mahesh Chinthaka <mahe...@wso2.com> >>>>>> wrote: >>>>>> >>>>>>> Sorry I missed this, >>>>>>> getting modManager varialbe , put this befor getting the tenant >>>>>>> domain. >>>>>>> var modManager = jagg.module("manager"); >>>>>>> >>>>>>> On Wed, Mar 18, 2015 at 11:11 AM, Mahesh Chinthaka <mahe...@wso2.com >>>>>>> > wrote: >>>>>>> >>>>>>>> Hi Dilhasha, >>>>>>>> I think you havent got the tenant domain properly. >>>>>>>> >>>>>>>> you may use following to get tenant domain. >>>>>>>> var tenantDomain = modManager.getTenantDomain(); >>>>>>>> >>>>>>>> you may use following to set tenant domain n id >>>>>>>> >>>>>>>> context.getThreadLocalCarbonContext().setTenantDomain(tenantDomain,true); >>>>>>>> >>>>>>>> >>>>>>>> in between the steps you can put info logs to see values, in that >>>>>>>> way you may be able to see whats null here. >>>>>>>> >>>>>>>> On Wed, Mar 18, 2015 at 10:59 AM, Danushka Fernando < >>>>>>>> danush...@wso2.com> wrote: >>>>>>>> >>>>>>>>> Few points >>>>>>>>> >>>>>>>>> 1. Did you check whether your osgi bundle is activated or not? >>>>>>>>> May be that's the issue. Seems it cannot find the osgi service. >>>>>>>>> 2. When start tenant flow in setTenantDomain method there is a >>>>>>>>> another signature which will take in tenantDomain (String) and >>>>>>>>> resolveTenantID (boolean) parameters. You can use that instead of >>>>>>>>> setting >>>>>>>>> tenantID manually. >>>>>>>>> 3. The way you have included the module, AFAIR that's not the >>>>>>>>> way to refer to a module. Refer to other places that we have done >>>>>>>>> such a >>>>>>>>> thing. >>>>>>>>> >>>>>>>>> >>>>>>>>> Thanks & Regards >>>>>>>>> Danushka Fernando >>>>>>>>> Software Engineer >>>>>>>>> WSO2 inc. http://wso2.com/ >>>>>>>>> Mobile : +94716332729 >>>>>>>>> >>>>>>>>> On Wed, Mar 18, 2015 at 10:45 AM, Fathima Dilhasha < >>>>>>>>> dilha...@wso2.com> wrote: >>>>>>>>> >>>>>>>>>> Hi Mahesh, >>>>>>>>>> >>>>>>>>>> Thanks for the response. >>>>>>>>>> >>>>>>>>>> Following is the code in saveConfig.jag >>>>>>>>>> >>>>>>>>>> include("/jagg/jagg.jag"); >>>>>>>>>> include("/jagg/constants.jag"); >>>>>>>>>> include("/jagg/config_reader.jag"); >>>>>>>>>> include("/modules/manager/manager.jag"); >>>>>>>>>> >>>>>>>>>> (function () { >>>>>>>>>> >>>>>>>>>> var carbon = require('carbon'); >>>>>>>>>> var log = new Log("module/issuetracker/saveConfig.jag"); >>>>>>>>>> var multitenancy = carbon.multitenancy; >>>>>>>>>> var server = carbon.server; >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> var context=multitenancy.getPrivilegedCarbonContext(); >>>>>>>>>> var tenantDomain = getTenantDomain(); >>>>>>>>>> var tenantId=getTenantId(); >>>>>>>>>> >>>>>>>>>> var issueTrackerConfig = >>>>>>>>>> Packages.org.wso2.carbon.appfactory.issuetracking.beans.IssueTrackerConfigurations; >>>>>>>>>> var issueConfig=new issueTrackerConfig(); >>>>>>>>>> issueConfig.setIssueTrackerinstanceUrl("some url"); >>>>>>>>>> >>>>>>>>>> try{ >>>>>>>>>> >>>>>>>>>> context.startTenantFlow(); >>>>>>>>>> context.getThreadLocalCarbonContext().setTenantId(tenantId); >>>>>>>>>> >>>>>>>>>> context.getThreadLocalCarbonContext().setTenantDomain(tenantDomain); >>>>>>>>>> >>>>>>>>>> server.osgiService('org.wso2.carbon.appfactory.issuetracking.service.IssueTrackerService').createProject("applicationName", >>>>>>>>>> issueTrackerConfig); >>>>>>>>>> }catch(e){ >>>>>>>>>> log.error(e); >>>>>>>>>> }finally{ >>>>>>>>>> context.endTenantFlow(); >>>>>>>>>> } >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> }()); >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> The getTenantDomain,getTenantId functions are in a different jag >>>>>>>>>> file, which I have included (manager.jag). >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> *M.N.F. Dilhasha* >>>>>>>>>> Software Engineering Intern | *WSO2 Lanka* >>>>>>>>>> >>>>>>>>>> email : >>>>>>>>>> *dilha...@wso2.com <dilha...@wso2.com>*mobile : +94 77 8449321 >>>>>>>>>> >>>>>>>>>> On Wed, Mar 18, 2015 at 10:35 AM, Mahesh Chinthaka < >>>>>>>>>> mahe...@wso2.com> wrote: >>>>>>>>>> >>>>>>>>>>> Hi Dilhasha, >>>>>>>>>>> >>>>>>>>>>> This could be either not setting tenant domain/ id properly or, >>>>>>>>>>> issueTrackerConfig parameter might be null at that moment. can you >>>>>>>>>>> share >>>>>>>>>>> the code segment of whole function please. So we can see the reason >>>>>>>>>>> for NPE. >>>>>>>>>>> >>>>>>>>>>> On Wed, Mar 18, 2015 at 10:27 AM, Fathima Dilhasha < >>>>>>>>>>> dilha...@wso2.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> Hi, >>>>>>>>>>>> >>>>>>>>>>>> I'm trying to access an osgi service available in WSO2 >>>>>>>>>>>> Appfactory, from the 'appmgt' jaggery app. In this process I get >>>>>>>>>>>> the >>>>>>>>>>>> following exception in the server. >>>>>>>>>>>> >>>>>>>>>>>> *TID: [0] [AF] [2015-03-18 04:44:00,643] ERROR >>>>>>>>>>>> {module/issuetracker/saveConfig.jag} - >>>>>>>>>>>> org.mozilla.javascript.WrappedException: Wrapped >>>>>>>>>>>> java.lang.NullPointerException (osgi#8)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.mozilla.javascript.Context.throwAsScriptRuntimeEx(Context.java:1754)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.mozilla.javascript.MemberBox.invoke(MemberBox.java:148)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:225)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:32)* >>>>>>>>>>>> * at org.mozilla.javascript.gen.osgi_11._c_anonymous_2(osgi:8)* >>>>>>>>>>>> * at org.mozilla.javascript.gen.osgi_11.call(osgi)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:32)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.jaggeryjs.rhino.appmgt.modules.issuetracker.get.c0._c_anonymous_1(/appmgt/modules/issuetracker/get/saveConfig.jag:49)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.jaggeryjs.rhino.appmgt.modules.issuetracker.get.c0.call(/appmgt/modules/issuetracker/get/saveConfig.jag)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.mozilla.javascript.optimizer.OptRuntime.call0(OptRuntime.java:23)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.jaggeryjs.rhino.appmgt.modules.issuetracker.get.c0._c_script_0(/appmgt/modules/issuetracker/get/saveConfig.jag:26)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.jaggeryjs.rhino.appmgt.modules.issuetracker.get.c0.call(/appmgt/modules/issuetracker/get/saveConfig.jag)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:394)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3091)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.jaggeryjs.rhino.appmgt.modules.issuetracker.get.c0.call(/appmgt/modules/issuetracker/get/saveConfig.jag)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.jaggeryjs.rhino.appmgt.modules.issuetracker.get.c0.exec(/appmgt/modules/issuetracker/get/saveConfig.jag)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.jaggeryjs.scriptengine.engine.RhinoEngine.execScript(RhinoEngine.java:567)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.jaggeryjs.scriptengine.engine.RhinoEngine.exec(RhinoEngine.java:273)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.jaggeryjs.jaggery.core.manager.WebAppManager.execute(WebAppManager.java:541)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.jaggeryjs.jaggery.core.JaggeryServlet.doGet(JaggeryServlet.java:24)* >>>>>>>>>>>> * at >>>>>>>>>>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:735)* >>>>>>>>>>>> * at >>>>>>>>>>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:848)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.jaggeryjs.jaggery.core.JaggeryFilter.doFilter(JaggeryFilter.java:21)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:178)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve$1.invoke(CarbonTomcatValve.java:47)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.wso2.carbon.webapp.mgt.TenantLazyLoaderValve.invoke(TenantLazyLoaderValve.java:56)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:141)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:156)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:52)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1653)* >>>>>>>>>>>> * at >>>>>>>>>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)* >>>>>>>>>>>> * at >>>>>>>>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)* >>>>>>>>>>>> * at java.lang.Thread.run(Thread.java:744)* >>>>>>>>>>>> *Caused by: java.lang.NullPointerException* >>>>>>>>>>>> * at >>>>>>>>>>>> org.wso2.carbon.context.PrivilegedCarbonContext.getOSGiService(PrivilegedCarbonContext.java:448)* >>>>>>>>>>>> * at sun.reflect.GeneratedMethodAccessor70.invoke(Unknown >>>>>>>>>>>> Source)* >>>>>>>>>>>> * at >>>>>>>>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)* >>>>>>>>>>>> * at java.lang.reflect.Method.invoke(Method.java:606)* >>>>>>>>>>>> * at >>>>>>>>>>>> org.mozilla.javascript.MemberBox.invoke(MemberBox.java:126)* >>>>>>>>>>>> * ... 50 more* >>>>>>>>>>>> * {module/issuetracker/saveConfig.jag}* >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Following is the code segment in saveConfig.jag, which is >>>>>>>>>>>> responsible for calling the osgi service. >>>>>>>>>>>> >>>>>>>>>>>> try{ >>>>>>>>>>>> >>>>>>>>>>>> context.startTenantFlow(); >>>>>>>>>>>> context.getThreadLocalCarbonContext().setTenantId(tenantId); >>>>>>>>>>>> >>>>>>>>>>>> context.getThreadLocalCarbonContext().setTenantDomain(tenantDomain); >>>>>>>>>>>> >>>>>>>>>>>> server.osgiService('org.wso2.carbon.appfactory.issuetracking.service.IssueTrackerService').createProject("applicationName", >>>>>>>>>>>> issueTrackerConfig); >>>>>>>>>>>> }catch(e){ >>>>>>>>>>>> log.error(e); >>>>>>>>>>>> }finally{ >>>>>>>>>>>> context.endTenantFlow(); >>>>>>>>>>>> } >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> It would be really helpful, if someone can help me to overcome >>>>>>>>>>>> this problem. >>>>>>>>>>>> >>>>>>>>>>>> Thanks. >>>>>>>>>>>> Regards, >>>>>>>>>>>> Dilhasha >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> *M.N.F. Dilhasha* >>>>>>>>>>>> Software Engineering Intern | *WSO2 Lanka* >>>>>>>>>>>> >>>>>>>>>>>> email : >>>>>>>>>>>> *dilha...@wso2.com <dilha...@wso2.com>*mobile : +94 77 8449321 >>>>>>>>>>>> >>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>> Dev mailing list >>>>>>>>>>>> Dev@wso2.org >>>>>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> *Mahesh Chinthaka Vidanagama* | Software Engineer >>>>>>>>>>> WSO2, Inc | lean. enterprise. middleware. >>>>>>>>>>> #20, Palm Grove, Colombo 03, Sri Lanka >>>>>>>>>>> Mobile: +94 71 63 63 083 | Work: +94 112 145 345 >>>>>>>>>>> Email: mahe...@wso2.com | Web: www.wso2.com >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> _______________________________________________ >>>>>>>>>> Dev mailing list >>>>>>>>>> Dev@wso2.org >>>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> *Mahesh Chinthaka Vidanagama* | Software Engineer >>>>>>>> WSO2, Inc | lean. enterprise. middleware. >>>>>>>> #20, Palm Grove, Colombo 03, Sri Lanka >>>>>>>> Mobile: +94 71 63 63 083 | Work: +94 112 145 345 >>>>>>>> Email: mahe...@wso2.com | Web: www.wso2.com >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> *Mahesh Chinthaka Vidanagama* | Software Engineer >>>>>>> WSO2, Inc | lean. enterprise. middleware. >>>>>>> #20, Palm Grove, Colombo 03, Sri Lanka >>>>>>> Mobile: +94 71 63 63 083 | Work: +94 112 145 345 >>>>>>> Email: mahe...@wso2.com | Web: www.wso2.com >>>>>>> >>>>>> >>>>>> >>>>> >>>> >>>> >>>> -- >>>> *Mahesh Chinthaka Vidanagama* | Software Engineer >>>> WSO2, Inc | lean. enterprise. middleware. >>>> #20, Palm Grove, Colombo 03, Sri Lanka >>>> Mobile: +94 71 63 63 083 | Work: +94 112 145 345 >>>> Email: mahe...@wso2.com | Web: www.wso2.com >>>> >>> >>> >>> _______________________________________________ >>> Dev mailing list >>> Dev@wso2.org >>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>> >>> >> > > _______________________________________________ > Dev mailing list > Dev@wso2.org > http://wso2.org/cgi-bin/mailman/listinfo/dev > > -- Pubudu Dodangoda BSc Engineering(Hon's) Undergraduate Department of Computer Science Engineering University of Moratuwa 0716053681 / 0775192994
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev