1

いくつかのパラメーターを渡してドロップレット API を注文しようとしています。必須のパラメーターは、渡した userId と organisationIds であり、さらに「状態」パラメーターも渡したと想定しています。これらのすべてのパラメーターは、リクエストを介して渡され、次にサービスメソッドしかし、サービス メソッドは何も返しません。私の目標は、このドロップレットが予想される一連の注文を取得しているかどうかを確認することです。私を助けてください!!これは、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 invokerを使ってみたときのコードです

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を直接使用して注文を取得する方法がわかりません....そして2番目のケースでは、使用方法は知っていますが、まだ失敗しています!! 私を助けてください..事前に感謝します

4

3 に答える 3