/*******************************************************************************
* Copyright (c) 2008, 2014 Stuart McCulloch
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Stuart McCulloch - initial API and implementation
*******************************************************************************/
package org.eclipse.sisu.peaberry.util.ldap;
import java.util.Map;
import org.eclipse.sisu.peaberry.AttributeFilter;
import org.eclipse.sisu.peaberry.osgi.AttributeDictionary;
import org.osgi.framework.Filter;
import org.osgi.framework.FrameworkUtil;
import org.osgi.framework.InvalidSyntaxException;
/**
* Implementation of LDAP {@link AttributeFilter}, uses code from Apache Felix.
*
* @author mcculls@gmail.com (Stuart McCulloch)
*/
public final class LdapAttributeFilter
implements AttributeFilter {
private final Filter filter;
public LdapAttributeFilter(final String ldapFilter) {
try {
filter = FrameworkUtil.createFilter(ldapFilter);
} catch (final InvalidSyntaxException e) {
throw new IllegalArgumentException("Bad LDAP filter: " + ldapFilter);
}
}
public boolean matches(final Map<String, ?> attributes) {
return filter.match(null == attributes ? null : new AttributeDictionary(attributes));
}
@Override
public String toString() {
return filter.toString();
}
@Override
public int hashCode() {
return filter.hashCode();
}
@Override
public boolean equals(final Object obj) {
if (obj instanceof LdapAttributeFilter) {
return filter.equals(((LdapAttributeFilter) obj).filter);
}
return false;
}
}