/** * Set one or more customizers to be applied to this evaluator's compiler configuration. * <p>Note that this modifies the shared compiler configuration held by this evaluator. * @since 4.3.3 * @see #setCompilerConfiguration */ public void setCompilationCustomizers(CompilationCustomizer... compilationCustomizers) { this.compilerConfiguration.addCompilationCustomizers(compilationCustomizers); }
/** * Set one or more customizers to be applied to this evaluator's compiler configuration. * <p>Note that this modifies the shared compiler configuration held by this evaluator. * @since 4.3.3 * @see #setCompilerConfiguration */ public void setCompilationCustomizers(CompilationCustomizer... compilationCustomizers) { this.compilerConfiguration.addCompilationCustomizers(compilationCustomizers); }
/** * Create a new GroovyScriptFactory for the given script source, * specifying a strategy interface that can customize Groovy's compilation * process within the underlying GroovyClassLoader. * @param scriptSourceLocator a locator that points to the source of the script. * Interpreted by the post-processor that actually creates the script. * @param compilationCustomizers one or more customizers to be applied to the * GroovyClassLoader compiler configuration * @since 4.3.3 * @see CompilerConfiguration#addCompilationCustomizers * @see org.codehaus.groovy.control.customizers.ImportCustomizer */ public GroovyScriptFactory(String scriptSourceLocator, CompilationCustomizer... compilationCustomizers) { this(scriptSourceLocator); if (!ObjectUtils.isEmpty(compilationCustomizers)) { this.compilerConfiguration = new CompilerConfiguration(); this.compilerConfiguration.addCompilationCustomizers(compilationCustomizers); } }
/** * Create a new GroovyScriptFactory for the given script source, * specifying a strategy interface that can customize Groovy's compilation * process within the underlying GroovyClassLoader. * @param scriptSourceLocator a locator that points to the source of the script. * Interpreted by the post-processor that actually creates the script. * @param compilationCustomizers one or more customizers to be applied to the * GroovyClassLoader compiler configuration * @since 4.3.3 * @see CompilerConfiguration#addCompilationCustomizers * @see org.codehaus.groovy.control.customizers.ImportCustomizer */ public GroovyScriptFactory(String scriptSourceLocator, CompilationCustomizer... compilationCustomizers) { this(scriptSourceLocator); if (!ObjectUtils.isEmpty(compilationCustomizers)) { this.compilerConfiguration = new CompilerConfiguration(); this.compilerConfiguration.addCompilationCustomizers(compilationCustomizers); } }
public String call() throws RuntimeException { // if we run locally, cl!=null. Otherwise the delegating classloader will be available as context classloader. if (cl==null) cl = Thread.currentThread().getContextClassLoader(); CompilerConfiguration cc = new CompilerConfiguration(); cc.addCompilationCustomizers(new ImportCustomizer().addStarImports( "jenkins", "jenkins.model", "hudson", "hudson.model")); GroovyShell shell = new GroovyShell(cl,new Binding(),cc); StringWriter out = new StringWriter(); PrintWriter pw = new PrintWriter(out); shell.setVariable("out", pw); try { Object output = shell.evaluate(script); if(output!=null) pw.println("Result: "+output); } catch (Throwable t) { Functions.printStackTrace(t, pw); } return out.toString(); } }
public static void processConfigScripts(List<String> scripts, CompilerConfiguration conf) throws IOException { if (scripts.isEmpty()) return; Binding binding = new Binding(); binding.setVariable("configuration", conf); CompilerConfiguration configuratorConfig = new CompilerConfiguration(); ImportCustomizer customizer = new ImportCustomizer(); customizer.addStaticStars("org.codehaus.groovy.control.customizers.builder.CompilerCustomizationBuilder"); configuratorConfig.addCompilationCustomizers(customizer); GroovyShell shell = new GroovyShell(binding, configuratorConfig); for (String script : scripts) { shell.evaluate(new File(script)); } }
public MarkupTemplateEngine(final ClassLoader parentLoader, final TemplateConfiguration tplConfig, final TemplateResolver resolver) { compilerConfiguration = new CompilerConfiguration(); templateConfiguration = tplConfig; compilerConfiguration.addCompilationCustomizers(new TemplateASTTransformer(tplConfig)); compilerConfiguration.addCompilationCustomizers( new ASTTransformationCustomizer(Collections.singletonMap("extensions", "groovy.text.markup.MarkupTemplateTypeCheckingExtension"), CompileStatic.class)); if (templateConfiguration.isAutoNewLine()) { compilerConfiguration.addCompilationCustomizers( new CompilationCustomizer(CompilePhase.CONVERSION) { @Override public void call(final SourceUnit source, final GeneratorContext context, final ClassNode classNode) throws CompilationFailedException { new AutoNewLineTransformer(source).visitClass(classNode); } } ); } groovyClassLoader = AccessController.doPrivileged(new PrivilegedAction<TemplateGroovyClassLoader>() { public TemplateGroovyClassLoader run() { return new TemplateGroovyClassLoader(parentLoader, compilerConfiguration); } }); if (DEBUG_BYTECODE) { compilerConfiguration.setBytecodePostprocessor(BytecodeDumper.STANDARD_ERR); } templateResolver = resolver == null ? new DefaultTemplateResolver() : resolver; templateResolver.configure(groovyClassLoader, templateConfiguration); }
public static GroovyClassLoader newEvaluator(Imports imports, Classpath classpath, String outDir, ImportCustomizer icz, ClassLoader parent) { try { Class.forName("org.codehaus.groovy.control.customizers.ImportCustomizer"); } catch (ClassNotFoundException e1) { String gjp = System.getenv(GROOVY_JAR_PATH); String errorMsg = null; if (gjp != null && !gjp.isEmpty()) { errorMsg = "Groovy libary not found, GROOVY_JAR_PATH = " + gjp; } else { errorMsg = "Default groovy libary not found. No GROOVY_JAR_PATH variable set."; } throw new GroovyNotFoundException(errorMsg); } icz = addImportsCustomizer(icz, imports); CompilerConfiguration config = new CompilerConfiguration().addCompilationCustomizers(icz); String acloader_cp = String.join(File.pathSeparatorChar + "", classpath.getPathsAsStrings()); config.setClasspath(acloader_cp); return new GroovyClassLoader(parent, config); }
private void configureCompiler() { if (scriptBaseClass!=null) { configuration.setScriptBaseClass(scriptBaseClass); } if (indy) { configuration.getOptimizationOptions().put("indy", Boolean.TRUE); configuration.getOptimizationOptions().put("int", Boolean.FALSE); } if (configscript!=null) { Binding binding = new Binding(); binding.setVariable("configuration", configuration); CompilerConfiguration configuratorConfig = new CompilerConfiguration(); ImportCustomizer customizer = new ImportCustomizer(); customizer.addStaticStars("org.codehaus.groovy.control.customizers.builder.CompilerCustomizationBuilder"); configuratorConfig.addCompilationCustomizers(customizer); GroovyShell shell = new GroovyShell(binding, configuratorConfig); File confSrc = new File(configscript); try { shell.evaluate(confSrc); } catch (IOException e) { throw new BuildException("Unable to configure compiler using configuration file: "+confSrc, e); } } }
ic.addStaticStars("org.codehaus.groovy.ast.ClassHelper"); ic.addStaticStars("org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport"); config.addCompilationCustomizers(ic); final GroovyClassLoader transformLoader = compilationUnit!=null?compilationUnit.getTransformLoader():typeCheckingVisitor.getSourceUnit().getClassLoader();
private synchronized void createClassLoader() { final CompilerConfiguration conf = new CompilerConfiguration(CompilerConfiguration.DEFAULT); conf.addCompilationCustomizers(this.importGroovyCustomizer.create()); // ConfigurationCustomizerProvider is treated separately groovyCustomizers.stream().filter(cp -> !(cp instanceof ConfigurationGroovyCustomizer)) .forEach(p -> conf.addCompilationCustomizers(p.create())); groovyCustomizers.stream().filter(cp -> cp instanceof ConfigurationGroovyCustomizer).findFirst() .ifPresent(cp -> ((ConfigurationGroovyCustomizer) cp).applyCustomization(conf)); this.loader = new GremlinGroovyClassLoader(getParentLoader(), conf); }
@Override public void afterPropertiesSet() throws Exception { if (this.beanFactory != null && this.beanFactory instanceof ConfigurableListableBeanFactory) { ((ConfigurableListableBeanFactory) this.beanFactory).ignoreDependencyType(MetaClass.class); } CompilerConfiguration compilerConfig = this.compilerConfiguration; if (compilerConfig == null && this.compileStatic) { compilerConfig = new CompilerConfiguration(); compilerConfig.addCompilationCustomizers(new ASTTransformationCustomizer(CompileStatic.class)); } this.groovyClassLoader = new GroovyClassLoader(this.beanClassLoader, compilerConfig); }
/** * Construct a new configuration loader. * @param loader The class loader to use. */ public ConfigurationLoader(ClassLoader loader) { classLoader = loader != null ? loader : ClassLoaders.inferDefault(ConfigurationLoader.class); binding = new Binding(); CompilerConfiguration config = new CompilerConfiguration(); config.setScriptBaseClass(LenskitConfigScript.class.getName()); ImportCustomizer imports = new ImportCustomizer(); imports.addStarImports("org.lenskit.api"); imports.addStarImports("org.lenskit.basic"); config.addCompilationCustomizers(imports); shell = new GroovyShell(loader, binding, config); directory = ClassDirectory.forClassLoader(classLoader); }
private void importClasses(CompilerConfiguration c) { ImportCustomizer customizer = new ImportCustomizer(); c.addCompilationCustomizers(customizer); } }
@Override public void decorate(CompilerConfiguration config) { config.addCompilationCustomizers(new ImportCustomizer().addImports( Pointer.class.getName(), Store.class.getName(), PreStore.class.getName(), Shared.class.getName(), Attachment.class.getName(), Ingest.class.getName() )); }
public GroovyConditionShell() { SecureASTCustomizer secureASTCustomizer = createSecureASTCustomizer(); ImportCustomizer importCustomizer = createImportCustomizer(); ASTTransformationCustomizer astTransformationCustomizer = createASTTransformationCustomizer(); CompilerConfiguration compilerConfiguration = new CompilerConfiguration(); compilerConfiguration.addCompilationCustomizers(secureASTCustomizer); compilerConfiguration.addCompilationCustomizers(importCustomizer); compilerConfiguration.addCompilationCustomizers(astTransformationCustomizer); this.shell = new GroovyShell(compilerConfiguration); }
private void importClasses(CompilerConfiguration c) { ImportCustomizer customizer = new ImportCustomizer(); customizer.addImports(OverrideMode.class.getName()); c.addCompilationCustomizers(customizer); } }
private synchronized void createClassLoader() { final CompilerConfiguration conf = new CompilerConfiguration(CompilerConfiguration.DEFAULT); conf.addCompilationCustomizers(this.importGroovyCustomizer.create()); // ConfigurationCustomizerProvider is treated separately groovyCustomizers.stream().filter(cp -> !(cp instanceof ConfigurationGroovyCustomizer)) .forEach(p -> conf.addCompilationCustomizers(p.create())); groovyCustomizers.stream().filter(cp -> cp instanceof ConfigurationGroovyCustomizer).findFirst() .ifPresent(cp -> ((ConfigurationGroovyCustomizer) cp).applyCustomization(conf)); this.loader = new GremlinGroovyClassLoader(getParentLoader(), conf); }
private synchronized void createClassLoader() { final CompilerConfiguration conf = new CompilerConfiguration(); conf.addCompilationCustomizers(this.importCustomizerProvider.getCompilationCustomizer()); if (this.securityProvider.isPresent()) conf.addCompilationCustomizers(this.securityProvider.get().getCompilationCustomizer()); this.loader = new GremlinGroovyClassLoader(getParentLoader(), conf); this.securityProvider.ifPresent(SecurityCustomizerProvider::registerInterceptors); }
private void importClasses(CompilerConfiguration c) { ImportCustomizer customizer = new ImportCustomizer(); customizer.addImports(TYPE_CLASS, BACKEND_CLASS); c.addCompilationCustomizers(customizer); } }