// Path: common/src/main/java/io/spring/cloud/samples/brewery/common/TestConfigurationHolder.java
// @Data
// @Builder
// public class TestConfigurationHolder {
// 	public static final String TEST_COMMUNICATION_TYPE_HEADER_NAME = "TEST-COMMUNICATION-TYPE";
// 	public static final ThreadLocal<TestConfigurationHolder> TEST_CONFIG = new ThreadLocal<>();
// 
// 	private TestCommunicationType testCommunicationType;
// 
// 	public enum TestCommunicationType {
// 		FEIGN, REST_TEMPLATE
// 	}
// }


import io.spring.cloud.samples.brewery.common.TestConfigurationHolder;
import io.spring.cloud.samples.brewery.presenting.config.Collaborators;
import io.spring.cloud.samples.brewery.presenting.config.Versions;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
package io.spring.cloud.samples.brewery.presenting.present;


@FeignClient(Collaborators.BREWING)
@RequestMapping(value = "/ingredients",
		consumes = Versions.BREWING_CONTENT_TYPE_V1,
		produces = MediaType.APPLICATION_JSON_VALUE)
public interface BrewingServiceClient {
	@RequestMapping(method = RequestMethod.POST)
	String getIngredients(String body,
						  @RequestHeader("PROCESS-ID") String processId,
// Path: common/src/main/java/io/spring/cloud/samples/brewery/common/TestConfigurationHolder.java
// @Data
// @Builder
// public class TestConfigurationHolder {
// 	public static final String TEST_COMMUNICATION_TYPE_HEADER_NAME = "TEST-COMMUNICATION-TYPE";
// 	public static final ThreadLocal<TestConfigurationHolder> TEST_CONFIG = new ThreadLocal<>();
// 
// 	private TestCommunicationType testCommunicationType;
// 
// 	public enum TestCommunicationType {
// 		FEIGN, REST_TEMPLATE
// 	}
// }


// Path: presenting/src/main/groovy/io/spring/cloud/samples/brewery/presenting/present/BrewingServiceClient.java
import io.spring.cloud.samples.brewery.common.TestConfigurationHolder;
import io.spring.cloud.samples.brewery.presenting.config.Collaborators;
import io.spring.cloud.samples.brewery.presenting.config.Versions;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

package io.spring.cloud.samples.brewery.presenting.present;


@FeignClient(Collaborators.BREWING)
@RequestMapping(value = "/ingredients",
		consumes = Versions.BREWING_CONTENT_TYPE_V1,
		produces = MediaType.APPLICATION_JSON_VALUE)
public interface BrewingServiceClient {
	@RequestMapping(method = RequestMethod.POST)
	String getIngredients(String body,
						  @RequestHeader("PROCESS-ID") String processId,
						  @RequestHeader(TestConfigurationHolder.TEST_COMMUNICATION_TYPE_HEADER_NAME) String testCommunicationType);