Skip to end of metadata
Go to start of metadata

Table of Contents:

2.4.x to 2.5.0-M6

KULRICE-8195   -  Add suffix to id from groups id
  • For parts of a group (header and header groups, help, validation messages, instructional text, constraint message) added a suffix to ids from groups id
KULRICE-10443 -  Ability to use dialogs for confirmations boxes

This actually included a nearly full rewrite of dialogs. Included in this was moving the implementation from lightbox to Bootstrap modal. Several enhancements were added and changes made to existing support to make the component more friendly to work with.

The library demo for dialog groups will serve as a good resource (including demos for added functionality):

The following bean name changes were made:

2.4 Bean Name2.5 Bean Name
Did Not ExistUif-DialogGroup-OkCancelExpl
Uif-True-False-DialogGroupRemoved, just override footer buttons
Uif-Checkbox-DialogGroupRemoved, just override dialog explanation
Uif-RadioButton-DialogGroupRemoved, just override dialog explanation
Uif-DialogResponseRemoved, there is no input field for the response anymore. It is returned by the buttons to script or controller code
Did Not ExistUif-DialogDismissButton, used in confirmation dialog to dismiss the dialog and return 'false'
Did Not ExistUif-DialogConfirmButton, used in confirmation dialog to dismiss the dialog and return 'true'

The following property changes were made to Dialog Group:

2.4 Dialog Group Property2.5 Dialog Group Property
responseInputFieldRemoved, the response does not populate an input now.
reverseButtonOrderRemoved, just set the order of buttons as needed
Did not existdialogCssClass, used to set the bootstrap modal class (small, medium(default), or large)
Did not existonHideDialogScript, handler for the hide modal event

Server Dialogs

Code for server side dialogs has also changed to be more efficient.

2.4 Controller Dialog
2.5 Controller Dialog
  • First we determine whether the dialog has been shown yet by getting the DialogResponse object using the form's getDialogResponse(dialogId) method
  • If the returned DialogResponse is null, this means the dialog has not been shown
  • We can show a dialog by calling the base controller method showDialog. The first parameter is the ID for the dialog we want to show. The second parameter is a boolean indicating whether we are showing a confirmation dialog or not. If we are showing a confirmation, the framework will not trigger our controller method again if the user selected the false (no) option. This means if the DialogResponse object is not null, we have shown the dialog and the user selected true (yes)

For non-confirmation server dialogs, we can get the response to our dialog using the getResponse method of the DialogResponse object:

2.5 Controller Dialog with Response

Collection Group

Add line through dialogs was also changed to use the new implementation. In addition, these property names on CollectionGroup were changed:

  • addViaLightBox renamed to addWithDialog
  • addViaLightBoxAction renamed to addWithDialogAction

The following beans were renamed:

  • Uif-AddViaLightBoxAction renamed to Uif-AddWithDialogAction

KULRICE-7607 - Using Uif_TableCollectionSection, sequencePropertyName of date doesn't sort
  • Modified sequence field sorting. See library table collection samples.
KULRICE-9783 - Support ability to explicitly set the sort type (string,number,currency) within a collection
  • Added 'sortAs' property to DataField and LinkField objects. See library table collection samples.
KULRICE-12302 - Enhance document service and document controller base to allow event objects
  • Added interface and base class for RuleEvent to allow for event objects.
  • Renamed KualiDocumentEvent to DocumentEvent which now extends the above newly created RuleEvent (similar behavior is reflected with the base classes).
  • Edited code to reflect the document service and the rule service to now take and process the RuleEvent/DocumentEvent.
  • Added functionality to allow custom rule processing.

KULRICE-8889 - Buttons at bottom of maintenance pages vary across each other

  • Made buttons more consistent. Also the primary button should be on the right and all other buttons secondary.
KULRICE-11977 - Collection add line and line item enter key support implementation
  • Added support for controls and collections for the enter key in controls
