This is a work in progress. Cross checking with other notes is highly recommended.

Overview

From KR 1.0.3 to KR 2.0 there have been the following versions:

Summary of Changes

1.0.3 -> 1.0.3.1

Release Notes: https://wiki.kuali.org/download/attachments/309465683/release-notes-1.0.3.1.pdf?version=1&modificationDate=1297449754000

This release primarily consisted of bug fixes.

1.0.3.1 -> 1.0.3.2

Release Notes: https://wiki.kuali.org/download/attachments/311494805/rice-1.0.3.2-release-notes.pdf?version=1&modificationDate=1308328955000

This release primarily consisted of the following items:

1.0.3.2 -> 1.0.3.3

Release Notes: https://wiki.kuali.org/download/attachments/311824598/rice-1_0_3_3_release-notes.pdf?version=1&modificationDate=1315602768000

This release primarily consisted of bug fixes.

1.0.3.3 -> 2.0

B1 Release Notes: http://site.kuali.org/rice/2.0.0-b1/reference/html/release-notes.html
B2 Release Notes: http://site.kuali.org/rice/2.0.0-b2/reference/html/release-notes.html
B3 Release Notes: http://site.kuali.org/rice/2.0.0-b3/reference/html/release-notes.html
B4 Release Notes: http://site.kuali.org/rice/2.0.0-b4/reference/html/release-notes.html
B6 Release Notes: http://site.kuali.org/rice/2.0.0-b6/reference/html/release-notes.html
B7 Release Notes: http://site.kuali.org/rice/2.0.0-b7/reference/html/release-notes.html

Beta Test Home: https://wiki.kuali.org/display/KULRICE/Rice+2.0+Beta+Testing

rc1 Documentation: http://site.kuali.org/rice/2.0.0-rc1/reference/html/portal.html
rc2 Documentation: http://site.kuali.org/rice/2.0.0-rc2/reference/html/portal.html

Link to Kuali Source Code

Beta
Official Releases

Upgrade Steps

The upgrade process for client applications can be broken down into the following steps:

  1. Database Updates
  2. Web Content Updates
  3. Library Updates
  4. Account for impacting changes in code

Database Updates

Database changes due to the DOC_HDR_ID changing from NUMBER to VARCHAR2(40)

The DOC_HDR_ID has changed from a NUMBER to a VARCHAR2(40) in the 2.0 code.   If the client application database stores DOC_HDR_ID in any tables, we strongly recommend that these data types are modified even if the only values stored for DOC_HDR_ID are numeric.   However, it won't be strictly required that a client application change their data types for DOC_HDR_ID since KEW will still generate a value for document id that could be stored as a number.

KNS Client Applications Database

Updates to KNS Database Tables

Two tables have minor changes in the KNS client application database.   This change could be done easily in advance of the upgrade, because it only consists of adding two columns to a table.   The scripts to perform the KNS database conversion on a client application database can be found in the rice project at the following location:

Web Content Updates

There  have been various changes to the web content, which will need to be updated in KNS client applications.   Only the KNS related items which have changed are below.   This list consists only of items that have had meaningful changes, as there were a number of files which had only copyright or description changes.

If your project contains additional files unrelated to the KNS, it would be wise to simply replace all Kuali Rice web content files in the client application.

In /src/main/webapp/WEB-INF/,  the following should NOT be replaced as they are client app specific.

Location/File

Added

Changed

Removed

/src/main/webapp/WEB-INF/

 

 

 

validator-rules.xml

 

(plus)

 

/src/main/webapp/kr/images/

Added

Changed

Removed

errormark.gif

 

 

(plus)

errormark.png

(plus)

 

 

/src/main/webapp/kr/scripts/

Added

Changed

Removed

core.js

 

(plus)

 

objectInfo.js

 

(plus)

 

/src/main/webapp/kr/static/images/

Added

Changed

Removed

buttonsmall_deselectallfromallpages.png

(plus)

 

 

buttonsmall_deselectallfromthispage.png

(plus)

 

 

buttonsmall_selectallfromallpages.png

(plus)

 

 

buttonsmall_selectallfromthispage.png

(plus)

 

 

errormark.png

(plus)

 

 

errormark.gif

 

 

(plus)

/src/main/webapp/kr/WEB-INF/

Added

Changed

Removed

struts-config.xml

 

(plus)

 

validator-rules.xml

 

(plus)

 

/src/main/webapp/kr/WEB-INF/jsp/

Added

Changed

Removed

AuthorizationException.jsp

 

(plus)

 

KualiExceptionIncident.jsp

 

(plus)

 

KualiLookup.jsp

 

(plus)

 

KualiMaintenanceDocument.jsp

 

(plus)

 

TextArea.jsp

 

(plus)

 

tldHeader.jsp

 

(plus)

 

/web/src/main/webapp/kr/WEB-INF/tlds/    
*Note - directory can also be removed

Added

Changed

Removed

c.tld

 

 

(plus)

displaytag-el.tld

 

 

(plus)

displaytag.tld

 

 

(plus)

fmt.tld

 

 

(plus)

fn.tld

 

 

(plus)

kuali-func.tld

 

 

(plus)

sql.tld

 

 

(plus)

struts*.tld

 

 

(plus)

x.tld

 

 

(plus)

/src/main/webapp/WEB-INF/jsp/

Added

Changed

Removed

dummy_login.jsp

 

(plus)

 

moduleLocked.jsp

(plus)

 

 

recurseTreeNode.jsp

(plus)

 

 

/src/main/webapp/WEB-INF/tags/kr/

Added

Changed

Removed

ALL files, copy over the entire folder

 

(plus)

 

Library Updates

  • All applications

There are a few library changes that go along with the Rice 2.0 version.    You will need to update the libraries associated with your existing project as necessary in order to react to this.   Most of the libraries listed below can be found by downloading the rice 2.0 binary distribution from http://kuali.org/rice/download/beta (Beta) or http://rice.kuali.org/download (post-beta).  

What follows are tables detailing libraries added, removed, and changed from Rice 1.0.3 to Rice 2.0.  They also indicate which libraries are required for remote (thin client), embedded, and KNS integration.  If a library isn't required in any situation, that likely means it's used only by unit testing or on the Kuali Rice Standalone server.

Even if you may not need one of the libraries listed below as a Rice dependency, your application may be using it for something else. So be sure to verify whether or not you are using a particular library in your application independently of Rice before you remove it from your project.

Libraries Added between Rice 1.0.3 and 2.0

Library Added

Needed for Remote?
(aka. Thin Client)

Needed for Embedded?

Needed for KNS?

Needed for KRAD usage

Notes

aspectjrt-1.6.8.jar

(error)

(tick)

(tick)

 

 

aspectjweaver-1.6.8.jar

(error)

(tick)

(tick)


 

avalon-framework-4.1.5.jar

(error)

(tick)

(tick)


 

btm-2.1.1.jar

(question)

(question)

(question)

 

Only needed if using Bitronix for your connection pooling

carol-interceptors-1.0.1.jar

(error)

(tick)

(tick)

 

 

commons-chain-1.2.jar

??

??

??

 

 

cxf-rt-transports-common-2.3.6.jar

(error)

(tick)

(tick)

 

 

ehcache-core-2.5.0.jar

(error)

(tick)

(tick)

 

 

guava-11.0.jar

??

??

??

 

 

hibernate-core-3.6.9.Final.jar

(error)

(tick)

??

 

 

hibernate-jpa-2.0-api-1.0.1.Final.jar

(error)

(tick)

??

 

 

hsqldb-1.8.0.1.jar

??

??

??

 

 

irmi-1.1.2.jar

??

??

??

 

 

jackson-core-asl-1.8.7.jar

??

??

