Package org.apache.bsf

Examples of org.apache.bsf.BSFManager


            "org.codehaus.groovy.bsf.GroovyEngine",
            new String[] { "groovy", "gy" }
           );
     
      // I suppose we need one BSFManager per processing thread
      manager = new BSFManager();
    
      manager.setClassLoader(Thread.currentThread().getContextClassLoader());
      manager.loadScriptingEngine(language);
      manager.declareBean("log", log, Logger.class);
      manager.declareBean("server", server, MBeanServer.class);
View Full Code Here


            throw new EventHandlerException("Problem getting ServletContext");
        }

        try {
            // create the BSF manager
            BSFManager bsfManager = new BSFManager();
            bsfManager.setClassLoader(cl);

            // expose the event objects to the script
            bsfManager.declareBean("request", request, HttpServletRequest.class);
            bsfManager.declareBean("response", response, HttpServletResponse.class);

            // get the script type
            String scriptType = BSFManager.getLangFromFilename(event.invoke);

            // load the script
            InputStream scriptStream = null;
            String scriptString = null;
            String cacheName = null;
            if (UtilValidate.isEmpty(event.path)) {
                // we are a resource to be loaded off the classpath
                cacheName = event.invoke;
                scriptString = eventCache.get(cacheName);
                if (scriptString == null) {
                    synchronized(eventCache) {
                        if (scriptString == null) {
                            if (Debug.verboseOn()) {
                                Debug.logVerbose("Loading BSF Script at location: " + cacheName, module);
                            }
                            URL scriptUrl = FlexibleLocation.resolveLocation(cacheName);
                            if (scriptUrl == null) {
                                throw new EventHandlerException("BSF script not found at location [" + cacheName + "]");
                            }
                            scriptStream = scriptUrl.openStream();
                            scriptString = IOUtils.getStringFromReader(new InputStreamReader(scriptStream));
                            scriptStream.close();
                            eventCache.put(cacheName, scriptString);
                        }
                    }
                }
            } else {
                // we are a script in the webapp - load by resource
                cacheName = context.getServletContextName() + ":" + event.path + event.invoke;
                scriptString = eventCache.get(cacheName);
                if (scriptString == null) {
                    synchronized(eventCache) {
                        if (scriptString == null) {
                            scriptStream = context.getResourceAsStream(event.path + event.invoke);
                            if (scriptStream == null) {
                                throw new EventHandlerException("Could not find BSF script file in webapp context: " + event.path + event.invoke);
                            }
                            scriptString = IOUtils.getStringFromReader(new InputStreamReader(scriptStream));
                            scriptStream.close();
                            eventCache.put(cacheName, scriptString);
                        }
                    }
                }
            }

            // execute the script
            Object result = bsfManager.eval(scriptType, cacheName, 0, 0, scriptString);

            // check the result
            if (result != null && !(result instanceof String)) {
                throw new EventHandlerException("Event did not return a String result, it returned a " + result.getClass().getName());
            }
View Full Code Here

    {
        Log log = LogUtil.getLog(BsfEngineTagHandler.class, "ctor");

        try {
            log.debug("Creating BSFManager()");
            bsfManager = new BSFManager();
        }
        catch (Exception ex) {
            log.error("Exception when creating BSFManager", ex);
        }
    }
View Full Code Here

            getLogger().debug("file resolved to [" + this.inputSource.getURI() + "]");

            Reader in = new InputStreamReader(this.inputSource.getInputStream());

            // Set up the BSF manager and register relevant helper "beans"
            BSFManager mgr = new BSFManager();

            // add BSF support for additional languages
            if (this.additionalLanguages != null) {
                for (int i = 0; i < this.additionalLanguages.length; ++i) {
                    getLogger().debug("adding BSF language " + this.additionalLanguages[i].name +
                            " with engine " + this.additionalLanguages[i].engineSrc);

                    BSFManager.registerScriptingEngine(this.additionalLanguages[i].name,
                                                this.additionalLanguages[i].engineSrc,
                                                this.additionalLanguages[i].extensions);
                }
            }
            StringBuffer output = new StringBuffer();

            // make useful objects available to scripts
            mgr.registerBean("resolver", this.resolver);
            mgr.registerBean("source", super.source);
            mgr.registerBean("objectModel", this.objectModel);
            mgr.registerBean("parameters", this.parameters);
            mgr.registerBean("logger", getLogger());

            // provide both a StringBuffer and ContentHandler to script,
            // so that it can provide XML either as a String or as SAX events
            mgr.registerBean("output", output);
            mgr.registerBean("contentHandler",contentHandler);

            // Execute the script
            if(getLogger().isDebugEnabled()) {
                getLogger().debug("BSFManager execution begining (" + inputSource.getURI() + ")");
            }
            mgr.exec(BSFManager.getLangFromFilename(this.inputSource.getURI()),
                     this.inputSource.getURI(), 0, 0, IOUtils.getStringFromReader(in));
            if(getLogger().isDebugEnabled()) {
                getLogger().debug("BSFManager execution complete");
            }
View Full Code Here

            Reader in = new InputStreamReader(src.getInputStream());

            // Set up the BSF manager and register relevant helper "beans"

            BSFManager mgr = new BSFManager();
            HashMap actionMap = new HashMap();

            // parameters to act(...)
            mgr.registerBean("resolver", resolver);
            mgr.registerBean("objectModel", objectModel);
            mgr.registerBean("parameters", par);

            // ScriptAction housekeeping
            mgr.registerBean("actionMap", actionMap);

            // helpers

            mgr.registerBean("logger", getLogger());
            mgr.registerBean("request", ( ObjectModelHelper.getRequest(objectModel) ) );
            mgr.registerBean("scriptaction", this );
            mgr.registerBean("manager", this.manager );

            if (this.getLogger().isDebugEnabled()) {
                getLogger().debug("BSFManager execution begining");
            }

            // Execute the script

            mgr.exec(BSFManager.getLangFromFilename(systemID), systemID, 0, 0,
                    IOUtils.getStringFromReader(in));

            if (this.getLogger().isDebugEnabled()) {
                getLogger().debug("BSFManager execution complete");
            }
View Full Code Here

     * </ul>
     */

    public void actionTriggered(IComponent component, IRequestCycle cycle)
    {
        BSFManager bsf = _managerFactory.createBSFManager();

        Location location = getLocation();

        try
        {
            IPage page = cycle.getPage();

            bsf.declareBean("component", _component, _component.getClass());
            bsf.declareBean("page", page, page.getClass());
            bsf.declareBean("cycle", cycle, cycle.getClass());

            bsf.exec(
                    _language,
                    location.getResource().toString(),
                    location.getLineNumber(),
                    location.getLineNumber(),
                    _script);
View Full Code Here

{
    private ClassResolver _classResolver;

    public BSFManager createBSFManager()
    {
        BSFManager result = new BSFManager();

        result.setClassLoader(_classResolver.getClassLoader());

        return result;
    }
View Full Code Here

     * </ul>
     */

    public void actionTriggered(IComponent component, IRequestCycle cycle)
    {
        BSFManager bsf = _managerFactory.createBSFManager();

        Location location = getLocation();

        try
        {
            IPage page = cycle.getPage();

            bsf.declareBean("component", _component, _component.getClass());
            bsf.declareBean("page", page, page.getClass());
            bsf.declareBean("cycle", cycle, cycle.getClass());

            bsf.exec(
                    _language,
                    location.getResource().toString(),
                    location.getLineNumber(),
                    location.getLineNumber(),
                    _script);
View Full Code Here

{
    private ClassResolver _classResolver;

    public BSFManager createBSFManager()
    {
        BSFManager result = new BSFManager();

        result.setClassLoader(_classResolver.getClassLoader());

        return result;
    }
View Full Code Here

        res.setSampleLabel(label);
        InputStream is = null;
        BSFEngine bsfEngine = null;
        // There's little point saving the manager between invocations
        // as we need to reset most of the beans anyway
        BSFManager mgr = new BSFManager();

        // TODO: find out how to retrieve these from the script
        // At present the script has to use SampleResult methods to set them.
        res.setResponseCode("200"); // $NON-NLS-1$
        res.setResponseMessage("OK"); // $NON-NLS-1$
        res.setSuccessful(true);
        res.setDataType(SampleResult.TEXT); // Default (can be overridden by the script)

        res.sampleStart();
        try {
            initManager(mgr);
            mgr.declareBean("SampleResult", res, res.getClass()); // $NON-NLS-1$

            // These are not useful yet, as have not found how to get updated values back
            //mgr.declareBean("ResponseCode", "200", String.class); // $NON-NLS-1$
            //mgr.declareBean("ResponseMessage", "OK", String.class); // $NON-NLS-1$
            //mgr.declareBean("IsSuccess", Boolean.TRUE, Boolean.class); // $NON-NLS-1$

            // N.B. some engines (e.g. Javascript) cannot handle certain declareBean() calls
            // after the engine has been initialised, so create the engine last
            bsfEngine = mgr.loadScriptingEngine(getScriptLanguage());

            Object bsfOut = null;
            if (fileName.length()>0) {
                res.setSamplerData("File: "+fileName);
                is = new BufferedInputStream(new FileInputStream(fileName));
                bsfOut = bsfEngine.eval(fileName, 0, 0, IOUtils.toString(is));
            } else {
                res.setSamplerData(request);
                bsfOut = bsfEngine.eval("script", 0, 0, request);
            }

            if (bsfOut != null) {
                res.setResponseData(bsfOut.toString(), null);
            }
        } catch (BSFException ex) {
            log.warn("BSF error", ex);
            res.setSuccessful(false);
            res.setResponseCode("500"); // $NON-NLS-1$
            res.setResponseMessage(ex.toString());
        } catch (Exception ex) {// Catch evaluation errors
            log.warn("Problem evaluating the script", ex);
            res.setSuccessful(false);
            res.setResponseCode("500"); // $NON-NLS-1$
            res.setResponseMessage(ex.toString());
        } finally {
            res.sampleEnd();
            IOUtils.closeQuietly(is);
// Will be done by mgr.terminate() anyway
//          if (bsfEngine != null) {
//              bsfEngine.terminate();
//          }
            mgr.terminate();
        }

        return res;
    }   
View Full Code Here

TOP

Related Classes of org.apache.bsf.BSFManager

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.