diff --git a/config.lisp b/config.lisp index 24442c4..97ccfef 100644 --- a/config.lisp +++ b/config.lisp @@ -60,22 +60,19 @@ (defclass base (common) ((env-slots :reader env-slots :initform nil :allocation :class) (name :reader name :initarg :name) - (parent :reader parent :initarg :parent) + (parent :accessor parent :initarg :parent) (setup :reader setup :initarg :setup :initform #'(lambda (cfg))) (shutdown :reader shutdown :initarg :shutdown :initform #'(lambda (ctx))) (actions :accessor actions :initarg :actions :initform nil))) (defmethod initialize-instance :after ((cfg base) &key parent &allow-other-keys) - (when parent - (push cfg (children parent)) - (env-override cfg))) - -(defmethod (setf parent) ((cfg base) (parent common)) - (push cfg (children parent)) + (if parent + (push cfg (children parent))) (env-override cfg)) -(defmethod env-data ((cfg base)) - (env-data (parent cfg))) +(defmethod (setf parent) ((cfg base) (parent common)) + (setf (parent cfg) parent) + (push cfg (children parent))) (defun add (name &rest params &key (class 'base) (parent *root*) @@ -101,4 +98,4 @@ (setf (slot-value obj sl) val)))))) (defun env-override (cfg) - (hash-to-slots (env-data cfg) cfg (env-slots cfg))) + (hash-to-slots (env-data *root*) cfg (env-slots cfg))) diff --git a/test/test-web.lisp b/test/test-web.lisp index 7e948d8..ce21fb7 100644 --- a/test/test-web.lisp +++ b/test/test-web.lisp @@ -18,7 +18,7 @@ (load (t:test-path "config-web" "etc")) (unwind-protect (progn - (core:setup-services config:*root*) + (core:setup-services) (let ((server (core:find-service :server)) (client (core:find-service :client))) (test-server-config server)