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 ----
]]>
+
+