Mercurial > projects > dwt2
diff org.eclipse.osgi/osgi/src/org/osgi/framework/Filter.d @ 86:12b890a6392a
Work on databinding
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sat, 18 Apr 2009 13:58:35 +0200 |
parents | |
children | bbe49769ec18 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/org.eclipse.osgi/osgi/src/org/osgi/framework/Filter.d Sat Apr 18 13:58:35 2009 +0200 @@ -0,0 +1,127 @@ +/* + * $Header: /cvshome/build/org.osgi.framework/src/org/osgi/framework/Filter.java,v 1.16 2007/02/21 16:49:05 hargrave Exp $ + * + * Copyright (c) OSGi Alliance (2000, 2007). All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +module org.osgi.framework.Filter; +import org.osgi.framework.ServiceReference; + +import java.lang.all; +import java.util.Dictionary; + +/** + * An RFC 1960-based Filter. + * <p> + * <code>Filter</code> objects can be created by calling + * {@link BundleContext#createFilter} with the chosen filter string. + * <p> + * A <code>Filter</code> object can be used numerous times to determine if the + * match argument matches the filter string that was used to create the + * <code>Filter</code> object. + * <p> + * Some examples of LDAP filters are: + * + * <pre> + * "(cn=Babs Jensen)" + * "(!(cn=Tim Howes))" + * "(&(" + Constants.OBJECTCLASS + "=Person)(|(sn=Jensen)(cn=Babs J*)))" + * "(o=univ*of*mich*)" + * </pre> + * + * @since 1.1 + * @see "Core Specification, section 5.5, for a description of the filter string + * syntax." + * @ThreadSafe + * @version $Revision: 1.16 $ + */ +public interface Filter { + /** + * Filter using a service's properties. + * <p> + * The filter is executed using the keys and values of the referenced + * service's properties. The keys are case insensitively matched with the + * filter. + * + * @param reference The reference to the service whose properties are used + * in the match. + * + * @return <code>true</code> if the service's properties match this + * filter; <code>false</code> otherwise. + */ + public bool match(ServiceReference reference); + + /** + * Filter using a <code>Dictionary</code> object. The Filter is executed + * using the <code>Dictionary</code> object's keys and values. The keys + * are case insensitively matched with the filter. + * + * @param dictionary The <code>Dictionary</code> object whose keys are + * used in the match. + * + * @return <code>true</code> if the <code>Dictionary</code> object's + * keys and values match this filter; <code>false</code> + * otherwise. + * + * @throws IllegalArgumentException If <code>dictionary</code> contains + * case variants of the same key name. + */ + public bool match(Dictionary dictionary); + + /** + * Returns this <code>Filter</code> object's filter string. + * <p> + * The filter string is normalized by removing whitespace which does not + * affect the meaning of the filter. + * + * @return Filter string. + */ + public String toString(); + + /** + * Compares this <code>Filter</code> object to another object. + * + * @param obj The object to compare against this <code>Filter</code> + * object. + * + * @return If the other object is a <code>Filter</code> object, then + * returns <code>this.toString().equals(obj.toString()</code>;<code>false</code> + * otherwise. + */ + public bool equals(Object obj); + + /** + * Returns the hashCode for this <code>Filter</code> object. + * + * @return The hashCode of the filter string; that is, + * <code>this.toString().hashCode()</code>. + */ + public int hashCode(); + + /** + * Filter with case sensitivity using a <code>Dictionary</code> object. + * The Filter is executed using the <code>Dictionary</code> object's keys + * and values. The keys are case sensitively matched with the filter. + * + * @param dictionary The <code>Dictionary</code> object whose keys are + * used in the match. + * + * @return <code>true</code> if the <code>Dictionary</code> object's + * keys and values match this filter; <code>false</code> + * otherwise. + * + * @since 1.3 + */ + public bool matchCase(Dictionary dictionary); +}