[
https://issues.apache.org/jira/browse/VELOCITY-734?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Nathan Bubna resolved VELOCITY-734.
-----------------------------------
Resolution: Fixed
Thanks, chad!
> Add name of missing resource to Velocity context for the IncludeNotFound
> event handler implementation
> -----------------------------------------------------------------------------------------------------
>
> Key: VELOCITY-734
> URL: https://issues.apache.org/jira/browse/VELOCITY-734
> Project: Velocity
> Issue Type: New Feature
> Components: Engine
> Reporter: chad davis
> Fix For: 1.7
>
> Original Estimate: 0.25h
> Remaining Estimate: 0.25h
>
> When a resource is not found, the IncludeNotFound event handler will insert a
> "notfound.vm" template into the stream. This provides a robust way of
> finishing the rendering process. It would be very helpful if the notfound
> template could also inform the user of the full name of the missing resource.
>
> The following patch fixes this problem. I've made IncludeNotFound implement
> the ContextAware interface. It then addes the name of the missing resource
> to the context so it can be referenced from the notfound template. I suppose
> it might also be nice to make the name of the reference configurable . . . .
> Index:
> /home/readyportal/Desktop/machineOneWorkspaces/bipSpace/velocity/src/java/org/apache/velocity/app/event/implement/IncludeNotFound.java
> ===================================================================
> ---
> /home/readyportal/Desktop/machineOneWorkspaces/bipSpace/velocity/src/java/org/apache/velocity/app/event/implement/IncludeNotFound.java
> (revision 809033)
> +++
> /home/readyportal/Desktop/machineOneWorkspaces/bipSpace/velocity/src/java/org/apache/velocity/app/event/implement/IncludeNotFound.java
> (working copy)
> @@ -20,7 +20,9 @@
> */
>
> import org.apache.velocity.app.event.IncludeEventHandler;
> +import org.apache.velocity.context.Context;
> import org.apache.velocity.runtime.RuntimeServices;
> +import org.apache.velocity.util.ContextAware;
> import org.apache.velocity.util.RuntimeServicesAware;
> import org.apache.velocity.util.StringUtils;
>
> @@ -36,6 +38,13 @@
> * eventhandler.include.notfound = error.vm
> * </PRE>
> * </code>
> + *
> + * <p>
> + * The name of the missing resource is put into the Velocity context, under
> the
> + * key "missingResource", so that the notfound.vm template can report the
> missing
> + * resource with a Velocity reference, like:
> + * <code>$missingResource</code>
> + * </p>
> *
> * @author <a href="mailto:[email protected]">Will Glass-Husain</a>
> * @version $Id$
> @@ -41,7 +50,7 @@
> * @version $Id$
> * @since 1.5
> */
> -public class IncludeNotFound implements
> IncludeEventHandler,RuntimeServicesAware {
> +public class IncludeNotFound implements
> IncludeEventHandler,RuntimeServicesAware, ContextAware {
>
> private static final String DEFAULT_NOT_FOUND = "notfound.vm";
> private static final String PROPERTY_NOT_FOUND =
> "eventhandler.include.notfound";
> @@ -47,6 +56,7 @@
> private static final String PROPERTY_NOT_FOUND =
> "eventhandler.include.notfound";
> private RuntimeServices rs = null;
> String notfound;
> + Context context;
>
> /**
> * Chseck to see if included file exists, and display "not found" page
> if it
> @@ -70,6 +80,11 @@
> boolean exists = (rs.getLoaderNameForResource(includeResourcePath)
> != null);
> if (!exists)
> {
> + /**
> + * Put the missingResource name in the velocity context so that
> the notfound.vm can report the info to the user.
> + */
> + context.put("missingResource", includeResourcePath );
> +
> if (rs.getLoaderNameForResource(notfound) != null)
> {
> return notfound;
> @@ -99,4 +114,12 @@
> notfound = StringUtils.nullTrim(rs.getString(PROPERTY_NOT_FOUND,
> DEFAULT_NOT_FOUND));
> }
>
> +
> + /**
> + * Part of the ContextAware interface.
> + */
> + public void setContext(Context context) {
> + this.context = context;
> + }
> +
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]