RESTful

途中だがRESTFul への道。たぶん、1) Hunchentoot の request-dispatcher を置き換える( 'rest-request-dispatcher を作る), 2) リソースと CLOS の対応付けを行う、といい気がする。
リソースクラスは、URL と関連づけられる機能を持たなくちゃいけない。ShibuyaLisp の「CLOS/MOP入門とOWL Full処理系開発事例紹介」を参考にして、metaclass を定義してみる
(http://tips.lisp-users.org/talk/06/ShibuyaLisp6-2.pdf)。

(defclass instance-booking-class (standard-class)
  ((direct-instances :initform nil
                     :accessor class-direct-instances))
  (:documentation "Metaclass for class that holds direct instance list."))

(defmethod make-instance ((class instance-booking-class) &rest initargs)
  (let ((instance (call-next-method)))
    (push instance (class-direct-instances class))
    instance))

(defmethod validate-superclass ((class instance-booking-class)
                                (super standard-class))
  t)