gpt4 book ai didi

java - 如何从 atg 中的 ordertools 组件检索订单或如何测试 orderlookup Droplet api

转载 作者:行者123 更新时间:2023-11-30 03:58:46 24 4
gpt4 key购买 nike

我试图通过传递一些参数来订购 Droplet API。我假设强制参数是我已经传递的 userId 和organizationIds,此外我还传递了“state”参数。所有这些参数都通过请求传递,然后调用了 Droplet 的服务方法。但是该服务方法没有返回任何内容。我的目标是检查这个 Droplet 是否检索了预期的订单集。我们可以使用 Droplet 调用程序,但我尝试了这种方式,但它不起作用,可能是我错过了一些东西。请帮帮我!这是我尝试使用 OrderLookUp API 时的代码

DynamoHttpServletRequest request = ServletUtil.getCurrentRequest();

mTestService.setCurrentRequest(request);
if (request == null) {
mTestService.vlogError("Request is null.");
Assert.fail("Request is null ");
}
else
{
Object droplet = mTestService
.getRequestScopedComponent("OrderLookupDroplet");

OrderLookupDroplet=(OrderLookup) droplet;
request.setParameter("state", "submitted");
request.setParameter("organisationIds", organizationIds);
request.setParameter("userId", userId);
ByteBuffer buffer = ByteBuffer.allocate(1024);
DynamoHttpServletRequest dynRequest = (DynamoHttpServletRequest) request;
TestingDynamoHttpServletRequest wrappedRequest = new TestingDynamoHttpServletRequest(
dynRequest, buffer);
TestingDynamoHttpServletResponse wrappedResponce = new TestingDynamoHttpServletResponse(
dynRequest.getResponse());
OrderLookupDroplet.service(wrappedRequest, wrappedResponce);
}

上面的示例只是代码的一部分..

这是我尝试使用 Droplet 调用程序时的代码

DropletInvoker invoker = new DropletInvoker(mNucleus);
invoker.getRequest().setParameter("state", "submitted");
// String [] siteIds = {"siteA", "siteB"};
// invoker.getRequest().setParameter("siteIds", Arrays.asList(siteIds));
String [] organizationIds = {"OrgA", "OrgB"};
invoker.getRequest().setParameter("organizationIds", organizationIds);
String [] orderIds = {"orderautouser001OrgA" , "orderautouser001OrgB"};
invokeDroplet(invoker, "autouser001", orderIds);
......

protected void invokeDroplet(DropletInvoker pInvoker, String pUserId, String[] pOrderIds) throws Exception
{
Map<String, Object> localParams = new HashMap();
localParams.put("userId", pUserId);
DropletResult result = pInvoker.invokeDroplet("/atg/commerce/order/OrderLookup", localParams);
RenderedOutputParameter oparam = result.getRenderedOutputParameter("output", 0);

assertNotNull("'output' oparam was not rendered", oparam);

assertEquals("Check totalCount.", pOrderIds.length, oparam.getFrameParameter("totalCount"));

List<Order> orders = (List<Order>)oparam.getFrameParameter("result");
assertEquals("Check order array length.", pOrderIds.length, orders.size());
for (int index = 0; index < pOrderIds.length; index++) {
boolean found = false;
for (Order order: orders) {
if (pOrderIds[index].equals(order.getId())) {
found = true;
break;
}
}
assertTrue("Expected orderId " + pOrderIds[index] + " not found in result array", found);
}

在第一种情况下,我不知道如何直接使用 orderlookup api 来检索订单......而在第二种情况下,尽管我知道如何使用它,但我仍然失败!请帮助我......提前致谢

最佳答案

你不应该在java类中使用droplet,它们应该只在jsp页面中使用。 OrderLookup 的文档以及在 jsp 页面上使用它的示例热是 here .

如果您想获取存储在存储库中的订单或任何其他数据,您应该使用带有 RQL(存储库查询语言)的存储库 API。如何从存储库获取数据的示例可以找到 here和 RQL 语法 here .

关于java - 如何从 atg 中的 ordertools 组件检索订单或如何测试 orderlookup Droplet api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22427716/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com