??

 

 

jackson-mapper-asl-1.8.7.jar

??

??

??

 

 

jacorb-2.2.3-jonas-patch-20071018.jar

??

??

??

 

 

jacorb-idl-2.2.3-jonas-patch-20071018.jar

??

??

??

 

 

jcl-over-slf4j-1.6.4.jar

(error)

(question)

(question)

 

Needed only if you use JCL

joda-time-2.0.jar

(tick)

(tick)

(tick)

(tick)

 

logkit-1.2.jar

??

??

??

 

 

serializer-2.7.1.jar

??

??

??

 

 

slf4j-api-1.6.4.jar

??

??

(tick)

 

 

slf4j-log4j12-1.6.4.jar

??

??

(tick)

 

 

spring-asm-3.1.0.RC1.jar

(tick)

(tick)

(tick)

 

 

spring-tx-3.1.0.RC1.jar

(tick)

(tick)

(tick)

 

 

spring-expression-3.1.0.RELEASE.jar

(tick)

(tick)

(tick)

 

 

spring-security-cas-3.1.0.RELEASE.jar

(tick)

(tick)

(tick)

 

 

spring-security-core-3.1.0.RELEASE.jar

(tick)

(tick)

(tick)

 

 

spring-security-core-3.1.0.RELEASE.jar

(tick)

(tick)

(tick)

 

 

spring-security-web-3.1.0.RELEASE.jar

(tick)

(tick)

(tick)

 

 

stax2-api-3.1.1.jar

 

 

 

 

 

struts-extras-1.3.10.jar

??

??

(tick)

 

 

struts-taglib-1.3.10.jar

??

??

(tick)

 

 

tiles-api-2.2.2.jar

??

??

??

(tick)

 

tiles-core-2.2.2.jar

??

??

??

(tick)

 

tiles-jsp-2.2.2.jar

??

??

??

(tick)

 

tiles-servlet-2.2.2.jar

??

??

??

(tick)

 

tiles-template-2.2.2.jar

??

??

??

(tick)

 

woodstox-core-asl-4.1.1.jar

 

 

 

 

 

Library Version Changes

Old Library Version

New Library Version

Needed for Remote?
(aka. Thin Client)

Needed for Embedded?

Needed for KNS?

Notes

asm-2.2.3.jar

asm-3.3.1.jar

(error)

(tick)

(tick)

 

bcprov-jdk15-1.45.jar

bcprov-jdk16-1.46.jar

(tick)

(tick)

(tick)

The Bouncy Castle Crypto package is used for cryptographic algorithms.

carol-2.0.5.jar

carol-3.0.6.jar

(error)

(tick)

(error)

 

cas-client-core-3.1.6.jar

cas-client-core-3.2.1.jar

(error)

(tick)

(tick)

 

cglib-nodep-2.1_3.jar

cglib-nodep-2.2.2.jar

 

 

 

 

commons-beanutils-1.7.0.jar

commons-beanutils-1.8.3-kuali.jar

??

??

(tick)

 

commons-codec-1.3.jar

commons-codec-1.6.jar

??

??

(tick)

 

commons-collections-3.2.jar

commons-collections-3.2.1.jar

(tick)

(tick)

(tick)

 

commons-dbcp-1.2.1.jar

commons-dbcp-1.4.jar

??

??

(tick)

 

commons-digester-1.6.jar

commons-digester-2.0.jar

??

??

??

 

commons-fileupload-1.2.1.jar

commons-fileupload-1.2.2.jar

(error)

(error)

(tick)

Struts dependency

commons-httpclient-3.0.1.jar

commons-httpclient-3.1.jar

 

 

(tick)

 

commons-io-1.4.jar

commons-io-2.1.jar

(error)

(error)

(error)

Used by Rice standalone server

commons-lang-2.3.jar

commons-lang-2.6.jar

(tick)

(tick)

(tick)

 

commons-pool-1.2.jar

commons-pool-1.5.7.jar

(error)

(tick)

(tick)

Used by OJB (and others)

commons-validator-1.1.4.jar

commons-validator-1.3.1.jar

(error)

(error)

(tick)

Struts dependency

cxf-api-2.2.9.jar

cxf-api-2.3.8.jar

(error)

(tick)

(tick)

Used for connecting to SOAP services over the KSB

cxf-common-schemas-2.2.9.jar

cxf-common-schemas-2.3.8.jar

(error)

(tick)

(tick)

Used for connecting to SOAP services over the KSB

cxf-common-utilities-2.2.9.jar

cxf-common-utilities-2.3.8.jar

(error)

(tick)

(tick)

Used for connecting to SOAP services over the KSB

cxf-rt-bindings-soap-2.2.9.jar

cxf-rt-bindings-soap-2.3.8.jar

(error)

(tick)

(tick)

Used for connecting to SOAP services over the KSB

cxf-rt-bindings-xml-2.2.9.jar

cxf-rt-bindings-xml-2.3.8.jar

(error)

(tick)

(tick)

Used for connecting to SOAP services over the KSB

cxf-rt-core-2.2.9.jar

cxf-rt-core-2.3.8.jar

(error)

(tick)

(tick)

Used for connecting to SOAP services over the KSB

cxf-rt-databinding-aegis-2.2.9.jar

cxf-rt-databinding-aegis-2.3.8.jar

(error)

(tick)

(tick)

Used for connecting to SOAP services over the KSB

cxf-rt-databinding-jaxb-2.2.9.jar

cxf-rt-databinding-jaxb-2.3.8.jar

(error)

(tick)

(tick)

Used for connecting to SOAP services over the KSB

cxf-rt-frontend-jaxrs-2.2.9.jar

cxf-rt-frontend-jaxrs-2.3.8.jar

(error)

(tick)

(tick)

Used for connecting to SOAP services over the KSB

cxf-rt-frontend-jaxws-2.2.9.jar

cxf-rt-frontend-jaxws-2.3.8.jar

(error)

(tick)

(tick)

Used for connecting to SOAP services over the KSB

cxf-rt-frontend-simple-2.2.9.jar

cxf-rt-frontend-simple-2.3.8.jar

(error)

(tick)

(tick)

Used for connecting to SOAP services over the KSB

cxf-rt-transports-http-2.2.9.jar

cxf-rt-transports-http-2.3.8.jar

(error)

(tick)

(tick)

Used for connecting to SOAP services over the KSB

cxf-rt-ws-addr-2.1.5.jar

cxf-rt-ws-addr-2.3.8.jar

(error)

(tick)

(tick)

Used for connecting to SOAP services over the KSB

cxf-rt-ws-security-2.1.5.jar

cxf-rt-ws-security-2.3.8.jar

(error)

(tick)

(tick)

Used for connecting to SOAP services over the KSB

cxf-tools-common-2.1.5.jar

cxf-tools-common-2.3.8.jar

(error)

(tick)

(tick)

Used for connecting to SOAP services over the KSB

db-ojb-1.0.4-patch4.jar

db-ojb-1.0.4-patch8.jar

(error)

(tick)

(tick)

 

displaytag-1.1.jar

displaytag-1.2.jar

(error)

(error)

(tick)

 

dwr-1.1.3.jar

dwr-3.0.RC2.jar

??

??

(tick)

In DWR 3.0 all logging is done through the commons-logging API.  Please see the
following website for more information:
DWR Documentation

groovy-all-minimal-1.5.4.jar

groovy-all-1.8.5.jar

(error)

(tick)

(error)

 

hibernate-commons-annotations-3.0.0.ga.jar

hibernate-commons-annotations-3.2.0.Final.jar

(error)

(tick)

(tick)

 

hibernate-entitymanager-3.3.1.ga.jar

hibernate-entitymanager-3.6.9.Final.jar

