/******************************************************************************* * Copyright (c) 2010 Cloudsmith Inc. and others. * 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: * Cloudsmith Inc. - initial API and implementation * IBM - ongoing development *******************************************************************************/ package org.eclipse.equinox.internal.p2.metadata.expression; import java.util.Dictionary; import java.util.Map; import org.eclipse.equinox.p2.metadata.expression.*; import org.osgi.framework.Filter; import org.osgi.framework.ServiceReference; public class LDAPFilter extends Unary implements IFilterExpression { LDAPFilter(Expression expression) { super(expression); } public boolean accept(IExpressionVisitor visitor) { return operand.accept(visitor); } public boolean equals(Object o) { return (o instanceof Filter && !(o instanceof LDAPFilter)) ? equals(ExpressionUtil.parseLDAP(o.toString())) : super.equals(o); } @Override public String getOperator() { return operand.getOperator(); } @Override public int getPriority() { return operand.getPriority(); } public int getExpressionType() { return 0; } public boolean match(Map<String, ? extends Object> map) { return isMatch(MemberProvider.create(map, true)); } @SuppressWarnings("rawtypes") public boolean match(Dictionary dictionary) { return isMatch(dictionary == null ? MemberProvider.emptyProvider() : MemberProvider.create(dictionary, true)); } public boolean isMatch(Object candidate) { Variable self = ExpressionFactory.THIS; IEvaluationContext ctx = EvaluationContext.create(self); self.setValue(ctx, candidate); return Boolean.TRUE == operand.evaluate(ctx); } public boolean match(ServiceReference<?> reference) { return isMatch(reference == null ? MemberProvider.emptyProvider() : MemberProvider.create(reference, true)); } public boolean matchCase(Map<String, ? extends Object> map) { return isMatch(map == null ? MemberProvider.emptyProvider() : MemberProvider.create(map, false)); } public boolean matches(Map<String, ?> map) { return matchCase(map); } @SuppressWarnings("rawtypes") public boolean matchCase(Dictionary dictionary) { return isMatch(dictionary == null ? MemberProvider.emptyProvider() : MemberProvider.create(dictionary, false)); } public void toString(StringBuffer bld, Variable rootVariable) { operand.toLDAPString(bld); } @Override public Object evaluate(IEvaluationContext context) { return null; } }