]> asedeno.scripts.mit.edu Git - cl-protobufs.git/commitdiff
Fix problems found while debugging 'read-air-reservation' query
authorScott McKay <swm@google.com>
Fri, 30 Mar 2012 20:17:41 +0000 (20:17 +0000)
committerScott McKay <swm@google.com>
Fri, 30 Mar 2012 20:17:41 +0000 (20:17 +0000)
git-svn-id: http://svn.internal.itasoftware.com/svn/ita/branches/qres/swm/borgify-1/qres/lisp/quux/protobufs@536909 f8382938-511b-0410-9cdd-bb47b084005c

define-proto.lisp
model-classes.lisp

index 67f8917c7f38695e8f8afb109a5a4af0ce4a8807..0859dd0dee2ee2fa167de8708be6736dc5f4be8b 100644 (file)
     (if class
       ;; If we've got a class override, define a type matching the Lisp name
       ;; of this message so that typep and subtypep work
-      (unless (eq name class)
+      (unless (or (eq name class) (find-class name nil))
         (collect-form `(deftype ,name () ',class)))
       ;; If no class override, define the class now
       (collect-form `(defclass ,name () (,@slots))))
index 70037bf082ad1c975e410d09972eb16df3f83910..9cf0fae83a25d590766d1afea62483ca7958e12b 100644 (file)
 
 (defmethod find-message-for-class ((protobuf protobuf) (class symbol))
   (or (find class (proto-messages protobuf) :key #'proto-class)
+      (find class (proto-messages protobuf) :key #'proto-class-override)
       (some #'(lambda (msg) (find-message-for-class msg class)) (proto-messages protobuf))))
 
 (defmethod find-message-for-class ((protobuf protobuf) (class class))
 
 (defmethod find-enum-for-type ((protobuf protobuf) type)
   (or (find type (proto-enums protobuf) :key #'proto-class)
+      (find type (proto-enums protobuf) :key #'proto-class-override)
       (some #'(lambda (msg) (find-enum-for-type msg type)) (proto-messages protobuf))))
 
 (defmethod find-enum-for-type ((protobuf protobuf) (type string))
 (defmethod print-object ((e protobuf-enum) stream)
   (print-unprintable-object (e stream :type t :identity t)
     (format stream "~A~@[ (~S)~]"
-            (proto-name e) (proto-class e))))
+            (proto-name e) (or (proto-class-override e) (proto-class e))))
 
 
 ;; A protobuf value within an enumeration
 (defmethod print-object ((m protobuf-message) stream)
   (print-unprintable-object (m stream :type t :identity t)
     (format stream "~A~@[ (~S)~]"
-            (proto-name m) (proto-class m))))
+            (proto-name m) (or (proto-class-override e) (proto-class e)))))
 
 (defmethod find-message-for-class ((message protobuf-message) (class symbol))
-  (find class (proto-messages message) :key #'proto-class))
+  (or (find class (proto-messages message) :key #'proto-class)
+      (find class (proto-messages message) :key #'proto-class-override)))
 
 (defmethod find-message-for-class ((message protobuf-message) (class class))
   (find-message-for-class message (class-name class)))
   (find class (proto-messages message) :key #'proto-name :test #'string=))
 
 (defmethod find-enum-for-type ((message protobuf-message) type)
-  (find type (proto-enums message) :key #'proto-class))
+  (or (find type (proto-enums message) :key #'proto-class)
+      (find type (proto-enums message) :key #'proto-class-override)))
 
 (defmethod find-enum-for-type ((message protobuf-message) (type string))
   (find type (proto-enums message) :key #'proto-name :test #'string=))
 
 
 ;; A protobuf field within a message
+;;--- Support the 'deprecated' option (should serialization ignore such fields?)
 (defclass protobuf-field (base-protobuf)
   ((type :type string                           ;the name of the Protobuf type for the field
          :accessor proto-type