Yes, the regex should be as follows,
This is a sample condition i did. Your curly brackets cause the issue. It's
good you figure it out.
<Condition>
<Apply
FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-regexp-match">
<AttributeValue
DataType="http://www.w3.org/2001/XMLSchema#string">^([a-zA-Z0-9_.-])[email protected]</AttributeValue>
<Apply
FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-one-and-only">
<AttributeDesignator
AttributeId="http://wso2.org/identity/user/username"
Category="http://wso2.org/identity/user"
DataType="http://www.w3.org/2001/XMLSchema#string"
MustBePresent="true"></AttributeDesignator>
</Apply>
</Apply>
</Condition>
On Fri, Sep 28, 2018 at 7:21 AM Rajith Siriwardena <[email protected]> wrote:
> I was able to fix this by writing the condition as follows
>
> <Rule Effect="Permit" RuleId="permit_by_roles">
> <Condition>
> <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:any-of">
> <Function
> FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-regexp-match"></Function>
> <AttributeValue DataType="
> http://www.w3.org/2001/XMLSchema#string">^manager_.*$</AttributeValue>
> <AttributeDesignator AttributeId="http://wso2.org/claims/role"
> Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"
> DataType="http://www.w3.org/2001/XMLSchema#string"
> MustBePresent="true"></AttributeDesignator>
> </Apply>
> </Condition>
> </Rule>
>
> Thanks @Godwin Shrimal <[email protected]>
>
> [1] http://xacmlinfo.org/2013/09/02/how-write-xacml-policies-1/
>
> On Fri, Sep 28, 2018 at 10:05 AM Rajith Siriwardena <[email protected]>
> wrote:
>
>> + Dev
>>
>> On Fri, Sep 28, 2018 at 9:41 AM Rajith Siriwardena <[email protected]>
>> wrote:
>>
>>> Hi
>>>
>>> I'm getting the following error when I try to apply a regex function to
>>> an XACML policy.
>>>
>>> Policy
>>>
>>> ---------
>>> *<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17"
>>> PolicyId="authn_bank_admin_role_based_policy_template"
>>> RuleCombiningAlgId="urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:first-applicable"
>>> Version="1.0">*
>>> * <Description>This policy is for role based authentication for
>>> managers</Description>*
>>> * <Target>*
>>> * <AnyOf>*
>>> * <AllOf>*
>>> * <Match
>>> MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">*
>>> * <AttributeValue
>>> DataType="http://www.w3.org/2001/XMLSchema#string
>>> <http://www.w3.org/2001/XMLSchema#string>">saml2-web-app-dispatch.com
>>> <http://saml2-web-app-dispatch.com></AttributeValue>*
>>> * <AttributeDesignator
>>> AttributeId="http://wso2.org/identity/sp/sp-name
>>> <http://wso2.org/identity/sp/sp-name>"
>>> Category="http://wso2.org/identity/sp <http://wso2.org/identity/sp>"
>>> DataType="http://www.w3.org/2001/XMLSchema#string
>>> <http://www.w3.org/2001/XMLSchema#string>"
>>> MustBePresent="false"></AttributeDesignator>*
>>> * </Match>*
>>> * <Match
>>> MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">*
>>> * <AttributeValue
>>> DataType="http://www.w3.org/2001/XMLSchema#string
>>> <http://www.w3.org/2001/XMLSchema#string>">authenticate</AttributeValue>*
>>> * <AttributeDesignator
>>> AttributeId="http://wso2.org/identity/identity-action/action-name
>>> <http://wso2.org/identity/identity-action/action-name>"
>>> Category="http://wso2.org/identity/identity-action
>>> <http://wso2.org/identity/identity-action>"
>>> DataType="http://www.w3.org/2001/XMLSchema#string
>>> <http://www.w3.org/2001/XMLSchema#string>"
>>> MustBePresent="false"></AttributeDesignator>*
>>> * </Match>*
>>> * </AllOf>*
>>> * </AnyOf>*
>>> * </Target>*
>>> * <Rule Effect="Permit" RuleId="permit_by_roles">*
>>> * <Condition>*
>>> * <Apply
>>> FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-regexp-match">*
>>> * <AttributeValue
>>> DataType="http://www.w3.org/2001/XMLSchema#string
>>> <http://www.w3.org/2001/XMLSchema#string>">{ ^manager_.*$
>>> }</AttributeValue>*
>>> * <AttributeDesignator
>>> AttributeId="http://wso2.org/claims/role <http://wso2.org/claims/role>"
>>> Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"
>>> DataType="http://www.w3.org/2001/XMLSchema#string
>>> <http://www.w3.org/2001/XMLSchema#string>"
>>> MustBePresent="true"></AttributeDesignator>*
>>> * </Apply>*
>>> * </Condition>*
>>> * </Rule>*
>>> * <Rule Effect="Deny" RuleId="deny_others"></Rule>*
>>> *</Policy> *
>>>
>>> ----------
>>>
>>> Error log
>>>
>>> [2018-09-28 09:32:20,260] ERROR
>>> {org.wso2.carbon.identity.entitlement.pap.PAPPolicyReader} - Error while
>>> parsing the policy
>>> java.lang.IllegalArgumentException: illegal parameter
>>> at org.wso2.balana.cond.FunctionBase.checkInputs(FunctionBase.java:380)
>>> at org.wso2.balana.cond.Apply.<init>(Apply.java:89)
>>> at org.wso2.balana.cond.Apply.getInstance(Apply.java:227)
>>> at org.wso2.balana.cond.Apply.getInstance(Apply.java:188)
>>> at
>>> org.wso2.balana.cond.ExpressionHandler.parseExpression(ExpressionHandler.java:53)
>>> at org.wso2.balana.cond.Condition.getInstance(Condition.java:177)
>>> at org.wso2.balana.Rule.getInstance(Rule.java:237)
>>> at org.wso2.balana.Policy.<init>(Policy.java:303)
>>> at org.wso2.balana.Policy.getInstance(Policy.java:382)
>>> at
>>> org.wso2.carbon.identity.entitlement.pap.PAPPolicyReader.handleDocument(PAPPolicyReader.java:158)
>>> at
>>> org.wso2.carbon.identity.entitlement.pap.PAPPolicyReader.getPolicy(PAPPolicyReader.java:119)
>>> at
>>> org.wso2.carbon.identity.entitlement.EntitlementPolicyAdminService.addOrUpdatePolicy(EntitlementPolicyAdminService.java:741)
>>> at
>>> org.wso2.carbon.identity.entitlement.EntitlementPolicyAdminService.updatePolicy(EntitlementPolicyAdminService.java:170)
>>> at sun.reflect.GeneratedMethodAccessor254.invoke(Unknown Source)
>>> at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>> at java.lang.reflect.Method.invoke(Method.java:498)
>>> at
>>> org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:212)
>>> at
>>> org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:117)
>>> at
>>> org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
>>> at
>>> org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:110)
>>> at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
>>> at
>>> org.apache.axis2.transport.local.LocalTransportReceiver.processMessage(LocalTransportReceiver.java:170)
>>> at
>>> org.apache.axis2.transport.local.LocalTransportReceiver.processMessage(LocalTransportReceiver.java:82)
>>> at
>>> org.wso2.carbon.core.transports.local.CarbonLocalTransportSender.finalizeSendWithToAddress(CarbonLocalTransportSender.java:45)
>>> at
>>> org.apache.axis2.transport.local.LocalTransportSender.invoke(LocalTransportSender.java:77)
>>> at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442)
>>> at
>>> org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:441)
>>> at
>>> org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:227)
>>> at
>>> org.apache.axis2.client.OperationClient.execute(OperationClient.java:149)
>>> at
>>> org.wso2.carbon.identity.entitlement.stub.EntitlementPolicyAdminServiceStub.updatePolicy(EntitlementPolicyAdminServiceStub.java:1973)
>>> at
>>> org.wso2.carbon.identity.entitlement.ui.client.EntitlementPolicyAdminServiceClient.updatePolicy(EntitlementPolicyAdminServiceClient.java:210)
>>> at
>>> org.apache.jsp.entitlement.update_002dpolicy_002dsubmit_jsp._jspService(update_002dpolicy_002dsubmit_jsp.java:147)
>>> at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
>>> at
>>> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
>>> at
>>> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
>>> at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
>>> at org.wso2.carbon.ui.JspServlet.service(JspServlet.java:155)
>>> at org.wso2.carbon.ui.TilesJspServlet.service(TilesJspServlet.java:80)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
>>> at
>>> org.eclipse.equinox.http.helper.ContextPathServletAdaptor.service(ContextPathServletAdaptor.java:37)
>>> at
>>> org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61)
>>> at
>>> org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128)
>>> at
>>> org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:68)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
>>> at
>>> org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.service(DelegationServlet.java:68)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:743)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:603)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:542)
>>> at
>>> org.eclipse.equinox.http.servlet.internal.RequestDispatcherAdaptor.include(RequestDispatcherAdaptor.java:37)
>>> at
>>> org.eclipse.equinox.http.helper.ContextPathServletAdaptor$RequestDispatcherAdaptor.include(ContextPathServletAdaptor.java:369)
>>> at
>>> org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:905)
>>> at
>>> org.apache.jasper.runtime.PageContextImpl.doInclude(PageContextImpl.java:688)
>>> at
>>> org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:682)
>>> at sun.reflect.GeneratedMethodAccessor121.invoke(Unknown Source)
>>> at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>> at java.lang.reflect.Method.invoke(Method.java:498)
>>> at org.apache.tiles.jsp.context.JspUtil.doInclude(JspUtil.java:87)
>>> at
>>> org.apache.tiles.jsp.context.JspTilesRequestContext.include(JspTilesRequestContext.java:88)
>>> at
>>> org.apache.tiles.jsp.context.JspTilesRequestContext.dispatch(JspTilesRequestContext.java:82)
>>> at
>>> org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:465)
>>> at
>>> org.apache.tiles.jsp.taglib.InsertAttributeTag.render(InsertAttributeTag.java:140)
>>> at
>>> org.apache.tiles.jsp.taglib.InsertAttributeTag.render(InsertAttributeTag.java:117)
>>> at
>>> org.apache.tiles.jsp.taglib.RenderTagSupport.execute(RenderTagSupport.java:171)
>>> at
>>> org.apache.tiles.jsp.taglib.RoleSecurityTagSupport.doEndTag(RoleSecurityTagSupport.java:75)
>>> at
>>> org.apache.tiles.jsp.taglib.ContainerTagSupport.doEndTag(ContainerTagSupport.java:80)
>>> at
>>> org.apache.jsp.admin.layout.template_jsp._jspx_meth_tiles_005finsertAttribute_005f7(template_jsp.java:733)
>>> at
>>> org.apache.jsp.admin.layout.template_jsp._jspService(template_jsp.java:396)
>>> at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
>>> at
>>> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
>>> at
>>> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
>>> at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
>>> at org.wso2.carbon.ui.JspServlet.service(JspServlet.java:155)
>>> at org.wso2.carbon.ui.TilesJspServlet.service(TilesJspServlet.java:80)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
>>> at
>>> org.eclipse.equinox.http.helper.ContextPathServletAdaptor.service(ContextPathServletAdaptor.java:37)
>>> at
>>> org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61)
>>> at
>>> org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128)
>>> at
>>> org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:68)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
>>> at
>>> org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.service(DelegationServlet.java:68)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>>> at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:743)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:485)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:410)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:337)
>>> at
>>> org.eclipse.equinox.http.servlet.internal.RequestDispatcherAdaptor.forward(RequestDispatcherAdaptor.java:30)
>>> at
>>> org.eclipse.equinox.http.helper.ContextPathServletAdaptor$RequestDispatcherAdaptor.forward(ContextPathServletAdaptor.java:362)
>>> at
>>> org.apache.tiles.servlet.context.ServletTilesRequestContext.forward(ServletTilesRequestContext.java:198)
>>> at
>>> org.apache.tiles.servlet.context.ServletTilesRequestContext.dispatch(ServletTilesRequestContext.java:185)
>>> at
>>> org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:419)
>>> at
>>> org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:370)
>>> at org.wso2.carbon.ui.action.ActionHelper.render(ActionHelper.java:52)
>>> at org.wso2.carbon.ui.TilesJspServlet.service(TilesJspServlet.java:101)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
>>> at
>>> org.eclipse.equinox.http.helper.ContextPathServletAdaptor.service(ContextPathServletAdaptor.java:37)
>>> at
>>> org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61)
>>> at
>>> org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128)
>>> at
>>> org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:68)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
>>> at
>>> org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.service(DelegationServlet.java:68)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>>> at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>>> at org.owasp.csrfguard.CsrfGuardFilter.doFilter(CsrfGuardFilter.java:88)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>>> at
>>> org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:124)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>>> at
>>> org.wso2.carbon.tomcat.ext.filter.CharacterSetFilter.doFilter(CharacterSetFilter.java:65)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>>> at
>>> org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:124)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>>> at
>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
>>> at
>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
>>> at
>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
>>> at
>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
>>> at
>>> org.wso2.carbon.identity.context.rewrite.valve.TenantContextRewriteValve.invoke(TenantContextRewriteValve.java:80)
>>> at
>>> org.wso2.carbon.identity.authz.valve.AuthorizationValve.invoke(AuthorizationValve.java:91)
>>> at
>>> org.wso2.carbon.identity.auth.valve.AuthenticationValve.invoke(AuthenticationValve.java:60)
>>> at
>>> org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:99)
>>> at
>>> org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve$1.invoke(CarbonTomcatValve.java:47)
>>> at
>>> org.wso2.carbon.webapp.mgt.TenantLazyLoaderValve.invoke(TenantLazyLoaderValve.java:57)
>>> at
>>> org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47)
>>> at
>>> org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:62)
>>> at
>>> org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:159)
>>> at
>>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
>>> at
>>> org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:57)
>>> at
>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
>>> at
>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
>>> at
>>> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)
>>> at
>>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
>>> at
>>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1775)
>>> at
>>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1734)
>>> at
>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>>> at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>>> at
>>> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
>>> at java.lang.Thread.run(Thread.java:748)
>>>
>>>
>>> please let me know if I'm doing anything wrong here.
>>>
>>> --
>>> *Rajith Siriwardana*
>>> WSO2 Inc. | http://wso2.com
>>> *lean. enterprise. middleware*
>>>
>>> ---------------------------------------------------
>>> *https://home.apache.org/~siriwardana
>>> <https://home.apache.org/~siriwardana>*
>>>
>>>
>>>
>>> Disclaimer: This communication may contain privileged or other
>>> confidential information and is intended exclusively for the addressee/s.
>>> If you are not the intended recipient/s, or believe that you may have
>>> received this communication in error, please reply to the sender indicating
>>> that fact and delete the copy you received and in addition, you should not
>>> print, copy, re-transmit, disseminate, or otherwise use the information
>>> contained in this communication. Internet communications cannot be
>>> guaranteed to be timely, secure, error or virus-free. The sender does not
>>> accept liability for any errors or omissions.
>>>
>>
>>
>> --
>> *Rajith Siriwardana*
>> WSO2 Inc. | http://wso2.com
>> *lean. enterprise. middleware*
>>
>> ---------------------------------------------------
>> *https://home.apache.org/~siriwardana
>> <https://home.apache.org/~siriwardana>*
>>
>>
>>
>> Disclaimer: This communication may contain privileged or other
>> confidential information and is intended exclusively for the addressee/s.
>> If you are not the intended recipient/s, or believe that you may have
>> received this communication in error, please reply to the sender indicating
>> that fact and delete the copy you received and in addition, you should not
>> print, copy, re-transmit, disseminate, or otherwise use the information
>> contained in this communication. Internet communications cannot be
>> guaranteed to be timely, secure, error or virus-free. The sender does not
>> accept liability for any errors or omissions.
>>
>
>
> --
> *Rajith Siriwardana*
> WSO2 Inc. | http://wso2.com
> *lean. enterprise. middleware*
>
> ---------------------------------------------------
> *https://home.apache.org/~siriwardana
> <https://home.apache.org/~siriwardana>*
>
>
>
> Disclaimer: This communication may contain privileged or other
> confidential information and is intended exclusively for the addressee/s.
> If you are not the intended recipient/s, or believe that you may have
> received this communication in error, please reply to the sender indicating
> that fact and delete the copy you received and in addition, you should not
> print, copy, re-transmit, disseminate, or otherwise use the information
> contained in this communication. Internet communications cannot be
> guaranteed to be timely, secure, error or virus-free. The sender does not
> accept liability for any errors or omissions.
> _______________________________________________
> Dev mailing list
> [email protected]
> http://wso2.org/cgi-bin/mailman/listinfo/dev
>
--
*Dinali Rosemin Dabarera*
Software Engineer
WSO2 Lanka (pvt) Ltd.
Web: http://wso2.com/
Email : [email protected]
LinkedIn <https://lk.linkedin.com/in/dinalidabarera>
Mobile: +94770198933
<https://lk.linkedin.com/in/dinalidabarera>
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev