[英]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.