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


Odpovedet emailem