Am 16.02.10 07:18, schrieb Stefan Liebig:
My
personal favorite is a), it is:
   
- explicit
   
- safe
   
   
 
+1 
A
first look at the usage of the getXXXSetting without default parameter
shows that sometimes a default will be applied by the calling code
sometimes not causing an NPE if not defined.
   
So, a question arises: Is it an error if a setting has not been
defined?
   
   
 
if a setting has not been defined there should always be a fallback to
a default 
from my POV its not an error, but I would log a warning 
 
ekke 
Tschüß,
   
Stefan
   
   
On 15.02.2010 23:37, Christian Campo wrote:
   
  there is also
     
     
c) that all getXXXSetting method HAVE to return a non null value, so
changing the contract. that would make life easier vor teh components
using LnF.
     
     
@Thorsten?
     
     
christian
     
     
Am 15.02.2010 um 21:30 schrieb Elias Volanakis:
     
     
  
    Hi everybody,
       
       
here's something to discuss:
       
       
I realized that we a dozen or more potential null-pointer-exceptions
       
waiting to happen, because of the way we use the RienaDefaultLnf:
       
       
Example 1:
       
boolean on =
lnf.getBooleanSetting(LnfKeyConstants.DISABLED_MARKER_ADVANCED);
       
       
Example 2:
       
shellRenderer.setCloseable(lnf.getBooleanSetting(LnfKeyConstants.TITLELESS_SHELL_SHOW_CLOSE));
       
       
Example 3:
       
private int getSwitchterHeight() {
       
  int margin =
LnfManager.getLnf().getIntegerSetting(LnfKeyConstants.SUB_APPLICATION_SWITCHER_HEIGHT);
       
  return margin;
       
}
       
       
The problem here is that the getXXXSetting methods may return null,
       
which causes an NPE if used together with auto-boxing (Integer-to-int,
       
Boolean-to-boolean).
       
       
(a) My favorite approach would be to deprecate/remove these methods
       
and use a second variant that always needs a default value:
       
lnf.getBooleanSetting(KEY, false); lnf.getIntegerSetting(KEY, 0). We
       
already have these methods :-)
       
(b) If we don't go for (a), we have to at least go over all places in
       
the code and make sure we handle a null return value. However this
       
will not prevent it from re-happening later.
       
       
Looking forward to feedback,
       
Elias.
       
       
--  
Elias Volanakis | Technical Lead | http://eclipsesource.com
       
elias@xxxxxxxxxxxxxxxxx | +1 503 929 5537 | @evolanakis
       
_______________________________________________
       
riena-dev mailing list
       
riena-dev@xxxxxxxxxxx
       
https://dev.eclipse.org/mailman/listinfo/riena-dev
       
      
     
-------------------------------------------------------------
     
compeople AG
     
Untermainanlage 8
     
60329 Frankfurt/Main
     
fon: 069 / 27 22 18 0
     
fax: 069 / 27 22 18 22
     
web: www.compeople.de
     
Vorstand: Jürgen Wiesmaier
     
Aufsichtsratsvorsitzender: Christian Glanz
     
Sitz der Gesellschaft: Frankfurt/Main
     
Handelsregister Frankfurt HRB 56759
     
Ust-Ident.-Nr: DE207665352
     
-------------------------------------------------------------
     
_______________________________________________
     
riena-dev mailing list
     
riena-dev@xxxxxxxxxxx
     
https://dev.eclipse.org/mailman/listinfo/riena-dev
     
    
   
_______________________________________________
   
riena-dev mailing list
   
riena-dev@xxxxxxxxxxx
   
https://dev.eclipse.org/mailman/listinfo/riena-dev
   
   
 
 
 
--  
  ekke (ekkehard gentz) 
  independent software-architect 
senior erp-consultant 
 eclipse | osgi | equinox | mdsd | oaw | emf |
uml 
max-josefs-platz 30, D-83022 rosenheim, germany 
mailto:ekke@xxxxxxxxxxxxxxxx 
homepage (de): http://gentz-software.de 
blog (en): http://ekkes-corner.org 
twitter: @ekkescorner 
skype: ekkes-corner 
  Steuer-Nr: 156/220/30931 FA Rosenheim, UST-ID:
DE189929490 
   
 
 |