Porovnávané verzie

Kľúč

  • Tento riadok sa pridal
  • Riadok je odstránený.
  • Formátovanie sa zmenilo.

Obsah

Verejné API sa medzi verziami 10.0.37 (d2japi-37.jar) a 10.1.39 (d2japi-10.1.39.jar) rozšírilo a v niektorých prípadoch aj zmenilo natoľko, že sú pri prechode na novšiu verziu potrebné ručné úpravy existujúceho kódu. (Pozn. verzia 10.1.38 bola vydaná len pre vnútorné potreby a nie je jej v tejto migračnej príručke venovaná pozornosť.) Nasledujúcich kapitolách je uvedený zoznam zmien, nových funkcií a  návod, ako správne upraviť aplikačný kód pri migrácii aplikácie z D2000 verzie 10.0.37 na 10.1.39.

...

Info

Pri migrácii je nutné sa uistiť, že po zavolaní close()sa následné príkazy nespoliehajú, že bol kanál okamžite uzatvorený. Pokiaľ je v kóde takéto miesto, je potrebné pred ním spraviť nasledovné:

Blok kódu
languagejava
themeEclipse
FutureEvent<Void> futureCloseResult = openedObject.close();


... // tento kód sa na uzatvorenie ešte nespolieha


futureResult.get(); // čakanie na potvrdenie uzatvorenia

... // nasleduje miesto, na ktorom už musí platiť, že bol kanál
skutočne uzatvorený


Kotva
_Toc490141294
_Toc490141294
8.10. Rozšírenie rozhrania D2SessionEventsListener

Rozhranie bolo rozšírené o 2 nové metódy:

void onTerminateRequest() – je zavolaná v prípade, že niekto prostredníctvom systému D2000 žiada o ukončenie procesu aktuálnej JAPI Session. Napríklad cez TELL príkaz. Korektná implementácia metódy zariadi, aby došlo k uvoľneniu zdrojov a následne zavolá session.close().

void onRedundancyStateChanged(RedundancyStateType redundancyState) – je zavolaná v prípade prepnutia redundancie D2000 kernela. Hodnota parametra signalizuje aktuálny stav kernela, ku ktorému je pripojená aktuálna session. Korektná implementácia zabezpečí, že sa na komunikáciu so systémom D2000 bude používať session, ktorá je pripojená na HOT kernel.

Info

Pri migrácii je potrebné všetky implementácie rozšíriť o príslušné metódy.

Kotva
_Toc490141295
_Toc490141295
8.11. Volanie RPC implementujúcej ESL rozhranie

Od verzie 10.1.39 pribudla možnosť volať RPC, ktorá je implementáciou ESL rozhrania. Slúžia na to preťažené metódy D2Session.callRPC a D2Session D2Session.callRPCNoReply s parametrom interfaceHobj.

Kotva
_Toc490141296
_Toc490141296
8.12. Test existencie RPC a SBA volania

Vzhľadom k dynamickej povahe konfigurácie D2000 je od verzie 10.1.39 možné za behu overiť, či sa predpokladaná RPC a SBA nachádza na predpokladanom mieste. Slúžia na to metódy D2Session.testRPC a D2Session a D2Session.testSBA.

Kotva
_Toc490141297
_Toc490141297
9.13. Informácie o prihlásenom používateľovi a zmena hesla používateľa

Aby klient knižnice JAPI mohol komunikovať s D2000 kernelom, je potrebné, aby mal k dispozícii session, v ktorej je prihlásený platným D2000 používateľským kontom. Pri prihlasovaní sa cez JAPI podliehajú používateľské kontá rovnakým pravidlám, ako pri prihlasovaní sa cez iné D2000 procesy. Napríklad povinnosti pravidelne meniť svoje prihlasovacie heslo. Z toho dôvodu od verzie 10.1.39 pribudlo volanie D2Session.getLoggedUserInformation, ktoré sprístupní informácie o prihlásenom používateľovi a stave jeho prihlasovacieho hesla.

Pre možnosť zmeny prihlasovacieho hesla prihláseného používateľa pribudla od verzie 10.1.39 metóda D2Session.changePassword, ktorá zmenu hesla umožňuje. Nové heslo musí spĺňať všetky pravidlá, ktoré sú pre prihlasovacie heslá v systéme D2000 zapnuté.

Info

Pri migrácii je odporúčané implementovať funkcionalitu, ktorá skontroluje stav prihlasovacieho hesla. V prípade, že kernel požaduje zmenu hesla, upozorní používateľa na túto skutočnosť a umožní mu heslo zmeniť. V opačnom prípade hrozí zablokovanie používateľského účtu.

Kotva
_Toc490141298
_Toc490141298
9.14. Zmena správania pri neúspešnom vytvorení D2Session

Vytvorenie objektu typu D2Session volaním D2Connector.createSession môže zlyhať z niekoľkých príčin. Od verzie 10.1.39 sú tieto príčiny lepšie rozlíšené rôznymi typmi výnimiek, ktoré nastanú pri volaní createSession, alebo pri volaní Future.get.

  • Ak inštancia D2Connector-a už nemá aktívne spojenie: IllegalStateException
  • Ak kernel vyhodnotí parametre sessionName alebo hostName ako invalidné: ConnectSessionException
  • Ak kernel odmietne prihlásiť session s uvedenými prihlasovacími údajmi: LoginFailedException
    •  Ak bolo prihlasovacie meno správne, obsahuje výnimka PasswordInformation, v ktorom je uvedený dôvod odmietnutia.
    •  V opačnom prípade je dôvod null.