(error)

(tick)

(tick)

 

howl-logger-0.1.11.jar

howl-1.0.1-1.jar

(error)

(tick)

(tick)

 

javassist-3.3.ga.jar

javassist-3.15.0-GA.jar

(error)

(error)

(error)

 

jaxb-impl-2.1.9.jar

jaxb-impl-2.1.13.jar

(error)

(tick)

(tick)

Used for service SOAP binding on the KSB

jaxb-xjc-2.1.9.jar

jaxb-xjc-2.1.13.jar

(error)

(tick)

(tick)

Used for service SOAP binding on the KSB

jdom-1.0.jar

jdom-1.1.jar

(error)

(tick)

(tick)

 

jettison-1.2.jar

jettison-1.3.jar

(error)

(tick)

(error)


jotm-2.0.10.jar

jotm-core-2.1.10.jar

??

??

(tick)

 

jsr311-api-1.0.jar

jsr311-api-1.1.1.jar

(error)

(tick)

(tick)

 

jstl-1.1.2.jar

jstl-1.2.jar

(error)

(error)

(error)

 

jta-1.0.1B.jar

jta-1.1.jar

(error)

(tick)

(tick)

 

log4j-1.2.14.jar

log4j-1.2.16.jar

(tick)

(tick)

(tick)

 

mail-1.4.jar

mail-1.4.4.jar

??

??

??

 

neethi-2.0.4.jar

neethi-2.0.5.jar

(error)

(error)

(error)

 

spring-2.5.6.jar

spring-3.1.0.RELEASE.jar

(tick)

(tick)

(tick)

spring-3.1.0.RC1.jar can be included either as a single jar or the multiple jars listed below

spring-aop-2.5.6.jar

spring-aop-3.1.0.RELEASE.jar

(tick)

(tick)

(tick)

 

spring-beans-2.5.6.jar

spring-beans-3.1.0.RELEASE.jar

(tick)

(tick)

(tick)

 

spring-context-2.5.6.jar

spring-context-3.1.0.RELEASE.jar

(tick)

(tick)

(tick)

 

spring-context-support-2.5.6.jar

spring-context-support-3.1.0.RELEASE.jar

(tick)

(tick)

(tick)

 

spring-core-2.5.6.jar

spring-core-3.1.0.RELEASE.jar

(tick)

(tick)

(tick)

 

spring-jdbc-2.5.6.jar

spring-jdbc-3.1.0.RELEASE.jar

(tick)

(tick)

(tick)

 

spring-orm-2.5.6.jar

spring-orm-3.1.0.RELEASE.jar

(tick)

(tick)

(tick)

 

spring-tx-2.5.6.jar

spring-tx-3.1.0.RELEASE.jar

(tick)

(tick)

(tick)

 

spring-webmvc-2.5.6.jar

spring-webmvc-3.1.0.RELEASE.jar

(tick)

(tick)

(tick)

 

spring-web-2.5.6.jar

spring-web-3.1.0.RELEASE.jar

(tick)

(tick)

(tick)

 

struts-1.2.9.jar

struts-core-1.3.10.jar

??

(tick)

(tick)

 

struts-el-1.2.9.jar

struts-el-1.3.10.jar

(error)

(error)

(tick)

 

xalan-2.7.0.jar

xalan-2.7.1.jar

??

(question)

(tick)

 

XmlSchema-1.4.5.jar

XmlSchema-1.4.7.jar

??

??

(error)

 

xmlsec-1.4.3.jar

xmlsec-1.4.4.jar

(tick)

(tick)

(tick)

XML Security, used for digital signatures

wss4j-1.5.8.jar

wss4j-1.5.11.jar

(error)

(tick)

(tick)

WS-Security, used for SOAP web services

Note: As of Spring 2.5, Spring Web MVC is no longer part of the 'spring.jar' file. Spring MVC can be found in 'spring-webmvc.jar' and 'spring-webmvc-portlet.jar' in the lib/modules directory of the distribution. Furthermore, the Struts 1.x support has been factored out into 'spring-webmvc-struts.jar'.
Rice itself does not use spring-webmvc-struts.jar, but if you were including the spring-2.0.4.jar and using the spring web mvc struts functionality, spring-webmvc-struts.jar will now have to be included separately.

Libraries Removed between Rice 1.0.3 and 2.0

Library Removed

Notes

abdera-core-1.0.jar


abdera-extensions-json-1.0.jar


abdera-extensions-main-1.0.jar


abdera-i18n-1.0.jar


abdera-parser-1.0.jar


acegi-security-1.0.6.jar

 

acegi-security-cas-1.0.6.jar

 

activation-1.1.jar

 

antlr-2.7.6.jar

 

asm-attrs-1.5.3.jar

 

axiom-api-1.2.5.jar

Used by Abdera

axiom-impl-1.2.5.jar

Used by Abdera

bcel-5.1.jar

 

bsf-2.4.0.jar

 

casclient-2.1.1.jar

 

cas-server-3.0.4.jar

 

concurrent-1.3.4.jar

 

derby-10.2.2.0.jar

 

geronimo-activation_1.1_spec-1.0.2.jar

 

geronimo-annotation_1.0_spec-1.1.1.jar

 

geronimo-javamail_1.4_spec-1.3.jar

 

geronimo-jaxws_2.1_spec-1.0.jar

 

geronimo-stax-api_1.0_spec-1.0.1.jar

 

geronimo-ws-metadata_2.0_spec-1.1.2.jar

 

hibernate-3.2.6.ga.jar

 

hibernate-annotations-3.3.0.ga.jar

 

hibernate-validator-3.0.0.ga.jar

 

jaxb-api-2.1.jar

 

jaxb-xjc-2.1.13.jar

 

jaxen-1.1.3.jar

 

jboss-common-core-2.0.4.GA.ja

 

jotm_jrmp_stubs-2.0.10.jar

 

js-1.6R5.jar

 

nekohtml-0.9.5.jar

 

oscache-2.3.2.jar

replaced by ehcache-core-2.5.0.jar

persistence-api-1.0.jar

 

saaj-api-1.3.jar

 

saaj-impl-1.3.2.jar

 

spring-test-2.5.6.jar

 

standard-1.1.2.jar

 

wstx-asl-3.2.9.jar

 

xml-apis-1.0.b2.jar

 

xmlbeans-2.4.0.jar

Came in 1.0.3 as a result of the CXF upgrade

xom-1.1.jar

 

Libraries Which Have Not Changed

Library

Needed for Remote?
(aka. Thin Client)

Needed for Embedded?

Needed for KNS?

Notes

aopalliance-1.0

??

(tick)

(tick)

 

commons-logging-1.1.jar

(tick)

(tick)

(tick)

 

commons-transaction-1.1.jar

??

??

 

 

connector-api-1.5.jar

??

??

 

 

dom4j-1.6.1.jar

(error)

(tick)

(tick)

 

itext-1.3.jar

(error)

(tick)

(tick)

 

jaxb-impl-2.1.13.jar

(error)

(tick)

(tick)

 

oro-2.0.8.jar

(error)

(error)

(error)

 

spring-modules-ojb-0.8a.jar

(error)

(tick)

(tick)

 

wsdl4j-1.6.2.jar

??

??

??

 

xercesImpl-2.9.1.jar

??

??

??

 

xml-resolver-1.2.jar

??

??

??

 

xpp3_min-1.1.3.4.O.jar

(error)

(tick) (question)

(tick)

For embedded kew, required if using the EmailNode

xstream-1.2.2.jar

(error)

(tick) (question)

(tick)

For embedded kew, required if using the EmailNode

If needed, update jquery versions

For those of you who have jquery items, you will need to upgrade to the following versions:

Impacting Changes

