Package br.com.caelum.restbucks

Source Code of br.com.caelum.restbucks.Entry

package br.com.caelum.restbucks;

import static br.com.caelum.restbucks.model.Ordering.order;
import static br.com.caelum.restfulie.Restfulie.resource;

import java.net.URI;
import java.net.URISyntaxException;

import br.com.caelum.restbucks.model.Order;
import br.com.caelum.restbucks.model.Payment;
import br.com.caelum.restfulie.Relation;
import br.com.caelum.restfulie.Resources;
import br.com.caelum.restfulie.Response;
import br.com.caelum.restfulie.http.HttpMethod;

public class Entry {
 
  public static void main(String[] args) throws Exception {
    URI uri = processCommandLineArgs(args);
    happyPathTest(uri);
    }

    private static void happyPathTest(URI uri) throws Exception {

      Resources resources = new MappingConfig().getServer();

        // Place the order
        System.out.println(String.format("About to start happy path test. Placing order at [%s] via POST", uri.toString()));
        Order order = createOrder();
        order = resources.entryAt(uri).post(order);
       
        System.out.println(String.format("Order placed at [%s]", order.getSelfUri()));
       
        // Pay for the order
        Payment payment = new Payment("12345677878", "guilherme silveira", 12, 2999, order.getCost());
        System.out.println(String.format("About to create a payment resource at [%s] via PUT", resource(order).getRelation("payment").getHref()));
        payment =  order.pay(payment);
        System.out.println("Payment made, receipt created at: " + payment.getCreatedAt());

        // Check on the order status
        System.out.println(String.format("About to check order status at [%s] via GET", order.getSelfUri()));
        order = (Order) resource(order).getRelation("self").accessAndRetrieve();
        System.out.println(String.format("Final order placed, current status [%s]", order.getStatus()));
       
        // Allow the barista some time to make the order
        System.out.println("Pausing the client, press a key to continue");
        System.in.read();
       
        // Take the order if possible
        System.out.println(String.format("Trying to take the ready order from [%s] via DELETE. Note: the internal state machine must progress the order to ready before this should work, otherwise expect a 405 response.", order.getSelfUri()));
        order = (Order) resource(order).getRelation("self").accessAndRetrieve();
        Response finalResponse = resource(order).getRelation("retrieve").method(HttpMethod.DELETE).access();
        System.out.println(String.format("Tried to take final order, HTTP status [%d]", finalResponse.getCode()));
        if(finalResponse.getCode() == 200) {
            System.out.println(String.format("Order status [%s], enjoy your drink", finalResponse.getCode()));
        }
    }

  private static Order createOrder() {
    return order().withRandomItems().build();
  }
   

  /**
   * Code from Jim Webber's restbucks example app
   */
    private static URI processCommandLineArgs(String[] args) throws URISyntaxException {
        if(args.length != 1) {
            System.out.println("Must specify entry point URI as the only command line argument ");
            System.exit(1);
        } else {
            System.out.println("Binding to service at: " + args[0]);
        }
        return new URI(args[0]);
    }

}
TOP

Related Classes of br.com.caelum.restbucks.Entry

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.