Mozna by sel pouzit Null object pattern. Misto null se do promenne ulozi
"Null" objekt OrderItem s vychozimi hodnotami, napr. PN = -1, apod.
Ale zase je pak potreba dat pozor na to, aby se takovy null objekt nikdo
nesnazil pomoci JPA pak ulozit. V pripade Entit JPA tenhle pattern mozna
neni uplne vhodny. Spis se hodi na kolekce, kde misto null je lepsi
vratit prazdnou kolekci.
Petr
On 9.6.2011 10:38, Libor Jelinek wrote:
Ano, těžko si to představit. Kompletní popis by byl rozsáhlý. Ale
stručně je to asi tak, že mám modul v NetBeans Platform, který
poskytuje POJO jiným modulům. V určitý moment se z POJO stanou JPA
managed entities. Odkazy, ale ale již existují např. z TableModelů
Swingové JTable a ještě ke všemu v jiném dalším třetím modulu. Navíc
si řízení a načítání modulů řídí NBP více méně podle sebe samo.
Jen výpis zrovna této NullPointerException je asi tak cca 90-100
volání :-) V téhle "džungli" se pak můžou dít věci a to je pak
debugging jak má být :-)
Dne 9. června 2011 10:29 Martin Beránek <[email protected]
<mailto:[email protected]>> napsal(a):
Dne 9.6.2011 09:15, Libor Jelinek napsal(a):
Dobrý den!
Chtěl bych probrat, jak by kdo řešil následující problém
ochrany proti
NullPointerException pokud s jednou referenční proměnnou pracuje
současně více částí aplikace (více Swing formulářů nebo JPA
perzisence a
JavaServer Faces web GUI současně apod.).
OrderItem item = new OrderItem();
/// V nějaké vrstvě se při vytváření položky nastaví nějaké
hodnoty/
item.setPN(123);
item.setQty(2);
/// V jiné vrstvě uživatel smaže položku. Reference je na null./
item = null;
/// Další vrstva to neví a zavolá, což //skončí chybou
NullPointerException/
item.getPN();//
Jak k tomu co nejlépe přistoupit? Mě napadají tak dvě možnosti:
1. Do do getter metod přidat kontrolu na na null a v tom
případě vrátit
např "-1".
2. Oznamovat si změny např. beanovským PropertyChangeListener,
což by
ale hodně zkomplikovalo kód.
Budu rád za Vaše názory.
Libor
Nechápu jakým způsobem jste vlastně k tomuhle problému přišel.
Pokud mám metodu která s objektem pracuje a pak si musím na
začátku zkontrolovat, jestli mi někdo nepředal null. Ale v průběhu
metody nejde nijak zvenku znullovat objekt, na který držím referenci.
--
Martin Beránek