Hi,

Thank you all for your prompt responses :)

So if it's an ArrayList/Map it's better to return an empty object rather
than null. Got it.

Regarding a POJO object IMO the usage of null, empty object or exception
depends on the scenario being considered.

Based on Rasikas' reply since the jaggery level code is using the DAO
method (via manager interface) basically if no user is found then the
exception thrown should be propagated and in the UI an appropriate message
is rendered. Also since anyone else could be using the back end, when an
exception is thrown they would not have to be aware of the internal
implementation (if null or an empty object is returned, specifically he
should be aware if an empty object is returned so that he should write his
front end code accordingly).

IMO returning an exception is clearer in terms of code but I guess the
discussion could continue further until a guideline is specified.

Regards.


On Wed, Jul 13, 2016 at 6:49 AM, Harsha Thirimanna <hars...@wso2.com> wrote:

> HI Sabra,
>
> If there is collection type as a return, then you MUST return empty
> collection object of instead of null. But if you expect POJO as a return,
> then it would be better to return null instead of empty object. Because if
> it returns empty object instead of null, then some one get misunderstand
> who is going to use that API and will try to consume that as expected
> output. Then there may be more problems. You may not be the only one who
> consume your backend api.
>
>
>
>
> *Harsha Thirimanna*
> Associate Tech Lead; WSO2, Inc.; http://wso2.com
> * <http://www.apache.org/>*
> *email: **hars...@wso2.com* <az...@wso2.com>* cell: +94 71 5186770 *
> *twitter: **http://twitter.com/ <http://twitter.com/afkham_azeez>*
> *harshathirimannlinked-in: **http:
> <http://lk.linkedin.com/in/afkhamazeez>**//www.linkedin.com/pub/harsha-thirimanna/10/ab8/122
> <http://www.linkedin.com/pub/harsha-thirimanna/10/ab8/122>*
>
> *Lean . Enterprise . Middleware*
>
>
> On Wed, Jul 13, 2016 at 12:42 AM, Rasika Perera <rasi...@wso2.com> wrote:
>
>> ​Hi Sabra
>> ​
>> ​,
>>
>> I think you need to handle this error at jaggery level.​
>>
>> Considering a method returning a user object the client code should not
>>> be able to proceed further if there is no user.
>>
>> ​In this case, -1 for returning NULL. When there is an error,
>> unless
>> ​ it is recoverable locally you ​
>> *should*
>> ​ convey ​it to the upper layers. In your case, If you cannot return a
>> user object it is more intuitive to return an exception such as
>> UserManagerException.
>>
>> By returning NULL, you cannot make it mandatory to handle exception. Your
>> client code will not be aware of NULL unless the developer reads your
>> implementation class OR the documentation. Try to avoid
>> NullPointerException
>> ​ as much as possible.​
>>
>> In your client code(Jaggery) you can catch this error with try{ }
>> catch(error){ }. Found this blogpost [1] which discusses on jaggery error
>> handling.
>> AFAIK Jaggery will wrap java exceptions with ScriptException object.
>>
>> Regards,
>> Rasika
>>
>> [1]
>> http://ruchirawageesha.blogspot.com/2013/04/error-handling-in-jaggery.html
>>
>> On Tue, Jul 12, 2016 at 2:17 PM, Abimaran Kugathasan <abima...@wso2.com>
>> wrote:
>>
>>> There are good enough discussion in Stackoverflow [1], [2] and [3]. You
>>> could return null, empty object or throw exception in the case of data not
>>> available.
>>>
>>> It's also depends on the type of the Object you are supposed to return,
>>> if it's a ArrayList/Map, then returning empty ArrayList/Map is better than
>>> returning null, but, in case of Model object, I think, returning null is
>>> better than retuning a mock object of that class.
>>>
>>>
>>> [1] :
>>> http://programmers.stackexchange.com/questions/120355/is-it-better-to-return-null-or-empty-values-from-functions-methods-where-the-ret
>>> [2] :
>>> http://stackoverflow.com/questions/1626597/should-functions-return-null-or-an-empty-object
>>> [3] :
>>> http://programmers.stackexchange.com/questions/228287/returning-null-or-a-empty-value-throw-exception
>>>
>>> On Tue, Jul 12, 2016 at 12:03 PM, Jayanga Kaushalya <jayan...@wso2.com>
>>> wrote:
>>>
>>>> Hi,
>>>>
>>>> In my opinion, returning an empty object is far better. It will reduce
>>>> unnecessary null checks and will stop the code from going on different
>>>> paths. And code quality wise also I think returning empty is cleaner.
>>>> For example:
>>>>
>>>> *List list = getList();*
>>>>
>>>> *for (Item item : list) {// Do logic.*
>>>> *// This will not execute if the list is empty.*
>>>> *}*
>>>>
>>>> Is much cleaner than
>>>>
>>>> *List list = getList();*
>>>> *if (list == null) {*
>>>> *// Handle the logic.*
>>>> *// Now this is a different code path.*
>>>> *}*
>>>>
>>>> Thanks!
>>>>
>>>> *Jayanga Kaushalya*
>>>> Software Engineer
>>>> Mobile: +94777860160
>>>> WSO2 Inc. | http://wso2.com
>>>> lean.enterprise.middleware
>>>>
>>>> On Tue, Jul 12, 2016 at 10:05 AM, Sabra Ossen <sa...@wso2.com> wrote:
>>>>
>>>>> Hi Chamila,
>>>>>
>>>>> I checked from findbugs and it didn't return an error. Is returning an
>>>>> empty object a practice followed in WSO2?
>>>>>
>>>>> On Tue, Jul 12, 2016 at 9:25 AM, Chamila Wijayarathna <
>>>>> cdwijayarat...@gmail.com> wrote:
>>>>>
>>>>>> Hi Sabra,
>>>>>>
>>>>>> AFAIK when we return a null from a method, find bugs show it as an
>>>>>> error (please check this) and to fix this we use empty objects. So I 
>>>>>> think
>>>>>> the returning null is not something we should do.
>>>>>>
>>>>>> Thank You!
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> *Sabra Ossen*
>>>>> *Software Engineer*
>>>>> Email: sa...@wso2.com
>>>>> Mobile: +94 767 837356
>>>>>
>>>>> _______________________________________________
>>>>> 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
>>>>
>>>>
>>>
>>>
>>> --
>>> Thanks
>>> Abimaran Kugathasan
>>> Senior Software Engineer
>>>
>>> Email : abima...@wso2.com
>>> Mobile : +94 773922820
>>>
>>> <http://stackoverflow.com/users/515034>
>>> <http://lk.linkedin.com/in/abimaran>
>>> <http://www.lkabimaran.blogspot.com/>  <https://github.com/abimarank>
>>> <https://twitter.com/abimaran>
>>>
>>>
>>> _______________________________________________
>>> Dev mailing list
>>> Dev@wso2.org
>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>
>>>
>>
>>
>> --
>> With Regards,
>>
>> *Rasika Perera*
>> Software Engineer
>> M: +94 71 680 9060 E: rasi...@wso2.com
>> LinkedIn: http://lk.linkedin.com/in/rasika90
>>
>> WSO2 Inc. www.wso2.com
>> lean.enterprise.middleware
>>
>> _______________________________________________
>> 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
>
>


-- 
*Sabra Ossen*
*Software Engineer*
Email: sa...@wso2.com
Mobile: +94 767 837356
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to