<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=text/html;charset=iso-8859-1 http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 8.00.7600.16490"></HEAD>
<BODY style="PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 15px" 
id=MailContainerBody leftMargin=0 topMargin=0 CanvasTabStop="true" 
name="Compose message area">
<DIV><FONT size=2 face=Calibri>
<DIV><FONT size=2 face=Calibri>Hello,</FONT></DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV><FONT size=2 face=Calibri>I am using elephant with sbcl. I found a strange 
behavior in a more or less complex scenario but I am not sure if it is a bug or 
a fault caused by myself?</FONT></DIV>
<DIV><FONT size=2 face=Calibri>So I am posting here in hope that someone has a 
similar experience:</FONT></DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV><FONT size=2 face=Calibri>After starting our system via (asdf:operate 
'asdf:load-op ...) and creating some objects of the defined classes I closed the 
sbcl interpreter/slime.</FONT></DIV>
<DIV><FONT size=2 face=Calibri>When I restarted the system and tried to read 
some data I got the following error:</FONT></DIV>
<DIV><FONT size=2 face=Calibri>SB-MOP:CLASS-SLOTS called on 
#<ELEPHANT:PERSISTENT-METACLASS DATAMODEL:ITEMIDENTIFIERC>, which is not 
yet finalized.<BR>   [Condition of type 
SB-INT:SIMPLE-REFERENCE-ERROR]</FONT></DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV><FONT size=2 face=Calibri>After this message I called the function 
(sb-mop:finalize-inheritance (find-class 'd:ItemIdentifierC)) with the effect 
that it was possible to read the data (an object of the type 
'd:ItemIdentifierC).</FONT></DIV>
<DIV>The actual error is caused in src/elephant/metaclasse.lisp by the function 
find-slot-def-by-name.</DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV><FONT size=2 face=Calibri>When I called the function </FONT><FONT 
size=2 face=Calibri>(sb-mop:class-finalized-p (find-class 'd:ItemIdentifierC)) 
after loading our system and before creating any data - in this case objects of 
the type 'd:ItemIdentifierC - the result was always nil. When I created an 
object of this type the result was t.</FONT></DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV><FONT size=2 face=Calibri>Is it necessary to call 
sb-mop:finalize-inheritance explecitely?</FONT></DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV> </DIV>
<DIV><FONT size=2 face=Calibri>Maybe the class-hierarchy can help a little 
bit:</FONT></DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV><FONT size=2 face=Calibri>(elephant:defpclass TopicMapConstructC 
()<BR>  ((versions :associate (VersionInfoC 
versioned-construct)<BR>             
:accessor 
versions<BR>             
:initarg :versions)))</FONT></DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV><FONT size=2 face=Calibri>(elephant:defpclass PointerC 
(TopicMapConstructC)<BR>  ((uri :accessor 
uri<BR>        :initarg 
:uri<BR>        :type 
string<BR>        :initform (error "The uri 
must be set for a pointer")<BR>        :index 
t)<BR>   (identified-construct :accessor 
identified-construct<BR>                         
:initarg 
:identified-construct<BR>                         
:associate ReifiableConstructC)))</FONT></DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV><FONT size=2 face=Calibri>(elephant:defpclass IdentifierC 
(PointerC)<BR>  ())</FONT></DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV><FONT size=2 face=Calibri>(elephant:defpclass ItemIdentifierC (IdentifierC) 
<BR>  ()<BR>  (:index t))</FONT></DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV><FONT size=2 face=Calibri>Best regards</FONT></DIV>
<DIV><FONT size=2 face=Calibri></FONT> </DIV>
<DIV><FONT size=2 face=Calibri>Lukas</FONT></DIV></FONT></DIV></BODY></HTML>