/* * Copyright (c) 2005 jPOS.org. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The end-user documentation included with the redistribution, if any, * must include the following acknowledgment: "This product includes software * developed by the jPOS project (http://www.jpos.org/)". Alternately, this * acknowledgment may appear in the software itself, if and wherever such * third-party acknowledgments normally appear. * 4. The names "jPOS" and "jPOS.org" must not be used to endorse or promote * products derived from this software without prior written permission. For * written permission, please contact license@jpos.org. * 5. Products derived from this software may not be called "jPOS", nor may * "jPOS" appear in their name, without prior written permission of the jPOS * project. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JPOS * PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many individuals * on behalf of the jPOS Project. For more information please see * <http://www.jpos.org/> . */ package org.jpos.q2.qbean; import java.util.Iterator; import org.jdom.Element; import org.jpos.iso.ISOUtil; import org.jpos.iso.ISOUtilCrypto; import org.jpos.q2.QBeanSupport; import bsh.BshClassManager; import bsh.Interpreter; import bsh.UtilEvalError; public class BSH extends QBeanSupport implements Runnable { Interpreter bsh; public void initService() { bsh = new Interpreter (); BshClassManager bcm = bsh.getClassManager(); try { bcm.setClassPath(getServer().getLoader().getURLs()); } catch (UtilEvalError e) { e.printStackTrace(); } bcm.setClassLoader(getServer().getLoader()); } public void startService() { new Thread (this).start (); } public void run () { Element config = getPersist(); try { bsh.set ("qbean", this); bsh.set ("log", getLog()); Iterator i = config.getChildren("property").iterator(); while (i.hasNext()) { Element e = (Element)i.next(); bsh.set(e.getAttributeValue("name"),e.getAttributeValue("value")); } String code = config.getText(); String source = config.getAttributeValue ("source"); if (!code.trim().equals("")) { bsh.eval(code); } else { if (source != null) { bsh.source (source); } else { code=config.getChildText("source"); bsh.eval(code); } } } catch (Throwable e) { getLog().warn (e); } } }