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 { public boolean test(Object receiver, String property, Object[] args, Object expectedValue) { IPackageFragment fragement= (IPackageFragment)receiver; if ("isDefaultPackage".equals(property)) { return expectedValue == null ? fragement.isDefaultPackage() : fragement.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
|
|