Hi Dinusha,

I have already tested the invoking of REST API via the resources api which
is already created in GREG by default and the behavior of APIs created in
AM and the visibility of them in GREG side.
But in here I wanted to test the behavior of the user manually created APIS
in GREG and the state change visibility and the other operations via AM
side.

Thanks and Regards,

Ushani


On Sun, Aug 25, 2013 at 12:19 PM, Dinusha Senanayaka <dinu...@wso2.com>wrote:

> Hi Ushani,
>
> With the api-manager integration done for Greg-4.6.0, we focussed on the
> providing api-management for the GReg REST API.. Basically they want to add
> the capability to REST API, that can be accessed only via the
> api-management.  With regard to that feature implementation, if you go to
> the api-publisher and if you create and publish an API manually , like we
> doing it in the API Manager, it should work. Or without manually creating
> the API's through api-publisher UI, you can defined the API/s in
> api-manager.xml. That will create that APIs automatically with the server
> start-up. So basically we need to test the REST API and the above scenarios
> for this feature.
>
> Issue that you have reported is a separate path that implemented with the
> asset-store sometime back AFAIK. Anyway, we need to fix this as well, since
> users does not see them as separate features. We will check on it.
>
> Regards,
> Dinusha.
>
> On Sun, Aug 25, 2013 at 11:31 AM, Ushani Balasooriya <ush...@wso2.com>wrote:
>
>> Hi,
>>
>> User Created APIs in GREG side cannot be browsed via AM publisher. This
>> is blocking testing of other features as well. Pls have a look.
>> Jira is reported in [1]
>>
>> [1] https://wso2.org/jira/browse/REGISTRY-1813
>>
>> Following exception can be seen in the backend.
>>
>> [2013-08-25 11:26:31,319] ERROR
>> {org.wso2.carbon.apimgt.impl.dao.ApiMgtDAO} -  Unable to find the API:
>> org.wso2.carbon.apimgt.api.model.APIIdentifier@c465efcd in the database
>> [2013-08-25 11:26:31,319] ERROR
>> {org.wso2.carbon.apimgt.hostobjects.APIProviderHostObject} -  Error
>> occurred while getting API information of the api- api1-1.0.0
>> org.wso2.carbon.apimgt.api.APIManagementException: Unable to find the
>> API: org.wso2.carbon.apimgt.api.model.APIIdentifier@c465efcd in the
>> database
>>     at
>> org.wso2.carbon.apimgt.impl.dao.ApiMgtDAO.getAPIID(ApiMgtDAO.java:3936)
>>     at
>> org.wso2.carbon.apimgt.impl.dao.ApiMgtDAO.getAverageRating(ApiMgtDAO.java:3106)
>>     at
>> org.wso2.carbon.apimgt.impl.dao.ApiMgtDAO.getAverageRating(ApiMgtDAO.java:3076)
>>     at
>> org.wso2.carbon.apimgt.impl.utils.APIUtil.getAverageRating(APIUtil.java:1422)
>>     at org.wso2.carbon.apimgt.impl.utils.APIUtil.getAPI(APIUtil.java:122)
>>     at
>> org.wso2.carbon.apimgt.impl.AbstractAPIManager.getAPI(AbstractAPIManager.java:298)
>>     at
>> org.wso2.carbon.apimgt.hostobjects.APIProviderHostObject.jsFunction_getAPI(APIProviderHostObject.java:880)
>>     at sun.reflect.GeneratedMethodAccessor228.invoke(Unknown Source)
>>     at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>     at java.lang.reflect.Method.invoke(Method.java:601)
>>     at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:126)
>>     at org.mozilla.javascript.FunctionObject.call(FunctionObject.java:386)
>>     at
>> org.mozilla.javascript.optimizer.OptRuntime.callN(OptRuntime.java:52)
>>     at
>> org.jaggeryjs.rhino.publisher.modules.api.c2._c_anonymous_1(/publisher/modules/api/list.jag:7)
>>     at
>> org.jaggeryjs.rhino.publisher.modules.api.c2.call(/publisher/modules/api/list.jag)
>>     at
>> org.mozilla.javascript.ScriptRuntime.applyOrCall(ScriptRuntime.java:2430)
>>     at
>> org.mozilla.javascript.BaseFunction.execIdCall(BaseFunction.java:269)
>>     at
>> org.mozilla.javascript.IdFunctionObject.call(IdFunctionObject.java:97)
>>     at
>> org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:42)
>>     at
>> org.jaggeryjs.rhino.publisher.modules.api.c0._c_anonymous_6(/publisher/modules/api/module.jag:23)
>>     at
>> org.jaggeryjs.rhino.publisher.modules.api.c0.call(/publisher/modules/api/module.jag)
>>     at
>> org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:32)
>>     at
>> org.jaggeryjs.rhino.publisher.site.blocks.item_info.c0._c_anonymous_3(/publisher/site/blocks/item-info/block.jag:25)
>>     at
>> org.jaggeryjs.rhino.publisher.site.blocks.item_info.c0.call(/publisher/site/blocks/item-info/block.jag)
>>     at
>> org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:32)
>>     at
>> org.jaggeryjs.rhino.publisher.jagg.c0._c_anonymous_30(/publisher/jagg/jagg.jag:211)
>>     at
>> org.jaggeryjs.rhino.publisher.jagg.c0.call(/publisher/jagg/jagg.jag)
>>     at
>> org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:63)
>>     at
>> org.jaggeryjs.rhino.publisher.jagg.c0._c_anonymous_31(/publisher/jagg/jagg.jag:274)
>>     at
>> org.jaggeryjs.rhino.publisher.jagg.c0.call(/publisher/jagg/jagg.jag)
>>     at
>> org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:63)
>>     at
>> org.jaggeryjs.rhino.publisher.jagg.c0._c_anonymous_30(/publisher/jagg/jagg.jag:206)
>>     at
>> org.jaggeryjs.rhino.publisher.jagg.c0.call(/publisher/jagg/jagg.jag)
>>     at
>> org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:63)
>>     at
>> org.jaggeryjs.rhino.publisher.jagg.c0._c_anonymous_31(/publisher/jagg/jagg.jag:271)
>>     at
>> org.jaggeryjs.rhino.publisher.jagg.c0.call(/publisher/jagg/jagg.jag)
>>     at
>> org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:63)
>>     at
>> org.jaggeryjs.rhino.publisher.jagg.c0._c_anonymous_30(/publisher/jagg/jagg.jag:206)
>>     at
>> org.jaggeryjs.rhino.publisher.jagg.c0.call(/publisher/jagg/jagg.jag)
>>     at
>> org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:63)
>>     at
>> org.jaggeryjs.rhino.publisher.jagg.c0._c_anonymous_42(/publisher/jagg/jagg.jag:436)
>>     at
>> org.jaggeryjs.rhino.publisher.jagg.c0.call(/publisher/jagg/jagg.jag)
>>     at
>> org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:32)
>>     at
>> org.jaggeryjs.rhino.publisher.site.pages.c4._c_anonymous_1(/publisher/site/pages/item-info.jag:17)
>>     at
>> org.jaggeryjs.rhino.publisher.site.pages.c4.call(/publisher/site/pages/item-info.jag)
>>     at
>> org.mozilla.javascript.optimizer.OptRuntime.call0(OptRuntime.java:23)
>>     at
>> org.jaggeryjs.rhino.publisher.site.pages.c4._c_script_0(/publisher/site/pages/item-info.jag:10)
>>     at
>> org.jaggeryjs.rhino.publisher.site.pages.c4.call(/publisher/site/pages/item-info.jag)
>>     at
>> org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:394)
>>     at
>> org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3091)
>>     at
>> org.jaggeryjs.rhino.publisher.site.pages.c4.call(/publisher/site/pages/item-info.jag)
>>     at
>> org.jaggeryjs.rhino.publisher.site.pages.c4.exec(/publisher/site/pages/item-info.jag)
>>     at
>> org.jaggeryjs.scriptengine.engine.RhinoEngine.execScript(RhinoEngine.java:570)
>>     at
>> org.jaggeryjs.scriptengine.engine.RhinoEngine.exec(RhinoEngine.java:273)
>>     at
>> org.jaggeryjs.jaggery.core.manager.WebAppManager.execute(WebAppManager.java:432)
>>     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.apimgt.interceptor.valve.APIManagerInterceptorValve.invoke(APIManagerInterceptorValve.java:116)
>>     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:1110)
>>     at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>>     at java.lang.Thread.run(Thread.java:722)
>> [2013-08-25 11:26:31,322] ERROR {JAGGERY.site.pages.item-info:jag} -
>> org.wso2.carbon.apimgt.api.APIManagementException: Error occurred while
>> getting API information of the api- api1-1.0.0
>> [2013-08-25 11:26:31,335] ERROR
>> {org.jaggeryjs.scriptengine.engine.RhinoEngine} -
>> org.mozilla.javascript.EcmaError: TypeError: Cannot read property "name"
>> from null
>> (/publisher/site/themes/default/templates/item-info/template.jag#9)
>> [2013-08-25 11:26:31,335] ERROR
>> {org.jaggeryjs.jaggery.core.manager.WebAppManager} -
>> org.mozilla.javascript.EcmaError: TypeError: Cannot read property "name"
>> from null
>> (/publisher/site/themes/default/templates/item-info/template.jag#9)
>> org.jaggeryjs.scriptengine.exceptions.ScriptException:
>> org.mozilla.javascript.EcmaError: TypeError: Cannot read property "name"
>> from null
>> (/publisher/site/themes/default/templates/item-info/template.jag#9)
>>     at
>> org.jaggeryjs.scriptengine.engine.RhinoEngine.execScript(RhinoEngine.java:575)
>>     at
>> org.jaggeryjs.scriptengine.engine.RhinoEngine.exec(RhinoEngine.java:273)
>>     at
>> org.jaggeryjs.jaggery.core.manager.WebAppManager.execute(WebAppManager.java:432)
>>     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.apimgt.interceptor.valve.APIManagerInterceptorValve.invoke(APIManagerInterceptorValve.java:116)
>>     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:1110)
>>     at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>>     at java.lang.Thread.run(Thread.java:722)
>> Caused by: org.mozilla.javascript.EcmaError: TypeError: Cannot read
>> property "name" from null
>> (/publisher/site/themes/default/templates/item-info/template.jag#9)
>>     at
>> org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3687)
>>     at
>> org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3665)
>>     at
>> org.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3693)
>>     at
>> org.mozilla.javascript.ScriptRuntime.typeError2(ScriptRuntime.java:3712)
>>     at
>> org.mozilla.javascript.ScriptRuntime.undefReadError(ScriptRuntime.java:3725)
>>     at
>> org.mozilla.javascript.ScriptRuntime.getObjectProp(ScriptRuntime.java:1483)
>>     at
>> org.jaggeryjs.rhino.publisher.site.themes.default.templates.item_info.c0._c_anonymous_1(/publisher/site/themes/default/templates/item-info/template.jag:9)
>>     at
>> org.jaggeryjs.rhino.publisher.site.themes.default.templates.item_info.c0.call(/publisher/site/themes/default/templates/item-info/template.jag)
>>     at
>> org.mozilla.javascript.optimizer.OptRuntime.callN(OptRuntime.java:52)
>>     at
>> org.jaggeryjs.rhino.publisher.jagg.c0._c_anonymous_28(/publisher/jagg/jagg.jag:176)
>>     at
>> org.jaggeryjs.rhino.publisher.jagg.c0.call(/publisher/jagg/jagg.jag)
>>     at
>> org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:63)
>>     at
>> org.jaggeryjs.rhino.publisher.jagg.c0._c_anonymous_44(/publisher/jagg/jagg.jag:472)
>>     at
>> org.jaggeryjs.rhino.publisher.jagg.c0.call(/publisher/jagg/jagg.jag)
>>     at
>> org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:32)
>>     at
>> org.jaggeryjs.rhino.publisher.site.themes.default.templates.layout.base.c0._c_anonymous_1(/publisher/site/themes/default/templates/layout/base/template.jag:23)
>>     at
>> org.jaggeryjs.rhino.publisher.site.themes.default.templates.layout.base.c0.call(/publisher/site/themes/default/templates/layout/base/template.jag)
>>     at
>> org.mozilla.javascript.optimizer.OptRuntime.callN(OptRuntime.java:52)
>>     at
>> org.jaggeryjs.rhino.publisher.jagg.c0._c_anonymous_28(/publisher/jagg/jagg.jag:176)
>>     at
>> org.jaggeryjs.rhino.publisher.jagg.c0.call(/publisher/jagg/jagg.jag)
>>     at
>> org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:63)
>>     at
>> org.jaggeryjs.rhino.publisher.jagg.c0._c_anonymous_44(/publisher/jagg/jagg.jag:472)
>>     at
>> org.jaggeryjs.rhino.publisher.jagg.c0.call(/publisher/jagg/jagg.jag)
>>     at
>> org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:32)
>>     at
>> org.jaggeryjs.rhino.publisher.site.themes.default.templates.page.base.c0._c_anonymous_1(/publisher/site/themes/default/templates/page/base/template.jag:88)
>>     at
>> org.jaggeryjs.rhino.publisher.site.themes.default.templates.page.base.c0.call(/publisher/site/themes/default/templates/page/base/template.jag)
>>     at
>> org.mozilla.javascript.optimizer.OptRuntime.callN(OptRuntime.java:52)
>>     at
>> org.jaggeryjs.rhino.publisher.jagg.c0._c_anonymous_42(/publisher/jagg/jagg.jag:455)
>>     at
>> org.jaggeryjs.rhino.publisher.jagg.c0.call(/publisher/jagg/jagg.jag)
>>     at
>> org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:32)
>>     at
>> org.jaggeryjs.rhino.publisher.site.pages.c4._c_anonymous_1(/publisher/site/pages/item-info.jag:17)
>>     at
>> org.jaggeryjs.rhino.publisher.site.pages.c4.call(/publisher/site/pages/item-info.jag)
>>     at
>> org.mozilla.javascript.optimizer.OptRuntime.call0(OptRuntime.java:23)
>>     at
>> org.jaggeryjs.rhino.publisher.site.pages.c4._c_script_0(/publisher/site/pages/item-info.jag:10)
>>     at
>> org.jaggeryjs.rhino.publisher.site.pages.c4.call(/publisher/site/pages/item-info.jag)
>>     at
>> org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:394)
>>     at
>> org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3091)
>>     at
>> org.jaggeryjs.rhino.publisher.site.pages.c4.call(/publisher/site/pages/item-info.jag)
>>     at
>> org.jaggeryjs.rhino.publisher.site.pages.c4.exec(/publisher/site/pages/item-info.jag)
>>     at
>> org.jaggeryjs.scriptengine.engine.RhinoEngine.execScript(RhinoEngine.java:570)
>>     ... 36 more
>>
>>
>>
>>
>> Thanks and Regards,
>> --
>> *Ushani Balasooriya*
>> Software Engineer - QA;
>> WSO2 Inc; http://www.wso2.com/.
>> Mobile; +94772636796
>>
>>
>> _______________________________________________
>> Dev mailing list
>> Dev@wso2.org
>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>
>>
>
>
> --
> Dinusha Dilrukshi
> Senior Software Engineer
> WSO2 Inc.: http://wso2.com/
> Mobile: +94725255071
> Blog: http://dinushasblog.blogspot.com/
>



-- 
*Ushani Balasooriya*
Software Engineer - QA;
WSO2 Inc; http://www.wso2.com/.
Mobile; +94772636796
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to