001/* 002 * (C) Copyright 2015 Nuxeo SA (http://nuxeo.com/) and others. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 * 016 * Contributors: 017 * Stephane Lacoin <slacoin@nuxeo.com> 018 * Vladimir Pasquier <vpasquier@nuxeo.com> 019 */ 020package org.nuxeo.automation.scripting.internals; 021 022import java.util.List; 023 024import javax.script.ScriptEngine; 025import javax.script.ScriptEngineFactory; 026 027import jdk.nashorn.api.scripting.NashornScriptEngineFactory; 028 029/** 030 * This script factory configure the Nashorn engine with cache (following 031 * {@link org.nuxeo.automation.scripting.internals.ScriptingCache#enabled}). 032 * 033 * @since 7.3 034 */ 035public class ScriptingCache implements ScriptEngineFactory { 036 037 protected final NashornScriptEngineFactory nashornScriptEngineFactory; 038 039 protected final boolean enabled; 040 041 public ScriptingCache(boolean enabled) { 042 this.nashornScriptEngineFactory = new NashornScriptEngineFactory(); 043 this.enabled = enabled; 044 } 045 046 @Override 047 public ScriptEngine getScriptEngine() { 048 return enabled ? nashornScriptEngineFactory.getScriptEngine("-strict", "--persistent-code-cache", 049 "--class-cache-size=50") : nashornScriptEngineFactory.getScriptEngine(); 050 } 051 052 @Override 053 public String getProgram(String... statements) { 054 return nashornScriptEngineFactory.getProgram(statements); 055 } 056 057 @Override 058 public Object getParameter(String key) { 059 return nashornScriptEngineFactory.getParameter(key); 060 } 061 062 @Override 063 public String getOutputStatement(String toDisplay) { 064 return nashornScriptEngineFactory.getOutputStatement(toDisplay); 065 } 066 067 @Override 068 public List<String> getNames() { 069 return nashornScriptEngineFactory.getNames(); 070 } 071 072 @Override 073 public List<String> getMimeTypes() { 074 return nashornScriptEngineFactory.getMimeTypes(); 075 } 076 077 @Override 078 public String getMethodCallSyntax(String obj, String method, String... args) { 079 return nashornScriptEngineFactory.getMethodCallSyntax(obj, method, args); 080 } 081 082 @Override 083 public String getLanguageVersion() { 084 return nashornScriptEngineFactory.getLanguageVersion(); 085 } 086 087 @Override 088 public String getLanguageName() { 089 return nashornScriptEngineFactory.getLanguageName(); 090 } 091 092 @Override 093 public List<String> getExtensions() { 094 return nashornScriptEngineFactory.getExtensions(); 095 } 096 097 @Override 098 public String getEngineVersion() { 099 return nashornScriptEngineFactory.getEngineVersion(); 100 } 101 102 @Override 103 public String getEngineName() { 104 return nashornScriptEngineFactory.getEngineName(); 105 } 106}