`
sdkd_Tiger
  • 浏览: 26153 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

beanShell中NameSpace使用

    博客分类:
  • Java
阅读更多

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

import org.junit.Assert;
import org.junit.Test;

import bsh.Interpreter;
import bsh.NameSpace;
import bsh.Primitive;
import bsh.UtilEvalError;
import bsh.Variable;

public class BeanShellTest {

    @Test
    public void testDynamicVar() throws Exception {
        Interpreter inter = new Interpreter();
        inter.setNameSpace(new NameSpaceWarp(inter.getNameSpace(),
                "mynamespace"));

        Object re = inter.eval("A999=A001+A002;");

        System.out.println(re);
        Assert.assertEquals(300, re);
    }

    @Test
    public void testPrimitive() throws Exception {
        Interpreter inter = new Interpreter();
        inter.set("SZGC0000", new Integer(109));
        inter.set("SZGA1000", new Integer(6));
        inter.set("SZGG1000", new Integer(0));
        inter.set("SZGK1000", new Integer(0));
        inter.set("SZGC0300", new Integer(103));
        Object vvv = inter
                .eval("SZGC0000==SZGA1000+SZGG1000+SZGK1000+SZGC0300;");
        System.out.println("1====" + vvv);
        Assert.assertFalse((Boolean) vvv);

        inter.set("SZGC0000", 109);
        inter.set("SZGA1000", 6);
        inter.set("SZGG1000", 0);
        inter.set("SZGK1000", 0);
        inter.set("SZGC0300", 103);

        vvv = inter.eval("SZGC0000==SZGA1000+SZGG1000+SZGK1000+SZGC0300;");
        System.out.println("2======" + vvv);
        Assert.assertTrue((Boolean) vvv);
    }

    static class NameSpaceWarp extends NameSpace {

        private static final long serialVersionUID = 1L;
        Map<String, Object> kpis;

        public NameSpaceWarp(NameSpace ns, String name) {
            super(ns, name);
            kpis = Collections.synchronizedMap(new HashMap<String, Object>());
            kpis.put("A001", 100);
            kpis.put("A002", 200);
            kpis.put("A003", 300);
        }

        @Override
        protected Variable getVariableImpl(String name, boolean recurse)
                throws UtilEvalError {
            Variable var = super.getVariableImpl(name, recurse);
            if (var == null && kpis.containsKey(name)) {
                Object o = kpis.remove(name);
                if (o == null) {
                    o = Primitive.NULL;
                }
                setVariable(name, o, false);

                return super.getVariableImpl(name, recurse);
            }
            return var;

        }

    }

}

分享到:
评论

相关推荐

    导入poi jar包实现使用Beanshell读写Excel文件

    在JMeter测试框架中,我们可以结合使用POI库和BeanShell组件来读取和写入Excel数据,以实现更复杂的测试场景。以下是对这个主题的详细讲解: 首先,Apache POI是一个开源的Java API,它提供了读取、写入和修改MS ...

    BeanShell快速入门

    请到...但不管怎样,如果你要让BeanShell与你的类与应用程序一起工作就必须将 BeanShell的jar文件加到classpath中。 你可以将BeanShell的jar 文件拖到JAVA_HOME的ext目录也可以直接加到classpath中。

    beanshell的使用,介绍以及源码

    在 Beanshell 中,你可以像编写普通Java程序一样定义类、方法和变量,但无需编译。只需将代码写入脚本文件或直接在Beanshell交互式环境中输入,然后立即执行。这使得它非常适合进行快速原型开发和实验性编程。 以下...

    用BeanShell来运行java脚本

    至于压缩包中的“beanshell”文件,这可能是BeanShell的库文件,包括JAR包和其他相关资源,用于在项目中引入和使用BeanShell。解压并导入这些文件到你的项目中,就可以开始利用BeanShell的强大功能了。 总的来说,...

    beanshell-2.0b4.src

    在标签“beanshell”中,我们可以确认这个压缩包与 Beanshell 工具紧密相关,包含了 Beanshell 的核心功能和可能的使用示例。 在压缩包的文件名称列表中,我们看到了“META-INF”和“bsh”两个目录。`META-INF` 是...

    BeanShell帮助文档和jar包

    将这个jar添加到你的Java项目的类路径中,就可以在程序中直接使用BeanShell的功能。例如,你可以通过Java代码动态执行BeanShell脚本,或者创建一个BeanShell的交互式会话。 4. **使用场景**:BeanShell 在多种情境...

    beanshell java源码解释器

    `BeanShell学习.doc` 文件很可能是关于如何使用Beanshell的教程文档,可能包含了从基础到高级的使用示例,包括如何执行Java语句、如何使用 Beanshell API、以及如何与其他Java类库集成等。 至于`beanshell.jar` ...

    JMeter beanShell修改http请求参数

    然后,将该JAR文件添加到JMeter的lib目录下,使其可以在BeanShell脚本中使用。在BeanShell脚本中,可以通过`import`语句来引入自定义的加密库,如: ```java import com.yourpackage.EncryptionUtils; ``` 然后...

    BeanShell

    7. **嵌入到Java应用**:除了作为一个独立的脚本环境,BeanShell 还可以被嵌入到其他Java应用程序中,作为动态脚本引擎使用,比如用于配置、初始化或者扩展应用的行为。 在压缩包中,我们看到有以下文件: - `...

    beanshell 源码 jar doc sound

    Beanshell 是一个轻量级的Java脚本引擎,它允许用户在运行时直接执行Java语法的脚本。...通过深入学习和使用这个压缩包中的资源,你可以熟练掌握Beanshell的使用,从而在项目中实现更多创新和便捷的解决方案。

    用BeanShell实现公式管理

    【标题】: 使用BeanShell构建公式管理系统的实践 【描述】: 在复杂的企业级应用如SCM、CRM和ERP中,常常需要用户根据自身需求调整计算参数,以满足特定时期的业务规则。例如,商品折扣率、员工奖金计算等都需要动态...

    jmeter-BeanShell简介

    【描述】:“本文将详细介绍JMeter的BeanShell组件,包括其使用场景、内置变量和方法,帮助读者掌握如何在接口测试中运用BeanShell进行脚本编写。” 【标签】:“BeanShell Jmeter 接口测试” 【正文】: ...

    beanShell数据写入本地.txt

    保存本地文件会把逐次请求的不同参数的结果分别保存。...BeanShell PostProcessor每次可以打开相同文件,在一个文件上 追加 写入 。可以实现存到同一文件中。 注意:保存结果到本地,也要创建***正则提取器***哦~~

    beanshell 源码

    例如,游戏开发者可能会使用它来实现自定义的游戏逻辑,或者在应用程序中提供可扩展的配置选项。 5. **类库访问**: Beanshell 脚本可以无缝地访问任何Java类库,包括Java标准库和第三方库。这意味着你可以利用已...

    java的BeanShell公式执行引擎

    1. 安全性:由于BeanShell可以直接执行任意Java代码,因此在生产环境中使用时,必须小心处理输入,避免执行恶意代码。 2. 性能:虽然方便,但动态执行Java代码通常比预编译的Java代码慢,因此在性能敏感的应用中需...

    BeanShell和Mozilla Rhino详细介绍和例子

    6. **脚本扩展**:在应用程序中使用BeanShell,可以替代JAVA编译器动态调用脚本,便于快速实现或修改功能。 而Mozilla Rhino则是一个JavaScript解释器,它是用Java实现的,完全符合Ecma-262标准,使得JavaScript...

    beanshell所需文件

    将这两个 JAR 文件加入到项目的类路径(classpath)中,就可以在Java程序中使用 Beanshell 和 BSF 来执行脚本。例如,你可以动态创建和执行Java类,进行条件判断,循环控制,调用Java对象的方法,甚至实现更复杂的...

Global site tag (gtag.js) - Google Analytics