Go back to upgrade steps

  • All applications

Configuration

Previously, all module configuration was done inside the rice bean (RiceConfigurer). This has been replaced by a modular configuration design, with the rice core being configured in a new CoreConfigurer.

Common config items which have new names:

1.0.3 Name

2.0 Name

ConfigProperties.css.files

ConfigProperties.kns.css.files

ConfigProperties.javascript.files

ConfigProperties.kns.javascript.files

rice.kim.additionalSpringFiles

rice.kim.additionalSpringFiles
rice.kew.additionalSpringFiles
rice.coreservice.additionalSpringFiles
rice.location.additionalSpringFiles
rice.KR.additionalSpringFiles


Standard configuration of "embedded" client Rice projects

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
                           http://www.springframework.org/schema/util
                           http://www.springframework.org/schema/util/spring-util-3.1.xsd">

        <!-- DATASOURCE CONFIGURATION HERE (short example, others removed for space) -->
       <bean id="krWorkflowDataSource" class="org.kuali.rice.core.framework.persistence.jdbc.datasource.XAPoolDataSource">
          <property name="transactionManager" ref="jotm" />
          <property name="driverClassName" value="${eden.datasource.driver.name}" />
          <property name="maxSize" value="${kr.datasource.pool.maxSize}" />
          <property name="minSize" value="${kr.datasource.pool.minSize}" />
          <property name="maxWait" value="${kr.datasource.pool.maxWait}" />
          <property name="validationQuery" value="${kr.datasource.pool.validationQuery}" />
          <property name="url" value="${kr.datasource.url}" />
          <property name="username" value="${kr.datasource.username}" />
          <property name="password" value="${kr.datasource.password}" />
       </bean>

       <!--  RiceConfigurer NO LONGER EXISTS, coreConfigurer is a pseudo-replacement -->

       <bean id="coreConfigurer" class="org.kuali.rice.core.impl.config.module.CoreConfigurer">
           <property name="dataSource" ref="appDataSource" />
           <property name="serverDataSource" ref="krWorkflowDataSource"/>
           <property name="nonTransactionalDataSource" ref="nonTransDataSource" />
           <property name="transactionManager" ref="jotm" />
           <property name="userTransaction" ref="jotm" />
       </bean>

       <bean id="ksbConfigurer" class="org.kuali.rice.ksb.messaging.config.KSBConfigurer" depends-on="coreConfigurer"/>

       <bean id="knsConfigurer" class="org.kuali.rice.krad.config.KRADConfigurer" depends-on="coreConfigurer"/>

       <bean id="coreServiceConfigurer" class="org.kuali.rice.coreservice.impl.config.CoreServiceConfigurer" depends-on="coreConfigurer"/>

       <bean id="kimConfigurer" class="org.kuali.rice.kim.config.KIMConfigurer" depends-on="coreConfigurer"/>

       <bean id="kewConfigurer" class="org.kuali.rice.kew.config.KEWConfigurer" depends-on="coreConfigurer"/>

</beans>


<config>

  <param name="kim.mode">EMBEDDED</param>
  <param name="kew.mode">EMBEDDED</param>

  <param name="riceapp.url">https://location.of.rice.standalone/kr2-snd/</param>
  <param name="rice.ksb.registry.serviceUrl" override="false">${riceapp.url}/remoting/soap/ksb/v2_0/serviceRegistry</param>
  <param name="rice.ksb.serviceRegistry.security" override="false">true</param>
  <param name="rice.ksb.config.allowSelfSignedSSL" override="false">false</param>

  <param name="rice.kim.additionalSpringFiles">classpath:edu/iu/uis/rice/resources/IUKimOverrideSpringBeans.xml</param>
  <param name="rice.kew.additionalSpringFiles">classpath:edu/iu/uis/rice/resources/IUKewOverrideSpringBeans.xml</param>
  <param name="rice.location.additionalSpringFiles">classpath:edu/iu/uis/rice/resources/IULocationOverrideSpringBeans.xml</param>
  <param name="rice.coreservice.additionalSpringFiles">classpath:edu/iu/uis/rice/resources/IUCoreServiceOverrideSpringBeans.xml</param>

  <param name="application.url">https://test.uisapp2.iu.edu/${app.code}-${environment}</param>
  <param name="secureServiceServletUrl">http://${http.url}/${app.code}-${environment}/remoting/</param>
  <param name="serviceServletUrl">${application.url}/remoting/</param>

  <!-- If you were overriding rice.struts.message.resources before to include your own properties file, change it to the following -->

  <param name="rice.struts.message.resources" override="true">org.kuali.rice.krad.ApplicationResources,org.kuali.rice.krad.KRAD-ApplicationResources,org.kuali.rice.kew.ApplicationResources,org.kuali.rice.ksb.ApplicationResources,org.kuali.rice.kim.ApplicationResources,org.kuali.rice.krms.ApplicationResources,org.kuali.rice.core.web.cache.CacheApplicationResources,YOUR.APP.ApplicationResources</param>


  ... remoting urls, various other urls, database platform, etc...

  <!-- workflow database params ;  Notice change in the platform package name -->
  <param name="kr.datasource.ojb.platform">Oracle9i</param>
  <param name="tk.datasource.platform">org.kuali.rice.core.framework.persistence.platform.OraclePlatform</param>
  <param name="kr.datasource.driver.name">oracle.jdbc.driver.OracleDriver</param>
  <param name="kr.datasource.pool.validationQuery">select 1 from dual</param>
  <param name="kr.datasource.pool.maxWait">30000</param>
  <param name="kr.datasource.pool.minSize">20</param>
  <param name="kr.datasource.pool.maxSize">50</param>

</config>



Standard configuration of "thin" client Rice projects

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

  <bean id="ksbConfigurer" class="org.kuali.rice.ksb.messaging.config.KSBConfigurer"/>

  <bean id="kimConfigurer" class="org.kuali.rice.kim.config.KIMConfigurer"/>

  <bean id="kewConfigurer" class="org.kuali.rice.kew.config.KEWConfigurer"/>

</beans>
<config>

  <param name="kim.mode">THIN</param>
  <param name="kew.mode">THIN</param>
  <param name="ksb.mode">THIN</param>

</config>

Encryption Key Update in Override Cases

If you override the encryption key, there is an extra step that needs to be done to ensure users have acces to existing workflow documents. Due to the move from commons-codec 1.3 to 1.6 in Rice 2.0 and the way the library works in the face of improperly padded base64 strings, the encryption.key configuration property needs to be updated to ensure that it has the correct padding. We've provided a utility for doing this and it's located here…

http://svn.kuali.org/repos/rice/tools/encryption-key-converter/trunk

To run this…

  1. Check out out the app above
  2. run mvn package from the command line to create the executable jar in the target folder
  3. Run the executable in the target directory with "java -jar encryption-key-converter-1.0-SNAPSHOT.jar <current encryption.key property value>"
    1. so if the old key was 7IC64w6ksLR the command would be
      1. java -jar target/encryption-key-converter-1.0-SNAPSHOT.jar 7IC64w6ksLR

The app contains the commons-codec 1.3 inside of the executable so there's no need to grab it elsewhere

Global Changes

Package Names

You can organize imports at the highest level by right clicking on a source folder and then selecting source --> organize imports. For additional notes, see the Package Changes section.

Service locator & Service Name Changes

In KR 2.0, service locators with a name of *ServiceLocatorWeb should only be used internally for Rice and not by clients.   However, the exception to this is the KRADServiceLocatorWeb which can be used by clients.

1.0.3 Name

2.0 Name

Notes

KEWServiceLocator.getStyleService()

CoreApiServiceLocator.getStyleService()

 

KEWServiceLocator.getWorkflowDocumentActionsService()

