Class FilterImpl

java.lang.Object
org.apache.felix.utils.filter.FilterImpl
All Implemented Interfaces:
org.osgi.framework.Filter

public class FilterImpl extends Object implements org.osgi.framework.Filter
This filter implementation is based on the official OSGi filter with additional support for the SUPERSET (>*) and SUBSET (<*) operators. This filter also has a few optimizations (cached transformation).
  • Method Details

    • newInstance

      public static FilterImpl newInstance(String filterString) throws org.osgi.framework.InvalidSyntaxException
      Constructs a FilterImpl object. This filter object may be used to match a ServiceReference or a Dictionary.

      If the filter cannot be parsed, an InvalidSyntaxException will be thrown with a human readable message where the filter became unparsable.

      Parameters:
      filterString - the filter string.
      Returns:
      A new filter
      Throws:
      org.osgi.framework.InvalidSyntaxException - If the filter parameter contains an invalid filter string that cannot be parsed.
    • newInstance

      public static FilterImpl newInstance(String filterString, boolean ignoreCase) throws org.osgi.framework.InvalidSyntaxException
      Throws:
      org.osgi.framework.InvalidSyntaxException
    • match

      public boolean match(org.osgi.framework.ServiceReference reference)
      Filter using a service's properties.

      This Filter is executed using the keys and values of the referenced service's properties. The keys are case insensitively matched with this Filter.

      Specified by:
      match in interface org.osgi.framework.Filter
      Parameters:
      reference - The reference to the service whose properties are used in the match.
      Returns:
      true if the service's properties match this Filter; false otherwise.
    • match

      public boolean match(Dictionary dictionary)
      Filter using a Dictionary. This Filter is executed using the specified Dictionary's keys and values. The keys are case insensitively matched with this Filter.
      Specified by:
      match in interface org.osgi.framework.Filter
      Parameters:
      dictionary - The Dictionary whose keys are used in the match.
      Returns:
      true if the Dictionary's keys and values match this filter; false otherwise.
      Throws:
      IllegalArgumentException - If dictionary contains case variants of the same key name.
    • matchCase

      public boolean matchCase(Dictionary dictionary)
      Filter with case sensitivity using a Dictionary. This Filter is executed using the specified Dictionary's keys and values. The keys are case sensitively matched with this Filter.
      Specified by:
      matchCase in interface org.osgi.framework.Filter
      Parameters:
      dictionary - The Dictionary whose keys are used in the match.
      Returns:
      true if the Dictionary's keys and values match this filter; false otherwise.
      Since:
      1.3
    • matchCase

      public boolean matchCase(Map map)
      Filter using a Map. This Filter is executed using the specified Map's keys and values. The keys are case insensitively matched with this Filter.
      Parameters:
      map - The Map whose keys are used in the match.
      Returns:
      true if the Map's keys and values match this filter; false otherwise.
      Throws:
      IllegalArgumentException - If map contains case variants of the same key name.
    • matches

      public boolean matches(Map<String,?> map)
      Filter using a Map. This Filter is executed using the specified Map's keys and values. The keys are case insensitively matched with this Filter.
      Specified by:
      matches in interface org.osgi.framework.Filter
      Parameters:
      map - The Map whose keys are used in the match.
      Returns:
      true if the Map's keys and values match this filter; false otherwise.
      Throws:
      IllegalArgumentException - If map contains case variants of the same key name.
    • toString

      public String toString()
      Returns this Filter's filter string.

      The filter string is normalized by removing whitespace which does not affect the meaning of the filter.

      Specified by:
      toString in interface org.osgi.framework.Filter
      Overrides:
      toString in class Object
      Returns:
      This Filter's filter string.
    • equals

      public boolean equals(Object obj)
      Compares this Filter to another Filter.

      This implementation returns the result of calling this.toString().equals(obj.toString().

      Specified by:
      equals in interface org.osgi.framework.Filter
      Overrides:
      equals in class Object
      Parameters:
      obj - The object to compare against this Filter.
      Returns:
      If the other object is a Filter object, then returns the result of calling this.toString().equals(obj.toString(); false otherwise.
    • hashCode

      public int hashCode()
      Returns the hashCode for this Filter.

      This implementation returns the result of calling this.toString().hashCode().

      Specified by:
      hashCode in interface org.osgi.framework.Filter
      Overrides:
      hashCode in class Object
      Returns:
      The hashCode of this Filter.