XIQE/Schuzky/4.5.2006

Z FI WIKI
Přejít na: navigace, hledání

Zpět na Schůzky

Schůzka týmu XIQE ze dne 4. 5. 2006

Schůzka začne ve 13:00 v NLP labu. Zúčastní se část vývojářů komponenty Core.

Očekávaná účast

  • Petr Adámek
  • Petr Vlček
  • Josef Šustáček
  • Michal Krčál
  • Zdeněk Zikán (přijde ve 14:00)

Témata k diskusi

  • Sémantika rozhraní NodeResolver (chování metody getDocumentNode(int documentId), nekonzistence metody getOwnerDocument(NodeId node) s kontraktem W3C DOM -- vracet Document i pro parametr typu Document).
  • Použití QName v rozhraní NodeResolver (metoda String getNodeName(NodeId node)) -- QName jako návratový typ místo Stringu
  • DocumentStructureIndex: Přejmenování metody getRootElementId na getRootNodeId?
  • Manipulace s indexy na úrovni kolekce (chybí rozhraní, viz Ticket #35)
  • Vnější rozhraní XIQE a sémantika existujících rozhraní (Zdeněk Zikán)
  • Rozhrani na pripojovani/odpojovani uzlu
  1. DOM Nody mohou existovat i nepripojene (jake NodeId jim priradit) -- resit na urovni NodeResolveru (nutna moznost zmeny NodeId) (ci jineho rozhrani) nebo na urovni DOMu
  2. jak nakladat s operacemi nad nepripojenym Nodem (nepripojenemu Nodu pripojim potomka, atribut...)
  3. co s NodeId, kdyz uzel odpojim a pripojim nekde jinde
  4. nemusi se pri pripojeni Nodu jinam preindexovat cely strom? co potom s cachemi? NodeId uzlu je ulozeno i u vsech jeho atributu
  5. musi se pri odpojeni Nodu projit cely podstrom jeho potomku a vsechny poodpojovat? jak celou hierarchii uchovat nepripojenou? (stejne jako bod 2)
  6. pridavani/odebirani atributu (stejny problem s NodeId jako v bodu 2)
  • rozhrani na zmenu obsahu uzlu, atributu
  • atributy ve W3C DOMu (QName v konstruktoru), jejich samostatne cachovani v DOMModelu
  • StoragePlanStub -- napsat vlastní SAX handler pro vybudování DOM modelu dokumentu
  • pozn. -- resit na urovni NodeResolveru (nutna moznost zmeny NodeId) (ci jineho rozhrani) nebo na urovni DOMu, pokud by nebyla potreba NodeId, pripada v uvahu jeho nahrazani za typ long


Návrhy

  • Ponechat objekt NodeId. Pokud je to statická strukutra, tak NodeId může nést i strukturální informaci. V případě dynamické struktury musím mít strukturální informaci jinde, nebo musím mít sofistikovaný mechanismus ošetření změny NodeId. V případě použití striktně statických NodeId lze místo objektu použít typ long.
  • Podpora nepřipojených uzlů -- podpora v rozhraní pro změny dokumentu, pokud to nějaká struktura neumí, tak se ošetří dekorátorem, který bude operaci simulovat a odpojené uzly bude držet v paměti.
  • DOMNodeMapping -- idea vytvoření vlastní implementace NodeId, která bude obsahovat DOM Node uvnitř -- odpadá nutnost hledání v mapě. Otázka je, jak zjistit NodeId pro daný DOM node?
  • Nove rozhrani na meneni, metody typu NodeId createElement(QName qName) a void addNode(NodeId insertedNode, NodeId parent), void insertBefore(NodeId insertedNode, NodeId insertBefore), void setAttribute(NodeId node, QName name, String value), removeAttribute(NodeId node, QName name).
  • Do NodeResolveru přidat metodu getTextContent(NodeId node), která bude vracet textovou hodnotu uzlu (rekurzivní procházení potomků v AbstractNodeResolveru).
  • formát URI: xmldb:xiqe:file:///cesta.ke.kolekci nebo xmldb:xiqe:net://server:port/cesta.ke.kolekci