content: package mock.controllers.injection;
  
  import com.github.aesteve.vertx.nubes.annotations.Controller;
  import com.github.aesteve.vertx.nubes.annotations.mixins.ContentType;
  import com.github.aesteve.vertx.nubes.annotations.params.Headers;
  import com.github.aesteve.vertx.nubes.annotations.params.Param;
  import com.github.aesteve.vertx.nubes.annotations.routing.http.GET;
  import io.vertx.core.MultiMap;
  import io.vertx.core.eventbus.EventBus;
  import io.vertx.core.http.HttpServerRequest;
  import io.vertx.core.http.HttpVersion;
  import io.vertx.core.json.JsonObject;
  import io.vertx.core.net.SocketAddress;
  
  @Controller("/params/injection")
  public class MethodParamInjectionController {
  
  	@GET("/socketAddress")
  	@ContentType("application/json")
  	public JsonObject getSocketAddress(SocketAddress address) {
  		return toJson(address);
  	}
  
  	@GET("/httpVersion")
  	@ContentType("application/json")
  	public JsonObject getNetSocket(HttpVersion version) {
  		return new JsonObject()
  				.put("version", version.toString());
  	}
  
  	@GET("/headers")
  	@ContentType("text/plain")
  	public String getHeader(@Headers MultiMap headers, @Param String headerName) {
  		return headers.get(headerName);
  	}
  
  	@GET("/request")
  	@ContentType("text/plain")
  	public String getRequest(HttpServerRequest request) {
  		return request.uri();
  	}
  
  	@GET("/eventBus")
  	@ContentType("text/plain")
  	public String getEventBus(EventBus eb) {
  		return eb.toString();
  	}
  
  	private static JsonObject toJson(SocketAddress address) {
  		return new JsonObject()
  				.put("host", address.host())
  				.put("port", address.port());
  	}
  
  }
  