Class PropertyTester

  • All Implemented Interfaces:
    IPropertyTester

    public abstract class PropertyTester
    extends Object
    implements IPropertyTester
    Abstract superclass of all property testers. Implementation classes of the extension point org.eclipse.core.expresssions.propertyTesters must extend PropertyTester.

    A property tester implements the property tests enumerated in the property tester extension point. For the following property test extension

       <propertyTester
             namespace="org.eclipse.jdt.core"
           id="org.eclipse.jdt.core.IPackageFragmentTester"
           properties="isDefaultPackage"
           type="org.eclipse.jdt.core.IPackageFragment"
           class="org.eclipse.demo.MyPackageFragmentTester">
         </propertyTester>
     
    the corresponding implementation class looks like:
       public class MyPackageFragmentTester extends PropertyTester {
           public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
               IPackageFragment fragment= (IPackageFragment)receiver;
                     if ("isDefaultPackage".equals(property)) {
                   return expectedValue == null
                    ? fragment.isDefaultPackage()
                    : fragment.isDefaultPackage() == ((Boolean)expectedValue).booleanValue();
               }
               Assert.isTrue(false);
               return false;
           }
       }
     
    The property can then be used in a test expression as follows:
       <instanceof value="org.eclipse.core.IPackageFragment"/>
       <test property="org.eclipse.jdt.core.isDefaultPackage"/>
     

    There is no guarantee that the same instance of a property tester is used to handle <test property="..."/> requests. So property testers should always be implemented in a stateless fashion.

    Since:
    3.0
    • Constructor Detail

      • PropertyTester

        public PropertyTester()
    • Method Detail

      • internalInitialize

        public final void internalInitialize​(org.eclipse.core.internal.expressions.PropertyTesterDescriptor descriptor)
        Initialize the property tester with the given name space and property.

        Note: this method is for internal use only. Clients must not call this method.

        Parameters:
        descriptor - the descriptor object for this tester
        Restriction:
        This method is not intended to be referenced by clients.
      • internalCreateDescriptor

        public final org.eclipse.core.internal.expressions.PropertyTesterDescriptor internalCreateDescriptor()
        Note: this method is for internal use only. Clients must not call this method.
        Returns:
        the property tester descriptor
        Restriction:
        This method is not intended to be referenced by clients.
      • handles

        public final boolean handles​(String namespace,
                                     String property)
        Description copied from interface: IPropertyTester
        Returns whether the property tester can handle the given property or not.
        Specified by:
        handles in interface IPropertyTester
        Parameters:
        namespace - the name space to be considered
        property - the property to test
        Returns:
        true if the tester provides an implementation for the given property; otherwise false is returned
      • isInstantiated

        public final boolean isInstantiated()
        Description copied from interface: IPropertyTester
        Returns whether the implementation class for this property tester is loaded or not.
        Specified by:
        isInstantiated in interface IPropertyTester
        Returns:
        trueif the implementation class is loaded; false otherwise
      • isDeclaringPluginActive

        public boolean isDeclaringPluginActive()
        Description copied from interface: IPropertyTester
        Returns true if the implementation class of this property tester can be loaded. This is the case if the plug-in providing the implementation class is active. Returns false otherwise.
        Specified by:
        isDeclaringPluginActive in interface IPropertyTester
        Returns:
        whether the implementation class can be loaded or not
      • instantiate

        public final IPropertyTester instantiate()
        Description copied from interface: IPropertyTester
        Loads the implementation class for this property tester and returns an instance of this class.
        Specified by:
        instantiate in interface IPropertyTester
        Returns:
        an instance of the implementation class for this property tester