class ContextMapperCallbackHandlerWithControls extends ContextMapperCallbackHandler<T> {

	public T getObjectFromNameClassPair(final NameClassPair nameClassPair) throws NamingException{
		if (!(nameClassPair instanceof Binding)) {
			throw new IllegalArgumentException("Parameter must be an instance of Binding");
		}

		Binding binding = (Binding) nameClassPair;
		Object object = binding.getObject();
		if (object == null) {
			throw new ObjectRetrievalException("Binding did not contain any object.");
		}
		T result;
		if (nameClassPair instanceof HasControls) {
			result = mapper.mapFromContextWithControls(object, (HasControls) nameClassPair);
		}
		else {
			result = mapper.mapFromContext(object);
		}
		return result;
	}

	public  ContextMapperCallbackHandlerWithControls(final ContextMapperWithControls<T> mapper);

}