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   *
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to