I've been working on a Ring app that involves storing sessions as cookies,
and within the session there are a couple Java objects that implement
java.io.Serializable. I was somewhat surprised to find that the print-dup
multimethod didn't have native support for Java Serializables, though I can
understand why (they aren't really meant for long-term storage because
version changes are troublesome). It wasn't too much trouble to come up
with a basic implementation that could cover all of java.io.Serializable:
https://bitbucket.org/snippets/morgon/jkjyA
The trouble I'm having comes with reading it back in, though. In the above
snippet, we output as a function call and depend on the behavior of
clojure.core/read{,-string} to evaluate the function where the magic
happens. This obviously doesn't work with the safer and recommended
clojure.edn/read{,-string}. According to the EDN specification I should be
able to set a dispatch tag like, say, "#java <base64>" and attach a
deserialization function to :readers for the tag. This isn't transparent
though: I can't just include the library and have it work with Ring's
already-existing (de)serialization, nor anywhere else that doesn't
explicitly pass my special function to clojure.edn/read{,-string}.
Is there anything I can do without filing a ticket and hoping something
comes to be a part of the core library? To the best of my knowledge there's
no binding I can alter for the :readers or :default options for
clojure.edn/read{,-string}; that needs to be passed directly into the
function at the call site. I could maybe alter the clojure.edn/read and
clojure.edn/read-string vars themselves to wrap them so I can pass in a
:readers option with my tag, though that seems kind of nasty and I'm not
sure it will work in 100% of cases. What is there that can be done for this
problem?
Thanks,
-- Morgon
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.