/* See LICENSE for licensing and NOTICE for copyright. */
package org.ldaptive.props;
import org.ldaptive.SearchFilter;
import org.ldaptive.control.RequestControl;
import org.ldaptive.handler.IntermediateResponseHandler;
import org.ldaptive.handler.SearchEntryHandler;
import org.ldaptive.handler.SearchReferenceHandler;
import org.ldaptive.referral.ReferralHandler;
/**
* Handles properties for {@link org.ldaptive.SearchRequest}.
*
* @author Middleware Services
*/
public class SearchRequestPropertyInvoker extends AbstractPropertyInvoker
{
/**
* Creates a new search request property invoker for the supplied class.
*
* @param c class that has setter methods
*/
public SearchRequestPropertyInvoker(final Class<?> c)
{
initialize(c);
}
@Override
protected Object convertValue(final Class<?> type, final String value)
{
Object newValue = value;
if (type != String.class) {
if (SearchFilter.class.isAssignableFrom(type)) {
newValue = new SearchFilter(value);
} else if (RequestControl[].class.isAssignableFrom(type)) {
newValue = createArrayTypeFromPropertyValue(RequestControl.class, value);
} else if (ReferralHandler.class.isAssignableFrom(type)) {
newValue = createTypeFromPropertyValue(ReferralHandler.class, value);
} else if (SearchEntryHandler[].class.isAssignableFrom(type)) {
newValue = createArrayTypeFromPropertyValue(SearchEntryHandler.class, value);
} else if (SearchReferenceHandler[].class.isAssignableFrom(type)) {
newValue = createArrayTypeFromPropertyValue(SearchReferenceHandler.class, value);
} else if (IntermediateResponseHandler[].class.isAssignableFrom(type)) {
newValue = createArrayTypeFromPropertyValue(IntermediateResponseHandler.class, value);
} else {
newValue = convertSimpleType(type, value);
}
}
return newValue;
}
}