KULRICE-11978 - Enter key component attribute and primaryAction flag
  • Added support for action items for the enter key
KULRICE-11086 - Tab Groups converted to use Bootstrap Tabs
  • This change changed the js implementation and functionality of tabs
  • changes
    • tabContentClass was eliminated
    • tabNavClass was eliminated
  • NavigationGroup's name was changed to TabNavigationGroup mirroring the SidebarNavigationGroup name standard
    • navigationType property was eliminated
  • Markup produced by the tabNavigationGroup.ftl was altered
  • Tab positioning was fixed
  • js files for now unused navigation types were eliminated
  • Configuration should remain largely unaltered
KULRICE-11700 - Tooltips converted to Bootstrap implementation (called popover)
  • All tooltips now use the popover js implementation from bootstrap
  • This change should be seamless unless you are calling the bubblepopup plugin directly, any calls that use the old plugin must be converted to use popover
  • Content must have a width that does not exceed their visible content for the tooltip to appear correctly over it
KULRICE-11685 - CssGridLayout redesign
  • The css grid layout markup output has changed drastically to output a single container div per a group with "cell" divs for each item.  The visual result will be extremely similar or the same in most cases that are already using CssGridLayout
  • The CssGridLayout configuration should largely remain the same except some options were eliminated or renamed
    • conditionalRowCssClasses eliminated because not needed in new output

    • rowLayoutCssClass eliminated because not needed in new output

    • defaultItemColSpan was renamed to defaultItemSize
    • CssGridSizes defaultItemSizes was added for more fine grain control
    • Multiple properties internal (non-settable) were eliminated/added in the classes
  • CssGridLabelColumnLayoutManager had the following properties added for more fine grained control
    • CssGridSizes labelColumnSizes

    • CssGridSizes fieldColumnSizes

  • CssGridSizes is a new object on all components and for some properties on these layout managers, which allows full control over the size of content at multiple screen sizes when using CssGridLayout groups
  • It is recommended that developers view the demos and labs associated with this new functionality before using it
KULRICE-9922 - refactored deleteMatching on JpaPersistenceProvider to utilize JPA 2.1 CriteriaDelete
  • To avoid accidental delete of all records in a table the deleteMatching method doesn't accept empty criteria anymore.
KULRICE-12646 - Added new methods deleteAll and findAll to the PersistenceProvider
  • Any custom classes extending the PersistenceProvider interface or implementations may need to implement or override the new deleteAll and findAll methods.

2.5.0-M2 to 2.5.0-M3

KULRICE-5637  - commons-httpclient has been eol'd. We should use org.apache.httpcomponents:httpclient
  • Note that all of the standard services in Rice are exported either as SOAP or REST endpoints, and that the HttpClient is not involved in the client call chain to those services.  This limits the impact to legacy applications that have not converted the services they export to the bus to one of those two forms.  You can tell if your application could potentially be impacted by seeing if you have beans in your spring configuration with the class
  • Legacy configuration parameters:
    • Many of the rice-config.xml parameters that were previously honored by HttpInvokerConnector when creating the clients used for java service connections (non-SOAP and non-REST) are no longer supported.  These configuration parameters all start with "http.", although it should be noted that there are a few parameters with that same prefix that don't apply to HttpClients (such as http.port and http.service.url). 
    • Following is the list of parameters that are still supported:
      • http.protocol.expect-continue

      • http.protocol.content-charset

      • http.protocol.cookie-policy

      • http.socket.timeout

      • http.tcp.nodelay

      • http.socket.sendbuffer

      • http.socket.receivebuffer

      • http.socket.linger

      • http.connection.timeout

      • http.connection.stalecheck

      • http.connection-manager.max-total

      • http.connection-manager.timeout

      • http.protocol.reject-relative-redirect

      • http.protocol.max-redirects

      • http.protocol.allow-circular-redirects

    • There is a possibility that these configuration options will not be sufficient for some implementations.  In that case, there is a bean that can be overridden to customize the HttpComponents HttpClients.  You will want to add an override Spring configuration file to your project, and point to your override file by adding a param to your application's config.xml similar to this:

      • <param name="rice.ksb.additionalSpringFiles">classpath:edu/yourschool/rice/ksb/YourKsbOverrideSpringBeans.xml</param>
      • The bean id you will be overriding is "rice.ksb.httpClientConfigurer".
      • Your custom class must implement org.kuali.rice.ksb.messaging.serviceconnectors.HttpClientConfigurer, and you will probably find it useful to extend org.kuali.rice.ksb.messaging.serviceconnectors.DefaultHttpClientConfigurer.
  • Service Removal Exceptions:
    • Note that there is a possibility that this change of http clients will render incomplete the list of serviceRemovalExceptions in org.kuali.rice.ksb.messaging.BusClientFailureProxy.  These are the exceptions that, if caught by the client service proxy (BusClientFailureProxy), will result in attempting to "fail over" to another endpoint for that service.  The ability to inject a custom list of Exceptions via a Spring bean has been added to that class in case the need should arise.   The bean id that can be overridden for this purpose is "rice.ksb.serviceRemovalExceptions" which is a List of exception Classes.