Info

Pri migrácii je odporúčané obaliť získanie session do try ... catch ... so zachytením príslušných výnimiek.

Kotva
_Toc490141299
_Toc490141299
9.15. Volanie D2Session.getIndirectInfo

Volanie D2Session.getObjectInfo umožňuje získať prístup ku konfigurácii objektu, ktorá je užitočná zvlášť pri zobrazovaní hodnoty objektu používateľovi. V prípade štruktúrovanej premennej s hodnotami získanými z odkazov na iné objekty je potrebné nasledovať „indirect" odkazy. Od verzie 10.1.39 je k dispozícii volanie D2Session.getIndirectInfo, ktoré požiada kernel o dohľadanie informácií na jedno zavolanie.

Kotva
_Toc490141300
_Toc490141300
9.16. Volanie D2Session.getObjectInfo vráti aktuálnu hodnotu objektu

Od verzie 10.1.39 je súčasťou výsledku volania D2Session.getObjectInfo aj aktuálna hodnota objektu.

Kotva
_Toc490141301
_Toc490141301
9.17. Volanie D2Session.openObject vráti informácie o objekte

Od verzie 10.1.39 sú súčasťou výsledku volania D2Session.openObject aj informácie o objekte.

Kotva
_Toc490141302
_Toc490141302
9.18. Zmena rozhrania RPCReturnContext

Inštancie objektu RPCReturnContext sa používajú na zaslanie návratovej hodnoty prichádzajúceho RPC volania (keď ESL zavolá CALL RPC do JAPI). Vo verzii 10.1.39 bolo jej rozhranie a logika ovládania zásadne prepracovaná.

  • Metóda doReturnError berie ako parameter hodnotu vymenovaného typu RpcReturnContextErrorType namiesto číselného kódu (ktorý nebol dokumentovaný). Použitím metódy sa signalizuje, že RPC bola zavolaná nesprávnym spôsobom – nesprávny počet alebo typy parametrov volania.
  • Pribudla metóda doReturnException ktorou sa signalizuje, že počas vykonávania RPC nastala výnimka.
  • Metóda doReturn, ktorej parametrom bolo pole hodnôt typu UnivalValue zanikla.
  • Nahrádza ju metóda getResponseDataSet, ktorá sprístupní inštanciu typu RpcResponseDataSet.

Vo verzii 10.0.37 bola návratová hodnota zasielaná ako pole hodnôt typu UnivalValue. Nevýhodou tohto prístupu bolo, že dĺžka poľa ani typy jednotlivých Unival hodnôt v poli neboli nijak kontrolované, ale ESL interpreter pritom spoliehal na ich korentnosť.

Z toho dôvodu sa od verzie 10.1.39 návratová hodnota zadáva do objektu typu RpcResponseDataSet, ktorý kontroluje typy hodnôt ako aj ich počet.

Info

Pri migrácii je potrebné upraviť volanie RPCReturnContext.doReturn(values) na RPCReturnContext.getResponseDataSet().setValues(values), pričom je pred tým vhodné skontrolovať, či je zadané pole v premennej values správnej veľkosti a obsahuje hodnoty požadovaných typov. Taktiež je potrebné upraviť parameter volania RPCReturnContext.doReturnError z čísla na hodnoty vymenovaného typu RpcReturnContextErrorType.

Kotva
_Toc490141303
_Toc490141303
9.19. Zmena rozhrania SBAReturnContext

Inštancie objektu SBAReturnContext sa používajú na zaslanie návratovej hodnoty prichádzajúceho SBA volania z D2000 Java Runtime do JAPI:

  • Metóda doReturnError berie ako parameter hodnotu vymenovaného typu SBAErrorCode namiesto číselného kódu (ktorý nebol dokumentovaný). Použitím metódy sa signalizuje, že SBA bola zavolaná nesprávnym spôsobom a nebude ani vykonaná.
  • Pribudla metóda doReturnException ktorou sa signalizuje, že počas vykonávania SBA nastala výnimka.
Info

Pri migrácii je potrebné upraviť parameter volania SBAReturnContext.doReturnError z číselnej hodnoty na hodnotu vymenovaného typu SBAErrorCode

...

Kotva
_Toc490141304
_Toc490141304
9.20. Zastaraná D2SessionUtils.getObjectHOBJByName

Od verzie 10.1.39 bola zavedená metóda D2SessionUtils.getFutureObjectHobjByName, ktorá namiesto hotového výsledku vráti FutureEvent, ktorého výsledok je požadované HOBJ. Typicky je potrebné získať viac HOBJ a použiť ich spolu. Pôvodná metóda vrátila výsledok až keď získala odpoveď z Kernel-a, čo značne spomaľuje beh programu. Nová metóda umožňuje rýchlo zaslať viac žiadostí a počkať na odpovede spolu.

Info

Pri migrácii je odporúčané upraviť kód na používanie novej metódy.