package com.softwaremill.common.cdi.interceptor; import com.google.common.base.Strings; import javax.interceptor.AroundInvoke; import javax.interceptor.Interceptor; import javax.interceptor.InvocationContext; /** * @author Pawel Wrzeszcz (pawel [at] softwaremill . com) */ @NullToEmptyStringParams @Interceptor public class NullToEmptyStringParamsInterceptor { @AroundInvoke public Object convertEmptyStringParameters(InvocationContext ctx) throws Exception { Object[] parameters = ctx.getParameters(); Object[] convertedParameters = new Object[parameters.length]; int i = 0; for (Class<?> parameterType : ctx.getMethod().getParameterTypes()) { convertedParameters[i] = convertParamValue(parameterType, parameters[i]); i++; } ctx.setParameters(convertedParameters); return ctx.proceed(); } private Object convertParamValue(Class<?> parameterType, Object parameter) { return parameterType.equals(String.class) ? Strings.nullToEmpty((String) parameter) : parameter; } }