KULRICE-10432  - Allow Action Buttons to determine whether they show on New sides of a Maintenance document
  • Maintenance documents can now include an Action Button to display on the New side.
  • Changed property "idSuffix" in to comparableId ComparableInfo.  This is now used in CompareFieldCreateModifier as a new context variable renderCompareSaveButton . The comparableId is suffixed with a 0 or 1 depending on which column we are creating.  The action button uses a render flag to determine if it displays in the New column.  
  • See Travel Company Labs Maintenance Documents - Maintenance Edit Sample - Action Button.
KULRICE-12626 - Improvements on binding/method security
  • Method access is allowed for all GET requests.
  • Method access is allowed for POST requests without the @MethodAccessible annotation (the application keeps track and allows access to methods configured on the view), and with it.
  • Property binding is allowed for GET requests if the methodToCall matches one of the listed methods in the parameter methodToCalls configured on the @RequestAccessible annotation.
KULRICE-12734 - Update default values to use a boolean variable rather than a list
  • Setting default values need to occur on the controller. This is because values set prior to the lifecycle running, could be over written. The variable that controls whether default values on fields should be added was viewsThatNeedDefaultValuesApplied. It was determined that we could simplify the process by making this variable a boolean since there will be at most one view. Any usage of viewsThatNeedDefaultValuesApplied should be updated to use applyDefaultValues.

2.5.0-M3 to 2.5.0-M4

KULRICE-10889  - Look into how base controller functionality is provided

This work involved offering use of provided framework controller functionality through composition rather than inheritance. The composition model offers more flexibility in how the provided functionality is used, and facilitates better testing.

Controller services (interface and implementation) were created to contain the controller code. The base controllers are still in place for those who wish to continue using inheritance, but they now simply delegate to the services.

Effort was also given to simplify the signatures of controller methods. Note, this does not limit the parameters that can be accepted by custom application methods.


Some base controllers were moved to different packages:

  • org.kuali.rice.krad.web.controller.LookupController moved to org.kuali.rice.krad.lookup.LookupController
  • org.kuali.rice.krad.web.controller.InquiryController moved to org.kuali.rice.krad.inquiry.InquiryController
  • org.kuali.rice.krad.web.controller.DocumentControllerBase moved to org.kuali.rice.krad.document.DocumentControllerBase
  • org.kuali.rice.krad.web.controller.MaintenanceDocumentController moved to org.kuali.rice.krad.maintenance.MaintenanceDocumentController
  • org.kuali.rice.krad.web.controller.TransactionalDocumentControllerBase moved to org.kuali.rice.krad.document.TransactionalDocumentControllerBase
  • org.kuali.rice.krad.web.controller.InitiatedDocumentInfoController moved to org.kuali.rice.krad.document.InitiatedDocumentInfoController

