content: package com.github.aesteve.vertx.nubes.reflections.injectors.annot.impl;
  
  import com.github.aesteve.vertx.nubes.annotations.cookies.CookieValue;
  import com.github.aesteve.vertx.nubes.handlers.impl.DefaultErrorHandler;
  import com.github.aesteve.vertx.nubes.reflections.injectors.annot.AnnotatedParamInjector;
  import io.vertx.ext.web.Cookie;
  import io.vertx.ext.web.RoutingContext;
  
  public class CookieParamInjector implements AnnotatedParamInjector<CookieValue> {
  
    @Override
    public Object resolve(RoutingContext context, CookieValue annotation, String paramName, Class<?> resultClass) {
      String cookieName = annotation.value();
      if ("".equals(cookieName)) {
        cookieName = paramName;
      }
      Cookie cookie = context.getCookie(cookieName);
      if (resultClass.equals(Cookie.class) && cookie != null) {
        return cookie;
      } else if (resultClass.equals(String.class) && cookie != null) {
        return cookie.getValue();
      } else if (cookie == null) {
        DefaultErrorHandler.badRequest(context, "Cookie " + cookieName + " must be set");
      }
      return null;
    }
  
  }
  