metosin / compojure-api

Sweet web apis with Compojure & Swagger
http://metosin.github.io/compojure-api/doc/
Eclipse Public License 1.0
1.11k stars 149 forks source link

Not able to make simple example work with tools.deps #393

Closed cjohansen closed 5 years ago

cjohansen commented 5 years ago

Library Version(s)

2.0.0-alpha26

Problem

I copied the simple example and converted it from leiningen to tools.deps, and I am unable to make the resulting project work. Requesting swagger.json results in a stack trace from linked:

2018-10-01 17:57:38.217:WARN:oejs.HttpChannel:qtp1836226750-14: /swagger.json
java.lang.AbstractMethodError: Method linked/map/LinkedMap.isEmpty()Z is abstract
    at linked.map.LinkedMap.isEmpty(map.cljc)
    at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:627)
    at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:33)
    at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeFields(MapSerializer.java:718)
    at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:639)
    at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:33)
    at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480)
    at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319)
    at com.fasterxml.jackson.databind.ObjectMapper._configAndWriteValue(ObjectMapper.java:3905)
    at com.fasterxml.jackson.databind.ObjectMapper.writeValueAsBytes(ObjectMapper.java:3243)
    at jsonista.core$write_value_as_bytes.invokeStatic(core.clj:229)
    at jsonista.core$write_value_as_bytes.invoke(core.clj:221)
    at muuntaja.format.json$encoder$reify__7025.encode_to_bytes(json.clj:43)
    at muuntaja.core$create_coder$encode__7558.invoke(core.clj:340)
    at clojure.core$update.invokeStatic(core.clj:6143)
    at clojure.core$update.invoke(core.clj:6133)
    at muuntaja.core$create$_handle_response__7625.invoke(core.clj:439)
    at muuntaja.core$create$reify__7627.format_response(core.clj:482)
    at muuntaja.middleware$wrap_format_response$fn__7688.invoke(middleware.clj:132)
    at muuntaja.middleware$wrap_format_negotiate$fn__7681.invoke(middleware.clj:96)
    at ring.middleware.keyword_params$wrap_keyword_params$fn__6342.invoke(keyword_params.clj:53)
    at ring.middleware.nested_params$wrap_nested_params$fn__6400.invoke(nested_params.clj:89)
    at ring.middleware.params$wrap_params$fn__6474.invoke(params.clj:67)
    at compojure.api.middleware$wrap_inject_data$fn__8674.invoke(middleware.clj:96)
    at compojure.api.routes.Route.invoke(routes.clj:90)
    at ring.adapter.jetty$proxy_handler$fn__13296.invoke(jetty.clj:26)
    at ring.adapter.jetty.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
    at org.eclipse.jetty.server.Server.handle(Server.java:499)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:258)
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
    at java.lang.Thread.run(Thread.java:748)

I pushed a minimal repo that reproduces the error: https://github.com/cjohansen/compojure-api-tools-deps, and included some more details about my findings so far in the Readme.

ikitommi commented 5 years ago

Hi, this is most likely due to https://github.com/frankiesardo/linked/pull/9. Latest Compojure-api alpha uses a private fork of linked (https://clojars.org/ikitommi/linked), which is overridden with deps. Options:

0) add an explicit dependency to [ikitommi/linked "1.3.1-alpha1"], should fix this (but is bad!) 1) get the fixed version of Linked pushed to clojars (poke mr. frankiesardo) -> right way to do it 2) make a more permanent fork with DIFFERENT ns so that they don't clash -> would not like to do this

cjohansen commented 5 years ago

Yep, that (along with excluding the existing linked dependency) solved it, thanks.