The following controller methods were renamed:

  • UifControllerBase#getUIFModelAndView methods renamed to getModelAndView
  • MaintenanceDocumentController
    • setupMaintenance renamed to setupMaintenanceDocument
    • maintenanceEdit renamed to setupMaintenanceEdit 
    • maintenanceCopy renamed to setupMaintenanceCopy
    • maintenanceNewWithExisting renamed to setupMaintenanceNewWithExisting
    • maintenanceDelete renamed to setupMaintenanceDelete
    • downloadBoAttachment renamed to downloadDataObjectAttachment

Most base controller methods now accept a single parameter, the form. Note also, the ModelAttribute("KualiForm") annotation is no longer needed for the form parameter (although can be specified if you have multiple forms in the session).

Some controller methods still use the request, which is now available through the form.

UifControllerHelper was removed and its methods moved to org.kuali.rice.krad.web.service.impl.ModelAndViewServiceImpl

Because the implementation has moved to controller services, some protected methods are no longer available for override with inheritance. The following table shows were these protected methods have moved to:

2.4 Controller Protected Method2.5 Service Method
DocumentControllerBase#loadDocumentDocumentControllerServiceImpl#loadDocument (protected)
DocumentControllerBase#createDocumentDocumentControllerServiceImpl#createDocument (protected)
DocumentControllerBase#performWorkflowActionDocumentControllerServiceImpl#performWorkflowAction (public)
DocumentControllerBase#checkAndWarnAboutSensitiveDataDocumentControllerServiceImpl#checkAndWarnAboutSensitiveData (protected)
DocumentControllerBase#combineAdHocRecipientsDocumentControllerServiceImpl#combineAdHocRecipients (protected)
DocumentControllerBase#buildAuthorizationExceptionDocumentControllerServiceImpl#buildAuthorizationException (protected)
MaintenanceDocumentControllerBase#setupMaintenanceMaintenanceDocumentControllerServiceImpl#setupMaintenanceDocument (public)

Finally, the createInitialForm method no longer takes the request as a parameter.

Create Initial Form Ex.

2.5.0-M4 to 2.5.0-M5

KULRICE-12865 - Data cannot be retrieved due to an unexpected error

This work upgraded Spring to 4.0.5 with subsequent updates to Servlet 3.0.1.

KULRICE-12880 Apply Spring 4.0.5 upgrade
Update Web Application Deployment Descriptors (version and xsd)

     From    <web-app xmlns="" xmlns:xsi="" version="2.5"

    To           <web-app xmlns="" xmlns:xsi="" version="3.0"

Update Spring XML  Beans DTD

    From    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "">

    To         <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "">


KULRICE-12928  - Changes to Inquiry, Link, and Quickfinder dialogs to use bootstrap Modal
  • js functions:
    • createLightBoxPost renamed to showLookupDialog
    • handleLightboxOpen name changed to openLinkInDialog and param signature changed
    • showDirectInquiry signature changed
    • isCalledWithinLightbox is now isCalledWithinDialog
  • Link:
    • lightBox property removed
    • linkDialogId property added
    • openInLightbox changed to openInDialog
  • Quickfinder:
    • lightBox property removed
    • lookupDialogId property added
    • openInDialog property added
  • Form:
    • renderedInLightBox is now renderedInDialog
  • url param:
    • renderedInLightBox is now renderedInDialog

UX change - Read-only fields are now wrapped in a span and are tab-able

2.5.0-M5 to 2.5.0-M6

KULRICE-12563 - Data cannot be retrieved due to an unexpected error

For this jira, we upgraded a good number of dependencies in Rice.  In many cases we had a choice of how aggressive an upgrade to make.  The decisions we made in these cases were to minimize impact, largely due to time constraints: we wouldn't have been able to handle all the refactoring needed to be more aggressive.  The following table lists the direct dependencies that were upgraded as part of the work on this issue: 


