/** * Creates a new abstract template search DN resolver. * * @param engine velocity engine * @param filter filter template * * @throws VelocityException if velocity is not configured properly or the filter template is invalid */ public AbstractTemplateSearchDnResolver(final VelocityEngine engine, final String filter) throws VelocityException { template = Template.fromTemplate(engine, filter); setUserFilter(filter); }
@Override protected SearchFilter createSearchFilter(final User user) { final SearchFilter filter = new SearchFilter(); if (user != null && user.getContext() != null) { final VelocityContext context = (VelocityContext) user.getContext(); final EventCartridge cartridge = new EventCartridge(); cartridge.addEventHandler(eventHandler); cartridge.attachToContext(context); final String result = template.merge(context); if (result != null && !"".equals(result)) { filter.setFilter(result.trim()); } else { logger.error("Invalid template filter produced from {}, cannot be null or empty.", template); } // keep compatibility with old filter syntax if (getUserFilterParameters() != null) { filter.setParameters(getUserFilterParameters()); } if (user.getIdentifier() != null && !"".equals(user.getIdentifier())) { filter.setParameter("user", user.getIdentifier()); } } else { logger.warn("Search filter cannot be created, user input was empty or null"); } return filter; }