Index: lams_build/3rdParty.userlibraries =================================================================== diff -u -r191bdb0b212df85ee28dfec97e2c6689ec43234f -r29276ae77ec41cd93deff18fc89fd656d2ad3ed2 --- lams_build/3rdParty.userlibraries (.../3rdParty.userlibraries) (revision 191bdb0b212df85ee28dfec97e2c6689ec43234f) +++ lams_build/3rdParty.userlibraries (.../3rdParty.userlibraries) (revision 29276ae77ec41cd93deff18fc89fd656d2ad3ed2) @@ -1,10 +1,9 @@ - - + - + @@ -33,7 +32,20 @@ - + + + + + + + + + + + + + + Index: lams_build/conf/j2ee/application.xml =================================================================== diff -u -r84af64052b65a5a8f91e42f58f03e8362c5eb3de -r29276ae77ec41cd93deff18fc89fd656d2ad3ed2 --- lams_build/conf/j2ee/application.xml (.../application.xml) (revision 84af64052b65a5a8f91e42f58f03e8362c5eb3de) +++ lams_build/conf/j2ee/application.xml (.../application.xml) (revision 29276ae77ec41cd93deff18fc89fd656d2ad3ed2) @@ -26,16 +26,13 @@ - aopalliance.jar + cglib-nodep-2.1_2.jar - cglib-full-2.0.2.jar - - dom4j-1.5.2.jar - ehcache-1.0.jar + ehcache-1.1.jar hibernate2.jar @@ -104,9 +101,6 @@ odmg-3.0.jar - spring.jar - - antlr.jar @@ -121,6 +115,48 @@ wddx-1.0a-lfl-0.2.jar + + quartz.jar + + + spring-aop.jar + + + spring-beans.jar + + + spring-context.jar + + + spring-core.jar + + + spring-dao.jar + + + spring-hibernate.jar + + + spring-jdbc.jar + + + spring-mock.jar + + + spring-orm.jar + + + spring-remoting.jar + + + spring-support.jar + + + spring-web.jar + + + spring-webmvc.jar + Index: lams_build/lib/aopalliance/aopalliance.jar =================================================================== diff -u -rb11fdf8e6de8f399b37b5382808063fd323d2958 -r29276ae77ec41cd93deff18fc89fd656d2ad3ed2 Binary files differ Index: lams_build/lib/cglib/cglib-full-2.0.2.jar =================================================================== diff -u -rb11fdf8e6de8f399b37b5382808063fd323d2958 -r29276ae77ec41cd93deff18fc89fd656d2ad3ed2 Binary files differ Index: lams_build/lib/cglib/cglib-nodep-2.1_2.jar =================================================================== diff -u Binary files differ Index: lams_build/lib/ehcache/ehcache-1.0.jar =================================================================== diff -u -rb11fdf8e6de8f399b37b5382808063fd323d2958 -r29276ae77ec41cd93deff18fc89fd656d2ad3ed2 Binary files differ Index: lams_build/lib/ehcache/ehcache-1.1.jar =================================================================== diff -u Binary files differ Index: lams_build/lib/lams/lams-central.jar =================================================================== diff -u Binary files differ Index: lams_build/lib/quartz/quartz.jar =================================================================== diff -u Binary files differ Index: lams_build/lib/spring/spring-aop.jar =================================================================== diff -u Binary files differ Index: lams_build/lib/spring/spring-beans.dtd =================================================================== diff -u --- lams_build/lib/spring/spring-beans.dtd (revision 0) +++ lams_build/lib/spring/spring-beans.dtd (revision 29276ae77ec41cd93deff18fc89fd656d2ad3ed2) @@ -0,0 +1,587 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_build/lib/spring/spring-beans.jar =================================================================== diff -u Binary files differ Index: lams_build/lib/spring/spring-context.jar =================================================================== diff -u Binary files differ Index: lams_build/lib/spring/spring-core.jar =================================================================== diff -u Binary files differ Index: lams_build/lib/spring/spring-dao.jar =================================================================== diff -u Binary files differ Index: lams_build/lib/spring/spring-hibernate.jar =================================================================== diff -u Binary files differ Index: lams_build/lib/spring/spring-jdbc.jar =================================================================== diff -u Binary files differ Index: lams_build/lib/spring/spring-mock.jar =================================================================== diff -u Binary files differ Index: lams_build/lib/spring/spring-orm.jar =================================================================== diff -u Binary files differ Index: lams_build/lib/spring/spring-remoting.jar =================================================================== diff -u Binary files differ Index: lams_build/lib/spring/spring-support.jar =================================================================== diff -u Binary files differ Index: lams_build/lib/spring/spring-web.jar =================================================================== diff -u Binary files differ Index: lams_build/lib/spring/spring-webmvc.jar =================================================================== diff -u Binary files differ Index: lams_build/lib/spring/spring.ftl =================================================================== diff -u --- lams_build/lib/spring/spring.ftl (revision 0) +++ lams_build/lib/spring/spring.ftl (revision 29276ae77ec41cd93deff18fc89fd656d2ad3ed2) @@ -0,0 +1,316 @@ +<#-- + * spring.ftl + * + * This file consists of a collection of FreeMarker macros aimed at easing + * some of the common requirements of web applications - in particular + * handling of forms. + * + * Spring's FreeMarker support will automatically make this file and therefore + * all macros within it available to any application using Spring's + * FreeMarkerConfigurer. + * + * To take advantage of these macros, the "exposeSpringMacroHelpers" property + * of the FreeMarker class needs to be set to "true". This will expose a + * RequestContext under the name "springMacroRequestContext", as needed by + * the macros in this library. + * + * @author Darren Davison + * @author Juergen Hoeller + * @since 1.1 + --> + +<#-- + * message + * + * Macro to translate a message code into a message. + --> +<#macro message code>${springMacroRequestContext.getMessage(code)} + +<#-- + * messageText + * + * Macro to translate a message code into a message, + * using the given default text if no message found. + --> +<#macro messageText code, text>${springMacroRequestContext.getMessage(code, text)} + +<#-- + * url + * + * Takes a relative URL and makes it absolute from the server root by + * adding the context root for the web application. + --> +<#macro url relativeUrl>${springMacroRequestContext.getContextPath()}${relativeUrl} + +<#-- + * bind + * + * Exposes a BindStatus object for the given bind path, which can be + * a bean (e.g. "person") to get global errors, or a bean property + * (e.g. "person.name") to get field errors. Can be called multiple times + * within a form to bind to multiple command objects and/or field names. + * + * This macro will participate in the default HTML escape setting for the given + * RequestContext. This can be customized by calling "setDefaultHtmlEscape" + * on the "springMacroRequestContext" context variable, or via the + * "defaultHtmlEscape" context-param in web.xml (same as for the JSP bind tag). + * Also regards a "htmlEscape" variable in the namespace of this library. + * + * Producing no output, the following context variable will be available + * each time this macro is referenced (assuming you import this library in + * your templates with the namespace 'spring'): + * + * spring.status : a BindStatus instance holding the command object name, + * expression, value, and error messages and codes for the path supplied + * + * @param path : the path (string value) of the value required to bind to. + * Spring defaults to a command name of "command" but this can be overridden + * by user config. + --> +<#macro bind path> + <#if htmlEscape?exists> + <#assign status = springMacroRequestContext.getBindStatus(path, htmlEscape)> + <#else> + <#assign status = springMacroRequestContext.getBindStatus(path)> + + <#-- assign a temporary value, forcing a string representation for any + kind of variable. This temp value is only used in this macro lib --> + <#if status.value?exists && status.value?is_boolean> + <#assign stringStatusValue=status.value?string> + <#else> + <#assign stringStatusValue=status.value?default("")> + + + +<#-- + * bindEscaped + * + * Similar to spring:bind, but takes an explicit HTML escape flag rather + * than relying on the default HTML escape setting. + --> +<#macro bindEscaped path, htmlEscape> + <#assign status = springMacroRequestContext.getBindStatus(path, htmlEscape)> + <#-- assign a temporary value, forcing a string representation for any + kind of variable. This temp value is only used in this macro lib --> + <#if status.value?exists && status.value?is_boolean> + <#assign stringStatusValue=status.value?string> + <#else> + <#assign stringStatusValue=status.value?default("")> + + + +<#-- + * formInput + * + * Display a form input field of type 'text' and bind it to an attribute + * of a command or bean. + * + * @param path the name of the field to bind to + * @param attributes any additional attributes for the element (such as class + * or CSS styles or size + --> +<#macro formInput path attributes="" fieldType="text" > + <@bind path/> + ${stringStatusValue}" ${attributes} + <@closeTag/> + + +<#-- + * formPasswordInput + * + * Display a form input field of type 'password' and bind it to an attribute + * of a command or bean. No value will ever be displayed. This functionality + * can also be obtained by calling the formInput macro with a 'type' parameter + * of 'password' + * + * @param path the name of the field to bind to + * @param attributes any additional attributes for the element (such as class + * or CSS styles or size + --> +<#macro formPasswordInput path attributes="" > + <@formInput path, attributes, "password"/> + + +<#-- + * formHiddenInput + * + * Generate a form input field of type 'hidden' and bind it to an attribute + * of a command or bean. This functionality can also be obtained by calling + * the formInput macro with a 'type' parameter of 'hidden' + * + * @param path the name of the field to bind to + * @param attributes any additional attributes for the element (such as class + * or CSS styles or size + --> +<#macro formHiddenInput path attributes="" > + <@formInput path, attributes, "hidden"/> + + +<#-- + * formTextarea + * + * Display a text area and bind it to an attribute of a command or bean. + * + * @param path the name of the field to bind to + * @param attributes any additional attributes for the element (such as class + * or CSS styles or size + --> +<#macro formTextarea path attributes="" > + <@bind path/> + + + +<#-- + * formSingleSelect + * + * Show a selectbox (dropdown) input element allowing a single value to be chosen + * from a list of options. + * + * @param path the name of the field to bind to + * @param options a map (value=label) of all the available options + * @param attributes any additional attributes for the element (such as class + * or CSS styles or size +--> +<#macro formSingleSelect path options attributes=""> + <@bind path/> + + + +<#-- + * formMultiSelect + * + * Show a listbox of options allowing the user to make 0 or more choices from + * the list of options. + * + * @param path the name of the field to bind to + * @param options a map (value=label) of all the available options + * @param attributes any additional attributes for the element (such as class + * or CSS styles or size +--> +<#macro formMultiSelect path options attributes=""> + <@bind path/> + + + +<#-- + * formRadioButtons + * + * Show radio buttons. + * + * @param path the name of the field to bind to + * @param options a map (value=label) of all the available options + * @param separator the html tag or other character list that should be used to + * separate each option. Typically ' ' or '
' + * @param attributes any additional attributes for the element (such as class + * or CSS styles or size +--> +<#macro formRadioButtons path options separator attributes=""> + <@bind path/> + <#list options?keys as value> + checked="checked" ${attributes} + <@closeTag/> + ${options[value]}${separator} + + + +<#-- + * formCheckboxes + * + * Show checkboxes. + * + * @param path the name of the field to bind to + * @param options a map (value=label) of all the available options + * @param separator the html tag or other character list that should be used to + * separate each option. Typically ' ' or '
' + * @param attributes any additional attributes for the element (such as class + * or CSS styles or size +--> +<#macro formCheckboxes path options separator attributes=""> + <@bind path/> + <#list options?keys as value> + <#assign isSelected = contains(status.value?default([""]), value)> + checked="checked" ${attributes} + <@closeTag/> + ${options[value]}${separator} + + + +<#-- + * showErrors + * + * Show validation errors for the currently bound field, with + * optional style attributes. + * + * @param separator the html tag or other character list that should be used to + * separate each option. Typically '
'. + * @param classOrStyle either the name of a CSS class element (which is defined in + * the template or an external CSS file) or an inline style. If the value passed in here + * contains a colon (:) then a 'style=' attribute will be used, else a 'class=' attribute + * will be used. +--> +<#macro showErrors separator classOrStyle=""> + <#list status.errorMessages as error> + <#if classOrStyle == ""> + ${error} + <#else> + <#if classOrStyle?index_of(":") == -1><#assign attr="class"><#else><#assign attr="style"> + ${error} + + <#if error_has_next>${separator} + + + +<#-- + * checkSelected + * + * Check a value in a list to see if it is the currently selected value. + * If so, add the 'selected="selected"' text to the output. + * Handles values of numeric and string types. + * This function is used internally but can be accessed by user code if required. + * + * @param value the current value in a list iteration +--> +<#macro checkSelected value> + <#if stringStatusValue?is_number && stringStatusValue == value?number>selected="selected" + <#if stringStatusValue?is_string && stringStatusValue == value>selected="selected" + + +<#-- + * contains + * + * Macro to return true if the list contains the scalar, false if not. + * Surprisingly not a FreeMarker builtin. + * This function is used internally but can be accessed by user code if required. + * + * @param list the list to search for the item + * @param item the item to search for in the list + * @return true if item is found in the list, false otherwise +--> +<#function contains list item> + <#list list as nextInList> + <#if nextInList == item><#return true> + + <#return false> + + +<#-- + * closeTag + * + * Simple macro to close an HTML tag that has no body with '>' or '/>', + * depending on the value of a 'xhtmlCompliant' variable in the namespace + * of this library. +--> +<#macro closeTag> + <#if xhtmlCompliant?exists && xhtmlCompliant>/><#else>> + Index: lams_build/lib/spring/spring.jar =================================================================== diff -u -rb11fdf8e6de8f399b37b5382808063fd323d2958 -r29276ae77ec41cd93deff18fc89fd656d2ad3ed2 Binary files differ Index: lams_build/lib/spring/spring.tld =================================================================== diff -u --- lams_build/lib/spring/spring.tld (revision 0) +++ lams_build/lib/spring/spring.tld (revision 29276ae77ec41cd93deff18fc89fd656d2ad3ed2) @@ -0,0 +1,311 @@ + + + + + + 1.1.1 + + 1.2 + + Spring + + http://www.springframework.org/tags + + Spring Framework JSP Tag Library. Authors: Rod Johnson, Juergen Hoeller + + + + + htmlEscape + org.springframework.web.servlet.tags.HtmlEscapeTag + JSP + + + Sets default HTML escape value for the current page. + Overrides a "defaultHtmlEscape" context-param in web.xml, if any. + + + + defaultHtmlEscape + true + true + + + + + + + + escapeBody + org.springframework.web.servlet.tags.EscapeBodyTag + JSP + + + Escapes its enclosed body content, applying HTML escaping and/or JavaScript escaping. + The HTML escaping flag participates in a page-wide or application-wide setting + (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). + + + + htmlEscape + false + true + + + + javaScriptEscape + false + true + + + + + + + + message + org.springframework.web.servlet.tags.MessageTag + JSP + + + Retrieves the message with the given code, or text if code isn't resolvable. + The HTML escaping flag participates in a page-wide or application-wide setting + (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). + + + + code + false + true + + + + arguments + false + true + + + + text + false + true + + + + var + false + true + + + + scope + false + true + + + + htmlEscape + false + true + + + + javaScriptEscape + false + true + + + + + + + + theme + org.springframework.web.servlet.tags.ThemeTag + JSP + + + Retrieves the theme message with the given code, or text if code isn't resolvable. + The HTML escaping flag participates in a page-wide or application-wide setting + (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). + + + + code + false + true + + + + arguments + false + true + + + + text + false + true + + + + var + false + true + + + + scope + false + true + + + + htmlEscape + false + true + + + + javaScriptEscape + false + true + + + + + + + + hasBindErrors + org.springframework.web.servlet.tags.BindErrorsTag + JSP + + + Provides Errors instance in case of bind errors. + The HTML escaping flag participates in a page-wide or application-wide setting + (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). + + + + errors + org.springframework.validation.Errors + + + + name + true + true + + + + htmlEscape + false + true + + + + + + + + nestedPath + org.springframework.web.servlet.tags.NestedPathTag + JSP + + + Sets a nested path to be used by the bind tag's path. + + + + nestedPath + java.lang.String + + + + path + true + true + + + + + + + + bind + org.springframework.web.servlet.tags.BindTag + JSP + + + Provides BindStatus object for the given bind path. + The HTML escaping flag participates in a page-wide or application-wide setting + (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). + + + + status + org.springframework.web.servlet.support.BindStatus + + + + path + true + true + + + + ignoreNestedPath + false + true + + + + htmlEscape + false + true + + + + + + + + transform + org.springframework.web.servlet.tags.TransformTag + JSP + + + Provides transformation of variables to Strings, using an appropriate + custom PropertyEditor from BindTag (can only be used inside BindTag). + The HTML escaping flag participates in a page-wide or application-wide setting + (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). + + + + value + true + true + + + + var + false + true + + + + scope + false + true + + + + htmlEscape + false + true + + + + + Index: lams_build/lib/spring/spring.vm =================================================================== diff -u --- lams_build/lib/spring/spring.vm (revision 0) +++ lams_build/lib/spring/spring.vm (revision 29276ae77ec41cd93deff18fc89fd656d2ad3ed2) @@ -0,0 +1,294 @@ +#** + * spring.vm + * + * This file consists of a collection of Velocity macros aimed at easing + * some of the common requirements of web applications - in particular + * handling of forms. + * + * Spring's Velocity support will automatically make this file and therefore + * all macros within it available to any application using Spring's + * VelocityConfigurer. + * + * To take advantage of these macros, the "exposeSpringMacroHelpers" property + * of the VelocityView class needs to be set to "true". This will expose a + * RequestContext under the name "springMacroRequestContext", as needed by + * the macros in this library. + * + * @author Darren Davison + * @author Juergen Hoeller + * @since 1.1 + *# + +#** + * springMessage + * + * Macro to translate a message code into a message. + *# +#macro( springMessage $code )$springMacroRequestContext.getMessage($code)#end + +#** + * springMessageText + * + * Macro to translate a message code into a message, + * using the given default text if no message found. + *# +#macro( springMessageText $code $text )$springMacroRequestContext.getMessage($code, $text)#end + +#** + * springUrl + * + * Takes a relative URL and makes it absolute from the server root by + * adding the context root for the web application. + *# +#macro( springUrl $relativeUrl )$springMacroRequestContext.getContextPath()${relativeUrl}#end + +#** + * springBind + * + * Exposes a BindStatus object for the given bind path, which can be + * a bean (e.g. "person") to get global errors, or a bean property + * (e.g. "person.name") to get field errors. Can be called multiple times + * within a form to bind to multiple command objects and/or field names. + * + * This macro will participate in the default HTML escape setting for the given + * RequestContext. This can be customized by calling "setDefaultHtmlEscape" + * on the "springMacroRequestContext" context variable, or via the + * "defaultHtmlEscape" context-param in web.xml (same as for the JSP bind tag). + * Also regards a "springHtmlEscape" variable in the template context. + * + * Producing no output, the following context variable will be available + * each time this macro is referenced: + * + * $status : a BindStatus instance holding the command object name, + * expression, value, and error codes and messages for the path supplied + * + * @param $path : the path (string value) of the value required to bind to. + * Spring defaults to a command name of "command" but this can be overridden + * by user config. + *# +#macro( springBind $path ) + #if("$!springHtmlEscape" != "") + #set( $status = $springMacroRequestContext.getBindStatus($path, $springHtmlEscape) ) + #else + #set( $status = $springMacroRequestContext.getBindStatus($path) ) + #end +#end + +#** + * springBindEscaped + * + * Similar to springBind, but takes an explicit HTML escape flag rather + * than relying on the default HTML escape setting. + *# +#macro( springBindEscaped $path $htmlEscape ) + #set( $status = $springMacroRequestContext.getBindStatus($path, $htmlEscape) ) +#end + +#** + * springFormInput + * + * Display a form input field of type 'text' and bind it to an attribute + * of a command or bean. + * + * @param path the name of the field to bind to + * @param attributes any additional attributes for the element (such as class + * or CSS styles or size + * + *# +#macro( springFormInput $path $attributes ) + #springBind($path) + $!status.value +#end + +#** + * springFormSingleSelect + * + * Show a selectbox (dropdown) input element allowing a single value to be chosen + * from a list of options. + * + * The null check for $status.value leverages Velocity's 'quiet' notation rather + * than the more common #if($status.value) since this method evaluates to the + * boolean 'false' if the content of $status.value is the String "false" - not + * what we want. + * + * @param path the name of the field to bind to + * @param options a map (value=label) of all the available options + * @param attributes any additional attributes for the element (such as class + * or CSS styles or size +*# +#macro( springFormSingleSelect $path $options $attributes ) + #springBind($path) + +#end + +#** + * springFormMultiSelect + * + * Show a listbox of options allowing the user to make 0 or more choices from + * the list of options. + * + * @param path the name of the field to bind to + * @param options a map (value=label) of all the available options + * @param attributes any additional attributes for the element (such as class + * or CSS styles or size +*# +#macro( springFormMultiSelect $path $options $attributes ) + #springBind($path) + +#end + +#** + * springFormRadioButtons + * + * Show radio buttons. + * + * @param path the name of the field to bind to + * @param options a map (value=label) of all the available options + * @param separator the html tag or other character list that should be used to + * separate each option. Typically ' ' or '
' + * @param attributes any additional attributes for the element (such as class + * or CSS styles or size +*# +#macro( springFormRadioButtons $path $options $separator $attributes ) + #springBind($path) + #foreach($option in $options.keySet()) + ' + * @param attributes any additional attributes for the element (such as class + * or CSS styles or size +*# +#macro( springFormCheckboxes $path $options $separator $attributes ) + #springBind($path) + #foreach($option in $options.keySet()) + '. + * @param classOrStyle either the name of a CSS class element (which is defined in + * the template or an external CSS file) or an inline style. If the value passed in here + * contains a colon (:) then a 'style=' attribute will be used, else a 'class=' attribute + * will be used. +*# +#macro( springShowErrors $separator $classOrStyle ) + #foreach($error in $status.errorMessages) + #if($classOrStyle == "") + ${error} + #else + #if($classOrStyle.indexOf(":") == -1) + #set($attr="class") + #else + #set($attr="style") + #end + ${error} + #end + ${separator} + #end +#end + +#** + * springCloseTag + * + * Simple macro to close an HTML tag that has no body with '>' or '/>', + * depending on the value of a 'springXhtmlCompliant' variable in the + * template context. + *# +#macro( springCloseTag )#if($springXhtmlCompliant)/>#else>#end #end Index: lams_build/lib/spring/src/spring_src.zip =================================================================== diff -u -rb11fdf8e6de8f399b37b5382808063fd323d2958 -r29276ae77ec41cd93deff18fc89fd656d2ad3ed2 Binary files differ Index: lams_build/master-build.xml =================================================================== diff -u -ra04acdceafa4034d79c8228ff061a97f5fe71a0e -r29276ae77ec41cd93deff18fc89fd656d2ad3ed2 --- lams_build/master-build.xml (.../master-build.xml) (revision a04acdceafa4034d79c8228ff061a97f5fe71a0e) +++ lams_build/master-build.xml (.../master-build.xml) (revision 29276ae77ec41cd93deff18fc89fd656d2ad3ed2) @@ -117,6 +117,7 @@ + Index: lams_common/src/java/org/lamsfoundation/lams/test/AbstractLamsStrutsTestCase.java =================================================================== diff -u -r0b2737221177ec6fb88f447aa647f9413f4373f8 -r29276ae77ec41cd93deff18fc89fd656d2ad3ed2 --- lams_common/src/java/org/lamsfoundation/lams/test/AbstractLamsStrutsTestCase.java (.../AbstractLamsStrutsTestCase.java) (revision 0b2737221177ec6fb88f447aa647f9413f4373f8) +++ lams_common/src/java/org/lamsfoundation/lams/test/AbstractLamsStrutsTestCase.java (.../AbstractLamsStrutsTestCase.java) (revision 29276ae77ec41cd93deff18fc89fd656d2ad3ed2) @@ -125,7 +125,7 @@ Session s = holder.getSession(); s.flush(); TransactionSynchronizationManager.unbindResource(sessionFactory); - SessionFactoryUtils.closeSessionIfNecessary(s, sessionFactory); + SessionFactoryUtils.releaseSession(s, sessionFactory); } } Index: lams_common/src/java/org/lamsfoundation/lams/test/AbstractLamsTestCase.java =================================================================== diff -u -r0b2737221177ec6fb88f447aa647f9413f4373f8 -r29276ae77ec41cd93deff18fc89fd656d2ad3ed2 --- lams_common/src/java/org/lamsfoundation/lams/test/AbstractLamsTestCase.java (.../AbstractLamsTestCase.java) (revision 0b2737221177ec6fb88f447aa647f9413f4373f8) +++ lams_common/src/java/org/lamsfoundation/lams/test/AbstractLamsTestCase.java (.../AbstractLamsTestCase.java) (revision 29276ae77ec41cd93deff18fc89fd656d2ad3ed2) @@ -94,7 +94,7 @@ Session s = holder.getSession(); s.flush(); TransactionSynchronizationManager.unbindResource(sessionFactory); - SessionFactoryUtils.closeSessionIfNecessary(s, sessionFactory); + SessionFactoryUtils.releaseSession(s, sessionFactory); } } Index: lams_common/src/java/org/lamsfoundation/lams/util/CustomizedOpenSessionInViewFilter.java =================================================================== diff -u -r9ba1a07a01bccc9db69601d6ac67cedaf0cbcaa5 -r29276ae77ec41cd93deff18fc89fd656d2ad3ed2 --- lams_common/src/java/org/lamsfoundation/lams/util/CustomizedOpenSessionInViewFilter.java (.../CustomizedOpenSessionInViewFilter.java) (revision 9ba1a07a01bccc9db69601d6ac67cedaf0cbcaa5) +++ lams_common/src/java/org/lamsfoundation/lams/util/CustomizedOpenSessionInViewFilter.java (.../CustomizedOpenSessionInViewFilter.java) (revision 29276ae77ec41cd93deff18fc89fd656d2ad3ed2) @@ -74,6 +74,6 @@ * @param sessionFactory the SessionFactory that this filter uses */ protected void closeSession(Session session, SessionFactory sessionFactory) { - SessionFactoryUtils.closeSessionIfNecessary(session, sessionFactory); + SessionFactoryUtils.releaseSession(session, sessionFactory); } }