var ScriptContext = javax.script.ScriptContext; print(count); switch (count) { // engine only case 1: if (key != 'value in engine') { throw "unexpected engine scope value"; } if (context.getAttribute("key", ScriptContext.GLOBAL_SCOPE ) != null) { throw "unexpected global scope value"; } break; // both scopes case 2: if (key != 'value in engine') { throw "unexpected engine scope value"; } if (context.getAttribute("key", ScriptContext.GLOBAL_SCOPE ) != "value in global") { throw "unexpected global scope value"; } break; // global only case 3: if (key != 'value in global') { throw "unexpected global scope value"; } if (context.getAttribute("key", ScriptContext.GLOBAL_SCOPE ) != "value in global") { throw "unexpected global scope value"; } break; default: throw "unexpected count"; break; }