pmlopes / yoke

Yoke is a middleware framework for Vert.x
http://pmlopes.github.io/yoke/
Apache License 2.0
157 stars 44 forks source link

Jade4JEngine broken #77

Closed chbloemer closed 10 years ago

chbloemer commented 10 years ago

Hi, the last Version I get to work is 1.0.3. But only when I run it from Maven. Using the "Starter" with IntelliJ produces this Exception:

Yoke
500 java.lang.UnsupportedOperationException:

    java.util.AbstractCollection.add(AbstractCollection.java:262)
    java.util.AbstractCollection.addAll(AbstractCollection.java:344)
    com.jetdrone.vertx.yoke.core.Context.entrySet(Context.java:131)
    java.util.HashMap.putMapEntries(HashMap.java:511)
    java.util.HashMap.putAll(HashMap.java:784)
    de.neuland.jade4j.model.JadeModel.putAll(JadeModel.java:128)
    de.neuland.jade4j.JadeConfiguration.renderTemplate(JadeConfiguration.java:70)
    de.neuland.jade4j.JadeConfiguration.renderTemplate(JadeConfiguration.java:76)
    com.jetdrone.vertx.yoke.extras.engine.Jade4JEngine$1.handle(Jade4JEngine.java:58)
    com.jetdrone.vertx.yoke.extras.engine.Jade4JEngine$1.handle(Jade4JEngine.java:45)
    com.jetdrone.vertx.yoke.engine.AbstractEngine$3$1.handle(AbstractEngine.java:150)
    com.jetdrone.vertx.yoke.engine.AbstractEngine$3$1.handle(AbstractEngine.java:142)
    com.jetdrone.vertx.yoke.engine.AbstractEngine$2$1.handle(AbstractEngine.java:114)
    com.jetdrone.vertx.yoke.engine.AbstractEngine$2$1.handle(AbstractEngine.java:105)
    org.vertx.java.core.impl.DefaultFutureResult.checkCallHandler(DefaultFutureResult.java:122)
    org.vertx.java.core.impl.DefaultFutureResult.setHandler(DefaultFutureResult.java:96)
    org.vertx.java.core.impl.BlockingAction$1$1.run(BlockingAction.java:58)
    org.vertx.java.core.impl.DefaultContext$3.run(DefaultContext.java:176)
    io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:354)
    io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:353)
    io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:101)
    java.lang.Thread.run(Thread.java:744)

After upgrade to 1.0.7-SNAPSHOT I get the same Exception also in Maven. StringPlaceholderEngine ist working with my setup.

My router config:

Router router = new Router();
        Middleware pageName = new Middleware() {
            @Override
            public void handle(final YokeRequest request, final Handler<Object> next) {
                request.put("pageName", "Vert.X Test");
                request.response().render("webroot/index.jade", next);
            }
        };
        router.get("/", pageName);

My jade template:

!!! 5
html
  head
    title= pageName
    script(type="text/javascript", src="static/sockjs-min-0.3.4.js")
    script(type="text/javascript", src="static/vertxbus.js")
    script(type="text/javascript", src="static/main.js")

    link(type="text/css", href="static/main.css", rel="stylesheet")
  body
    h1= pageName

Vert.X version: 2.1RC1

pmlopes commented 10 years ago

Added your test case and it is fixed now!