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; } }