Index: ScriptBeanDefinitionParser.java =================================================================== RCS file: /cvsroot/springframework/spring/src/org/springframework/scripting/config/ScriptBeanDefinitionParser.java,v retrieving revision 1.8 diff -c -r1.8 ScriptBeanDefinitionParser.java *** ScriptBeanDefinitionParser.java 30 Dec 2006 16:23:44 -0000 1.8 --- ScriptBeanDefinitionParser.java 23 Feb 2007 23:53:02 -0000 *************** *** 61,66 **** --- 61,68 ---- private static final String SCRIPT_SOURCE_ATTRIBUTE = "script-source"; + private static final String SCRIPT_SCOPE_ATTRIBUTE = "script-scope"; + private static final String INLINE_SCRIPT_ELEMENT = "inline-script"; private static final String SCRIPT_INTERFACES_ATTRIBUTE = "script-interfaces"; *************** *** 106,111 **** --- 108,116 ---- // Attach any refresh metadata. parseRefreshMetadata(element, beanDefinition); + // Set the scope of the bean (prototype or singleton) + parseScopeMetadata(element, beanDefinition, parserContext.getReaderContext()); + // Add constructor arguments. ConstructorArgumentValues cav = beanDefinition.getConstructorArgumentValues(); int constructorArgNum = 0; *************** *** 140,145 **** --- 145,165 ---- } /** + * Parses the value of the 'script-scope' attribute and + * attaches it to the BeanDefinition metadata. + */ + private void parseScopeMetadata (Element element, RootBeanDefinition beanDefinition, XmlReaderContext readerContext) { + String scope = element.getAttribute(SCRIPT_SCOPE_ATTRIBUTE); + if (StringUtils.hasText(scope)) { + if ("prototype".equals(scope) || "singleton".equals(scope)) { + beanDefinition.setScope(scope); + } else { + readerContext.error("Script beans must have a 'script-scope' of 'prototype' or 'singleton'.", element); + } + } + } + + /** * Resolves the script source from either the 'script-source' attribute or * the 'inline-script' element. Logs and {@link XmlReaderContext#error} and * returns null if neither or both of these values are specified. Index: spring-lang-2.0.xsd =================================================================== RCS file: /cvsroot/springframework/spring/src/org/springframework/scripting/config/spring-lang-2.0.xsd,v retrieving revision 1.4 diff -c -r1.4 spring-lang-2.0.xsd *** spring-lang-2.0.xsd 7 Jan 2007 09:10:41 -0000 1.4 --- spring-lang-2.0.xsd 23 Feb 2007 23:53:02 -0000 *************** *** 90,95 **** --- 90,97 ---- ]]> + +