Tvůrci API, řiďte se zdravým rozumem, kurva!

API v lotus.domino sucks.

Mějme metodu, která nám dohledá dokument podle UNID, což je stadnardně používaná věc.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    public Document getOutboundMessageDocument(String id) throws NotesException {
        Database db = null;
        Document document = null;
        db = DominoUtils.openDatabaseByReplicaID(this.replicaId);
        if (!db.isOpen())
            throw new NotesException(NotesError.NOTES_ERR_DATABASE_NOTOPEN, "Databáze nebyla nalezena! (" + this.replicaId + ")");
        
        document = db.getDocumentByUNID(id);
        if (document == null)
            throw new NotesException(NotesError.NOTES_ERR_DOCUMENT_MISSING, "Dokument nebyl nalezen! (" + id + ")");
        
        return document;
    }

Co se stane, když databáze dokument s takovým UNID neobsahuje? Vrátí to null, a tudíž to vyhodí NotesException.  Co se však stane, když databáze dokument s takovým UNID obsahuje , ale pro daného uživatele je skrytý pomocí Readers pole? Zdravý rozum říká, že v takovém případě dokument v databázi neexistuje, protože existenci dokumentu posuzujeme v kontextu práv daného uživatele. Co uživatel nevidí, to neexistuje. Metoda getDocumentByUNID by opět měla vrátit null. Jenže nevrátí null. Vrátí instanci objektu Document, který je prázdný. Nemá žádné atributy, nemá hodnoty, nemá nic. Nemá ani UNID a metoda toString() samotného objektu Document vrací prázdný string.

Tož dopiči…, přemýšlejte nad tou prací, API vývojáři.

1 Komentáře.

  1. Obrať svoji pozornost sem, hodně věcí podobných tomu, co popisuješ, je tam opraveno: http://t.co/Gpod8EZOfI