You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-users@xmlgraphics.apache.org by Jyoti Gandhe <Jy...@mathworks.com> on 2011/03/22 22:26:04 UTC

Creating custom JavaScript interpreter

I have created a custom JavaScript interpreter because I want to avoid creating a dependency on Rhino. I have created implementations of Interpreter and InterpreterFactory interfaces. I am trying to determine the best way of  registering my InterpreterFactory with Batik. My current approach is to subclass BridgeContext and hard-code it to return my custom interpreter-


public class CustomBridgeContext extends BridgeContext {

   public Interpreter getInterpreter(String language) {
            if (language.equalsIgnoreCase("ecmascript")) {

                  return new MyJavaScriptInterpreter();
            }

            return super.getInterpreter(language);
    }

}


I have subclassed JSVGCanvas to return an instance of my CustomBridgeContext -


public class CustomJSVGCanvas extends JSVGCanvas {
    /**
     * Creates a new bridge context.
     */
    protected BridgeContext createBridgeContext(SVGOMDocument doc) {
        super.createBridgeContext(doc);
        return new CustomBridgeContext(userAgent, loader);
    }
}

I have read about using Service provider to register InterpreterFactory with batik. However, I could not determine how to use it correctly. Can someone point me to an example of how to register my interpreterfactory with batik script engine.

Thanks,
Jyoti