BowlerKernel
GroovyHelper.java
Go to the documentation of this file.
1 package com.neuronrobotics.bowlerstudio.scripting;
2 
3 import groovy.lang.Binding;
4 import groovy.lang.GroovyShell;
5 import groovy.lang.Script;
6 
7 import java.io.File;
8 import java.io.IOException;
9 import java.util.ArrayList;
10 import java.util.Arrays;
11 
12 import org.codehaus.groovy.control.CompilationFailedException;
13 import org.codehaus.groovy.control.CompilerConfiguration;
14 import org.codehaus.groovy.control.customizers.*;
15 
16 import com.neuronrobotics.sdk.common.BowlerAbstractDevice;
17 import com.neuronrobotics.sdk.common.DeviceManager;
18 
20 
21 
22  private Object inline(Object code, ArrayList<Object> args) throws Exception {
23  CompilerConfiguration cc = new CompilerConfiguration();
24  cc.addCompilationCustomizers(new ImportCustomizer()
25  .addStarImports(ScriptingEngine.getImports())
26  .addStaticStars(
27  "com.neuronrobotics.sdk.util.ThreadUtil",
28  "eu.mihosoft.vrl.v3d.Transform",
29  "com.neuronrobotics.bowlerstudio.vitamins.Vitamins")
30  );
31 
32  Binding binding = new Binding();
33 // for (String pm : DeviceManager.listConnectedDevice()) {
34 // BowlerAbstractDevice bad = DeviceManager.getSpecificDevice(null, pm);
35 // try {
36 // // groovy needs the objects cas to thier actual type befor
37 // // passing into the scipt
38 //
39 // binding.setVariable(bad.getScriptingName(),
40 // Class.forName(bad.getClass().getName())
41 // .cast(bad));
42 // } catch (Throwable e) {
43 // //throw e;
44 // }
47 // }
48  binding.setVariable("args", args);
49 
50  GroovyShell shell = new GroovyShell(GroovyHelper.class
51  .getClassLoader(), binding, cc);
52  //System.out.println(code + "\n\nStart\n\n");
53  Script script;
54  if (String.class.isInstance(code)) {
55  script = shell.parse((String) code);
56  } else if (File.class.isInstance(code)) {
57  script = shell.parse((File) code);
58  } else {
59  return null;
60  }
61  return script.run();
62 
63  }
64 
65 
66  @Override
67  public String getShellType() {
68  return "Groovy";
69  }
75  public String getDefaultContents() {
76  return "// code here";
77  }
78 
79  @Override
80  public Object inlineScriptRun(File code, ArrayList<Object> args) throws Exception {
81  return inline(code, args);
82  }
83 
84 
85  @Override
86  public Object inlineScriptRun(String code, ArrayList<Object> args) throws Exception {
87  return inline(code, args);
88  }
89 
90 
91  @Override
92  public boolean getIsTextFile() {
93  // TODO Auto-generated method stub
94  return true;
95  }
96 
97  @Override
98  public ArrayList<String> getFileExtenetion() {
99  // TODO Auto-generated method stub
100  return new ArrayList<>(Arrays.asList( "groovy","java"));
101  }
102 
103  @Override
105  // TODO Auto-generated method stub
106  return new IDebugScriptRunner() {
107 
108  @Override
109  public String[] step() {
110  // TODO Auto-generated method stub
111  return new String[]{"fileame.groovy", "345"};
112  }
113  };
114  }
115 
116 }
Object inlineScriptRun(File code, ArrayList< Object > args)
Object inlineScriptRun(String code, ArrayList< Object > args)