package com.github.ggeorgovassilis.springjsonmapper.services.jaxrs;
import javax.ws.rs.BeanParam;
import javax.ws.rs.Consumes;
import javax.ws.rs.CookieParam;
import javax.ws.rs.FormParam;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import com.github.ggeorgovassilis.springjsonmapper.services.Account;
import com.github.ggeorgovassilis.springjsonmapper.services.BankService;
import com.github.ggeorgovassilis.springjsonmapper.services.Customer;
/**
* Mapping to a hypothetical bank service REST API using JAX-RS annotations
* @author george georgovassilis
*
*/
public interface BankServiceJaxRs extends BankService{
@Override
@POST
@Path("/transfer")
Account transfer(@BeanParam @QueryParam("fromAccount") Account fromAccount, @BeanParam @QueryParam("actor") Customer actor,
@BeanParam @QueryParam("toAccount") Account toAccount, @BeanParam @QueryParam("amount") int amount,
@QueryParam("sendConfirmationSms") boolean sendConfirmationSms);
@Override
@POST
@Path("/verify")
Boolean checkAccount(@BeanParam Account account);
@Override
@POST
@Path("/photo")
@Consumes({"image/gif","image/jpeg","image/png"})
@Produces({"image/jpeg"})
byte[] updatePhoto(@QueryParam("name") String name, @BeanParam byte[] photo);
@Override
@POST
@Path("/join-accounts")
Account joinAccounts(@FormParam("") @QueryParam("account1") Account account1, @FormParam("") @QueryParam("account2") Account account2);
@Override
@POST
@Path("/authenticate")
Customer authenticate(@FormParam("") @QueryParam("name") String name, @FormParam("") @QueryParam("password") String password, @CookieParam("sid") String sessionId);
@Override
@Path("/accounts/{id}")
Account getAccount(@PathParam("id") int id);
@Override
@Path("/session/check")
boolean isSessionAlive(@HeaderParam("X-SessionId") String sid);
@Override
@Path("/${domain}/customer/{name}")
boolean doesCustomerExist(@PathParam("name") String name);
}