繁体   English   中英

可以从Rhino中的JavaScript访问Java构建器模式

[英]Java builder pattern accessible from JavaScript in Rhino

我想在Rhino中实现类似以下内容(在JavaScript中)。

myService.http('http://localhost:9000')
         .path('foo/bar')
         .get();

然后让最后的get()返回实际的响应。 它模仿泽西岛的Java Web请求构建器。

我到目前为止的Java代码是:

class MyHttpRequestBuilder {
    private final String baseUrl;
    private final StringBuilder path = new StringBuilder();
    private final Map<String, String> queryParams = new HashMap<>();
    private final Map<String, String> headers = new HashMap<>();

    public MyHttpRequestBuilder(String baseUrl) {
        this.baseUrl = baseUrl;
    }

    public MyHttpRequestBuilder path(String path) {
        this.path.append(path);
        return this;
    }

    public MyHttpRequestBuilder header(String headerKey, String headerValue) {
        headers.put(headerKey, headerValue);
        return this;
    }

    public MyHttpRequestBuilder queryParam(String queryKey, String queryValue) {
        queryParams.put(queryKey, queryValue);
        return this;
    }

    public String get() {
        return "Testing - Accessed " + baseUrl + " with path " + path;
    }
}

我在服务类中注册了这个,如下所示:

public class MyService {
    public MyHttpRequestBuilder http(String baseUrl) {
        return new MyHttpRequestBuilder(baseUrl);
    }
}

然后我按照各种示例将它添加到Rhino上下文中的Scriptable容器中。

如果我直接调用函数只返回一个String或另一个对象,它工作正常

不幸的是,建造者的方法是“返回这个;” (这将允许JS方面更流畅的代码)不想玩球。 这对犀牛来说甚至可能吗?

我使用的是Java 8和Rhino 1.7.7.1。

您的构建器类型对脚本引擎不可见。 公开宣传:

public class MyHttpRequestBuilder {

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM