I've converted my weblocks app to use elephant. One of the first things I do is to initialize some variables. One of the variables is a "demo" item, that I use as a placeholder until the user choses something more specific. I'm having trouble initializing the dummy. Here is my code:
(defun init-dummy-item () (let* ((ref-type 0) (ref-id "dummy-item")) (setf *dummy-item* (unless-use (awhen (elephant:get-instances-by-value 'product-item 'reference-id ref-id) (find-if (lambda (item) (eql (product-item-reference-type item) ref-type)) it)) (make-instance 'product-item :reference-type ref-type :reference-id ref-id :title "No Item selected" :url "/pub/static/dummy.html" :image-url "/pub/images/dummy.png"))))) (The UNLESS-USE macro simply does unless, and if results are nil uses the second sexp.) The problem is that I get an error (see trace below) when calling GET-INSTANCES-BY-VALUE. What am I doing wrong? The nearest that I can gather is that GET-VALUE is called with the secondd argument as NIL, but it's supposed to be something reasonable, i.e a controller-index-table held by the controler. For whatever raeson that's NIL. What's the deal here? Am I not alowed to call the get-instances-by-* methods until I create at least one item for each class I'm querying about? Yarek THE ERROR: There is no applicable method for the generic function #<STANDARD-GENERIC-FUNCTION ELEPHANT:GET-VALUE (3)> when called with arguments ((FASHION-ORIGAMI::PRODUCT-ITEM . FASHION-ORIGAMI::REFERENCE-ID) NIL). [Condition of type SIMPLE-ERROR] Restarts: 0: [TERMINATE-THREAD] Terminate this thread (#<THREAD "hunchentoot-worker-4" RUNNING {10029A0321}>) Backtrace: 0: ((LAMBDA (SWANK-BACKEND::DEBUGGER-LOOP-FN)) #<FUNCTION (LAMBDA #) {1003F6A4C9}>) 1: (SWANK::DEBUG-IN-EMACS #<SIMPLE-ERROR {1002E3A1A1}>) 2: ((LAMBDA (SWANK-BACKEND::HOOK SWANK-BACKEND::FUN)) #<FUNCTION SWANK:SWANK-DEBUGGER-HOOK> #<CLOSURE (LAMBDA #) {1002E3A9D9}>) 3: (SWANK::CALL-WITH-REDIRECTED-IO #<SWANK::CONNECTION {10037B86D1}> #<CLOSURE (LAMBDA #) {1002E3A9F9}>) 4: (SWANK::CALL-WITH-CONNECTION #<SWANK::CONNECTION {10037B86D1}> #<CLOSURE (LAMBDA #) {1002E3A9D9}>) 5: (SWANK:INVOKE-SLIME-DEBUGGER #<SIMPLE-ERROR {1002E3A1A1}>) 6: ((LAMBDA (SWANK-BACKEND::HOOK SWANK-BACKEND::FUN)) #<FUNCTION SWANK:SWANK-DEBUGGER-HOOK> #<CLOSURE (LAMBDA #) {1002E3A999}>) 7: (INVOKE-DEBUGGER #<SIMPLE-ERROR {1002E3A1A1}>) 8: (INVOKE-DEBUGGER #<SIMPLE-ERROR {1002E3A1A1}>)[:EXTERNAL] 9: ((SB-PCL::FAST-METHOD HUNCHENTOOT:MAYBE-INVOKE-DEBUGGER (T)) #<unavailable argument> #<unavailable argument> #<SIMPLE-ERROR {1002E3A1A1}>) 10: (SIGNAL #<SIMPLE-ERROR {1002E3A1A1}>)[:EXTERNAL] 11: (ERROR #<SIMPLE-ERROR {1002E3A1A1}>)[:EXTERNAL] 12: ((FLET #:LAMBDA43) #<SIMPLE-ERROR {1002E3A1A1}>) 13: ((FLET #:LAMBDA43) #<SIMPLE-ERROR {1002E3A1A1}>)[:EXTERNAL] 14: (SIGNAL #<SIMPLE-ERROR {1002E3A1A1}>)[:EXTERNAL] 15: (ERROR "~@<There is no applicable method for the generic function ~2I~_~S~\n ~I~_when called with arguments ~2I~_~S.~:>")[:EXTERNAL] Locals: SB-DEBUG::ARG-0 = 3 SB-DEBUG::ARG-1 = "~@<There is no applicable method for the generic function ~2I~_~S~\n .. 16: ((SB-PCL::FAST-METHOD NO-APPLICABLE-METHOD (T)) #<unavailable argument> #<unavailable argument> #<STANDARD-GENERIC-FUNCTION ELEPHANT:GET-VALUE (3)>)[:EXTERNAL] Locals: SB-DEBUG::ARG-0 = 5 SB-DEBUG::ARG-1 = :<NOT-AVAILABLE> SB-DEBUG::ARG-2 = :<NOT-AVAILABLE> SB-DEBUG::ARG-3 = #<STANDARD-GENERIC-FUNCTION ELEPHANT:GET-VALUE (3)> 17: (ELEPHANT::ENSURE-SLOT-DEF-INDEX #<unavailable argument> #<unavailable argument>) Locals: SB-DEBUG::ARG-0 = :<NOT-AVAILABLE> SB-DEBUG::ARG-1 = :<NOT-AVAILABLE> 18: ((SB-PCL::FAST-METHOD ELEPHANT:FIND-INVERTED-INDEX (ELEPHANT:PERSISTENT-METACLASS T)) #<unavailable argument> #<unavailable argument> #<unavailable argument> #<unavailable argument>)[:EXTERNAL] Locals: SB-DEBUG::ARG-0 = :<NOT-AVAILABLE> SB-DEBUG::ARG-1 = :<NOT-AVAILABLE> SB-DEBUG::ARG-2 = :<NOT-AVAILABLE> SB-DEBUG::ARG-3 = :<NOT-AVAILABLE> SB-DEBUG::ARG-4 = :<NOT-AVAILABLE> 19: (ELEPHANT:MAP-INVERTED-INDEX #<unavailable argument> #<unavailable argument> #<unavailable argument>)[:EXTERNAL] Locals: SB-DEBUG::ARG-0 = :<NOT-AVAILABLE> SB-DEBUG::ARG-1 = :<NOT-AVAILABLE> SB-DEBUG::ARG-2 = :<NOT-AVAILABLE> SB-DEBUG::ARG-3 = :<NOT-AVAILABLE> 20: (FASHION-ORIGAMI::INIT-DUMMY-ITEM) Locals: #:G137 = :<NOT-AVAILABLE> ANAPHORA:IT = :<NOT-AVAILABLE>
_______________________________________________ elephant-devel site list elephant-devel@common-lisp.net http://common-lisp.net/mailman/listinfo/elephant-devel