// Path: src/test/java/com/github/ggeorgovassilis/springjsonmapper/services/spring/BankServiceShortcutSpring.java
// public interface BankServiceShortcutSpring extends BankService {
// 
// 	@Override
// 	@PostMapping("/transfer")
// 	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
// 	@PostMapping("/verify")
// 	Boolean checkAccount(@RequestBody Account account);
// 
// 	@Override
// 	@PostMapping(value = "/photo", consumes = {"image/gif", "image/jpeg", "image/png"}, produces = {"image/jpeg"})
// 	byte[] updatePhoto(@RequestParam("name") String name, @RequestBody byte[] photo);
// 
// 	@Override
// 	@PostMapping("/join-accounts")
// 	Account joinAccounts(@RequestPart @RequestParam("account1") Account account1,
// 	                     @RequestPart @RequestParam("account2") Account account2);
// 
// 	@Override
// 	@PostMapping("/authenticate")
// 	Customer authenticate(@RequestPart @RequestParam("name") String name,
// 	                      @RequestPart @RequestParam("password") String password, @CookieValue("sid") String sessionId);
// 
// 	@Override
// 	@GetMapping("/accounts/{id}")
// 	Account getAccount(@PathVariable("id") int id);
// 
// 	@Override
// 	@GetMapping("/session/check")
// 	boolean isSessionAlive(@Header("X-SessionId") String sid);
// 
// 	@Override
// 	@GetMapping("/${domain}/customer/{name}")
// 	boolean doesCustomerExist(@PathVariable("name") String name);
// 
// 	@Override
// 	@GetMapping(value = "/${domain}/customer/{name}", headers = {"X-header-1=value1", "X-header-2=value2"})
// 	boolean doesCustomerExist2(@PathVariable("name") String name);
// 
// 	@Override
// 	@GetMapping("/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 com.github.ggeorgovassilis.springjsonmapper.services.spring.BankServiceShortcutSpring;
import com.github.ggeorgovassilis.springjsonmapper.spring.SpringRestInvokerProxyFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.test.context.ContextConfiguration;
package com.github.ggeorgovassilis.springjsonmapper.tests;


@ContextConfiguration(classes = BankServiceShortcutSpringAnnotationTest.class)
@Configuration
@PropertySource("classpath:config.properties")
public class BankServiceShortcutSpringAnnotationTest extends AbstractBankServiceTest {

	@Bean
	SpringRestInvokerProxyFactoryBean BankService() {
		SpringRestInvokerProxyFactoryBean proxyFactory = new SpringRestInvokerProxyFactoryBean();
		proxyFactory.setBaseUrl("http://localhost/bankservice");
// Path: src/test/java/com/github/ggeorgovassilis/springjsonmapper/services/spring/BankServiceShortcutSpring.java
// public interface BankServiceShortcutSpring extends BankService {
// 
// 	@Override
// 	@PostMapping("/transfer")
// 	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
// 	@PostMapping("/verify")
// 	Boolean checkAccount(@RequestBody Account account);
// 
// 	@Override
// 	@PostMapping(value = "/photo", consumes = {"image/gif", "image/jpeg", "image/png"}, produces = {"image/jpeg"})
// 	byte[] updatePhoto(@RequestParam("name") String name, @RequestBody byte[] photo);
// 
// 	@Override
// 	@PostMapping("/join-accounts")
// 	Account joinAccounts(@RequestPart @RequestParam("account1") Account account1,
// 	                     @RequestPart @RequestParam("account2") Account account2);
// 
// 	@Override
// 	@PostMapping("/authenticate")
// 	Customer authenticate(@RequestPart @RequestParam("name") String name,
// 	                      @RequestPart @RequestParam("password") String password, @CookieValue("sid") String sessionId);
// 
// 	@Override
// 	@GetMapping("/accounts/{id}")
// 	Account getAccount(@PathVariable("id") int id);
// 
// 	@Override
// 	@GetMapping("/session/check")
// 	boolean isSessionAlive(@Header("X-SessionId") String sid);
// 
// 	@Override
// 	@GetMapping("/${domain}/customer/{name}")
// 	boolean doesCustomerExist(@PathVariable("name") String name);
// 
// 	@Override
// 	@GetMapping(value = "/${domain}/customer/{name}", headers = {"X-header-1=value1", "X-header-2=value2"})
// 	boolean doesCustomerExist2(@PathVariable("name") String name);
// 
// 	@Override
// 	@GetMapping("/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/BankServiceShortcutSpringAnnotationTest.java
import com.github.ggeorgovassilis.springjsonmapper.services.spring.BankServiceShortcutSpring;
import com.github.ggeorgovassilis.springjsonmapper.spring.SpringRestInvokerProxyFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.test.context.ContextConfiguration;

package com.github.ggeorgovassilis.springjsonmapper.tests;


@ContextConfiguration(classes = BankServiceShortcutSpringAnnotationTest.class)
@Configuration
@PropertySource("classpath:config.properties")
public class BankServiceShortcutSpringAnnotationTest extends AbstractBankServiceTest {

	@Bean
	SpringRestInvokerProxyFactoryBean BankService() {
		SpringRestInvokerProxyFactoryBean proxyFactory = new SpringRestInvokerProxyFactoryBean();
		proxyFactory.setBaseUrl("http://localhost/bankservice");
		proxyFactory.setRemoteServiceInterfaceClass(BankServiceShortcutSpring.class);