KewApiServiceLocator.getWorkflowDocumentActionsService()

 

KIMServiceLocator.getIdentityManagementService().isAuthorized(  

KimApiServiceLocator.getPermissionService().isAuthorized(  

 

KIMServiceLocator.getGroupService()

KimApiServiceLocator.getGroupService()

 

KIMServiceLocator.getIdentityManagementService()

KimApiServiceLocator.getIdentityService()

 

KIMServiceLocator.getPersonService()

KimApiServiceLocator.getPersonService()

 

KNSServiceLocator.getBusinessObjectService()

KRADServiceLocator.getBusinessObjectService()

 

KnsServiceLocator.getDateTimeService()

CoreApiServiceLocator.getDateTimeService()

 

KNSServiceLocator.getDocumentService()

KRADServiceLocatorWeb.getDocumentService()

 

KNSServiceLocator.getLookupService()

KRADServiceLocatorWeb.getLookupService()

findCollectionBySearch previously took an unparameterized Map, but it
now must be <String, String>

KNSServiceLocator.getKualiModuleService()

KRADServiceLocatorWeb.getKualiModuleService()

 

KNSServiceLocator.getDataDictionaryService()

KRADServiceLocatorWeb.getDocumentDictionaryService()

 

KEWServiceLocator.getEmailService().sendEmail

CoreApiServiceLocator.getMailer().sendEmail

 

Changes to UserSession

The kew UserSession  (org.kuali.rice.kew.web.session.UserSession)  was combined with the kns version of the UserSession.  

Changes to Constant Classes (say that 5 times fast!)

1.0.3 Constant in this class

Now may be in this class for 2.0

Notes

org.kuali.rice.kns.util.KNSConstants  

org.kuali.rice.krad.util.KRADConstants   

 

org.kuali.rice.kew.util.KEWConstants

org.kuali.rice.kew.api.KewApiConstants     

 

KSBConstants.*

KSBConstants.Config.*

 

org.kuali.rice.core.util.RiceKeyConstants

org.kuali.rice.core.api.util.RiceKeyConstants

Package Change only

org.kuali.rice.core.util.RiceConstants

org.kuali.rice.core.api.util.RiceConstants

Package Change only

org.kuali.rice.kew.batch.XmlConstants

use org.kuali.rice.kew.xml.XmlConstants

Package Change only

RouteHeaderId changed to DocumentId

Be careful when doing a global find and replace.   It is recommended that you do a preview to verify you want to change all occurrences of RouteHeaderId. 

Use of immutable objects and the builder pattern for various APIs

Builders are objects used to assemble and construct an instance of another object. Typically the object being constructed will be an immutable object (and therefore does not contain "setters" which can be used to mutate it's state). The builder pattern is a creation pattern that can be used to aid in the construction of these complex immutable objects.

Old 1.0.3 code example:

for (KimEntityEntityTypeInfo type : kimEntity.getEntityTypes()) {
     if (KimConstants.EntityTypes.PERSON.equals(type.getEntityTypeCode())) {
	entityType = type;
     }
}

New 2.0 code equivalent :

for (EntityTypeContactInfo type : kimEntity.getEntityTypeContactInfos()) {
     if (KimConstants.EntityTypes.PERSON.equals(type.getEntityTypeCode())) {
	entityType = EntityTypeContactInfo.Builder.create(type).build();
     }
}
General Purpose Lookup APIs

In Rice 1.0.3, may of the services had general-purpose lookup methods which took a Map<String, String>. In this map, the key was intended to represent the property name on the data element being looked up and the value was intended to be the value to search for. Some work was done to design a general purpose lookup API that could be applied in a standard fashion across the various Rice services which needed it. The following page describes more about the various possibilities for implementing this as well as the solution which was chosen: https://wiki.kuali.org/x/PR9yEg

The implementation of this api can be found on the core-api module under the package org.kuali.rice.core.api.criteria.

Old 1.0.3 code :

private List<String> getPrincipalIdsForPrincipalName(String principalName){
    	Map<String, String> criteria = new HashMap<String, String>();
        criteria.put("principals.principalName", principalName);
        List<? extends KimEntityDefaultInfo> entities = KIMServiceLocator.getIdentityService().lookupEntityDefaultInfo(criteria, false);

        List<String> principalIds = new ArrayList<String>();
        for (KimEntityDefaultInfo entity : entities) {
            for (KimPrincipal principal : entity.getPrincipals()) {
                principalIds.add(principal.getPrincipalId());
            }
        }
        return principalIds;
    }

New 2.0 code equivalent :

private List<String> getPrincipalIdsForPrincipalName(String principalName) {
        QueryByCriteria.Builder qb = QueryByCriteria.Builder.create();
        qb.setPredicates(equal("principals.principalName", principalName));
        List<EntityDefault> entities = KimApiServiceLocator.getIdentityService().findEntityDefaults(qb.build()).getResults();

        List<String> principalIds = new ArrayList<String>();
        for (EntityDefault entity : entities) {
            for (Principal principal : entity.getPrincipals()) {
                principalIds.add(principal.getPrincipalId());
            }
        }
        return principalIds;
    }
RunModes (kew.mode, kim.mode, etc.) & Client Protocol (client.protocol)

These are now java enums.  The properties must be in all caps (ex: LOCAL, EMBEDDED).

New required listeners

A new listener is required to use allong with the Spring Web-Aware contexts

<listener>
       <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
   </listener>

Also, org.kuali.rice.kns.web.listener.KualiHttpSessionListener is now org.kuali.rice.krad.web.listener.KualiHttpSessionListener

'Service Namespace' concept replaced with 'Application ID' concept

Old 1.0.3 code :

String serviceNamespace = document.getDocumentType().getServiceNamespace();

New 2.0 code equivalent :

String applicationId = document.getDocumentType().getApplicationId();

KEN and KCB Changes

KEW Changes

Detailed notes on the reasoning and further impact of some of the KEW changes can be found in Rice documentation here: Rice 2.0 - Compatibility Refactoring - Kuali Enterprise Workflow

Workflow services

The Kuali Enterprise Workflow services have been refactored for version compatibility in a similar fashion to the rest of the services in Rice.  The major changes made to the workflow services and APIs are as follows:

WorkflowAttributeDefinitionDTO has been renamed to WorkflowAttributeDefinition and is now a final class.

Old 1.0.3 code:

import org.kuali.rice.kew.dto.WorkflowAttributeDefinitionDTO;


public class AccountDefinition extends WorkflowAttributeDefinitionDTO {
    static final long serialVersionUID = 1000;
    private static final String ACCOUNT_ATTRIBUTE_CLASS = "edu.iu.uis.eden.routetemplate.attribute.AccountAttribute";
    public AccountDefinition(String finCoaCd, String accountNbr, String totalDollarAmount) {
        this();
        this.addConstructorParameter(finCoaCd);
        this.addConstructorParameter(accountNbr);
        this.addConstructorParameter(totalDollarAmount);
    }
    private AccountDefinition() {
        super(ACCOUNT_ATTRIBUTE_CLASS);
    }
}

New 2.0 code equivalent :

public class AccountDefinition {
    static final long serialVersionUID = 1000;
    private static final String ACCOUNT_ATTRIBUTE_CLASS = "edu.iu.uis.eden.routetemplate.attribute.AccountAttribute";

	public static WorkflowAttributeDefinition createAttributeDefinition(String finCoaCd, String accountNbr, String totalDollarAmount) {
	    WorkflowAttributeDefinition.Builder builder = WorkflowAttributeDefinition.Builder.create(ACCOUNT_ATTRIBUTE_CLASS);
	    builder.addParameter(finCoaCd);
	    builder.addParameter(accountNbr);
	    builder.addParameter(totalDollarAmount);
	    return builder.build();
	}

    private AccountDefinition() {}
}



Old 1.0.3 code:

WorkflowAttributeDefinition attributeDefinition = new WorkflowAttributeDefinition(VendorTypeDefinition.VENDOR_TYPE_ATTRIBUTE_CLASS);
attributeDefinition.addConstructorParameter(vendorTypeCode);
document.addAttributeDefinition(attributeDefinition);

New 2.0 code equivalent :

WorkflowAttributeDefinition attributeDefinition = VendorTypeDefinition.createAttributeDefinition(vendorTypeCode);
document.addAttributeDefinition(attributeDefinition );
WorkflowRuleAttribute validation error type changes

WorkflowAttributeValidationError on the WorkflowRuleAttribute interface has been replaced by AttributeError and RemotableAttributeError.  Custom workflow attributes will have to be updated due to this change.

removal of getStatusDisplayValue

Old 1.0.3 code:

    EDLXmlUtils.createTextElementOnParent(workflowDocumentStatus, "status", document.getStatusDisplayValue());

New 2.0 code equivalent :

   EDLXmlUtils.createTextElementOnParent(workflowDocumentStatus, "status", document.getStatus().getLabel());
What to use as a replacement for the userIsInitiator method that used to be on KualiWorkflowDocument
KewApiServiceLocator.getWorkflowDocumentService().getDocumentInitiatorPrincipalId(String documentId)
Replacement for getActionRequests(documentNumber)
KewApiServiceLocator.getWorkflowDocumentService().getRootActionRequests(String documentId)
Addition of PeopleFlows

PeopleFlows are a new concept that was added to KEW as part of workflow routing requirements for Kuali Coeus. The requirement was essentially to replicate the functionality of "Maps" in the existing Coeus system upon which Kuali Coeus is based. These maps are simply lists of people or roles who can approve in a particular order. This order is defined by a series of "stops". At each stop there can be a number of possible approvers which may have delegates.  There was not really an equivalent concept in KEW today since this is essentially a mini-workflow.  So the concept of PeopleFlows were added along with a new activation type called "Priority-Parallel" activation.  This priority-parallel activation allows for action requests to be activated at a node in parallel if they have the same priority, but in sequence if they have different priority values.

For more information about PeopleFlows, please see the PeopleFlow documentation.

Changes to document search

SQL-level customization of document search will no longer be allowed in Rice 2.0 and the CustomDocumentSearchGenerator has been removed. Instead all document search customization is done through dynamic criteria customization. The new way to do this would be to create a DocumentSearchCustomizer and implement the "customizeCriteria" method to return a DocumentSearchCriteria which returns your additional document types you want to search on in getAdditionalDocumentTypeNames(). In addition, the isCustomizeCriteriaEnabled method needs to return true.

Here is a link to more information

Remaining numeric identifiers in KEW database Converted to character-based

In the KREW tables and corresponding code, all remaining numeric identifiers have been converted to character-based. Some of the IDs that may impact client code include the following:

Table

Fields

KREW_DLGN_RSP_T

  • DLGN_RULE_ID
  • RSP_ID
  • DLGN_RULE_BASE_VAL_ID

KREW_RULE_RSP_T

  • RULE_RSP_ID
  • RSP_ID
  • RULE_ID

KREW_RULE_EXT_VAL_T

  • RULE_EXT_VAL_ID
  • RULE_EXT_ID

For a complete list, please see JIRA KULRICE-5201

KIM Changes

Class name changes

The Kim that used to start most KIM class names has been removed. i.e. KimPrincipal is now Principal, KimEntityAddress is now EntityAddress, etc

Removal of IdentityManagementService

The Identity Management Service has been replaced with individual service calls in KIM. For a complete list of changes, please see the Service Locator Changes Section

Old 1.0.3 code :

@Override
KimPrincipal principal = KIMServiceLocator.getIdentityManagementService().getPrincipalByPrincipalName(shahess);

New 2.0 code equivalent :

Principal principal = KimApiServiceLocator.getIdentityService().getPrincipalByPrincipalName(shahess);
Removal of KimAttributeSet

KimAttributeSet was replaced with a simple Map<String, String>

KNS Changes

Business Objects
Maintainables
Action Classes
Values Finders
Transaction Documents
Data Dictionary
Changes to Notes
Changes to GlobalVariables.java
Changes to Kuali Configuration Service
Removal of RiceApplicationConfigurationService

In Rice 1.0.3, the RiceApplicationConfigurationService was a service published by all KNS applications which provided callbacks into the application from the Kuali Rice standalone server. This service was removed in Rice 2.0 for various reasons.

The impact of this change will be as follows:

For more information please see https://wiki.kuali.org/x/vA6tEg

Removal of ConfigProperties.java

The org.kuali.rice.kns.ConfigProperties.java class has been replaced with the following:

  <bean id="ConfigProperties" class="org.kuali.rice.core.api.util.collect.PropertiesMap">
    <property name="properties" value="#{kualiConfigurationService.allProperties}"/>
  </bean>

KSB Changes

Detailed notes on the reasoning and further impact of this work can be found in Rice documentation here: https://wiki.kuali.org/display/KULRICE/Rice+2.0+-+Compatibility+Refactoring+-+Kuali+Service+Bus

KSB Architecture changes
  1. Migration from Java serialization to SOAP web services (integration of standalone <-> clients)
  2. As a result of the above, client applications should now connect to the service registry through an exposes SOAP service, NOT a direct DB connection
  3. Ability to configure KSB usage in several ways (consumer only, publisher only, full use, etc..)
  4. Ability to use the 'publishService' method directly (via the API) to expose services
  5. Use of two run modes

Package / Class Name Changes

Class & Method Name Changes

 

 

 

Name in 1.0.3

Name in 2.0

Method Name changes

org.kuali.rice.kew.docsearch.StandardDocumentSearchGenerator 

org.kuali.rice.kew.impl.document.search.DocumentSearchGeneratorImpl

  • addExtraDocumentTypesToSearch --> addDocumentTypeNameToSearchOn

org.kuali.rice.kew.docsearch.DocumentSearchContext

 

 

org.kuali.rice.kew.rule.WorkflowAttribute

org.kuali.rice.kew.rule.WorkflowRuleAttribute

 

org.kuali.rice.kew.docsearch.xml.StandardGenericXMLSearchableAttribute  

org.kuali.rice.kew.docsearch.xml.StandardGenericXMLSearchableAttribute

  • getSearchContent --> generateSearchContent
  • getSearchStorageValues  -->  extractDocumentAttributes

org.kuali.rice.kew.rule.bo.RuleAttribute

org.kuali.rice.kew.rule.bo.RuleAttribute

  • getClassName --> getResourceDescriptor

org.kuali.rice.kew.docsearch.DocumentSearchContext

org.kuali.rice.kew.api.document.DocumentWithContent

 

org.kuali.rice.kew.dto.DocumentTypeDTO

org.kuali.rice.kew.api.doctype.DocumentType

 

org.kuali.rice.kew.dto.DocumentRouteStatusChangeDTO

org.kuali.rice.kew.framework.postprocessor.DocumentRouteStatusChange

 

org.kuali.rice.kew.dto.ActionRequestDTO

org.kuali.rice.kew.api.action.ActionRequest

 

org.kuali.rice.kew.dto.DocumentContentDTO

org.kuali.rice.kew.api.document.DocumentContent

 

org.kuali.rice.kew.dto.RouteHeaderDTO

 

 

org.kuali.rice.kew.exception.InvalidXmlException

org.kuali.rice.core.api.util.xml.XmlException

 

org.kuali.rice.kew.rule.RuleExtension

org.kuali.rice.kew.rule.RuleExtensionBo

This is also true for many other classes.
They went from the ClassName to ClassNameBo.

org.kuali.rice.kew.rule.Role

org.kuali.rice.kew.api.rule.RoleName

 

org.kuali.rice.core.util.KeyLabelPair

org.kuali.rice.core.api.util.KeyValue

  •  getLabel --> getValue

org.kuali.rice.kim.bo.entity.KimPrincipal

org.kuali.rice.kim.api.identity.principal.Principal

 

org.kuali.rice.kim.bo.group.dto.GroupInfo

org.kuali.rice.kim.api.group.Group

  • getGroupId -->  getId
  • getGroupName  --> getName

org.kuali.rice.kns.lookup.keyvalues.KeyValuesBase

org.kuali.rice.krad.keyvalues.KeyValuesBase

 

org.kuali.rice.kns.bo.BusinessObjectRelationship

org.kuali.rice.krad.bo.DataObjectRelationship

 

org.kuali.rice.kns.workflow.service.KualiWorkflowDocument

org.kuali.rice.kew.api.WorkflowDocument

  • getInitiatorNetworkId --> getInitiatorPrincipalId
  • logDocumentAction --> logAnnotation
  • stateIsInitiated -->  isInitiated
  • stateIsSaved  -->   isSaved
  • stateIsEnroute -->  isEnroute
  • stateIsProcessed -->  isProcessed
  • stateIsFinal-->  isFinal
  • saveRoutingData  --> saveDocumentData

org.kuali.rice.kns.util.MessageMap
org.kuali.rice.kns.util.ErrorMap

org.kuali.rice.krad.util.MessageMap

  • clear --> clearErrorMessages
  • entrySet --> getAllPropertiesAndErrors
  • get --> getErrorMessagesForProperty
  • keySet --> getAllPropertiesWithErrors
  • remove --> removeAllErrorMessagesForProperty
  • size --> getNumberOfPropertiesWithErrors
  • put --> no replacement
  • putAll --> no replacement
  • containsValue --> no replacement
  • values --> no replacement

org.kuali.rice.ksb.message.KSBExporter

org.kuali.rice.ksb.api.bus.support.ServiceBusExporter

 

Important Package Changes 

Class Name

Package Name in 1.0.3

Package Name in 2.0

UserSession

org.kuali.rice.kns

org.kuali.rice.krad

  • Document
  • TransactionalDocumentBase

org.kuali.rice.kns.document

org.kuali.rice.krad.document

  • BusinessObject 
  • PersistableBusinessObject
  • PersistableBusinessObjectBase
  • DocumentHeader
  • Note

org.kuali.rice.kns.bo

org.kuali.rice.krad.bo

  • DataDictionary
  • DocumentEntry
  • PrimitiveAttributeDefinition
  • RelationshipDefinition
  • SupportAttributeDefinition

org.kuali.rice.kns.datadictionary

org.kuali.rice.krad.datadictionary

  • DocumentAuthorizer
  • DocumentAuthorizerBase

org.kuali.rice.kns.document.authorization

org.kuali.rice.krad.document.authorization

  • DocumentAuthorizationException
  • ValidationException

org.kuali.rice.kns.exception

org.kuali.rice.krad.exception

TransactionalDocumentRuleBase

org.kuali.rice.kns.rules

org.kuali.rice.krad.rules

  • BlanketApproveDocumentEvent
  • AddNoteEvent
  • KualiDocumentEvent

org.kuali.rice.kns.rule.event

org.kuali.rice.krad.rule.event

DocumentDao

org.kuali.rice.kns.dao

org.kuali.rice.krad.dao

  • GlobalVariables
  • KualiDecimal
  • MessageMap
  • UrlFactory

org.kuali.rice.kns.util

org.kuali.rice.krad.util

DateTimeService

org.kuali.rice.kns.service

org.kuali.rice.core.api

ModuleServiceBase

org.kuali.rice.kns.service.impl

org.kuali.rice.krad.service.impl

  • Config
  • ConfigContext

org.kuali.rice.core.config

org.kuali.rice.core.api.config.property

ConfigFactoryBean

org.kuali.rice.core.config.spring

org.kuali.rice.core.impl.config.property

  • Lifecycle
  • BaseLifecycle

org.kuali.rice.core.lifecycle

org.kuali.rice.core.api.lifecycle

ContextClassLoaderBinder

org.kuali.rice.core.resourceloader

org.kuali.rice.core.util.

WorkflowException

org.kuali.rice.kew.exception

org.kuali.rice.kew.api.exception

WorkflowDocument

org.kuali.rice.kew.service

org.kuali.rice.kew.api

  • PrincipalId
  • Id

org.kuali.rice.kew.identity

org.kuali.rice.kew.api.identity

Person

org.kuali.rice.kim.bo

org.kuali.rice.kim.api.identity

AuthenticationService

org.kuali.rice.kim.service

org.kuali.rice.kim.api.identity

InvalidXmlException

org.kuali.rice.kew.exception

org.kuali.rice.core.util.xml

InvalidActionTakenException

org.kuali.rice.kew.exception.

org.kuali.rice.kew.api.exception

  • StrutsExceptionIncidentHandler
  • AuthorizationExceptionHandler

org.kuali.rice.kns.web.struts.pojo

org.kuali.rice.kns.web.struts.form.pojo

JavaServiceDefinition

org.kuali.rice.ksb.messaging

org.kuali.rice.ksb.api.bus.support

Miscellaneous changes / deletions that have not been mentioned above

class Name in 1.0.3

notes

org.kuali.rice.ken.exception.NotificationMessageDelivererNotFoundException

no replacement

org.kuali.rice.kns.util.spring.AutoPopulatingList

use org.springframework.util.AutoPopulatingList

org.kuali.rice.kns.util.TypedArrayList

use org.springframework.util.AutoPopulatingList

org.kuali.rice.kns.util.Guid

use java.util.UUID.randomUUID()

org.kuali.rice.kns.service.impl.ConfigurableDateTimeServiceImpl

no replacement

org.kuali.rice.kns.service.ConfigurableDateTimeService

no replacement

org.kuali.rice.kns.mail.UnableToSendMessageError

no replacement

org.kuali.rice.kns.datadictionary.exception.OverrideEntryException

no replacement

org.kuali.rice.kns.exception.BusinessObjectNotFoundException

no replacement

org.kuali.rice.kns.exception.IllegalObjectStateException

no replacement

org.kuali.rice.kns.exception.MetadataException

no replacement

org.kuali.rice.kns.exception.ObjectNotABusinessObjectException

no replacement

org.kuali.rice.kns.exception.ReferentialIntegrityException

no replacement

org.kuali.rice.kns.exception.UnknownBusinessClassException

no replacement

org.kuali.rice.core.lifecycle.SpringLifeCycle

no replacement

org.kuali.rice.core.resourceloader.SpringLoader

no replacement

org.kuali.rice.core.config.event.*

no replacement

org.kuali.rice.core.exception.InvalidXmlException

no replacement

org.kuali.rice.core.exception.RiceException

no replacement

org.kuali.rice.kew.bo.BaseWorkflowPersistable

no replacement

org.kuali.rice.kns.web.RiceConfigurationListener

no replacement

org.kuali.rice.ken.bo.KenPersistableBusinessObjectBase

no replacement

org.kuali.rice.core.resourceloader.ContextualConfigLock

use org.kuali.rice.core.config.ContextualConfigLock

org.kuali.rice.core.web.struts.RiceActionServlet

extend org.apache.struts.action.ActionServlet directly

org.kuali.rice.kns.util.comparator.BeanPropertyComparator

use org.kuali.rice.kns.util.BeanPropertyComparator

org.kuali.rice.kns.exception.BeanComparisonException

org.kuali.rice.kns.util.comparator.BeanPropertyComparator.BeanComparisonException

org.kuali.rice.kns.bo.ConcurrentLockId

no replacement

org.kuali.rice.kns.service.ConfigurableDateService

no replacement

org.kuali.rice.kns.util.spring.ClassPathXmlApplicationContext

use org.springframework.context.support.ClassPathXmlApplicationContext

DocSearchUtils.getSqlFormattedDate()

SQLUtils.getSqlFormattedDate()

DocSearchUtils.getEntryFormattedDate()

SQLUtils.getEntryFormattedDate()

DocSearchUtils.convertStringDateToTimestamp()

SQLUtils.convertStringDateToTimestamp()

Utilities.convertTimestamp()

SQLUtils.convertTimestamp()

Utilities.convertCalendar()

SQLUtils.convertCalendar()

org.kuali.rice.core.dao.impl.GenericDaoJpa

no replacement

org.kuali.rice.kew.bo.KewPersistableBusinessObjectBase

org.kuali.rice.kns.bo.PersistableBusinessObjectBase

org.kuali.rice.kew.dto.RouteTemplateEntryDTO

no replacement

AuthenticationUserId

org.kuali.rice.kew.identity.PrincipalName

org.kuali.rice.kew.user.UserCapabilities

no replacement

org.kuali.rice.kim.bo.reference.DefaultableKimCode

no replacement

org.kuali.rice.core.config.SimpleNodeSettingsStore

no replacement

org.kuali.rice.core.config.spring.SimpleConfigFactoryBea

no replacement

org.kuali.rice.core.database.SpringConnectionFactoryManagedImpl

ask eric

org.kuali.rice.kns.util.spring.WorkflowSpringConnectionFactoryManagedImpl

ask eric

org.kuali.rice.core.jdbc.PreparedObject

no replacement

org.kuali.rice.core.jta.AtomikosTransactionManagerLookup

ask eric

org.kuali.rice.core.resourceloader.ResourceLoaderServiceFactoryBean

GRLFactoryBean

org.kuali.rice.core.resourceloader.RootResourceLoaderLifecycle

no replacement

org.kuali.rice.core.resourceloader.RiceSpringResourceLoaderConfigurer

no replacement

org.kuali.rice.core.util.ConcurrencyDetector

was a debugging tool that we felt was not that useful.  no replacement

org.kuali.rice.core.versions.*

an unfinished POC, no replacement

org.kuali.rice.core.web.RequestForwardingServlet

legacy, no replacement

org.kuali.rice.kew.batch.KEWXmlDataLoaderLifecycle

move to internal testing tools since it should only be used by rice unit tests, no replacement

org.kuali.rice.kim.service.PersonService

removed the parameterized type (? extends Person), ee KULRICE-4871 for more details

ExceptionUtils

use org.apache.commons.lang.exception. ExceptionUtils

Util.readFully()

use org.apache.commons.lang.is.IOUtils.toByteArray()

Utilities.collectionEquivalent

CollectionUtils.collectionEquivalent

Utilities.isEmpty(Collection)

use org.apache.commons.lang.collection.CollectionUtils.isEmpty

Utilities.equals (Object a, Object b)

use org.apache.common.lang.ObjectUtils.equals()

ObjectUtils.nullsafeEquals()

use org.apache.common.lang.ObjectUtils.equals()

Utilities.isEmpty(String)

org.apache.common.lang.StringUtils.isEmpty()

org.kuali.rice.kns.util.DateUtils

use org.apache.common.lang.DateUtils if possible

org.kuali.rice.kns.util.NumberUtils

use org.apache.common.lang.NumberUtils if possible

BaseResourceLoader.wrap()

use BaseResourceLoader.postProcessService()

ConfigContext.getRootConfig()

ConfigContext.getCurrentContextConfig()

Config.DEFAULT_NOTE_CLASS

use Config.DEFAULT_KEW_NOTE_CLASS

Config.getDefaultNoteClass()

Config.getDefaultKewNoteClass()

Config.overrideProperty()

Config.putProperty()

IdentityHelperService.getGroupId()

use IdentityManagementService

IdentityHelperService.getPrincipal()

use IdentityManagementService

IdentityHelperService.getGroupRecipient()

use IdentityManagementService

KualiWorkflowDocument.getInitiatorNetworkId()

use KualiWorkflowDocument.getInitiatorPrincipalId instead
*note this returns the principalID not principalName

KualiWorkflowDocument.getRoutedByUserNetworkId()

use KualiWorkflowDocument.getRoutedByPrincipalId()
*note this returns the principalID not principalName

actionlist.outbox.default.preference.on is no longer a valid parameter

use userOptions.default.useOutBox

org.kuali.rice.core.util.WriterOutputStream

use org.apache.commons.io.output.WriterOutputStream

RiceDebugUtils

use org.apache.commons.lang.ExceptionUtils.getStacktrace()

ParameterServerService

use: KNSServiceLocatorWeb.getRiceApplicationConfigurationMediationService().getNonDatabaseComponents();

ParameterService.setParameterForTesting()

no direct replacement

org.kuali.rice.kns.util.Timer

no direct replacement.  Used org.apache.commons.lang.StopWatch to replace in rice code.

Utilities.getKNSParameterValue()

use ClientParameterService.getParameterValueAsString()

Utilities.getKNSParameterBooleanValue()

use ClientParameterService.getParameterValueAsBoolean()

DerbyPlatform

use DerbyDatabasePlatform

MySQLPlatform

use MySQLDatabasePlatform

Oracle9iPlatform

use Oracle9iDatabasePlatform

Formatter.isBlank()

use commons StringUtils.isBlank()

KRAMetaRuleExpression

use MetaRuleExpression

UiDocumentServiceImpl.getFullMemberName()

UiDocumentServiceImpl.getMemberFullName()

DocumentDaoOjb.saveMaintainableBusinessObject

use BusinessObjectService.linkAndSave()

DocumentDaoJpa.saveMaintainableBusinessObject

use BusinessObjectService.linkAndSave()

LookupUtils.applySearchResultsLimit(Criteria criteria, DatabasePlatform platform)

LookupUtils.applySearchResultsLimit(Class businessObjectClass, Criteria criteria, DatabasePlatform platform)

DocumentServiceImpl.setKualiRuleService(KualiRuleService)

no replacement

DocumentServiceImpl.setDictionaryValidationService(DictionaryValidationService)

no replacement

DocumentServiceImpl.setMaintenanceDocumentService(MaintenanceDocumentService)

no replacement

ContextClassLoaderProxy.getInterfacesToProxyIncludeSpring()

use ContextClassLoaderProxy.getInterfacesToProxy()

org.kuali.rice.kew.rule.OddSearchAttribute

no replacement

DocumentTypeDTO.getDocTypeName()

use DocumentTypeDTO.getDocTypeLabel()

DocumentTypeDTO.setDocTypeName(String)

DocumentTypeDTO.setDocTypeLabel(String)

jstl function ${kfunc:getKNSParameterValue}

use struts form properties to hold parameter values or scriplets in extreme cases - if
this is needed we can revist introducing jstl functions for parameters

StandaloneInitializeListener

changed kew.bootstrap.spring.file to web.bootstrap.spring.file configuration parameter name - KULRICE-5014

workflowDocument.logDocumentAction

workflowDocument.logAnnotation

Util.jotNode, jotDocument, writeNode
Utilities.jotNode, jotDocument, writeNode
XmlJotter.jotNode, jotDocument, writeNode

XmlHelper.*

writeNode is replaced by jotNode

TroubleShooting:

See Rice 2.0 - Upgrade Troubleshooting