Thanks Alex! You gotta preach us there is a lot of code and design ideas that 
we don't understand, we can only learn from our masters and our mistakes :P

Regards.

On 11-Jan-2013, at 5:03 PM, Alex Huang <alex.hu...@citrix.com> wrote:

> Oh man....now, you're going to get me started on something that you don't 
> want to get me started on....but here goes my preaching...
> 
> Adding checks where the business logic does not dictate it to avoid 
> exceptions is something that you should never do.  So what do I mean by this? 
>  Take this example code, here there's no logic case for id or uuid to be null 
> because at the database layer these two must not be null.  So in fact, you 
> want an exception to be thrown out so a developer can see this immediately 
> because the only time this can happen is either from bad user input or bad 
> programming mistake.  Hiding it would just mean it will be a problem 
> elsewhere.  So when should there be checks.  User inputs should always be 
> checked.  When the variable is null means something different then you should 
> check.
> 
> You can also read this.
> https://cwiki.apache.org/confluence/display/CLOUDSTACK/Exceptions+and+logging
> 
> Exceptions are your friend.  Embrace it, don't avoid it.  
> 
> --Alex
> 
>> -----Original Message-----
>> From: Rohit Yadav [mailto:rohit.ya...@citrix.com]
>> Sent: Friday, January 11, 2013 4:43 PM
>> To: cloudstack-dev@incubator.apache.org
>> Subject: Concern on GenericDaoBase findBy method
>> 
>> In GenericDaoBase's findById and findByUuid if I added a check to return null
>> if passed value is null to avoid potential exceptions, will this break any 
>> use
>> case? No changes I found till now.
>> 
>> @@ -905,6 +905,8 @@ public abstract class GenericDaoBase<T, ID extends
>> Serializable> implements Gene
>>     public T findById(final ID id) {
>> +        if (id == null)
>> +            return null;
>>         if (_cache != null) {
>>             final Element element = _cache.get(id);
>>             return element == null ? lockRow(id, null) :
>> (T)element.getObjectValue();
>> @@ -916,6 +918,8 @@ public abstract class GenericDaoBase<T, ID extends
>> Serializable> implements Gene
>>     public T findByUuid(final String uuid) {
>> +        if (uuid == null)
>> +            return null;
>>         SearchCriteria<T> sc = createSearchCriteria();
>>         sc.addAnd("uuid", SearchCriteria.Op.EQ, uuid);
>> 
>> Regards.
> 

Reply via email to