Salve,
ho incontrato un problema con la versione 0.80, e ve lo segnalo non sapendo se sia stato risolto o meno nel nuovo rilascio della versione 0.90.
Se in una classe X viene definito un attributo di tipo Reference ad una classe astratta A, e se tale attributo è all'ultimo posto nella lista degli attributi di X, quando nel modulo Gestione si cerca di modificare o eliminare la scheda di un oggetto di tipo X viene mostrato un popup con il messaggio "Classe non modificabile" e l'operazione viene impedita.
Convinto di non compiere alcuna operazione "illegale" nello schema di dati ho investigato il problema e sono giunto alle conclusioni seguenti:
1. nella classe CardForm, alla riga 701, il test "if(CMDB.getBean().isSuperClass())" non ha probabilmente la semantica voluta: il test infatti non viene fatto sul tipo X dell'oggetto in esame (come probabilmente voluto), bensì sul tipo dell'ultimo attibuto nella lista degli attributi di X (il riferimento alla classe astratta A nel mio caso); ciò avviene perché l'oggetto CMDB, originariamente di tipo X, viene modificato di volta in volta scorrendo la lista dei suoi attributi nelle righe di codice precedenti (vedi punto 2). Nel mio caso il tipo finale dell'oggetto CMDB risulta quindi quello della classe astratta A, effettivamente non modificabile.
2. il bean CMDB viene aggiornato ad ogni invocazione su di esso del metodo selectAllAttribute della classe CMDBClass (alla riga 580 di CardForm); tale metodo sembra modificare il tipo del bean di invocazione alla riga 672 della classe CMDBClass, causando il problema descritto al punto 1.
Commentando tale riga del metodo selectAllAttribute il comportamento anomalo non si manifesta più.
Sperando di essere stato sufficientemente preciso resto a disposizione per eventuali chiarimenti.
Andrea
Salve,
grazie per l'accurato report.
Andrea wrote:
Convinto di non compiere alcuna operazione "illegale" nello schema di dati ho investigato il problema e sono giunto alle conclusioni seguenti:Essendo CMDBuild sotto licenza GPL queste attività non solo sono legali ma anche incoraggiate.
Andrea wrote:
Sperando di essere stato sufficientemente preciso resto a disposizione per eventuali chiarimenti.il report è charo e probabilmente si applica anche a cmdbuild 0.90 (anche se probabilmente il problema è stata mitigato da altre modifiche).