Java 构建器模式可从 JavaRhino 中的脚本访问
Java builder pattern accessible from JavaScript in Rhino
我想在 Rhino 中实现如下(在 JavaScript 中)。
myService.http('http://localhost:9000')
.path('foo/bar')
.get();
然后得到最终的 get() return 实际响应。它仿照 Java.
中 Jersey 的 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;
}
}
我已经在服务 class 中注册了它,如下所示:
public class MyService {
public MyHttpRequestBuilder http(String baseUrl) {
return new MyHttpRequestBuilder(baseUrl);
}
}
然后我将根据各种示例将其添加到 Rhino 上下文中的脚本化容器中。
它工作 很好 如果我只是直接调用函数 return 一个字符串或另一个对象。
不幸的是,"return this;" 的构建器方法(这将允许在 JS 端使用更流畅的代码)不想玩球。这甚至可以用 Rhino 实现吗?
我正在使用 Java 8 和 Rhino 1.7.7.1。
您的构建器类型对脚本引擎不可见。做到 public:
public class MyHttpRequestBuilder {
我想在 Rhino 中实现如下(在 JavaScript 中)。
myService.http('http://localhost:9000')
.path('foo/bar')
.get();
然后得到最终的 get() return 实际响应。它仿照 Java.
中 Jersey 的 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;
}
}
我已经在服务 class 中注册了它,如下所示:
public class MyService {
public MyHttpRequestBuilder http(String baseUrl) {
return new MyHttpRequestBuilder(baseUrl);
}
}
然后我将根据各种示例将其添加到 Rhino 上下文中的脚本化容器中。
它工作 很好 如果我只是直接调用函数 return 一个字符串或另一个对象。
不幸的是,"return this;" 的构建器方法(这将允许在 JS 端使用更流畅的代码)不想玩球。这甚至可以用 Rhino 实现吗?
我正在使用 Java 8 和 Rhino 1.7.7.1。
您的构建器类型对脚本引擎不可见。做到 public:
public class MyHttpRequestBuilder {