Thanks for replying. It will work in my use case. On Tue, Jun 13, 2023 at 7:14 PM Christopher Schultz < ch...@christopherschultz.net> wrote:
> Debraj, > > On 6/13/23 05:38, Debraj Manna wrote: > > Can someone let me know how I can verify a velocity context against a > > template? Basically, I want to throw some error if all variables are not > > substituted in the velocity template. > > > > For example, let's say I have a velocity template, card.vm > > > > card { > > type: CREDIT > > company: VISA > > name: "${firstName} ${lastName}" > > } > > > > The substitution is done like below > > > > VelocityEngine velocityEngine = new VelocityEngine(); > > velocityEngine.init(); > > > > Template t = velocityEngine.getTemplate("card.vm"); > > > > VelocityContext context = new VelocityContext(); > > context.put("firstName", "tuk"); > > StringWriter writer = new StringWriter(); > > t.merge( context, writer ); > > > > In this case, I want to throw some error specifying that lastName is not > > replaced in template. > > > > Does velocity provide anything for this? > > No, but it would be easy to do. Instead of using the basic > VelocityContext, wrap it in a custom one, something like this: > > public class WarningVelocityContext > extends VelocityContext > { > public Object get(String key) { > Object o = super.get(key); > > if(null == o) { > throw new IllegalStateException("Key {" + key + "} has not > been set"); > } > } > } > > Then in your code, wrap the context right before merging: > > t.merge(new WarningVelocityContext(context), writer); > > Note that this will throw exceptions for *anything* that's not found for > any reason. If you try something like: > > $someObject.method() > > And "someObject" is null, then you'll get an error. It may be difficult > to tell the difference between the things you "care about" and the > things you do not. If you have a simple use-case, then probably this > will work. > > -chris > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-unsubscr...@velocity.apache.org > For additional commands, e-mail: user-h...@velocity.apache.org > >