On 26 December 2017 at 14:54, Pablo J. Villacorta <olbapj...@gmail.com>
wrote:

> Thank you so much guys.
>
> Yes, it is an error launched by the library, but with a statement that
> should be valid since I copied it from the github page of the project. It
> seems that the "@cec1ce2" means something but I don't know...
> it is exactly this input statement: https://github.com/
> yetanalytics/xapi-schema/blob/master/README.org#validate-a-
> statement-from-a-json-string-clojurescript
>

The code you showed in your email explicitly calls

myfunction.invoke("some string");

which is the equivalent of the Clojure code

(xs/validate-statement-data "some string")

which is documented to throw an Exception by the README, in the Usage
section:

(let [bad-statement (dissoc statement "actor")]
  (xs/validate-statement-data bad-statement)) ;; => throws Exception or
js/Error

If you look at the code for xs/validate-satement-data, you can see that it
pretty much reduces to calling xs/validate-statement, which itself looks
like:

(defn validate-statement [s]
  (if-let [error (statement-checker s)]
    (throw #?(:clj (Exception. (str error))
              :cljs (js/Error. (str error))))
    s))

See
https://github.com/yetanalytics/xapi-schema/blob/master/src/xapi_schema/core.cljc#L24-L29
for more context.

So what I think has happened is that you have given an invalid string to
the function ("some string"), so it is throwing a java.lang.Exception with,
as its message, the result of calling clojure.lang/str on the error
returned by the schema library. That error is a Java object of a class that
clojure.lang/str doesn't know about, so it falls back to calling the Java
method toString. As the schema.utils.NamedError class does not implement
(override) toString, this falls back to java.lang.Object#toString(), which
prints the name of the class followed by some random-looking hex value that
is supposed to be somehow linked to the place of the object in memory
(except that number doesn't change when the GC moves the object, so it's
more some sort of identity than an address).

If you also get a stack trace when you do pass expectedly valid data to the
function, can you prepare a minimal Github project with the code that
fails? I can't see anything wrong in your descriptions so far so I'd need
to look at the exact code you're trying to run to help you further.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
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 clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to