Hi Uvindra, Thanks for the clarification. Will follow the existing approach.
Regards, Samitha On Thu, Sep 13, 2018 at 11:55 AM Uvindra Dias Jayasinha <uvin...@wso2.com> wrote: > I think the method currently used by the tool(log and handle at source of > issue) is fine. We don't gain anything by throwing this up to another level > and handling it there, it will just complicate the code. This style > currently used by the CLI tool is adequate since it is not a server that > needs to run continuously but a client application that should exist when > an error is encountered. > > In our Java code that runs on the server, having the stack trace helps the > engineer to find the execution flow, but this makes no sense for a client > side CLI tool. > > There is no such thing as a standard approach, only the approach that is > most suited for the application, which is different depending on the > application. > > On 13 September 2018 at 11:37, Samitha Chathuranga <sami...@wso2.com> > wrote: > >> Hi, >> >> WSO2 APIM Import Export CLI tool (written in GO Lang) is to be modified >> to support exporting all the artifacts from 2.6.0 environment as bulks, for >> 3.0.0 migration process. There is a concern in how error handling should be >> implemented. >> >> Should it be in a way that all the errors are caught and thrown to the >> top-most level where we log the error messages, print error traces; which >> is the normal standard approach? >> >> Currently normal Import export tool uses below different approach to >> handle errors. >> >> *[pseudo code]* : >> if (error object is not nil or if some other boolean condition is false) { >> print some logs >> call HandleErrorAndExit(errorMessage, errorObject) function >> } >> >> For example [1] in ExecutePreCommandWithBasicAuth() function in >> import-export-cli/utils/tokenManagement.go ; >> >> if flagUsername != "" { >> // flagUsername is not blank >> if flagUsername != username { >> // username entered with flag -u is not the same as username found >> // in env_keys_all.yaml file >> fmt.Println("Username entered with flag -u for the environment '" + >> environment + "' is not the same as username found in file '" + >> EnvKeysAllFilePath + "'") >> fmt.Println("Execute '" + ProjectName + " reset-user -e " + >> environment + "' to clear user data") >> *HandleErrorAndExit*("Username mismatch", nil) >> } else { >> >> This function is called in import-api.go and export-api.go. For instance >> whenever an export-api command is given, this >> ExecutePreCommandWithBasicAuth method is called, going through apiExport.go >> and root.go and this tokenManagement.go files. >> >> But if an error occurred in a function in tokenManagement.go, error is >> handled in that place itself (log error message/traces and >> exit the program), by calling HandleErrorAndExit(..). HandleErrorAndExit(..) >> method logs the error messages/traces and exit the program. >> This is how errors are handled currently in the tool. AFAIU this approach is >> followed as this is a CLI tool, which is >> directly used by the users. >> >> I am suggesting to do this in the standard approach of throwing the errors >> to the top-most level and handling there when the tool >> is modified for the 3.0.0 migration support. It will facilitate user to get >> to know of the complete error-occurrence flow. >> >> WDYT? >> >> [1] >> https://github.com/wso2/product-apim-tooling/blob/30f4677cb8eb35fb09a8e7fa854a07fae8e1864c/import-export-cli/utils/tokenManagement.go#L155-L161 >> >> -- >> *Samitha Chathuranga* >> *Senior Software Engineer*, *WSO2 Inc.* >> lean.enterprise.middleware >> Mobile: +94715123761 >> >> [image: http://wso2.com/signature] <http://wso2.com/signature> >> > > > > -- > Regards, > Uvindra > > Mobile: 777733962 > -- *Samitha Chathuranga* *Senior Software Engineer*, *WSO2 Inc.* lean.enterprise.middleware Mobile: +94715123761 [image: http://wso2.com/signature] <http://wso2.com/signature>
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev