Issue here is, actual code can be bit more complicated than that. eg: https://github.com/wso2/product-is/blob/master/portal/osgi-services/org.wso2.is.portal.user.client.api/src/main/java/org/wso2/is/portal/user/client/api/RecoveryMgtServiceImpl.java#L150:L163
On Mon, Mar 20, 2017 at 12:44 PM, SajithAR Ariyarathna <sajit...@wso2.com> wrote: > IMO following approach would be better, > > try { > > // some logic goes here, that might throw an exception. > > // e.g. callOSGiService("org.wso2.is.portal.user.client.api. > RecoveryMgtService","isNotificationBasedPasswordRe", []); > > return {success: true, message: {title: "Success", body: "Security > question changed successfully."}}; // everything went smoothly > > } catch(e) { > > // In here you can compose a meaningful error message to display in the > UI. Something like follwing. > > var msg = {title: "Cannot change the security question", body: "You don't > have enough permissions to change the security question of 'admin' user."}; > return {success: false, message: msg}; > > } > > > On Mon, Mar 20, 2017 at 5:48 PM, Manuranga Perera <m...@wso2.com> wrote: > >> UUF team, >> So what is the best practice we need to document ? Currently I see people >> just wrapping in Java and re-throwing some kind of UI error. I don't think >> wiring UI specific logic in Java is the best way to do this. And it's >> annoying to pass a "isSuccess" all over the code. >> >> Maybe we should ask them to do it in JS ( using Nashorn catch (e if e >> instanceof TypeError)) >> OR >> implement UUF native way to do it. >> >> EG: >> >> my-page.js >> function onGet() { >> return callOSGiService("org.wso2.is.portal.user.client.api. >> RecoveryMgtService","isNotificationBasedPasswordRe", []); >> } >> >> my-page.hbs >> <div> >> {{#try}} >> {{if this}} >> <button> Recover my password </button> >> {{else}} >> <div class="notification info"> Notification based password >> recovery is not enabled for you ({{userId}}), please contact admin for >> manual recovery </div> >> {{/if}} >> {{catch}} >> <div class="panel panel-danger"> >> <div class="panel-heading">Error occurred </div> >> <div class="panel-body"> >> {{#javaErr "UserNotFoundException" httpCode="404"}} >> ER10293: User '{{userId}}' not available. {{/javaErr}} >> {{#javaErr "IdentityRecoveryException"}} ER10294: Error >> during recovery process. {{secure "admin.user-mgt"}} {{e.message}} >> {{/secure}} >> {{/javaErr}} >> {{#unknownErr}} ER10299: Something went wrong. >> {{/unknownErr}} >> Please contact admin with the error code and request id >> {{@requestId}} for more information. >> </div> >> </div> >> {{/try}} >> </div> >> >> What do you think? >> >> On Mon, Mar 20, 2017 at 5:38 AM, SajithAR Ariyarathna <sajit...@wso2.com> >> wrote: >> >>> >>> >>> On Mon, Mar 20, 2017 at 9:42 AM, Pushpalanka Jayawardhana < >>> la...@wso2.com> wrote: >>> >>>> Hi All, >>>> >>>> Shall we add a section on 'Error handling' to the UUF best practices >>>> documentation to capture information on this? >>>> >>>> +1 >>> >>>> On Thu, Feb 2, 2017 at 8:43 AM, Dakshika Jayathilaka <daksh...@wso2.com >>>> > wrote: >>>> >>>>> +1 for KasunGs suggestion. >>>>> >>>>> Even UIExceptions can be different. >>>>> >>>>> *Types of UI errors* >>>>> >>>>> - User input errors >>>>> - App errors >>>>> - Incompatible state errors >>>>> >>>>> IMHO depending on the permission level, above error messages can be >>>>> optimized to give optimal user experience. >>>>> >>>>> Regards, >>>>> >>>>> *Dakshika Jayathilaka* >>>>> PMC Member & Committer of Apache Stratos >>>>> Associate Technical Lead >>>>> WSO2, Inc. >>>>> lean.enterprise.middleware >>>>> 0771100911 <077%20110%200911> >>>>> >>>>> On Wed, Feb 1, 2017 at 12:31 PM, KasunG Gajasinghe <kas...@wso2.com> >>>>> wrote: >>>>> >>>>>> >>>>>> To not disclose the back-end server details to the user, we should >>>>>> always catch the exceptions in the UUF app. If it is a UIException, then >>>>>> we >>>>>> can show the error message to the user. Otherwise, we should show a >>>>>> generic >>>>>> error message - something like "An error has occurred while processing >>>>>> your >>>>>> request." >>>>>> >>>>>> If we know how to handle it, it is best if we handle it within the >>>>>> same page where the error has occurred. We already do this in multiple >>>>>> places. For example, see the code for user portal's login page when you >>>>>> enter invalid credentials. >>>>>> >>>>>> For unexpected errors, we can customize the error pages via the >>>>>> app.yaml's errorPages config. >>>>>> >>>>>> app.yaml: >>>>>> errorPages: >>>>>> 404: "/foundation/error/404" >>>>>> 401: "/login" >>>>>> default: "/foundation/error/default" >>>>>> >>>>>> On Wed, Feb 1, 2017 at 12:20 PM, Ayesha Dissanayaka <aye...@wso2.com> >>>>>> wrote: >>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> What are the good practices around exception handling in UUF in >>>>>>> scenarios like handling exceptions thrown when callOSGiService. >>>>>>> >>>>>>> for example consider below method. >>>>>>> >>>>>>>> /** >>>>>>>> * Check whether the notification based password recovery >>>>>>>> enabled >>>>>>>> */ >>>>>>>> >>>>>>>> function isNotificationBasedPasswordRecoveryEnabled() { >>>>>>>> var checkMethod = "isNotificationBasedPasswordRe >>>>>>>> coveryEnabled"; >>>>>>>> return callOSGiService("org.wso2.is.p >>>>>>>> ortal.user.client.api.RecoveryMgtService", >>>>>>>> checkMethod, []); >>>>>>>> >>>>>>>> } >>>>>>>> >>>>>>> >>>>>>> If I don't catch exceptions within this method or whenever using >>>>>>> *isNotificationBasedPasswordRecoveryEnabled >>>>>>> *method, in the UI I get below page. >>>>>>> >>>>>>> >>>>>>> What is the recommended way to handle this? >>>>>>> >>>>>>> 1. Handle exceptions around callOSGiService. >>>>>>> - Then we'll have to repeat the same whenever we call osgi >>>>>>> from a uuf app >>>>>>> 2. Handle at method invocation, and redirect to error page. >>>>>>> 3. Provide a generic message in the UI from UUF in such cases, >>>>>>> unless handled in the app. >>>>>>> 4. Do we have to handle exceptions from osgi service itself? >>>>>>> 5. Other? >>>>>>> >>>>>>> Thanks! >>>>>>> -Ayesha >>>>>>> >>>>>>> -- >>>>>>> *Ayesha Dissanayaka* >>>>>>> Software Engineer, >>>>>>> WSO2, Inc : http://wso2.com >>>>>>> <http://www.google.com/url?q=http%3A%2F%2Fwso2.com&sa=D&sntz=1&usg=AFQjCNEZvyc0uMD1HhBaEGCBxs6e9fBObg> >>>>>>> 20, Palmgrove Avenue, Colombo 3 >>>>>>> E-Mail: aye...@wso2.com <ayshsa...@gmail.com> >>>>>>> >>>>>>> _______________________________________________ >>>>>>> Dev mailing list >>>>>>> Dev@wso2.org >>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> >>>>>> *Kasun Gajasinghe*Associate Technical Lead, WSO2 Inc. >>>>>> email: kasung AT spamfree wso2.com >>>>>> linked-in: http://lk.linkedin.com/in/gajasinghe >>>>>> blog: http://kasunbg.org >>>>>> phone: +1 650-745-4499 <(650)%20745-4499>, 77 678 0813 >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> Dev mailing list >>>>>> Dev@wso2.org >>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>>> >>>>>> >>>>> >>>>> _______________________________________________ >>>>> Dev mailing list >>>>> Dev@wso2.org >>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>> >>>>> >>>> >>>> >>>> -- >>>> Pushpalanka. >>>> -- >>>> Pushpalanka Jayawardhana, B.Sc.Eng.(Hons). >>>> Senior Software Engineer, WSO2 Lanka (pvt) Ltd; wso2.com/ >>>> Mobile: +94779716248 >>>> Blog: pushpalankajaya.blogspot.com/ | LinkedIn: lk.linkedin.com/in/p >>>> ushpalanka/ | Twitter: @pushpalanka >>>> >>>> >>> >>> >>> -- >>> 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 : m...@wso2.com >> > > > > -- > 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 : m...@wso2.com
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev