Hi Manu,

Logging full object might break existing code that has logs of Java object
> in other products. If a developer accidentally logs a circular references
> it might even crash the server.
>
 Point taken, logging circular objects is a problem. My concern is that,
logging Java objects details in "JSON string format" is not a good way to
do it. May be we can log details of the Java object without following the
JSON format. Like this,

(class: org.wso2.models.Student, toString: "name: Kamal, age: 25, city:
Colombo")


Thanks.

On Tue, Feb 9, 2016 at 12:29 PM, Manuranga Perera <m...@wso2.com> wrote:

> Hi Sajith,
> +1 not longing full object. Logging full object might break existing code
> that has logs of Java object in other products. If a developer accidentally
> logs a circular references it might even crash the server. Logs are for
> getting a bit of information for debug or operational purposes, it
> shouldn't be heavy or have any side effects.
>
> A log should be something you should be able to put without worrying too
> much.
>
> On Thu, Feb 4, 2016 at 6:41 PM, Sajith Ariyarathna <sajit...@wso2.com>
> wrote:
>
>> So I am planning to log in-case of Java object as below without logging
>>> whole object.
>>> { "javaObject" : true, "hashCode" : "39d92a", "class" :
>>> "org.wso2.apim.StoreHostObject"}
>>>
>> -1
>>
>>    - Think from the JavaScript perspective. When you log an object in
>>    Jaggery/JavaScript it gives you the JSON representation of that object.
>>    That is the expected behavior. So if you outputs a JSON string as the 
>> above
>>    suggestion, it gives a wrong impression that there are 3 properties
>>    "javaObject", "hasCode" & "class".
>>    - Most of the time we log an object to see what is inside that
>>    object. Above suggestion does not help in that situation. See the 
>> beginning
>>    of this mail thread. The original problem you had was 'Jaggery gives "{}"
>>    when logging a POJO instead of the JSON representation of that POJO'.
>>
>> My suggestion is to just output the JSON string of the POJO, If you
>> really want to add the Java class name then you can try something like this.
>>  (org.wso2.models.Student){"name": "Kamal", "age": "26", "city":
>> "Colombo"}
>>
>> Thanks.
>>
>> On Wed, Feb 3, 2016 at 1:00 PM, Rajeenthini Satkunam <
>> rajeenth...@wso2.com> wrote:
>>
>>> HI all,
>>>
>>> The issue was solved by adding <importBundleDef> for
>>> jackson-databind,jackson-annotations,jackson-core for POM[1] .
>>>
>>> By the Way I would like to discuss more regarding this mail.
>>>
>>> *Issue I am trying to solve*
>>>
>>>  - I am getting empty JSON string ("{}") when logging Java object.
>>>  - Empty JSON string("{}") will give wrong information to user.
>>>
>>> *Proposed solution*
>>>
>>>   - give the user proper understandable log message.
>>>   - the logging need to be fast and summarized.
>>>
>>> So I am planning to log in-case of Java object as below without logging
>>> whole object.
>>> { "javaObject" : true, "hashCode" : "39d92a", "class" :
>>> "org.wso2.apim.StoreHostObject"}
>>>
>>> You can find these links[2][3] as resources to get an idea.
>>>
>>> [1] -
>>> https://github.com/wso2/jaggery/blob/master/features/org.jaggeryjs.server.feature/pom.xml
>>> [2] -
>>> https://github.com/wso2/jaggery/blob/master/components/hostobjects/org.jaggeryjs.hostobjects.log/src/main/java/org/jaggeryjs/hostobjects/log/LogHostObject.java
>>> [3] -
>>> https://github.com/wso2/jaggery/blob/master/components/script-engine/org.jaggeryjs.scriptengine/src/main/java/org/jaggeryjs/scriptengine/util/HostObjectUtil.java
>>>
>>>
>>> On Wed, Feb 3, 2016 at 10:27 AM, Rajeenthini Satkunam <
>>> rajeenth...@wso2.com> wrote:
>>>
>>>> HI Niranjan,
>>>>
>>>> Ya sure.I will meet you today.
>>>>
>>>> On Wed, Feb 3, 2016 at 9:25 AM, Niranjan Karunanandham <
>>>> niran...@wso2.com> wrote:
>>>>
>>>>> Hi Rajeenthini,
>>>>>
>>>>>
>>>>> On Wed, Feb 3, 2016 at 9:19 AM, Rajeenthini Satkunam <
>>>>> rajeenth...@wso2.com> wrote:
>>>>>
>>>>>> HI All,
>>>>>>
>>>>>> Thank you chamara and sajith for your valuable suggestions.I have
>>>>>> done the improvement in Jaggery to log the java Object.
>>>>>>
>>>>>> improvement
>>>>>> -----------------
>>>>>> 1)
>>>>>> https://github.com/wso2/jaggery/blob/master/components/script-engine/org.jaggeryjs.scriptengine/src/main/java/org/jaggeryjs/scriptengine/util/HostObjectUtil.java#L78
>>>>>>
>>>>>> Added new code segment as per sajith's suggestion
>>>>>>
>>>>>> try{
>>>>>>     return (new ObjectMapper().writeValueAsString(obj));
>>>>>> }catch (Exception e){
>>>>>>     log.debug("Object " + obj.toString() + " of class " + obj.getClass() 
>>>>>> + " cannot be converted to JSON");
>>>>>> }
>>>>>>
>>>>>> return "{}";
>>>>>>
>>>>>>
>>>>>> 2) https://github.com/wso2/jaggery/blob/master/pom.xml
>>>>>>
>>>>>> Added maven dependencies for Jackson data-bind and annotations
>>>>>>
>>>>>> <dependency>
>>>>>>     <groupId>com.fasterxml.jackson.core</groupId>
>>>>>>     <artifactId>jackson-annotations</artifactId>
>>>>>>     <version>${jackson.version}</version>
>>>>>> </dependency>
>>>>>> <dependency>
>>>>>>     <groupId>com.fasterxml.jackson.core</groupId>
>>>>>>     <artifactId>jackson-databind</artifactId>
>>>>>>     <version>${jackson.version}</version>
>>>>>> </dependency>
>>>>>>
>>>>>> 3) 
>>>>>> https://github.com/wso2/jaggery/blob/master/components/script-engine/org.jaggeryjs.scriptengine/pom.xml
>>>>>>
>>>>>> Added maven dependencies for Jackson data-bind and annotations
>>>>>>
>>>>>>
>>>>>> I have tried to build(mvn clean install) Jaggery and product-Jaggery
>>>>>> respectively.I can build Jaggery successfully But It has failed when
>>>>>> building product Jaggery at Jaggery - Profile Generation.
>>>>>>
>>>>>> As per offline discussion with Niranjan I have added <importBundleDef>
>>>>>> and <*dependency*> for Jackson data-bind and annotation in POM.xml[
>>>>>> https://github.com/wso2/jaggery/blob/master/features/org.jaggeryjs.server.feature/pom.xml]
>>>>>> file as below.
>>>>>>
>>>>>> <importBundleDef>com.fasterxml.jackson.core:jackson-databind</importBundleDef>
>>>>>> <importBundleDef>com.fasterxml.jackson.core:jackson-annotations</importBundleDef>
>>>>>>
>>>>>>
>>>>>> <dependency>
>>>>>>     <groupId>com.fasterxml.jackson.core</groupId>
>>>>>>     <artifactId>jackson-databind</artifactId>
>>>>>> </dependency>
>>>>>> <dependency>
>>>>>>     <groupId>com.fasterxml.jackson.core</groupId>
>>>>>>     <artifactId>jackson-annotations</artifactId>
>>>>>> </dependency>
>>>>>>
>>>>>>
>>>>>> But Still I am getting product Jaggery build fail at the point Jaggery - 
>>>>>> Profile Generation,following error can be observe in the command line.
>>>>>>
>>>>>>
>>>>>> Installation failed.Cannot complete the install because one or more 
>>>>>> required items could not be found.
>>>>>>
>>>>>>  Software being installed: uuid Module - Feature 1.4.3 
>>>>>> (org.jaggeryjs.modules.uuid.feature.group 1.4.3)
>>>>>>  Missing requirement: jackson-databind 2.0.0 (jackson-databind 2.0.0) 
>>>>>> requires 'package com.fasterxml.jackson.core [2.0.0,3.0.0)' but it could 
>>>>>> not be found
>>>>>>  Cannot satisfy dependency:
>>>>>>   From: org.jaggeryjs.modules.uuid 1.4.3 (org.jaggeryjs.modules.uuid 
>>>>>> 1.4.3)
>>>>>>   To: package org.jaggeryjs.scriptengine.exceptions [0.11.0,1.0.0)
>>>>>>  Cannot satisfy dependency:
>>>>>>
>>>>>>   From: uuid Module - Feature 1.4.3 
>>>>>> (org.jaggeryjs.modules.uuid.feature.group 1.4.3)
>>>>>>   To: org.jaggeryjs.modules.uuid [1.4.3]
>>>>>>  Cannot satisfy dependency:
>>>>>>   From: org.jaggeryjs.scriptengine 0.12.1.SNAPSHOT 
>>>>>> (org.jaggeryjs.scriptengine 0.12.1.SNAPSHOT)
>>>>>>   To: package com.fasterxml.jackson.databind [2.0.0,3.0.0)
>>>>>> Application failed, log file location: 
>>>>>> /home/rajee/.m2/repository/org/eclipse/tycho/tycho-p2-runtime/0.13.0/eclipse/configuration/1454469448601.log
>>>>>>
>>>>>>
>>>>>> Can anyone help me to figure out the cause of build fail.Hope I have 
>>>>>> included all the steps I have followed.Your help would be appreciated.
>>>>>>
>>>>>> As per the error, the build is failing because jackson-databind
>>>>> requires com.fasterxml.jackson.core within the range 2.0.0 and 3.0.0. If
>>>>> this is required by the feature then you need to bundle it in the feature.
>>>>> Shall we have a look at this today?
>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Tue, Feb 2, 2016 at 10:23 AM, Rajeenthini Satkunam <
>>>>>> rajeenth...@wso2.com> wrote:
>>>>>>
>>>>>>> Hi sajith,
>>>>>>>
>>>>>>> Noted and thank you for the suggestions.
>>>>>>>
>>>>>>> On Mon, Feb 1, 2016 at 11:53 PM, Sajith Ariyarathna <
>>>>>>> sajit...@wso2.com> wrote:
>>>>>>>
>>>>>>>> Hi Rajeenthini,
>>>>>>>>
>>>>>>>> You are hoping to add the following code snippet to the
>>>>>>>> serializeJSON method [1] of the
>>>>>>>> org.jaggeryjs.scriptengine.util.HostObjectUtil class.
>>>>>>>>
>>>>>>>>>     String JsonString = null;
>>>>>>>>>     try{
>>>>>>>>>         ObjectMapper mapper = new ObjectMapper();
>>>>>>>>>         JsonString = mapper.writeValueAsString(obj);
>>>>>>>>>     }catch (Exception e){
>>>>>>>>>         System.out.println(e.getMessage());
>>>>>>>>>     }
>>>>>>>>>
>>>>>>>>>     return "{\"javaObject\":\"true\",\"object\":\"" + JsonString + 
>>>>>>>>> "\"}";
>>>>>>>>>
>>>>>>>>> There are few issue in this code snippet.
>>>>>>>>
>>>>>>>>    - Don't catch generic Exception, always catch a specific
>>>>>>>>    exception. In here you should catch JsonProcessingException [2].
>>>>>>>>    - Don't use System.out.println to log exceptions. Instead use a
>>>>>>>>    proper logger. HostObjectUtil class has a log object defined in
>>>>>>>>    line 30 [3], you can use that.
>>>>>>>>    - Returning '{"javaObject": "true", "object": "{ ... }"}'
>>>>>>>>    string gives a wrong impression that there are two attributes called
>>>>>>>>    'javaObject' & 'object' in the logged object. I think just 
>>>>>>>> returning the
>>>>>>>>    JSON string will be enough.
>>>>>>>>
>>>>>>>> After corrections (I also took the liberty to reduce no of lines):
>>>>>>>>
>>>>>>>> try {
>>>>>>>>
>>>>>>>> return (new ObjectMapper()).writeValueAsString(obj);
>>>>>>>>
>>>>>>>> } catch (JsonProcessingException e) {
>>>>>>>>
>>>>>>>> log.debug("Object " + obj.toString() + " of class " +
>>>>>>>> obj.getClassName() + " cannot be converted to JSON");
>>>>>>>>
>>>>>>>> }
>>>>>>>>
>>>>>>>> return "{}";
>>>>>>>>
>>>>>>>>
>>>>>>>> [1]
>>>>>>>> https://github.com/wso2/jaggery/blob/master/components/script-engine/org.jaggeryjs.scriptengine/src/main/java/org/jaggeryjs/scriptengine/util/HostObjectUtil.java#L78
>>>>>>>> [2]
>>>>>>>> https://static.javadoc.io/com.fasterxml.jackson.core/jackson-databind/2.6.3/com/fasterxml/jackson/databind/ObjectMapper.html#writeValueAsString(java.lang.Object)
>>>>>>>> [3]
>>>>>>>> https://github.com/wso2/jaggery/blob/master/components/script-engine/org.jaggeryjs.scriptengine/src/main/java/org/jaggeryjs/scriptengine/util/HostObjectUtil.java#L30
>>>>>>>>
>>>>>>>> Thanks.
>>>>>>>>
>>>>>>>>
>>>>>>>> On Mon, Feb 1, 2016 at 8:13 PM, Rajeenthini Satkunam <
>>>>>>>> rajeenth...@wso2.com> wrote:
>>>>>>>>
>>>>>>>>> Hi sajith,
>>>>>>>>>
>>>>>>>>> i have added this Student class for example.As for current
>>>>>>>>> implementation goes like this way in Jaggery below.
>>>>>>>>>
>>>>>>>>> public static String serializeJSON(Object obj) {
>>>>>>>>>     if (obj instanceof Wrapper) {
>>>>>>>>>         obj = ((Wrapper) obj).unwrap();
>>>>>>>>>     }
>>>>>>>>>     if (obj == null) {
>>>>>>>>>         return "null";
>>>>>>>>>     }
>>>>>>>>>     if (obj instanceof Undefined) {
>>>>>>>>>         return "null";
>>>>>>>>>     }
>>>>>>>>>     if (obj instanceof Boolean) {
>>>>>>>>>         return Boolean.toString((Boolean) obj);
>>>>>>>>>     }
>>>>>>>>>     if (obj instanceof String) {
>>>>>>>>>         return serializeString((String) obj);
>>>>>>>>>     }
>>>>>>>>>     if (obj instanceof ConsString) {
>>>>>>>>>         return serializeString(obj.toString());
>>>>>>>>>     }
>>>>>>>>>     if (obj instanceof Number) {
>>>>>>>>>         return obj.toString();
>>>>>>>>>     }
>>>>>>>>>     if (obj instanceof XMLObject) {
>>>>>>>>>         return serializeString(serializeXML((ScriptableObject) obj));
>>>>>>>>>     }
>>>>>>>>>     if (obj instanceof NativeObject) {
>>>>>>>>>         return serializeNativeObject((NativeObject) obj);
>>>>>>>>>     }
>>>>>>>>>     if (obj instanceof NativeArray) {
>>>>>>>>>         return serializeNativeArray((NativeArray) obj);
>>>>>>>>>     }
>>>>>>>>>     if (obj instanceof Object[]) {
>>>>>>>>>         return serializeObjectArray((Object[]) obj);
>>>>>>>>>     }
>>>>>>>>>     if (obj instanceof Scriptable) {
>>>>>>>>>         Scriptable object = (Scriptable) obj;
>>>>>>>>>         String jsClass = object.getClassName();
>>>>>>>>>         if ("Date".equals(jsClass)) {
>>>>>>>>>             return serializeString(serializeNativeDate(object));
>>>>>>>>>         } else if ("Error".equals(jsClass)) {
>>>>>>>>>             return serializeString(serializeNativeError(object));
>>>>>>>>>         }
>>>>>>>>>     }
>>>>>>>>>     String JsonString = null;
>>>>>>>>>     try{
>>>>>>>>>         ObjectMapper mapper = new ObjectMapper();
>>>>>>>>>         JsonString = mapper.writeValueAsString(obj);
>>>>>>>>>     }catch (Exception e){
>>>>>>>>>         System.out.println(e.getMessage());
>>>>>>>>>     }
>>>>>>>>>
>>>>>>>>>     return "{\"javaObject\":\"true\",\"object\":\"" + JsonString + 
>>>>>>>>> "\"}";
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>> AFAIU since we are parsing Object type of argument It is better we
>>>>>>>>> can use ObjectMapper.Correct me If I am wrong.Your suggestion would 
>>>>>>>>> be more
>>>>>>>>> appreciated.
>>>>>>>>>
>>>>>>>>> On Sun, Jan 31, 2016 at 10:23 AM, Sajith Ariyarathna <
>>>>>>>>> sajit...@wso2.com> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Rajeenthini,
>>>>>>>>>>
>>>>>>>>>> AFAIK ability to convert a POJO into JSON object does nor affect
>>>>>>>>>> the output of a Jaggery Log of that POJO.
>>>>>>>>>> To get a proper log output for a Java object, you need to
>>>>>>>>>> implement the "toString" method in that Java class. For example in 
>>>>>>>>>> your
>>>>>>>>>> case,
>>>>>>>>>>
>>>>>>>>>> public class Student {
>>>>>>>>>>
>>>>>>>>>> ...
>>>>>>>>>>
>>>>>>>>>> public String toString() {
>>>>>>>>>>
>>>>>>>>>> return "{name: " + this.name + ", age: " + this.age + ",
>>>>>>>>>> indexNo: " + this.indexNo + "}";
>>>>>>>>>>
>>>>>>>>>> }
>>>>>>>>>>
>>>>>>>>>> }
>>>>>>>>>>
>>>>>>>>>> Now you can log a Student object in your Jaggery code as
>>>>>>>>>> following.
>>>>>>>>>>
>>>>>>>>>> log.info(studentObj.toString());
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Thanks.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Sat, Jan 30, 2016 at 9:28 PM, Rajeenthini Satkunam <
>>>>>>>>>> rajeenth...@wso2.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi,
>>>>>>>>>>>
>>>>>>>>>>> I have worked on writing Jaggery test for Jaggery-Product.I can
>>>>>>>>>>> observe when we tried to log the object it always gives us empty 
>>>>>>>>>>> JSON
>>>>>>>>>>> ({}).Currently the implementation goes this way when we try to log 
>>>>>>>>>>> java
>>>>>>>>>>> object.
>>>>>>>>>>>
>>>>>>>>>>> So I was trying to get rid of this observed behavior of
>>>>>>>>>>> Jaggery.I have gone through a solution.
>>>>>>>>>>>
>>>>>>>>>>> *using Jackson[1] *
>>>>>>>>>>>
>>>>>>>>>>> We can convert java object to JSON[2] and can log it.
>>>>>>>>>>>
>>>>>>>>>>> I have shared the piece of code I have tried out with Jackson
>>>>>>>>>>> below.
>>>>>>>>>>>
>>>>>>>>>>> *Simple POJO Student class*
>>>>>>>>>>>
>>>>>>>>>>> public class Student {
>>>>>>>>>>>     private int age;
>>>>>>>>>>>     private String name;
>>>>>>>>>>>     private String indexNo;
>>>>>>>>>>>
>>>>>>>>>>>     public int getAge() {
>>>>>>>>>>>         return age;
>>>>>>>>>>>     }
>>>>>>>>>>>
>>>>>>>>>>>     public void setAge(int age) {
>>>>>>>>>>>         this.age = age;
>>>>>>>>>>>     }
>>>>>>>>>>>
>>>>>>>>>>>     public String getName() {
>>>>>>>>>>>         return name;
>>>>>>>>>>>     }
>>>>>>>>>>>
>>>>>>>>>>>     public void setName(String name) {
>>>>>>>>>>>         this.name = name;
>>>>>>>>>>>     }
>>>>>>>>>>>
>>>>>>>>>>>     public String getIndexNo() {
>>>>>>>>>>>         return indexNo;
>>>>>>>>>>>     }
>>>>>>>>>>>
>>>>>>>>>>>     public void setIndexNo(String indexNo) {
>>>>>>>>>>>         this.indexNo = indexNo;
>>>>>>>>>>>     }
>>>>>>>>>>> }
>>>>>>>>>>>
>>>>>>>>>>> *Simple class to test Jackson*
>>>>>>>>>>>
>>>>>>>>>>> import com.fasterxml.jackson.databind.ObjectMapper;
>>>>>>>>>>> import util.Student;
>>>>>>>>>>> public class MyTest {
>>>>>>>>>>>     public static void main(String args[]){
>>>>>>>>>>>         Student st = new Student();
>>>>>>>>>>>         st.setIndexNo("DS001");
>>>>>>>>>>>         st.setAge(12);
>>>>>>>>>>>         st.setName("kareena");
>>>>>>>>>>>         try{
>>>>>>>>>>>             ObjectMapper mapper = new ObjectMapper();
>>>>>>>>>>>             String jsonInString = mapper.writeValueAsString(st);
>>>>>>>>>>>             
>>>>>>>>>>> System.out.println("************************************************");
>>>>>>>>>>>             System.out.println(jsonInString);
>>>>>>>>>>>             
>>>>>>>>>>> System.out.println("************************************************");
>>>>>>>>>>>
>>>>>>>>>>>         }catch(Exception e){
>>>>>>>>>>>             System.out.print("Exception caught  "+ e);
>>>>>>>>>>>         }
>>>>>>>>>>>
>>>>>>>>>>>     }
>>>>>>>>>>> }
>>>>>>>>>>>
>>>>>>>>>>> Actual output by above code.
>>>>>>>>>>> ************************************************
>>>>>>>>>>> {"age":12,"name":"kareena","indexNo":"DS001"}
>>>>>>>>>>> ************************************************
>>>>>>>>>>>
>>>>>>>>>>> I have added a dependency in the POM.xml
>>>>>>>>>>>
>>>>>>>>>>> <dependency>
>>>>>>>>>>>     <groupId>com.fasterxml.jackson.core</groupId>
>>>>>>>>>>>     <artifactId>jackson-databind</artifactId>
>>>>>>>>>>>     <version>2.6.3</version>
>>>>>>>>>>> </dependency>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> IMHO we can use the same scenario in case of log JAVA
>>>>>>>>>>> object.Your help and suggestions are more appreciated and guide me 
>>>>>>>>>>> if I am
>>>>>>>>>>> wrong or I can have better solution than this.
>>>>>>>>>>>
>>>>>>>>>>> [1] - https://github.com/FasterXML/jackson-databind
>>>>>>>>>>> [2] -
>>>>>>>>>>> http://www.mkyong.com/java/how-to-convert-java-object-to-from-json-jackson/
>>>>>>>>>>> --
>>>>>>>>>>>
>>>>>>>>>>> *Thank You.*
>>>>>>>>>>>
>>>>>>>>>>> *Rajeenthini Satkunam*
>>>>>>>>>>>
>>>>>>>>>>> *Associate Software Engineer | WSO2*
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> *E:rajeenth...@wso2.com <rajeenth...@wso2.com>*
>>>>>>>>>>>
>>>>>>>>>>> *M :+94770832823 <%2B94770832823>   *
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> Dev mailing list
>>>>>>>>>>> Dev@wso2.org
>>>>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Sajith Ariyarathna
>>>>>>>>>> Software Engineer; WSO2, Inc.;  http://wso2.com/
>>>>>>>>>> mobile: +94 77 6602284, +94 71 3951048
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>>
>>>>>>>>> *Thank You.*
>>>>>>>>>
>>>>>>>>> *Rajeenthini Satkunam*
>>>>>>>>>
>>>>>>>>> *Associate Software Engineer | WSO2*
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> *E:rajeenth...@wso2.com <rajeenth...@wso2.com>*
>>>>>>>>>
>>>>>>>>> *M :+94770832823 <%2B94770832823>   *
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Sajith Ariyarathna
>>>>>>>> Software Engineer; WSO2, Inc.;  http://wso2.com/
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>>
>>>>>>> *Thank You.*
>>>>>>>
>>>>>>> *Rajeenthini Satkunam*
>>>>>>>
>>>>>>> *Associate Software Engineer | WSO2*
>>>>>>>
>>>>>>>
>>>>>>> *E:rajeenth...@wso2.com <rajeenth...@wso2.com>*
>>>>>>>
>>>>>>> *M :+94770832823 <%2B94770832823>   *
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>>
>>>>>> *Thank You.*
>>>>>>
>>>>>> *Rajeenthini Satkunam*
>>>>>>
>>>>>> *Associate Software Engineer | WSO2*
>>>>>>
>>>>>>
>>>>>> *E:rajeenth...@wso2.com <rajeenth...@wso2.com>*
>>>>>>
>>>>>> *M :+94770832823 <%2B94770832823>   *
>>>>>>
>>>>>>
>>>>>
>>>>> Regards,
>>>>> Nira
>>>>>
>>>>> --
>>>>>
>>>>> *Niranjan Karunanandham*
>>>>> Senior Software Engineer - WSO2 Inc.
>>>>> WSO2 Inc.: http://www.wso2.com
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>>
>>>> *Thank You.*
>>>>
>>>> *Rajeenthini Satkunam*
>>>>
>>>> *Associate Software Engineer | WSO2*
>>>>
>>>>
>>>> *E:rajeenth...@wso2.com <rajeenth...@wso2.com>*
>>>>
>>>> *M :+94770832823 <%2B94770832823>   *
>>>>
>>>>
>>>
>>>
>>> --
>>>
>>> *Thank You.*
>>>
>>> *Rajeenthini Satkunam*
>>>
>>> *Associate Software Engineer | WSO2*
>>>
>>>
>>> *E:rajeenth...@wso2.com <rajeenth...@wso2.com>*
>>>
>>> *M :+94770832823 <%2B94770832823>   *
>>>
>>>
>>> _______________________________________________
>>> Dev mailing list
>>> Dev@wso2.org
>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>
>>>
>>
>>
>> --
>> Sajith Ariyarathna
>> Software Engineer; WSO2, Inc.;  http://wso2.com/
>>
>> _______________________________________________
>> Dev mailing list
>> Dev@wso2.org
>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>
>>
>
>
> --
> With regards,
> *Manu*ranga Perera.
>
> phone : 071 7 70 20 50
> mail : m...@wso2.com
>



-- 
Sajith Ariyarathna
Software Engineer; WSO2, Inc.;  http://wso2.com/
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to