Created
July 2, 2015 16:21
-
-
Save erichegt/07a7cf10fdb2fd49b4f4 to your computer and use it in GitHub Desktop.
Callbacks e Strategy em api's mobile
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public interface OrderCheckoutCallback { | |
void onSuccess(OrderFrete order); | |
void shippingInformationWithValidationIssues(); | |
void orderAlreadyProcessed(Order order); | |
void sellerNotFoundOnCarts(); | |
} | |
@Controller | |
@BlockUnloggedUsers | |
public class CheckoutController { | |
@Inject | |
private Result result; | |
//demais dependências | |
@AvailableRoutes(value={PageRoute.MOBILE, PageRoute.DESKTOP}) | |
@Path( {"/checkout/{sellerId}"} ) | |
public void checkout(final ContactInformation contactInformation, final Long sellerId) { | |
checkoutExecutor.sendOrderFinal(contactInformation, sellerId, new OrderCheckoutCallback() { | |
@Override | |
public void orderAlreadyProcessed(Order order) { | |
result.redirectTo(urlBuilder.buyerOrderDetailUrl(order)); | |
} | |
@Override | |
public void onSuccess(Order order) { | |
result.include("createdOrder", order); | |
result.redirectTo(BuyerOrderDetailsController.class).show(order.getId())); | |
} | |
@Override | |
public void sellerNotFoundOnCarts() { | |
result.redirectTo(CartController.class).show(sellerId); | |
} | |
@Override | |
public void shippingInformationWithValidationIssues() { | |
result.include("contactInformation", contactInformation); | |
result.redirectTo(CheckoutController.class).form(sellerId); | |
} | |
}); | |
} | |
} | |
@Controller | |
@BlockUnloggedUsers | |
public class CheckoutApiController { | |
@Inject | |
private ApiResult result; //result customizado que serializa para content-type JSON | |
//demais dependências | |
@AvailableRoutes(value={PageRoute.NATIVE_APP}) | |
@Path( {"/mobile/{apiVersion}/checkout/{sellerId}"} ) | |
public void checkout(ContactInformation contactInformation, final Long sellerId) { | |
checkoutExecutor.sendOrderFinal(contactInformation, sellerId, new OrderCheckoutCallback() { | |
@Override | |
public void orderAlreadyProcessed(Order order) { | |
OrderDTO orderDTO = dtoConverter.convert(order); //modelo do jar compartilhado com Android | |
result.success(apiVersion, orderDTO); | |
} | |
@Override | |
public void onSuccess(Order order) { | |
OrderDTO orderDTO = dtoConverter.convert(order); //modelo do jar compartilhado com Android | |
result.created(apiVersion, orderDTO); | |
} | |
@Override | |
public void sellerNotFoundOnCarts() { | |
result.notFound(apiVersion); | |
} | |
@Override | |
public void shippingInformationWithValidationIssues() { | |
result.badRequest(version); | |
} | |
}); | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment