@Get("json")
  public String toJson() {

    setHeaders();

    List<String> products = new ArrayList<String>();

    for (ProductsEnum product : ProductsEnum.values()) {

      System.out.println(product);
      products.add(product.toString());
    }

    System.out.println("size of products array: " + products.size());

    String jsonArray = "{ \n\"products\" : [";

    if (!products.isEmpty()) {

      Iterator<String> listItr = products.iterator();

      jsonArray += "\"" + listItr.next() + "\"";

      while (listItr.hasNext()) jsonArray += ", \"" + listItr.next() + "\"";
    }

    jsonArray += "]\n}";

    // return a json list of products

    return jsonArray;
  }
  @Post("json")
  public Representation post(Representation entity) {

    try {
      if (entity.getMediaType().equals(MediaType.APPLICATION_JSON, true)) {

        setHeaders();

        OrderManager orderManager = getOrderManager(this.getClientInfo().getAddress());

        System.out.println("Ordermanager price: " + orderManager.getTotalPrice());

        // apparently can only call entity.getText() once after that only returns null

        String inputJson = entity.getText();

        String[] jsonArray = inputJson.split("\"");

        ProductsEnum product = ProductsEnum.valueOf(jsonArray[3]);

        // TODO: ordermanager.add product()
        orderManager.addProduct(product);

        System.out.println("Ordermanager price: " + orderManager.getTotalPrice());

        JsonRepresentation json = new JsonRepresentation(entity);

        // json.getJsonObject();

        getResponse().setStatus(Status.SUCCESS_OK);

      } else {
        getResponse().setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
      }

    } catch (Exception e) {

      e.printStackTrace();
      getResponse().setStatus(Status.SERVER_ERROR_INTERNAL);
    }

    // check if a product exists, if so create a new object
    // as in get OrderManager to create the new Product

    return null;
  }