// Path: src/test/java/com/github/ggeorgovassilis/springjsonmapper/services/spring/BankServiceSpring.java
// public interface BankServiceSpring extends BankService {
// 
// 	@Override
// 	@RequestMapping(value = "/transfer", method = RequestMethod.POST)
// 	Account transfer(@RequestBody @RequestParam("fromAccount") Account fromAccount,
// 			@RequestBody @RequestParam("actor") Customer actor,
// 			@RequestBody @RequestParam("toAccount") Account toAccount, @RequestBody @RequestParam("amount") int amount,
// 			@RequestParam("sendConfirmationSms") boolean sendConfirmationSms);
// 
// 	@Override
// 	@RequestMapping(value = "/verify", method = RequestMethod.POST)
// 	Boolean checkAccount(@RequestBody Account account);
// 
// 	@Override
// 	@RequestMapping(value = "/photo", method = RequestMethod.POST, consumes = { "image/gif", "image/jpeg",
// 			"image/png" }, produces = { "image/jpeg" })
// 	byte[] updatePhoto(@RequestParam("name") String name, @RequestBody byte[] photo);
// 
// 	@Override
// 	@RequestMapping(value = "/join-accounts", method = RequestMethod.POST)
// 	Account joinAccounts(@RequestPart @RequestParam("account1") Account account1,
// 			@RequestPart @RequestParam("account2") Account account2);
// 
// 	@Override
// 	@RequestMapping(value = "/authenticate", method = RequestMethod.POST)
// 	Customer authenticate(@RequestPart @RequestParam("name") String name,
// 			@RequestPart @RequestParam("password") String password, @CookieValue("sid") String sessionId);
// 
// 	@Override
// 	@RequestMapping(value = "/accounts/{id}")
// 	Account getAccount(@PathVariable("id") int id);
// 
// 	@Override
// 	@RequestMapping(value = "/session/check")
// 	boolean isSessionAlive(@Header("X-SessionId") String sid);
// 
// 	@Override
// 	@RequestMapping(value = "/${domain}/customer/{name}")
// 	boolean doesCustomerExist(@PathVariable("name") String name);
// 
// 	@Override
// 	@RequestMapping(value = "/${domain}/customer/{name}", headers={"X-header-1=value1","X-header-2=value2"})
// 	boolean doesCustomerExist2(@PathVariable("name") String name);
// 
// 	@Override
// 	@RequestMapping(value = "/accounts")
// 	List<Account> getAllAccounts();
// 
// }
// 
// Path: src/main/java/com/github/ggeorgovassilis/springjsonmapper/spring/SpringRestInvokerProxyFactoryBean.java
// public class SpringRestInvokerProxyFactoryBean extends BaseRestInvokerProxyFactoryBean {
// 
// 	@Override
// 	protected MethodInspector constructDefaultMethodInspector() {
// 		List<MappingAnnotationResolver<? extends Annotation>> mappings = Arrays.asList(new RequestMappingAnnotationResolver(),
// 				new PutMappingAnnotationResolver(),
// 				new PostMappingAnnotationResolver(),
// 				new PatchMappingAnnotationResolver(),
// 				new GetMappingAnnotationResolver(),
// 				new DeleteMappingAnnotationResolver());
// 
// 		MappingAnnotationsInspector mappingAnnotationsInspector = new MappingAnnotationsInspector(mappings);
// 		SpringAnnotationMethodInspector inspector = new SpringAnnotationMethodInspector(mappingAnnotationsInspector);
// 		inspector.setEmbeddedValueResolver(expressionResolver);
// 		return inspector;
// 	}
// 
// }


import org.springframework.test.context.ContextConfiguration;
import com.github.ggeorgovassilis.springjsonmapper.services.spring.BankServiceSpring;
import com.github.ggeorgovassilis.springjsonmapper.spring.SpringRestInvokerProxyFactoryBean;
package com.github.ggeorgovassilis.springjsonmapper.tests;



/**
 * Tests a more complex scenario with recorded HTTP requests and responses using
 * the {@link SpringRestInvokerProxyFactoryBean}
 * 
 * @author george georgovassilis
 * 
 */
@ContextConfiguration("classpath:test-context-bank-spring.xml")
public class BankServiceSpringTest extends AbstractBankServiceTest {

