[cl-dwim-devel] Several errors in the cl-dwim
Leonid Novikov
novikov.leon at gmail.com
Sat May 23 18:09:48 UTC 2009
I tried to create a small application using dwim and encountered the
following problems:
1. My model consists of one object
(def entity user (audited-object subject)
((login :type standard-text
:primary #t
:index #t)))
I created it as follows
(with-model-database
(with-read-lock-held-on-model
(clearf dmm::*scheduler-technical-subject-singleton*
dmm::*repl-technical-subject-singleton*
dmm::*import-technical-subject-singleton*)
(do-symbols (symbol :my-dwim-test)
(when (ppcre:all-matches "^\\*.*-SINGLETON\\*" (symbol-name symbol))
(clearf (symbol-value symbol))))
(with-transaction
(purge-instances 'persistent-object))
(with-transaction
(bind ((*audit-changes* #f))
(create-test-cluster)
(create-production-cluster))
(with-import-technical-subject
(dolist (instance (select-clusters))
(touch-instance instance #t))
(dolist (instance (select-cluster-nodes))
(touch-instance instance #t))))
(with-transaction
(with-import-technical-subject
(let ((*always-reload-authenticated-session-on-transaction-boundary*
#f))
(create-user))))
(with-transaction
(prc::signal-broken-references))))
(importing.info "Finished importing"))
(def function create-user ()
(multiple-value-bind (password salt)
(digest-password-with-sha256 "admin123"
(dwim-meta-model::random-string +password-salt-length+))
(make-encrypted-password-authentication-instrument
:subject (make-instance 'user :login "admin123"
:subject-preferences (make-instance 'subject-preferences))
:password password
:salt salt)))
When I use the default value for
*always-reload-authenticated-session-on-transaction-boundary* then I
receive an error. Did you make this variable to # f when creating the
model?
2. For interface of the making the user I use following code
(standard-object-maker-menu-item 'user)
when trying to save get error:
The slot HU.DWIM.WUI::COMPONENT-VALUE is unbound in the object #<BOOLEAN-MAKER>.
[Condition of type UNBOUND-SLOT]
Restarts:
0: [CONTINUE] Continue processing the error (and probably send an error page)
1: [USE-VALUE] Return a value as the slot-value.
2: [STORE-VALUE] Store and return a value as the slot-value.
3: [TERMINATE-TRANSACTION] return (values) from the WITH-TRANSACTION
block executing the current terminal action :COMMIT
4: [COMMIT-TRANSACTION] mark transaction for commit only and return
(values) from the WITH-TRANSACTION block
5: [ROLLBACK-TRANSACTION] mark transaction for rollback only and
return (values) from the WITH-TRANSACTION block
--more--
Backtrace:
0: ((LAMBDA (SWANK-BACKEND::DEBUGGER-LOOP-FN)) #<FUNCTION (LAMBDA #)
{B616BDD}>)
1: (SWANK::DEBUG-IN-EMACS #<UNBOUND-SLOT COMPONENT-VALUE {108085F1}>)
2: ((LAMBDA (SWANK-BACKEND::HOOK SWANK-BACKEND::FUN)) #<FUNCTION
SWANK:SWANK-DEBUGGER-HOOK> #<CLOSURE (LAMBDA #) {1081DE35}>)
3: (SWANK::CALL-WITH-BINDINGS ..)
4: (SWANK::CALL-WITH-CONNECTION #<SWANK::CONNECTION {BC73731}>
#<CLOSURE (LAMBDA #) {1081DE35}>)
5: (SWANK:INVOKE-SLIME-DEBUGGER #<UNBOUND-SLOT COMPONENT-VALUE {108085F1}>)
6: ((LAMBDA (SWANK-BACKEND::HOOK SWANK-BACKEND::FUN)) #<FUNCTION
SWANK:SWANK-DEBUGGER-HOOK> #<CLOSURE (LAMBDA #) {1081DE15}>)
7: (SWANK:SWANK-DEBUGGER-HOOK #<UNBOUND-SLOT COMPONENT-VALUE
{108085F1}> #<unavailable argument>)
8: (HU.DWIM.WUI::INVOKE-SLIME-DEBUGGER #<UNBOUND-SLOT
COMPONENT-VALUE {108085F1}>)[:EXTERNAL]
9: ((LAMBDA (SB-PCL::.PV. SB-PCL::.NEXT-METHOD-CALL. SB-PCL::.ARG0.
SB-PCL::.ARG1.)) ..)
10: ((SB-PCL::FAST-METHOD HANDLE-TOPLEVEL-CONDITION :AROUND (T T)) ..)
11: ((FLET HU.DWIM.WUI::HANDLE-REQUEST-ERROR) #<UNBOUND-SLOT
COMPONENT-VALUE {108085F1}>)
12: ((LABELS HU.DWIM.WUI::LEVEL-1-ERROR-HANDLER) #<UNBOUND-SLOT
COMPONENT-VALUE {108085F1}>)
13: (SIGNAL #<UNBOUND-SLOT COMPONENT-VALUE {108085F1}>)[:EXTERNAL]
14: (ERROR #<UNBOUND-SLOT COMPONENT-VALUE {108085F1}>)[:EXTERNAL]
15: ((SB-PCL::FAST-METHOD SLOT-UNBOUND (T T T)) #<unavailable
argument> #<unavailable argument> #<unavailable argument>
#<BOOLEAN-MAKER> HU.DWIM.WUI::COMPONENT-VALUE)
16: ((LAMBDA (SB-KERNEL:INSTANCE)) #<unavailable argument>)
17: (SLOT-VALUE #<BOOLEAN-MAKER> HU.DWIM.WUI::COMPONENT-VALUE)
18: ((SB-PCL::FAST-METHOD COMPONENT-VALUE-OF :AROUND (PRIMITIVE-COMPONENT)) ..)
19: ((SB-PCL::FAST-METHOD COLLECT-MAKE-INSTANCE-INITARGS
(PLACE-MAKER)) #<unavailable argument> #<unavailable argument>
#<PLACE-MAKER :CONTENT #<BOOLEAN-MAKER>>)
20: ((SB-PCL::FAST-METHOD COLLECT-MAKE-INSTANCE-INITARGS
(STANDARD-OBJECT-SLOT-VALUE-GROUP-MAKER)) #<unavailable argument>
#<unavailable argument> #<STANDARD-OBJECT-SLOT-VALUE-GROUP-MAKER>)
21: (SB-IMPL::MAP1 #<STANDARD-GENERIC-FUNCTION
COLLECT-MAKE-INSTANCE-INITARGS (8)>
((#<STANDARD-OBJECT-SLOT-VALUE-GROUP-MAKER>
#<STANDARD-OBJECT-SLOT-VALUE-GROUP-MAKER>)) :LIST T)
22: (MAPCAR #<STANDARD-GENERIC-FUNCTION
COLLECT-MAKE-INSTANCE-INITARGS (8)>
(#<STANDARD-OBJECT-SLOT-VALUE-GROUP-MAKER>
#<STANDARD-OBJECT-SLOT-VALUE-GROUP-MAKER>))[:EXTERNAL]
23: (MAPPEND #<STANDARD-GENERIC-FUNCTION
COLLECT-MAKE-INSTANCE-INITARGS (8)>)[:EXTERNAL]
24: ((SB-PCL::FAST-METHOD MAKE-INSTANCE-USING-INITARGS
(STANDARD-OBJECT-MAKER STANDARD-CLASS STANDARD-OBJECT)) ..)
25: ((SB-PCL::FAST-METHOD MAKE-INSTANCE-USING-INITARGS
(STANDARD-OBJECT-MAKER PERSISTENT-CLASS PERSISTENT-OBJECT)) ..)
26: ((SB-PCL::FAST-METHOD
HU.DWIM.WUI::=LAYERED-FUNCTION-DEFINER-FOR-EXECUTE-CREATE-INSTANCE= (T
RECURSION-POINT-COMPONENT STANDARD-OBJECT-MAKER PERSISTENT-CLASS)) ..)
27: ((SB-PCL::FAST-METHOD
HU.DWIM.WUI::=LAYERED-FUNCTION-DEFINER-FOR-EXECUTE-CREATE-INSTANCE= (T
STANDARD-OBJECT-LIST-INSPECTOR STANDARD-OBJECT-MAKER STANDARD-CLASS))
..)
28: ((SB-PCL::FAST-METHOD
HU.DWIM.WUI::=LAYERED-FUNCTION-DEFINER-FOR-EXECUTE-CREATE-INSTANCE= (T
STANDARD-OBJECT-LIST-INSPECTOR STANDARD-OBJECT-MAKER
PERSISTENT-CLASS)) ..)
29: (HU.DWIM.WUI::CALL-WITH-INTERACTION #<CLOSURE (LABELS
HU.DWIM.WUI::WITH-INTERACTION-BODY) {1077ECAD}>
#<STANDARD-OBJECT-MAKER>)
30: ((LABELS CL-RDBMS::WITH-TRANSACTION*-BODY))
31: (DWIM-META-MODEL::CALL-WITH-RELOADED-AUTHENTICATED-SESSION
#<CLOSURE (FLET CALL-NEXT-METHOD) {10757225}>)
32: (CL-RDBMS::CALL-WITH-TRANSACTION* #<CLOSURE (LABELS
CL-RDBMS::WITH-TRANSACTION*-BODY) {107426DD}>)[:EXTERNAL]
33: ((SB-PCL::FAST-METHOD
HU.DWIM.WUI::=LAYERED-FUNCTION-DEFINER-FOR-EXECUTE-CREATE-INSTANCE=
:AROUND (T RECURSION-POINT-COMPONENT STANDARD-OBJECT-MAKER
PERSISTENT-CLASS)) ..)
34: (EXECUTE-CREATE-INSTANCE #<unavailable lambda list>)[:EXTERNAL]
35: ((SB-PCL::FAST-METHOD CALL-ACTION :AROUND (T T T T)) ..)
36: ((SB-PCL::FAST-METHOD CALL-ACTION :AROUND (T T T HU.DWIM.WUI::ACTION)) ..)
37: (FUNCALL-WITH-LAYER-CONTEXT ..)[:EXTERNAL]
38: ((SB-PCL::FAST-METHOD CALL-IN-COMPONENT-ENVIRONMENT
(TABLE-COMPONENT T)) ..)
39: (FUNCALL-WITH-LAYER-CONTEXT ..)[:EXTERNAL]
40: (FUNCALL-WITH-LAYER-CONTEXT ..)[:EXTERNAL]
41: (FUNCALL-WITH-LAYER-CONTEXT ..)[:EXTERNAL]
42: ((LABELS CL-PEREC::WITH-COMPILED-QUERY-CACHE-BODY))
43: (CL-PEREC::CALL-WITH-COMPILED-QUERY-CACHE #<CLOSURE (LABELS
CL-PEREC::WITH-COMPILED-QUERY-CACHE-BODY) {1070431D}> #<HASH-TABLE
:TEST EQUAL :COUNT 2 {D57C0F1}>)
44: ((LABELS CL-RDBMS::WITH-TRANSACTION*-BODY))
45: (DWIM-META-MODEL::CALL-WITH-RELOADED-AUTHENTICATED-SESSION
#<CLOSURE (FLET CALL-NEXT-METHOD) {10703E8D}>)
46: (CL-RDBMS::CALL-WITH-TRANSACTION* #<CLOSURE (LABELS
CL-RDBMS::WITH-TRANSACTION*-BODY) {10700375}>)[:EXTERNAL]
47: ((SB-PCL::FAST-METHOD
DWIM-PRESENTATION::CALL-IN-DWIM-PRESENTATION-ENVIRONMENT
(DWIM-WUI-APPLICATION T T T)) ..)
48: ((SB-PCL::FAST-METHOD
DWIM-PRESENTATION::CALL-IN-DWIM-PRESENTATION-ENVIRONMENT :AROUND (T T
T T)) ..)
49: (HU.DWIM.WUI::CALL-WITH-ACTION-LOGIC #<unavailable lambda list>)
50: ((SB-PCL::FAST-METHOD CALL-IN-APPLICATION-ENVIRONMENT
(DWIM-WUI-APPLICATION DWIM-PRESENTATION::DWIM-WUI-SESSION T)) ..)
51: ((SB-PCL::FAST-METHOD CALL-IN-APPLICATION-ENVIRONMENT :AROUND
(APPLICATION-WITH-DOJO-SUPPORT T T)) ..)
52: ((SB-PCL::FAST-METHOD CALL-IN-APPLICATION-ENVIRONMENT :AROUND
(APPLICATION-WITH-HOME-PACKAGE T T)) ..)
53: ((FLET #:WITHOUT-INTERRUPTS-BODY-[CALL-WITH-RECURSIVE-LOCK]291))
54: (SB-THREAD::CALL-WITH-RECURSIVE-LOCK ..)
55: (HU.DWIM.WUI::CALL-WITH-LOCK-HELD-ON-SESSION ..)
56: (HU.DWIM.WUI::CALL-WITH-SESSION-LOGIC #<unavailable lambda
list>)[:EXTERNAL]
57: (HU.DWIM.WUI::ITERATE-BROKERS-FOR-RESPONSE #<unavailable lambda list>)
58: (HU.DWIM.WUI::QUERY-ENTRY-POINTS-FOR-RESPONSE #<unavailable lambda list>)
59: ((SB-PCL::FAST-METHOD HANDLE-REQUEST (HU.DWIM.WUI:APPLICATION T))
#<unavailable argument> #<unavailable argument>
#<MY-DWIM-TEST-APPLICATION "/" 0 {B855415}> #<REQUEST {106F6AD1}>)
--more--
I corrected it with the next patch
hunk ./src/component/primitive-maker.lisp 52
(bind ((checked (when (and has-initform?
(eq initform #t))
"checked")))
- <input (:type "checkbox" :checked ,checked)>)
- <select ()
+ <input (:type "checkbox" :checked ,checked :name ,(id-of
client-state-sink))>)
+ <select (:name ,(id-of client-state-sink))[_^I_][_$_]
;; TODO: add error marker when no initform and default
value is selected
,(bind ((selected (unless (and has-initform?
constant-initform?)
I think that this is not the best option may make sense to rewrite the
boolean-maker is similar to boolean-inspector? I could do it.
3. The following error that I received while save:
The assertion (= 1 COUNT) failed.
[Condition of type SIMPLE-ERROR]
Restarts:
0: [CONTINUE] Continue processing the error (and probably send an error page)
1: [CONTINUE] Retry assertion.
2: [TERMINATE-TRANSACTION] return (values) from the WITH-TRANSACTION
block executing the current terminal action :MARKED-FOR-ROLLBACK-ONLY
3: [COMMIT-TRANSACTION] mark transaction for commit only and return
(values) from the WITH-TRANSACTION block
4: [ROLLBACK-TRANSACTION] mark transaction for rollback only and
return (values) from the WITH-TRANSACTION block
5: [RESTART-TRANSACTION] rollback the transaction by unwinding the
stack and restart the WITH-TRANSACTION block in a new database
transaction
--more--
Backtrace:
0: ((LAMBDA (SWANK-BACKEND::DEBUGGER-LOOP-FN)) #<FUNCTION (LAMBDA #)
{BAC5A05}>)
1: (SWANK::DEBUG-IN-EMACS #<SIMPLE-ERROR {C53DA31}>)
2: ((LAMBDA (SWANK-BACKEND::HOOK SWANK-BACKEND::FUN)) #<FUNCTION
SWANK:SWANK-DEBUGGER-HOOK> #<CLOSURE (LAMBDA #) {C549D9D}>)
3: (SWANK::CALL-WITH-BINDINGS ..)
4: (SWANK::CALL-WITH-CONNECTION #<SWANK::CONNECTION {CAAA341}>
#<CLOSURE (LAMBDA #) {C549D9D}>)
5: (SWANK:INVOKE-SLIME-DEBUGGER #<SIMPLE-ERROR {C53DA31}>)
6: ((LAMBDA (SWANK-BACKEND::HOOK SWANK-BACKEND::FUN)) #<FUNCTION
SWANK:SWANK-DEBUGGER-HOOK> #<CLOSURE (LAMBDA #) {C549D7D}>)
7: (SWANK:SWANK-DEBUGGER-HOOK #<SIMPLE-ERROR {C53DA31}>
#<unavailable argument>)
8: (HU.DWIM.WUI::INVOKE-SLIME-DEBUGGER #<SIMPLE-ERROR {C53DA31}>)[:EXTERNAL]
9: ((LAMBDA (SB-PCL::.PV. SB-PCL::.NEXT-METHOD-CALL. SB-PCL::.ARG0.
SB-PCL::.ARG1.)) #<unavailable argument> #<unavailable argument>
#<SIMPLE-ERROR {C53DA31}> #<MY-DWIM-TEST-APPLICATION "/" 0 {B713CFD}>)
10: ((SB-PCL::FAST-METHOD HANDLE-TOPLEVEL-CONDITION :AROUND (T T)) ..)
11: ((FLET HU.DWIM.WUI::HANDLE-REQUEST-ERROR) #<SIMPLE-ERROR {C53DA31}>)
12: ((LABELS HU.DWIM.WUI::LEVEL-1-ERROR-HANDLER) #<SIMPLE-ERROR {C53DA31}>)
13: (SIGNAL #<SIMPLE-ERROR {C53DA31}>)[:EXTERNAL]
14: (ERROR #<SIMPLE-ERROR {C53DA31}>)[:EXTERNAL]
15: (SB-KERNEL:ASSERT-ERROR (= 1 COUNT) NIL NIL)[:EXTERNAL]
16: ((SB-PCL::FAST-METHOD CL-PEREC::STORE-SLOT (PERSISTENT-CLASS
PERSISTENT-OBJECT PERSISTENT-EFFECTIVE-SLOT-DEFINITION T)) ..)
17: ((SB-PCL::FAST-METHOD (SETF SLOT-VALUE-USING-CLASS) (T
PERSISTENT-CLASS PERSISTENT-OBJECT
PERSISTENT-EFFECTIVE-SLOT-DEFINITION)) ..)
18: ((LAMBDA (SB-PCL::.PV. SB-PCL::.NEXT-METHOD-CALL. SB-PCL::.ARG0.
SB-PCL::.ARG1. SB-PCL::.ARG2. SB-PCL::.ARG3.)) ..)
19: (SB-PCL::SET-SLOT-VALUE #<USER :persistent #t 160>
DWIM-META-MODEL::CREATED-IN #<AUTHENTICATED-SESSION :persistent #t 158
of #<USER :persistent #t 101>>)
20: (TOUCH-INSTANCE #<USER :persistent #t 160> T)
21: ((LAMBDA (SB-PCL::.PV. SB-PCL::.NEXT-METHOD-CALL. SB-PCL::.ARG0.
SB-PCL::.ARG1.)) #<unavailable argument> #<unavailable argument>
#<ENTITY USER> #<USER :persistent #t 160>)
22: ((SB-PCL::FAST-METHOD INITIALIZE-INSTANCE :AROUND
(PERSISTENT-OBJECT)) ..)[:EXTERNAL]
23: ((SB-PCL::FAST-METHOD MAKE-INSTANCE (CLASS)) #<unavailable
argument> #<unavailable argument> #<ENTITY USER>)[:EXTERNAL]
24: ((LAMBDA (SB-PCL::.PV. SB-PCL::.NEXT-METHOD-CALL. SB-PCL::.ARG0.
SB-INT:&MORE SB-PCL::.DFUN-MORE-CONTEXT. SB-PCL::.DFUN-MORE-COUNT.))
..)
25: ((SB-PCL::FAST-METHOD MAKE-INSTANCE-USING-INITARGS
(STANDARD-OBJECT-MAKER PERSISTENT-CLASS PERSISTENT-OBJECT)) ..)
26: ((SB-PCL::FAST-METHOD
HU.DWIM.WUI::=LAYERED-FUNCTION-DEFINER-FOR-EXECUTE-CREATE-INSTANCE= (T
RECURSION-POINT-COMPONENT STANDARD-OBJECT-MAKER PERSISTENT-CLASS)) ..)
27: (HU.DWIM.WUI::CALL-WITH-INTERACTION #<CLOSURE (LABELS
HU.DWIM.WUI::WITH-INTERACTION-BODY) {B8018C5}>
#<STANDARD-OBJECT-MAKER>)
28: ((LABELS CL-RDBMS::WITH-TRANSACTION*-BODY))
29: (DWIM-META-MODEL::CALL-WITH-RELOADED-AUTHENTICATED-SESSION
#<CLOSURE (FLET CALL-NEXT-METHOD) {B8004F5}>)
30: (CL-RDBMS::CALL-WITH-TRANSACTION* #<CLOSURE (LABELS
CL-RDBMS::WITH-TRANSACTION*-BODY) {B7FB9D5}>)[:EXTERNAL]
31: ((SB-PCL::FAST-METHOD
HU.DWIM.WUI::=LAYERED-FUNCTION-DEFINER-FOR-EXECUTE-CREATE-INSTANCE=
:AROUND (T RECURSION-POINT-COMPONENT STANDARD-OBJECT-MAKER
PERSISTENT-CLASS)) ..)
32: (EXECUTE-CREATE-INSTANCE #<unavailable lambda list>)[:EXTERNAL]
33: ((SB-PCL::FAST-METHOD CALL-ACTION :AROUND (T T T T)) ..)
34: ((SB-PCL::FAST-METHOD CALL-ACTION :AROUND (T T T HU.DWIM.WUI::ACTION)) ..)
35: (FUNCALL-WITH-LAYER-CONTEXT ..)[:EXTERNAL]
36: (FUNCALL-WITH-LAYER-CONTEXT ..)[:EXTERNAL]
37: ((LABELS CL-PEREC::WITH-COMPILED-QUERY-CACHE-BODY))
38: (CL-PEREC::CALL-WITH-COMPILED-QUERY-CACHE #<CLOSURE (LABELS
CL-PEREC::WITH-COMPILED-QUERY-CACHE-BODY) {B7F79CD}> #<HASH-TABLE
:TEST EQUAL :COUNT 0 {C7F7AE9}>)
39: ((LABELS CL-RDBMS::WITH-TRANSACTION*-BODY))
40: (DWIM-META-MODEL::CALL-WITH-RELOADED-AUTHENTICATED-SESSION
#<CLOSURE (FLET CALL-NEXT-METHOD) {B7F4AD5}>)
41: (CL-RDBMS::CALL-WITH-TRANSACTION* #<CLOSURE (LABELS
CL-RDBMS::WITH-TRANSACTION*-BODY) {B7F0FBD}>)[:EXTERNAL]
42: ((SB-PCL::FAST-METHOD
DWIM-PRESENTATION::CALL-IN-DWIM-PRESENTATION-ENVIRONMENT
(DWIM-WUI-APPLICATION T T T)) ..)
43: ((SB-PCL::FAST-METHOD
DWIM-PRESENTATION::CALL-IN-DWIM-PRESENTATION-ENVIRONMENT :AROUND (T T
T T)) ..)
44: (HU.DWIM.WUI::CALL-WITH-ACTION-LOGIC #<unavailable lambda list>)
45: ((SB-PCL::FAST-METHOD CALL-IN-APPLICATION-ENVIRONMENT
(DWIM-WUI-APPLICATION DWIM-PRESENTATION::DWIM-WUI-SESSION T)) ..)
46: ((SB-PCL::FAST-METHOD CALL-IN-APPLICATION-ENVIRONMENT :AROUND
(APPLICATION-WITH-DOJO-SUPPORT T T)) ..)
47: ((SB-PCL::FAST-METHOD CALL-IN-APPLICATION-ENVIRONMENT :AROUND
(APPLICATION-WITH-HOME-PACKAGE T T)) ..)
48: ((FLET #:WITHOUT-INTERRUPTS-BODY-[CALL-WITH-RECURSIVE-LOCK]291))
49: (SB-THREAD::CALL-WITH-RECURSIVE-LOCK ..)
50: (HU.DWIM.WUI::CALL-WITH-LOCK-HELD-ON-SESSION ..)
51: (HU.DWIM.WUI::CALL-WITH-SESSION-LOGIC #<unavailable lambda
list>)[:EXTERNAL]
52: (HU.DWIM.WUI::ITERATE-BROKERS-FOR-RESPONSE #<unavailable lambda list>)
53: (HU.DWIM.WUI::QUERY-ENTRY-POINTS-FOR-RESPONSE #<unavailable lambda list>)
54: ((SB-PCL::FAST-METHOD HANDLE-REQUEST (HU.DWIM.WUI:APPLICATION T))
#<unavailable argument> #<unavailable argument>
#<MY-DWIM-TEST-APPLICATION "/" 0 {B713CFD}> #<REQUEST {B6B3AD1}>)
55: ((SB-PCL::FAST-METHOD HANDLE-REQUEST (DWIM-WUI-APPLICATION T)) ..)
56: (HU.DWIM.WUI::APPLICATION-HANDLER #<unavailable lambda list>)
as I understand it is linked with the following code
(def method initialize-instance :around ((instance persistent-object)
&rest args &key persistent)
(bind ((class (class-of instance)))
(when persistent
(ensure-exported class))
(prog1 (apply #'call-next-method instance :persistent #f args)
(when (eq persistent #t)
(make-persistent instance)))))
which call
(def method make-persistent-using-class :after (class (instance audited-object))
(when (and *audit-changes*
(created-p instance))
(touch-instance instance #t)))
before insertion of the object in table and thereby causes error. How
can I correct this behavior?
More information about the cl-dwim-devel
mailing list