Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "JET FAQ How do I create custom XPath Function?"
m (→Answer: indentation) |
(→Answer) |
||
Line 10: | Line 10: | ||
2. In the Plug-in manifest editor, go to the Dependencies tab and add : org.eclipse.jet, org.eclipse.core.runtime, org.eclipse.core.resources | 2. In the Plug-in manifest editor, go to the Dependencies tab and add : org.eclipse.jet, org.eclipse.core.runtime, org.eclipse.core.resources | ||
− | 3. In the Plug-in manifest editor, go to the Extensions tab, and add org.eclipse.jet. | + | 3. In the Plug-in manifest editor, go to the Extensions tab, and add org.eclipse.jet.xpathfunctions. |
− | 4. | + | 4. Add a xpathFunction entry under this. Set the name, and the min/max arguments as you wish. |
− | 5. | + | 5. Click the Implementation link, and specify a Class to implement the function. |
− | + | 6. Code the class. | |
− | + | The following example is an XPathFunction which name is "resourceExists", and min/max attributes are set to 1. | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | The following example is an | + | |
<pre> | <pre> | ||
− | package org.eclipse.jet.example. | + | package org.eclipse.jet.example.customfunction; |
+ | import java.util.List; | ||
import org.eclipse.core.resources.IResource; | import org.eclipse.core.resources.IResource; | ||
import org.eclipse.core.resources.ResourcesPlugin; | import org.eclipse.core.resources.ResourcesPlugin; | ||
− | import org.eclipse.jet. | + | import org.eclipse.jet.xpath.XPathFunction; |
− | + | import org.eclipse.jet.xpath.XPathUtil; | |
− | + | ||
− | import org.eclipse.jet. | + | |
− | + | public class ResourceExistsFunction implements XPathFunction { | |
− | + | ||
− | + | public Object evaluate(List args) { | |
− | + | String path = XPathUtil.xpathString(args.get(0)); | |
− | public class | + | |
− | public | + | |
− | + | ||
− | String path = | + | |
IResource resource = ResourcesPlugin.getWorkspace().getRoot().findMember(path); | IResource resource = ResourcesPlugin.getWorkspace().getRoot().findMember(path); | ||
− | return resource != null && resource.exists(); | + | return Boolean.valueOf(resource != null && resource.exists()); |
} | } | ||
} | } | ||
</pre> | </pre> | ||
− | In your template | + | In your template, usage would then be: |
− | + | <pre> | |
− | + | <c:if test="resourceExists('someproject/somefolder/somefile.c')"> | |
− | < | + | .. do this if file exists |
− | + | </c:if> | |
− | + | ||
− | < | + | |
− | + | ||
− | </ | + | |
</pre> | </pre> | ||
Revision as of 11:52, 25 June 2007
Contents
Question
JET provides tools for creating custom XPath functions. How does it work ?
Question
JET provides an API for creating custom XPath functions. How can I make mine ?
Answer
1. Create a plug-in project
2. In the Plug-in manifest editor, go to the Dependencies tab and add : org.eclipse.jet, org.eclipse.core.runtime, org.eclipse.core.resources
3. In the Plug-in manifest editor, go to the Extensions tab, and add org.eclipse.jet.xpathfunctions.
4. Add a xpathFunction entry under this. Set the name, and the min/max arguments as you wish.
5. Click the Implementation link, and specify a Class to implement the function.
6. Code the class.
The following example is an XPathFunction which name is "resourceExists", and min/max attributes are set to 1.
package org.eclipse.jet.example.customfunction; import java.util.List; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.jet.xpath.XPathFunction; import org.eclipse.jet.xpath.XPathUtil; public class ResourceExistsFunction implements XPathFunction { public Object evaluate(List args) { String path = XPathUtil.xpathString(args.get(0)); IResource resource = ResourcesPlugin.getWorkspace().getRoot().findMember(path); return Boolean.valueOf(resource != null && resource.exists()); } }
In your template, usage would then be:
<c:if test="resourceExists('someproject/somefolder/somefile.c')"> .. do this if file exists </c:if>
See Also
Back to the M2T-JET-FAQ