Maven coordinates

Product Name

From Ver

To Ver

Latest Avail Ver



Bitronix Transaction Manager2.1.2 (Oct '11)2.1.4 (Sep '13)2.1.4 (Sep '13) 


CXF2.7.0 (Oct '12)2.7.12 (Jul '14)3.0.1 (Jul '14)Due to the immaturity of CXF 3 we chose to go with the latest 2.7 patch
net.sf.ehcache:ehcache-coreEhCache2.5.0 (Nov '11)2.6.9 (Apr '14)2.8.3 (Jun '14)2.6.9 is the latest version that uses the same groupId and artifactId as our dependencies use. After that version, ehcache-core uses the groupId net.sf.ehcache.internal, and is not intended to be depended on directly.

There are some changes that affect cache construction starting in 2.6.0: you can no longer have multiple caches with the same name. Since we let Spring construct the caches for us, and we don't use duplicate names, we should be fine. Guava11 (Dec '11)17 (Apr '14)17 (Apr '14)Had to refactor around one deprecated method (MapMaker().softKeys(), see, but that was the full impact for Rice.
org.apache.httpcomponents:httpclientHttpComponents HttpClient4.3.3 (Feb '14)4.3.4 (May '14)4.3.5 (Jul '14)4.3.5 just came out July 30th.
org.eclipse.persistence:org.eclipse.persistence.core org.eclipse.persistence:org.eclipse.persistence.jpaEclipseLink2.5.1 (Sep '13)2.5.2 (Jul '14)2.5.2 (Jul '14) 
Jackson1.8.8 (Jan '12)1.9.13 (Jul '13)2.4.2 (Aug '14)Upgrading to Jackson 2.x is not backwards compatible (
jaxen:jaxenJaxen1.1.3 (Nov '11)1.1.6 (Dec '13)1.1.6 (Dec '13) 
org.javassist:javassistJavassist3.1.5.0-GA (Jul '11)3.18.2-GA (May '14)3.18.2-GA (May '14) 
org.jdom:jdomJDOM1.1 (Sep '08)1.1.3 (Feb '12)2.0.2 (Jun '12)JDOM 2.x is not backwards compatible (
joda-time:joda-timejoda-time2.0 (Jul '11)2.4 (Jul '14)2.4 (Jul '14) 
log4j:log4jlog4j1.2.16 (Mar '10)1.2.17 (May '12)2.0.1 (May '12)The latest in the 1.2 line. Moving to 2.0.1 requires some refactoring in Rice.
javax.mail:mail -> com.sun.mail:javax.mailjavax.mail1.4.4 (Jan '11)1.5.2 (May '14)1.5.2 (May '14) (Jul '12)1.6.16 (Jul '14)2.0.1 (Jul '14 - new groupId org.apache.wss4j)The version selected matches the dependency in cxf-rt-ws-security, and is the latest patch version for 1.6 - Annotations for Software Defect Detection1.3.9 (Aug '09)2.0.3 (Dec '13)2.0.3 (Dec '13) 
slf4j1.6.4 (Oct '11)1.7.7 (Apr '14)1.7.7 (Apr '14) 
org.codehaus.plexus:plexus-utilsPlexus Utils3.0.10 (Nov '12)3.0.17 (Jan '14)3.0.17 (Jan '14) 
commons-codec:commons-codecCommons Codec1.6 (Dec '11)1.9 (Dec '13)1.9 (Dec '13) 
commons-io:commons-ioCommons IO2.1 (Oct '11)2.4 (Jun '12)2.4 (Jun '12) 
commons-lang3:commons-lang3Commons Lang3.2.1 (Jan '14)3.3.2 (Apr '14)3.3.2 (Apr '14) 
commons-pool:commons-poolCommons Pool1.5.7 (Dec '11)1.6 (Jan '12)2.2 (Feb '14 - maven coordinates change to org.apache.commons:commons-pool2)Commons Pool and DBCP are linked together -- if we are going to commons-dbcp2, we need to go to commons-pool2 as well.
commons-digester:commons-digesterCommons Digester2.0 (Jan '09)2.1 (Sep '10)3.2 (Dec '11 - maven coordinates change to org.apache.commons:commons-digester3) 
commons-validator:commons-validatorCommons Validator1.3.1 (Dec '06)1.4.0 (Jan '12)1.4.0 (Jan '12) 
Xalan2.7.1 (Sep '08)2.7.2 (Jul '14)2.7.2 (Jul '14) 
xerces:xercesImplXerces2.9.1 (Oct '08)2.11.0 (Feb '13)2.11.0 (Feb '13) 
org.apache.velocity:velocityVelocity1.6.4 (May '10)1.7 (Nov '10)1.7 (Nov '10)Verified with Larry that the impacting changes won't affect KS ( Compilerv20130603 (Jun '13)v20140730 (Aug '14)v20140730 (Aug '14) 
org.quartz-scheduler:quartzQuartz1.8.4 (Jul '10)1.8.6 (Jan '12)2.2.1 (Sep '13)We need to make database changes to get off Quartz 1.8.x
cglib:cglib-nodepcglib2.2.2 (May '11)3.1 (Dec '13)3.1 (Dec '13) 
javax.validation:validation-apiBean Validation1.0.0.GA (Feb '10)1.1.0.Final (Apr '13)1.1.0.Final (Apr '13) 
AspectJ1.6.8 (Jan '10)1.8.1 (Jun '14)1.8.1 (Jun '14) 
org.glassfish:javax.jsonJSON Processing1.0.1 (Jun '13)1.0.4 (Nov '13)1.0.4 (Nov '13) 
xml-apis:xml-apisJava API for XML Processing (JAXP)JDK bundled JAXP1.4.01 (Aug '11)1.4.01 (Aug '11)I had to bring this in to get the newer Xerces version to work.

The JDK bundled JAXP will vary with the JDK version, see the table near the top of

KULRICE-13113 - Data cannot be retrieved due to an unexpected error

Rice's dependencies on both cas-client-core and spring-security-cas have been removed.  The impact of this change is that projects getting these dependencies transitively from Rice will need to add that configuration to their poms, and implementors that use CAS will need to either add those dependencies to their customized Rice poms, or add the needed jars to tomcat/lib or the equivalent shared library location in their application servers.

KULRICE-12079 - Data cannot be retrieved due to an unexpected error

It is now possible to edit the fields (input fields including sub-collection input fields) of a line in a collection within a modal dialog. You can specify the edit line dialog's items, but if not provided, it uses the items of the collection by default. Sub-collections in row details group, and sub-collections are also editable when editing the field that the sub-collection belongs to. Again for sub-collections you can specify the edit line dialog's sub-collection items, but if not provided, it uses either, the items of the row details group if that's where the sub-collection is, or, the items of the sub-collection if its in the sub-collections group. A readOnly field or a line with at least 1 unauthorized field in it is not editable.

When you open the page with the edit line enabled, the empty placeholder for each line's dialog is created. When you click on the edit line in dialog button, the dialog contents are retrieved via an ajax call to the server and the dialog is displayed. When you either, save, close (no save), or cancel (no save), the dialog is removed, and dialog data object is cleared. On refresh the empty placeholders are put in place again. The support for look-up bound to an input field is not complete in that once you select the value, the value is populated in the dialog but the dialog then disappears due to the refresh performed from the lookup-view on the parent (see KULRICE-13186 - Data cannot be retrieved due to an unexpected error  for more details).

2.5.0 to 2.5.1

KULRICE-13335 - Data cannot be retrieved due to an unexpected error

The property of a dialog group, previously called 'destroyContentsOnClose', has now been renamed to 'destroyDialogOnHidden', which removes the dialog and it's contents.

  • No labels