zoukankan      html  css  js  c++  java
  • Java和Groovy脚本互相调用实例

    本实例是GODU动态脚本的一个技术简化版,演示了java调groovy,groovy又调java的运行过程。 测试用例: package com.boco.godu.integration;

    import java.util.HashMap;

    import java.util.Map;

    import org.apache.log4j.Logger;

    import org.junit.After;

    import org.junit.AfterClass;

    import org.junit.Before;

    import org.junit.BeforeClass;

    import org.junit.Test;

    import com.boco.godu.gapi.ConnManager;

    import com.boco.godu.gapi.Constants;

    import com.boco.godu.gapi.IConnection;

    import com.boco.godu.gapi.IResult;

    public class SimpleExpScriptTest {

    private  static  final  Logger  logger  = Logger
    
     . getLogger (SimpleExpScriptTest.  class  );
    
    private  IConnection  conn ;
    

    @Before

    public  void  setUp()  throws  Exception {
    
     conn  = ConnManager. getDataConn ( "10.0.2.47" , 1234,
    
       "< aa ><7001><administrator><autocmd>" ,  "goduapp" ,
    
      Constants.  TYPE_DATA_CMD_SYNC  , 5);
    

    }

    @After

    public  void  tearDown()  throws  Exception {
    
     conn .close();
    

    }

    @Test

    public  void  testImport()  throws  Exception {
    
    Map<String, String> params =  new  HashMap<String, String>();
    
    params.put(  "cmd1" ,  "ls" );
    
    params.put(  "id" , 3);
    
    
    
    IResult result =  conn .execScript( "ImportEx" , params);
    

    }

    }

    Java代码:

    IConnection.java

    package com.boco.godu.gapi;

    public interface IConnection {

    ......// other method definition

     public  IResult execScript (String name, Map<String, Object> params)
    
       throws  Exception;
    

    }

    GoduDataConnection.java

    package com.boco.godu.gapi.conn;

    public class GoduDataConnection extends AbstractConnection {

    ......// Other IConnection Methods

     public  IResult execScript(String name, Map<String, Object> params)
    
       throws  Exception {
    
    String[] roots =  new  String[] {  "e:/MyDoc/Project/GoduScript"  };
    
    GroovyScriptEngine gse =  new  GroovyScriptEngine(roots);
    
    Binding binding =  new  Binding();
    
     for  (Entry<String, Object> item : params.entrySet()) {
    
     binding.setVariable(item.getKey(), item.getValue());
    
    }
    
    GapiIosessionUtils giu =  new  GapiIosessionUtils();
    
    binding.setVariable(  "giu" , giu );
    
    gse.run(name, binding);
    
    System.  out  .println(binding.getVariable(  "result" )); // 运行结果是这里输出“11”,即3*2+5。
    
     return  null  ;
    

    }

    }

    GapiIosessionUtils.java

    package com.boco.godu.gapi.util;

    public class GapiIosessionUtils {

    ......// other method

    public  int  testM(  int  x,  int  y) {
    
     return  x * 2 + y;
    

    }

    }

    groovy代码:

    e:MyDocProjectGoduScriptImportEx

    def send(cmd){

    def result = giu.testM(cmd,5);

    return result;

    }

    result = send(id)

    运行过程

    测试用例 ->GoduDataConnection.java -> groovy代码 -> GapiIosessionUtils.java;

    总结

    binding的setVariable中定义的变量(如giu是com.boco.godu.gapi.util.GapiIosessionUtils对象,id是int型数据)在groovy脚本里直接使用,可以出现在脚本的任何地方,且无需声明类型,无需使用import导入定义该变量的类(例如对于giu来说,如果在java代码中,需要import com.boco.godu.gapi.util.GapiIosessionUtils)。

  • 相关阅读:
    jQuery自定义漂亮的下拉框插件8种效果演示
    Select-or-Die演示11种美化下拉框select方法
    jQuery超酷下拉插件6种效果演示
    jQuery10种不同动画效果的响应式全屏遮罩层
    jQuery Wheel 环形菜单插件5种效果演示
    js显示隐藏
    js关于函数调用
    php入门
    jquery幻灯片
    Mysql命令大全
  • 原文地址:https://www.cnblogs.com/darkmatter/p/3605645.html
Copyright © 2011-2022 走看看