我正在Weld CDI和Undertow之上构建一个简单的API框架,以熟悉CDI可移植扩展编程模型。它是JAX-RS的一个严格子集:
@Default
@Path("/dogs")
public class Dogs {
@Inject
private MyService service;
@GET
public Response get(@HeaderParam("DogDebug") String debugParam, @Inject DebugService debugger) { return BLAH; }
@Path("/{id}")
@GET
public Response getById(@PathParam("id") String param) { return BLAH; }
}
我的CDI可移植扩展收集所有带有路径注释的带注释的数据类型。当CDI完成引导时,一个下拖Web服务器将启动,所有收集的类型(及其路径)都将注册到下拖RoutingHandler。
扩展负责为每个用@GET/@POST等注释的方法构建HttpHandler。。。
public HttpHandler getHandler(AnnotatedMethod<?> producer) {
Object contextualHandler = manager.createInstance()
.select(producer.getDeclaringType().getJavaClass()).get();
Preconditions.checkNotNull(contextualHandler, "Could not obtain a contextual reference to a handler for this");
Object result = producer.getJavaMember().invoke(contextualHandler);
Response response;
if(!(result instanceof Response)) {
response = Response.ok(result).build();
} else {
response = (Response) result;
}
response.write(exchange);
}
如您所见,现在处理程序正在使用普通的olJava反射来调用资源方法。
我想让方法参数注入工作,如上面的示例所示。当实际运行处理程序时,我可以使用BeanManager和元数据来获取正确的参数,但是...
如何验证注入点?i、 e.使用从ProcessAnnotatedType事件中获得的AnnotatedType,如何验证任意方法,就好像它是生产者、构造函数或事件观察者一样?
更新:到目前为止,我对Deltaspike中的InjectableMethod类已经有了很大的了解。它检查方法并创建可传递给BeanManager的注入点。验证然而,它在世界上公开的谷歌代码中没有太多的用途。
如果我理解正确,那么BeanManager#createInjessPoint(注释参数)就是您在创建和验证注入点方面所要寻找的。不需要DeltaSpike或其他实现细节,它已经是规范的一部分。
测试类:
我正在测试一个带有预期异常的方法。我还需要验证在抛出异常后是否调用了一些代码(在模拟对象上),但忽略了验证。这是代码: 这是测试代码:
我更新一些值作为一个javascript内我的在像下面这样。 这是更新之前的对象 这就是我要更新它的方式, 因此,这给了我一个错误,state.lastValue.push不是一个函数。但如果我像下面这样做就好了, 这很好。什么原因。
问题内容: 我需要验证列表是否是另一个列表的子集-我想要的只是布尔返回值。 在相交后在较小列表上测试相等性是最快的方法吗?考虑到需要比较的数据集数量,性能至关重要。 根据讨论添加更多事实: 在许多测试中,两个列表中的两个列表是否相同?它作为静态查找表之一来执行。 需要列表吗?事实并非如此-静态查找表可以是执行效果最好的任何内容。动态命令是一种dict,我们从中提取密钥以执行静态查找。 在这种情况下
在尝试使用JSR-303(hibernate Validator)验证模型时,我在将
未能定位或生成匹配的签名资产:xcode试图定位或生成匹配的签名资产,但由于以下问题而失败。a !您的帐户已经有一个有效的ios分发证书没有安装您在成员中心有一个有效的ios分发证书,但它是本地开发人员。如果您的签名标识安装在另一个Mac上,则可以导出证书。配置文件并导入到此Mac上。您还可以重置当前的重置或导入开发人员