Yes it's find. But it creates lot of boilerplate code to get and assign attributes one by one, and it's easy to make mistakes like above.
On Fri, Jan 20, 2017 at 2:43 PM, SajithAR Ariyarathna <[email protected]> wrote: > Hi Manu, > > Server-side JS is meant to be the "view controller" which creates the > "view model" for the "view" (HBS template). So, I think its fine to process > a data-structure (model) retrieved from back-end in order to create the > view model. > > On Fri, Jan 20, 2017 at 5:19 PM, Indunil Upeksha Rathnayake < > [email protected]> wrote: > >> Hi Manuranga, >> >> Thanks for your response. >> >> 1) Yeah we can do like that as well, if we only using the existing >> attributes in the object which retrieved from the service. But here, we are >> passing some values which are not directly exposed from the service (ex: >> claimLabel - from the OSGI service we get the claim URI, but here we are >> passing the URI without the claim dialect). Since UUF still not supporting >> custom helpers, it's not possible to write a function helper and handle it >> in hbs side right? or is there some other way to handle it? >> >> 2) We are getting set of claims that need to be shown in UI, by calling >> an OSGI service(claims which relates to a specific claim profile). So that >> those are not already defined in hbs. Every field >> labels/validations(required fields/regex patterns/read only fields etc) in >> the UI, will be populated from those claims. So that all the claims should >> be sent to the front-end JS. >> >> Thanks and Regards >> >> On Fri, Jan 20, 2017 at 3:04 PM, Manuranga Perera <[email protected]> wrote: >> >>> @Indunil >>> 1. Without the for loop can we just do sendToClient("signupClaims", >>> claimProfile.claims); will that work? >>> 2. Why do need to send all the claims to front-end JS anyway? aren't >>> those already used in HBS? >>> >>> @Sajith >>> 1. I keep seeing people trying to manually convert java to json. Can we >>> give a better option? maybe have callOSGiServiceAsJson? >>> >>> >>> >>> On Fri, Jan 20, 2017 at 7:17 AM, Indunil Upeksha Rathnayake < >>> [email protected]> wrote: >>> >>>> Hi, >>>> >>>> Thanks all for your responses. Yes in my case it doesn't need to >>>> convert boolean to string. But if needed, as sajith mentioned, seems like >>>> have to import that class in the script with Java.type Nashorn >>>> extension. >>>> >>>> Thanks and Regards >>>> >>>> On Fri, Jan 20, 2017 at 10:52 AM, SajithAR Ariyarathna < >>>> [email protected]> wrote: >>>> >>>>> Hi Indunil, >>>>> >>>>> Seems like the problem is in your script. >>>>> >>>>> Boolean.toString(claimForProfile[i].getRequired()) >>>>> >>>>> I believe your intention here is to call >>>>> java.lang.Boolean#toString(boolean b) method, right? But Nashorn >>>>> doesn't know that, because you haven't imported java.lang.Boolean class >>>>> in your script. In order to use a Java class in your script, first you >>>>> have >>>>> to import that class in your script with Java.type Nashorn extension >>>>> [1]. (see 'call Java class' sample in the features-app sample) >>>>> Since you haven't imported java.lang.Boolean class, Nashorn thinks >>>>> Boolean.toString is a JS function, thus it is serialized to "function >>>>> Boolean() { [native code] }". >>>>> >>>>> Anyway, You don't need to convert boolean values to strings here. So >>>>> let's remove Boolean.toString >>>>> >>>>> [1] https://docs.oracle.com/javase/8/docs/technotes/guides/s >>>>> cripting/prog_guide/javascript.html#A1147187 >>>>> >>>>> Thanks. >>>>> >>>>> On Fri, Jan 20, 2017 at 10:13 AM, SajithAR Ariyarathna < >>>>> [email protected]> wrote: >>>>> >>>>>> Hi Indunil, >>>>>>> >>>>>>> claimProfileMap["required"] = Boolean.toString(claimForProfile[i]. >>>>>>> getRequired()); >>>>>>> >>>>>> I don't see a particular reason to convert boolean to string. You can >>>>>> just use the boolean value directly. >>>>>> >>>>>> Anyhow, we will fix this. >>>>>> Thanks. >>>>>> >>>>>> On Fri, Jan 20, 2017 at 7:47 AM, Indunil Upeksha Rathnayake < >>>>>> [email protected]> wrote: >>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> The code segment I have used as follows. >>>>>>> >>>>>>> function getProfile() { >>>>>>> var claimProfile; >>>>>>> try { >>>>>>> // Get Claim Profile >>>>>>> claimProfile = >>>>>>> callOSGiService("org.wso2.is.portal.user.client.api.ProfileMgtClientService", >>>>>>> "getProfile", ["self-signUp"]); >>>>>>> } catch(e) { >>>>>>> return {errorMessage: "Failed to retrieve the claim profile."}; >>>>>>> } >>>>>>> var claimForProfile = claimProfile.claims; >>>>>>> >>>>>>> var claimProfileArray = []; >>>>>>> >>>>>>> for (var i = 0; i < claimForProfile.length; i++) { >>>>>>> var claimProfileMap = {}; >>>>>>> claimProfileMap["displayName"] = >>>>>>> claimForProfile[i].getDisplayName(); >>>>>>> claimProfileMap["claimURI"] = claimForProfile[i].getClaimURI(); >>>>>>> if (claimForProfile[i].getDefaultValue()) { >>>>>>> claimProfileMap["defaultValue"] = >>>>>>> claimForProfile[i].getDefaultValue(); >>>>>>> } >>>>>>> claimProfileMap["claimLabel"] = >>>>>>> claimForProfile[i].getClaimURI().replace("http://wso2.org/claims/", ""); >>>>>>> claimProfileMap["required"] = >>>>>>> Boolean.toString(claimForProfile[i].getRequired()); >>>>>>> claimProfileMap["regex"] = claimForProfile[i].getRegex(); >>>>>>> claimProfileMap["readonly"] = >>>>>>> Boolean.toString(claimForProfile[i].getReadonly()); >>>>>>> claimProfileMap["dataType"] = claimForProfile[i].getDataType(); >>>>>>> claimProfileArray[i] = claimProfileMap; >>>>>>> } >>>>>>> sendToClient("signupClaims", claimProfileArray); >>>>>>> return { >>>>>>> "signupClaims": claimProfileArray >>>>>>> }; >>>>>>> } >>>>>>> >>>>>>> >>>>>>> Thanks and Regards >>>>>>> >>>>>>> >>>>>>> On Thu, Jan 19, 2017 at 10:03 PM, Manuranga Perera <[email protected]> >>>>>>> wrote: >>>>>>> >>>>>>>> when sending boolean value as a string(converting boolean to string >>>>>>>>> using "Boolean.toString()" >>>>>>>> >>>>>>>> Not very clear what you are saying here. Can you please show the >>>>>>>> code. >>>>>>>> >>>>>>>> On Thu, Jan 19, 2017 at 4:23 PM, Danushka Fernando < >>>>>>>> [email protected]> wrote: >>>>>>>> >>>>>>>>> HI >>>>>>>>> Seems its calling [1] and [2] is something its getting called. >>>>>>>>> When we have a boolean as a string probably that happens. But not sure >>>>>>>>> that's expected. >>>>>>>>> >>>>>>>>> [1] https://github.com/google/gson/blob/0636635cbffa08157bdb >>>>>>>>> d558b1212e4d806474eb/gson/src/main/java/com/google/gson/Gson >>>>>>>>> .java#L580 >>>>>>>>> [2] https://developer.mozilla.org/en-US/docs/Web/JavaScript/ >>>>>>>>> Reference/Global_Objects/Object/toSource >>>>>>>>> >>>>>>>>> Thanks & Regards >>>>>>>>> Danushka Fernando >>>>>>>>> Senior Software Engineer >>>>>>>>> WSO2 inc. http://wso2.com/ >>>>>>>>> Mobile : +94716332729 <+94%2071%20633%202729> >>>>>>>>> >>>>>>>>> On Thu, Jan 19, 2017 at 7:43 PM, Indunil Upeksha Rathnayake < >>>>>>>>> [email protected]> wrote: >>>>>>>>> >>>>>>>>>> Hi, >>>>>>>>>> >>>>>>>>>> It's returning {"signupClaims": claimProfileArray} from the >>>>>>>>>> onRequest() method. claimProfileArray is an array with several >>>>>>>>>> map objects. I have just tested and found that this error comes when >>>>>>>>>> sending boolean value as a string(converting boolean to string using >>>>>>>>>> "Boolean.toString()"). >>>>>>>>>> As an example like this. >>>>>>>>>> [{"claimURI":"http://wso2.org/claims/givenname","required":"true"}, >>>>>>>>>> {"claimURI":"http://wso2.org/claims/lastname","required":"true"}]. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> But passing as a boolean value it works. Is that an acceptable >>>>>>>>>> behavior? >>>>>>>>>> >>>>>>>>>> Thanks and Regards >>>>>>>>>> >>>>>>>>>> On Thu, Jan 19, 2017 at 7:08 PM, Kishanthan Thangarajah < >>>>>>>>>> [email protected]> wrote: >>>>>>>>>> >>>>>>>>>>> We are using gson to serialize the json sent to client [1]. But >>>>>>>>>>> we need the sample data used here to test what could be the issue. >>>>>>>>>>> >>>>>>>>>>> [1] https://github.com/wso2/carbon-uuf/blob/master/component >>>>>>>>>>> s/uuf-renderablecreator-hbs/src/main/java/org/wso2/carbon/uu >>>>>>>>>>> f/renderablecreator/hbs/impl/js/JsFunctionsImpl.java#L152 >>>>>>>>>>> >>>>>>>>>>> On Thu, Jan 19, 2017 at 7:04 PM, Manuranga Perera <[email protected] >>>>>>>>>>> > wrote: >>>>>>>>>>> >>>>>>>>>>>> I think it's a java object. I think we need to use something >>>>>>>>>>>> like gson here >>>>>>>>>>>> >>>>>>>>>>>> On Thu, Jan 19, 2017 at 1:30 PM, Kishanthan Thangarajah < >>>>>>>>>>>> [email protected]> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Can we have the json object to investigate this? >>>>>>>>>>>>> >>>>>>>>>>>>> On Thu, Jan 19, 2017 at 6:22 PM, SajithAR Ariyarathna < >>>>>>>>>>>>> [email protected]> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> +{UUF Team] >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Thu, Jan 19, 2017 at 5:34 PM, Indunil Upeksha Rathnayake < >>>>>>>>>>>>>> [email protected]> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Having some problem when using sendToClient() method in the >>>>>>>>>>>>>>> UUF Server Side JS API. I am trying to send an array with a set >>>>>>>>>>>>>>> of map >>>>>>>>>>>>>>> elements as in [1] including some boolean values. When we are >>>>>>>>>>>>>>> sending this >>>>>>>>>>>>>>> value to client side using the sendToClient(), it's injecting >>>>>>>>>>>>>>> the variables to the "js" placeholder in the layout. But when >>>>>>>>>>>>>>> evaluating >>>>>>>>>>>>>>> the variable, boolean values are not stored as it is but as >>>>>>>>>>>>>>> follows. >>>>>>>>>>>>>>> *function Boolean() { [native code] }* >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Seems like in there, it's getting the value of >>>>>>>>>>>>>>> "booleanVaribale.constructor". I'm using uuf version "1.0.0-m9". >>>>>>>>>>>>>>> Is this expectable or an issue? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> [1] [ {"claimURI":"http://wso2.org/claims/givenname >>>>>>>>>>>>>>> <http://www.google.com/url?q=http%3A%2F%2Fwso2.org%2Fclaims%2Fgivenname&sa=D&sntz=1&usg=AFQjCNHhpHtMY1eVUFZfM8A2n2iOnajUvg> >>>>>>>>>>>>>>> ","required":"function Boolean() { [native code] }"}, >>>>>>>>>>>>>>> {"claimURI":"http://wso2.org/claims/lastname >>>>>>>>>>>>>>> <http://www.google.com/url?q=http%3A%2F%2Fwso2.org%2Fclaims%2Flastname&sa=D&sntz=1&usg=AFQjCNGDQuIZMXiN8WMbgitjy9uIJ_jKDw> >>>>>>>>>>>>>>> ","required":"function Boolean() { [native code] }"}] >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thanks and Regards >>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>> Indunil Upeksha Rathnayake >>>>>>>>>>>>>>> Software Engineer | WSO2 Inc >>>>>>>>>>>>>>> Email [email protected] >>>>>>>>>>>>>>> Mobile 0772182255 >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> -- >>>>>>>>>>>>>> Sajith Janaprasad Ariyarathna >>>>>>>>>>>>>> Software Engineer; WSO2, Inc.; http://wso2.com/ >>>>>>>>>>>>>> <https://wso2.com/signature> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>>> *Kishanthan Thangarajah* >>>>>>>>>>>>> Technical Lead, >>>>>>>>>>>>> Platform Technologies Team, >>>>>>>>>>>>> WSO2, Inc. >>>>>>>>>>>>> lean.enterprise.middleware >>>>>>>>>>>>> >>>>>>>>>>>>> Mobile - +94773426635 <+94%2077%20342%206635> >>>>>>>>>>>>> Blog - *http://kishanthan.wordpress.com >>>>>>>>>>>>> <http://kishanthan.wordpress.com>* >>>>>>>>>>>>> Twitter - *http://twitter.com/kishanthan >>>>>>>>>>>>> <http://twitter.com/kishanthan>* >>>>>>>>>>>>> >>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>> Dev mailing list >>>>>>>>>>>>> [email protected] >>>>>>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> With regards, >>>>>>>>>>>> *Manu*ranga Perera. >>>>>>>>>>>> >>>>>>>>>>>> phone : 071 7 70 20 50 >>>>>>>>>>>> mail : [email protected] >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> *Kishanthan Thangarajah* >>>>>>>>>>> Technical Lead, >>>>>>>>>>> Platform Technologies Team, >>>>>>>>>>> WSO2, Inc. >>>>>>>>>>> lean.enterprise.middleware >>>>>>>>>>> >>>>>>>>>>> Mobile - +94773426635 <+94%2077%20342%206635> >>>>>>>>>>> Blog - *http://kishanthan.wordpress.com >>>>>>>>>>> <http://kishanthan.wordpress.com>* >>>>>>>>>>> Twitter - *http://twitter.com/kishanthan >>>>>>>>>>> <http://twitter.com/kishanthan>* >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Indunil Upeksha Rathnayake >>>>>>>>>> Software Engineer | WSO2 Inc >>>>>>>>>> Email [email protected] >>>>>>>>>> Mobile 0772182255 >>>>>>>>>> >>>>>>>>>> _______________________________________________ >>>>>>>>>> Dev mailing list >>>>>>>>>> [email protected] >>>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> _______________________________________________ >>>>>>>>> Dev mailing list >>>>>>>>> [email protected] >>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> With regards, >>>>>>>> *Manu*ranga Perera. >>>>>>>> >>>>>>>> phone : 071 7 70 20 50 >>>>>>>> mail : [email protected] >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Indunil Upeksha Rathnayake >>>>>>> Software Engineer | WSO2 Inc >>>>>>> Email [email protected] >>>>>>> Mobile 0772182255 >>>>>>> >>>>>>> _______________________________________________ >>>>>>> Dev mailing list >>>>>>> [email protected] >>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Sajith Janaprasad Ariyarathna >>>>>> Software Engineer; WSO2, Inc.; http://wso2.com/ >>>>>> <https://wso2.com/signature> >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Sajith Janaprasad Ariyarathna >>>>> Software Engineer; WSO2, Inc.; http://wso2.com/ >>>>> <https://wso2.com/signature> >>>>> >>>> >>>> >>>> >>>> -- >>>> Indunil Upeksha Rathnayake >>>> Software Engineer | WSO2 Inc >>>> Email [email protected] >>>> Mobile 0772182255 >>>> >>> >>> >>> >>> -- >>> With regards, >>> *Manu*ranga Perera. >>> >>> phone : 071 7 70 20 50 >>> mail : [email protected] >>> >> >> >> >> -- >> Indunil Upeksha Rathnayake >> Software Engineer | WSO2 Inc >> Email [email protected] >> Mobile 0772182255 >> > > > > -- > Sajith Janaprasad Ariyarathna > Software Engineer; WSO2, Inc.; http://wso2.com/ > <https://wso2.com/signature> > -- With regards, *Manu*ranga Perera. phone : 071 7 70 20 50 mail : [email protected]
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
