Author: lgiessmann
Date: Mon Sep 5 08:57:30 2011
New Revision: 832
Log:
gdl-frontend: added additional functionality to the rest-interface that serves the gdl-frontend; fixed a bug with the fragment cache
Modified:
branches/gdl-frontend/src/isidorus.asd
branches/gdl-frontend/src/rest_interface/rest-interface.lisp
branches/gdl-frontend/src/rest_interface/set-up-gdl-interface.lisp
branches/gdl-frontend/src/rest_interface/set-up-json-interface.lisp
Modified: branches/gdl-frontend/src/isidorus.asd
==============================================================================
--- branches/gdl-frontend/src/isidorus.asd Mon Sep 5 08:16:36 2011 (r831)
+++ branches/gdl-frontend/src/isidorus.asd Mon Sep 5 08:57:30 2011 (r832)
@@ -112,7 +112,8 @@
(:file "set-up-json-interface"
:depends-on ("rest-interface"))
(:file "set-up-gdl-interface"
- :depends-on ("rest-interface"))
+ :depends-on ("rest-interface"
+ "set-up-json-interface"))
(:file "read"
:depends-on ("rest-interface")))
:depends-on ("model" "atom" "xml" "TM-SPARQL"
Modified: branches/gdl-frontend/src/rest_interface/rest-interface.lisp
==============================================================================
--- branches/gdl-frontend/src/rest_interface/rest-interface.lisp Mon Sep 5 08:16:36 2011 (r831)
+++ branches/gdl-frontend/src/rest_interface/rest-interface.lisp Mon Sep 5 08:57:30 2011 (r832)
@@ -30,8 +30,11 @@
:read-fragment-feed
:start-json-engine
:start-atom-engine
+ :start-gdl-engine
:shutdown-json-engine
:shutdown-atom-engine
+ :set-up-json-interface
+ :set-up-gdl-interface
:*json-get-prefix*
:*get-rdf-prefix*
:*json-commit-url*
Modified: branches/gdl-frontend/src/rest_interface/set-up-gdl-interface.lisp
==============================================================================
--- branches/gdl-frontend/src/rest_interface/set-up-gdl-interface.lisp Mon Sep 5 08:16:36 2011 (r831)
+++ branches/gdl-frontend/src/rest_interface/set-up-gdl-interface.lisp Mon Sep 5 08:57:30 2011 (r832)
@@ -24,6 +24,11 @@
(host-address *host-address*))
(declare (String get-fragment get-schema commit-fragment
delete-fragment host-address))
+
+ (init-cache nil)
+ (format t "~%")
+ (init-fragments nil)
+
;; registers the http-code 500 for an internal server error to the standard
;; return codes. so there won't be attached a hunchentoot default message,
;; this is necessary to be able to send error messages in an individual way/syntax
Modified: branches/gdl-frontend/src/rest_interface/set-up-json-interface.lisp
==============================================================================
--- branches/gdl-frontend/src/rest_interface/set-up-json-interface.lisp Mon Sep 5 08:16:36 2011 (r831)
+++ branches/gdl-frontend/src/rest_interface/set-up-json-interface.lisp Mon Sep 5 08:57:30 2011 (r832)
@@ -15,6 +15,12 @@
(defparameter *instance-table* nil "Cointains integer==OIDs that represent a topic
instance of a valid instance-topic")
+(defparameter *cache-initialised* nil "determines wheter the cache has been
+ already set or not")
+
+(defparameter *fragments-initialised* nil "determines wheter the fragments has
+ been already initialised or not.")
+
;the prefix to get a fragment by the psi -> localhost:8000/json/get/<fragment-psi>
(defparameter *json-get-prefix* "/json/get/(.+)$")
;the prefix to get a fragment by the psi -> localhost:8000/json/rdf/get/<fragment-psi>
@@ -88,9 +94,9 @@
and also registers a file-hanlder to the html-user-interface"
;initializes cache and fragments
- (init-cache)
+ (init-cache nil)
(format t "~%")
- (init-fragments)
+ (init-fragments nil)
;; registers the http-code 500 for an internal server error to the standard
;; return codes. so there won't be attached a hunchentoot default message,
@@ -543,19 +549,22 @@
files-and-urls)))
-(defun init-cache()
+(defun init-cache(force-init)
"Initializes the type and instance cache-tables with all valid types/instances"
- (with-writer-lock
- (setf *type-table* nil)
- (setf *instance-table* nil)
- (let ((topictype (get-item-by-psi json-tmcl-constants::*topictype-psi*
- :revision 0))
- (topictype-constraint (json-tmcl::is-type-constrained :revision 0)))
- (format t "~%initializing cache: ")
- (map 'list #'(lambda(top)
- (format t ".")
- (push-to-cache top topictype topictype-constraint))
- (elephant:get-instances-by-class 'TopicC)))))
+ (declare (Boolean force-init))
+ (when (or force-init (not *cache-initialised*))
+ (with-writer-lock
+ (setf *type-table* nil)
+ (setf *instance-table* nil)
+ (let ((topictype (get-item-by-psi json-tmcl-constants::*topictype-psi*
+ :revision 0))
+ (topictype-constraint (json-tmcl::is-type-constrained :revision 0)))
+ (format t "~%initializing cache: ")
+ (map 'list #'(lambda(top)
+ (format t ".")
+ (push-to-cache top topictype topictype-constraint))
+ (elephant:get-instances-by-class 'TopicC))))
+ (setf *cache-initialised* t)))
(defun push-to-cache (topic-instance &optional
@@ -577,12 +586,15 @@
(condition () nil)))
-(defun init-fragments ()
+(defun init-fragments (force-init)
"Creates fragments of all topics that have a PSI."
- (format t "creating fragments: ")
- (map 'list #'(lambda(top)
- (let ((psis-of-top (psis top)))
- (when psis-of-top
- (format t ".")
- (create-latest-fragment-of-topic (uri (first psis-of-top))))))
- (elephant:get-instances-by-class 'd:TopicC)))
\ No newline at end of file
+ (declare (Boolean force-init))
+ (when (or force-init (not *fragments-initialised*))
+ (format t "creating fragments: ")
+ (map 'list #'(lambda(top)
+ (let ((psis-of-top (psis top)))
+ (when psis-of-top
+ (format t ".")
+ (create-latest-fragment-of-topic (uri (first psis-of-top))))))
+ (elephant:get-instances-by-class 'd:TopicC))
+ (setf *fragments-initialised* t)))
\ No newline at end of file