Kuali Rice Development
  1. Kuali Rice Development
  2. KULRICE-2889

hook application configuration service into KNS, KEW, and KIM

    Details

    • Type: Task Task
    • Status: Closed Closed
    • Priority: Critical Critical
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 1.0, KFS Release 3.0
    • Component/s: Development
    • Labels:
      None
    • Similar issues:
      KULRICE-2223Switch KEW to use KIM user service
      KULRICE-3950Allow KNS-enabled client applications to run KEW in "remote" mode.
      KULRICE-954Hook up ability to override global rice datasource/jndi name with kew specific one in KEW configurer
      KULRICE-6683Add a "THIN" client run mode to KEW, KIM, and KSB modules
      KULRICE-2571Hook up administration portal section in KEW to a KIM permission
      KULRICE-3999Need a dynamic way to add classes to kns-application-unit persistence unit
      KULRICE-2983Update thin client integration model so that it provides for proper connection to KIM services
      KULRICE-2196Create new workflow user service which uses KIM APIs
      KULRICE-2486Equivalent of WorkgroupMembershipChangeProccessor needs to be invoked from KIM code when group or role is modified
      KULRICE-1706Remove RoleServiceTest from KEW module once KNS and KIM are integrated
    • Rice Module:
      Rice Core
    • Application Requirement:
      KFS, Rice

      Description

      here was what we initially discussed...
      2. Application configuration service
      a. Adding application service namespace to parameter table
      b. Handling the new field in the UI
      c. Creating this API
      d. Calling this API when resolving config parms in KIM application
      URLs, workflow doc type URLs, etc.

      the service api has been created: RiceApplicationConfigurationService. a, b, and c were done in KULRICE-2719, but d was not

        Issue Links

          Activity

          Hide
          Ailish Byrne added a comment -

          temporarily assigned to eric

          Show
          Ailish Byrne added a comment - temporarily assigned to eric
          Hide
          Eric Westfall added a comment -

          Assigning to Tom. Tom, this is somewhat related to other work that you are doing. Let's work on this together this week.

          Show
          Eric Westfall added a comment - Assigning to Tom. Tom, this is somewhat related to other work that you are doing. Let's work on this together this week.
          Hide
          Eric Westfall added a comment -

          In KEW, we will need to modify the Utilities class and probably add a new method:

          public static String substituteConfigParameters(String serviceNamespace, String string)

          Then we can invoke that from contexts where we have access to a serviceNamespace (when resolving docHandlerUrl and helpDefinitionUrl inside of the DocumentType).

          Implementation of this method should attempt to locate a RiceApplicationConfigurationService in the service regsitry for the given serviceNamespace. If found, execute getConfigurationParameter(...). If a value is returned, use that to construct the final value of the string that is returned. If a value is not returned, look for the configuration parameter locally.

          Show
          Eric Westfall added a comment - In KEW, we will need to modify the Utilities class and probably add a new method: public static String substituteConfigParameters(String serviceNamespace, String string) Then we can invoke that from contexts where we have access to a serviceNamespace (when resolving docHandlerUrl and helpDefinitionUrl inside of the DocumentType). Implementation of this method should attempt to locate a RiceApplicationConfigurationService in the service regsitry for the given serviceNamespace. If found, execute getConfigurationParameter(...). If a value is returned, use that to construct the final value of the string that is returned. If a value is not returned, look for the configuration parameter locally.
          Hide
          Eric Westfall added a comment -

          In addition to the changes mentioned above to update KEW to use this functionality, we need to do the following in KIM:

          • Resolve config properties for applicationUrl in KimTypeServiceBase.getAttributeDefinitions using RiceConfigurationServiceImpl.getConfigurationParameter

          We may want to abstract the code out that's is currently in Utilities.substituteConfigParameters in order to be able to easily do this the same way in both KEW and KNS

          Show
          Eric Westfall added a comment - In addition to the changes mentioned above to update KEW to use this functionality, we need to do the following in KIM: Resolve config properties for applicationUrl in KimTypeServiceBase.getAttributeDefinitions using RiceConfigurationServiceImpl.getConfigurationParameter We may want to abstract the code out that's is currently in Utilities.substituteConfigParameters in order to be able to easily do this the same way in both KEW and KNS
          Hide
          Eric Westfall added a comment -

          As part of this, it looks like there isn't currently a NamespaceService in Rice. We should create this (in the org.kuali.rice.kns.service package, implementation in the impl sub package). It will need to have:

          public ParameterNamespace getNamespace(String namespaceCode)

          Once we have the ParameterNamespace object, we can get the applicationNamespaceCode from it (this will be equivalent to the serviceNamespace) and then we can use that to resolve the parameter using the new Utilities.substituteConfigParameters(serviceNamespace, string)

          So, in general, the code in KimTypeServiceBase.getAttributeDefinitions, will do something like the following:

          1) fetch the KimTypeImpl
          2) get the namespaceCode off of the kim type impl
          3) Lookup the ParameterNamespace for the given code using the new service implementation
          4) get the applicationNamespaceCode from the namespace
          5) In the loop where we are getting AttributeDefinitions, if one of these is a KimDataDictionaryAttributeDefinition, get the applicationUrl off of it, run it through Utilities.substituteConfigParameters to construct a resolved application url and then set that back onto the original KimDataDictionaryAttributeDefinition

          Show
          Eric Westfall added a comment - As part of this, it looks like there isn't currently a NamespaceService in Rice. We should create this (in the org.kuali.rice.kns.service package, implementation in the impl sub package). It will need to have: public ParameterNamespace getNamespace(String namespaceCode) Once we have the ParameterNamespace object, we can get the applicationNamespaceCode from it (this will be equivalent to the serviceNamespace) and then we can use that to resolve the parameter using the new Utilities.substituteConfigParameters(serviceNamespace, string) So, in general, the code in KimTypeServiceBase.getAttributeDefinitions, will do something like the following: 1) fetch the KimTypeImpl 2) get the namespaceCode off of the kim type impl 3) Lookup the ParameterNamespace for the given code using the new service implementation 4) get the applicationNamespaceCode from the namespace 5) In the loop where we are getting AttributeDefinitions, if one of these is a KimDataDictionaryAttributeDefinition, get the applicationUrl off of it, run it through Utilities.substituteConfigParameters to construct a resolved application url and then set that back onto the original KimDataDictionaryAttributeDefinition
          Hide
          Thomas Bradford (Inactive) added a comment -

          I think this is now essentially finished. We just need to test it in a simulated environment

          Show
          Thomas Bradford (Inactive) added a comment - I think this is now essentially finished. We just need to test it in a simulated environment
          Hide
          Eric Westfall added a comment -

          This work has been committed. One additional item that we didn't consider in this originally is that we will probably want to do some caching here in the RiceApplicationConfigurationMediationService (that's the service that handles coordinating with all the other RiceApplicationConfiguration services). I'll create a separate issue for that.

          Show
          Eric Westfall added a comment - This work has been committed. One additional item that we didn't consider in this originally is that we will probably want to do some caching here in the RiceApplicationConfigurationMediationService (that's the service that handles coordinating with all the other RiceApplicationConfiguration services). I'll create a separate issue for that.
          Hide
          Eric Westfall added a comment -

          Bulk change of all Rice 1.0 issues to closed after public release.

          Show
          Eric Westfall added a comment - Bulk change of all Rice 1.0 issues to closed after public release.

            People

            • Assignee:
              Thomas Bradford (Inactive)
              Reporter:
              Ailish Byrne
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Structure Helper Panel