	@Override
	protected String getExpectedServiceName() {
// Path: src/test/java/com/github/ggeorgovassilis/springjsonmapper/services/spring/BankServiceSpring.java
// public interface BankServiceSpring extends BankService {
// 
// 	@Override
// 	@RequestMapping(value = "/transfer", method = RequestMethod.POST)
// 	Account transfer(@RequestBody @RequestParam("fromAccount") Account fromAccount,
// 			@RequestBody @RequestParam("actor") Customer actor,
// 			@RequestBody @RequestParam("toAccount") Account toAccount, @RequestBody @RequestParam("amount") int amount,
// 			@RequestParam("sendConfirmationSms") boolean sendConfirmationSms);
// 
// 	@Override
// 	@RequestMapping(value = "/verify", method = RequestMethod.POST)
// 	Boolean checkAccount(@RequestBody Account account);
// 
// 	@Override
// 	@RequestMapping(value = "/photo", method = RequestMethod.POST, consumes = { "image/gif", "image/jpeg",
// 			"image/png" }, produces = { "image/jpeg" })
// 	byte[] updatePhoto(@RequestParam("name") String name, @RequestBody byte[] photo);
// 
// 	@Override
// 	@RequestMapping(value = "/join-accounts", method = RequestMethod.POST)
// 	Account joinAccounts(@RequestPart @RequestParam("account1") Account account1,
// 			@RequestPart @RequestParam("account2") Account account2);
// 
// 	@Override
// 	@RequestMapping(value = "/authenticate", method = RequestMethod.POST)
// 	Customer authenticate(@RequestPart @RequestParam("name") String name,
// 			@RequestPart @RequestParam("password") String password, @CookieValue("sid") String sessionId);
// 
// 	@Override
// 	@RequestMapping(value = "/accounts/{id}")
// 	Account getAccount(@PathVariable("id") int id);
// 
// 	@Override
// 	@RequestMapping(value = "/session/check")
// 	boolean isSessionAlive(@Header("X-SessionId") String sid);
// 
// 	@Override
// 	@RequestMapping(value = "/${domain}/customer/{name}")
// 	boolean doesCustomerExist(@PathVariable("name") String name);
// 
// 	@Override
// 	@RequestMapping(value = "/${domain}/customer/{name}", headers={"X-header-1=value1","X-header-2=value2"})
// 	boolean doesCustomerExist2(@PathVariable("name") String name);
// 
// 	@Override
// 	@RequestMapping(value = "/accounts")
// 	List<Account> getAllAccounts();
// 
// }
// 
// Path: src/main/java/com/github/ggeorgovassilis/springjsonmapper/spring/SpringRestInvokerProxyFactoryBean.java
// public class SpringRestInvokerProxyFactoryBean extends BaseRestInvokerProxyFactoryBean {
// 
// 	@Override
// 	protected MethodInspector constructDefaultMethodInspector() {
// 		List<MappingAnnotationResolver<? extends Annotation>> mappings = Arrays.asList(new RequestMappingAnnotationResolver(),
// 				new PutMappingAnnotationResolver(),
// 				new PostMappingAnnotationResolver(),
// 				new PatchMappingAnnotationResolver(),
// 				new GetMappingAnnotationResolver(),
// 				new DeleteMappingAnnotationResolver());
// 
// 		MappingAnnotationsInspector mappingAnnotationsInspector = new MappingAnnotationsInspector(mappings);
// 		SpringAnnotationMethodInspector inspector = new SpringAnnotationMethodInspector(mappingAnnotationsInspector);
// 		inspector.setEmbeddedValueResolver(expressionResolver);
// 		return inspector;
// 	}
// 
// }


// Path: src/test/java/com/github/ggeorgovassilis/springjsonmapper/tests/BankServiceSpringTest.java
import org.springframework.test.context.ContextConfiguration;
import com.github.ggeorgovassilis.springjsonmapper.services.spring.BankServiceSpring;
import com.github.ggeorgovassilis.springjsonmapper.spring.SpringRestInvokerProxyFactoryBean;

package com.github.ggeorgovassilis.springjsonmapper.tests;



/**
 * Tests a more complex scenario with recorded HTTP requests and responses using
 * the {@link SpringRestInvokerProxyFactoryBean}
 * 
 * @author george georgovassilis
 * 
 */
@ContextConfiguration("classpath:test-context-bank-spring.xml")
public class BankServiceSpringTest extends AbstractBankServiceTest {

	@Override
	protected String getExpectedServiceName() {
		return BankServiceSpring.class.getName();