/** * */ package org.minnal.instrument.entity.metadata.handler; import java.lang.annotation.Annotation; import java.lang.reflect.Field; import java.lang.reflect.Method; import org.minnal.instrument.entity.Searchable; import org.minnal.instrument.entity.metadata.EntityMetaData; import org.minnal.instrument.entity.metadata.ParameterMetaData; import com.google.common.base.Strings; /** * @author ganeshs * */ public class SearchableAnnotationHandler extends AbstractEntityAnnotationHandler { @Override public void handle(EntityMetaData metaData, Annotation annotation, Method method) { String value = ((Searchable)annotation).value(); value = Strings.isNullOrEmpty(value) ? getGetterName(method, true) : value; ParameterMetaData parameterMetaData = new ParameterMetaData(value, value, method.getReturnType()); metaData.addSearchField(parameterMetaData); } @Override public void handle(EntityMetaData metaData, Annotation annotation, Field field) { String value = ((Searchable)annotation).value(); if (Strings.isNullOrEmpty(value)) { value = field.getName(); } ParameterMetaData parameterMetaData = new ParameterMetaData(value, field.getName(), field.getType()); metaData.addSearchField(parameterMetaData); } @Override public Class<?> getAnnotationType() { return Searchable.class; } }