小编Kaz*_*era的帖子

在selectDynamic的宏实现中调用实例方法

我想Sample#cap(String)在selectDynamic的以下宏实现中使用.

可能吗?

// macro implementation
import scala.language.experimental.macros
import scala.reflect.macros._

object MyMacros {
  def selectDynamic(c: Context)(name: c.Expr[String]): c.Expr[String] = {
    // I expected `This` to refer a Sample instance, but actually it refers SampleSpec instance...
    c.Expr[String](Apply(TypeApply(Select(This(tpnme.EMPTY), newTermName("cap")), List(Ident(typeTag[String].tpe.typeSymbol))), List(name.tree)))
  }
}

// class which uses selectDynamic and macro
import scala.language.dynamics
class Sample extends Dynamic {
  def cap(name: String): String = name.toUpperCase
  def selectDynamic(name: String): String = macro MyMacros.selectDynamic
}

class SampleSpec extends FlatSpec with ShouldMatchers {
  it should "call …
Run Code Online (Sandbox Code Playgroud)

scala scala-macros

3
推荐指数
1
解决办法
724
查看次数

为什么Jetty 9.x中的ServletTester如此之慢?

Jetty的ServletTester对于测试Servlet应用程序非常有用.我之前使用过Jetty 6的ServletTester,它运行得很好.

例如:

Jetty 6.x

的pom.xml

<dependency>
  <groupId>org.mortbay.jetty</groupId>
  <artifactId>jetty-servlet-tester</artifactId>
  <version>6.1.26</version>
  <scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

SampleServletTest.java

package example;
import org.junit.Test;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import org.mortbay.jetty.testing.HttpTester;
import org.mortbay.jetty.testing.ServletTester;

public class SampleServletTest {

    @Test
    public void testDoGet() throws Exception {
        ServletTester tester = new ServletTester();
        tester.addServlet(SampleServlet.class, "/index");
        tester.start();

        HttpTester request = new HttpTester();
        request.setMethod("GET");
        request.setHeader("Host", "tester"); // should be "tester"
        request.setURI("/index");
        request.setVersion("HTTP/1.1");
        request.setContent("");

        String responses = tester.getResponses(request.generate());
        HttpTester response = new HttpTester();
        response.parse(responses);

        assertThat(response.getStatus(), is(equalTo(200)));
    }
}
Run Code Online (Sandbox Code Playgroud)

Jetty 9.x

ServletTester的API在Jetty 9.x中得到了很大改进.

的pom.xml …

java jetty embedded-jetty jetty-9

3
推荐指数
1
解决办法
1702
查看次数

标签 统计

embedded-jetty ×1

java ×1

jetty ×1

jetty-9 ×1

scala ×1

scala-macros ×1