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

Person and Role document broken when displaying data with role that has namespace qualifier

    Details

    • Type: Bug Fix Bug Fix
    • Status: Closed Closed
    • Priority: Blocker Blocker
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.1.2
    • Component/s: Development
    • Security Level: Public (Public: Anyone can view)
    • Labels:
      None
    • Similar issues:
      KULRICE-10306person document has a display issue if a role has more than 19 role qualifiers
      KULRICE-9165Person document not displaying role qualifiers
      KULRICE-4178Some role qualifiers displaying incorrectly
      KULRICE-7749Unable to inactivate Role Assignment from a Person record when the qualifier data does not validate
      KULRICE-6565Fix qualifiers on role for Person and Role Documents
      KULRICE-7896NullPointerException if no role qualifier added on Person document
      KULRICE-3989UIDocumentService.loadRoleMemberQualifiers - is there a way to load qualifiers not associated with the role type
      KULRICE-7689Performance issue with KRIM Document Qualified Roles
      KULRICE-1470KIM Qualified Role with multiple qualifications
      KULRICE-7263Passing Collections.emptyMap() as role qualifier causes failures in KIM
    • Rice Module:
      KIM
    • Application Requirement:
      KFS
    • KAI Review Status:
      Not Required
    • KTI Review Status:
      Not Required

      Description

      Something has changed with EBOs again. This looks to be the same problem which is affecting the document type lookup. Editing KFS role 54 or a person who has that role fails. (An inquiry on the same also throws the exception, but doesn't break the page.)

      The cause is the namespace qualifier on the role. KFS Role 54 is the main one which has this problem. Unfortunately, this is also the main KFS-SYS / User role. So, this is preventing the editing of most principals in the system.

      The exception is:

      Caused by: java.lang.RuntimeException: Can't find ExternalizableBusinessObject implementation class for org.kuali.rice.coreservice.impl.namespace.NamespaceBo
      	at org.kuali.rice.krad.service.impl.RemoteModuleServiceBase.getExternalizableDataObjectLookupUrl(RemoteModuleServiceBase.java:167)
      	at org.kuali.rice.kns.kim.type.DataDictionaryTypeServiceBase.createQuickFinder(DataDictionaryTypeServiceBase.java:587)
      	at org.kuali.rice.kns.kim.type.DataDictionaryTypeServiceBase.getDataDictionaryAttributeDefinition(DataDictionaryTypeServiceBase.java:547)
      	at org.kuali.rice.kns.kim.type.DataDictionaryTypeServiceBase.getAttributeDefinitions(DataDictionaryTypeServiceBase.java:120)
      

      It's easy to reproduce in STG.

      1) Open Role Lookup
      2) Search for Role 54
      3) Click Edit

        Issue Links

          Activity

          Hide
          Jonathan Keller added a comment -

          Argh - I don't know what's going on if it's working for you. And, those targets work on both. I use a MySQL local database most of the time. I've also tested them against an Oracle database in a local VM that I run for that purpose.

          That isn't to say that they couldn't be tweaked. What are you running into?

          Show
          Jonathan Keller added a comment - Argh - I don't know what's going on if it's working for you. And, those targets work on both. I use a MySQL local database most of the time. I've also tested them against an Oracle database in a local VM that I run for that purpose. That isn't to say that they couldn't be tweaked. What are you running into?
          Hide
          Peter Giles (Inactive) added a comment - - edited

          for "ant refresh-dev2-db":

          I must not have had all the requisite properties set in my kfs-build.properties, or I had slightly incorrect values. To make it work I ended up adding quite a few more db properties (I'm putting all of them, old and new, below) and changing the contents of the impex-build.properties files built by ant such that import.torque.database.schema=$

          {rice.server.datasource.schema} for Rice and import.torque.database.schema=${datasource.schema} for KFS. Without these changes I ran into a few different things which I don't remember terribly well unfortunately. For one thing, the task was trying to drop a database called rice, and then trying to create kfs5norice and failing there since a db by that name existed. The refresh-kfs-db task was failing the same way until I made the similar changes there.

          # these properties are related to ${build.environment} - you should review them, if you change that property
          # you will need to obtain the values for these properties for a given ${build.environment} from someone on the project
          datasource.username=rice
          datasource.password=ricepw

          # this is my KFS schema
          mysql.datasource.schema=kfs5norice
          datasource.schema=${mysql.datasource.schema}
          mysql.datasource.url=jdbc:mysql://localhost/${mysql.datasource.schema}
          datasource.url=${mysql.datasource.url}
          datasource.ojb.platform=MySQL

          adminUrl=jdbc:mysql://localhost/mysql
          impex.admin.username=root
          impex.admin.password=rootpw

          # this is my rice-only schema for kfs
          rice.server.datasource.schema=kfs5rice
          rice.server.datasource.url=jdbc:mysql://localhost/${rice.server.datasource.schema}

          rice.server.datasource.username=$

          {datasource.username}

          rice.server.datasource.password=$

          {datasource.password}

          rice.server.adminUrl=jdbc:mysql://localhost/mysql
          rice.server.impex.admin.username=root
          rice.server.impex.admin.password=rootpw

          for "ant run-dev2":

          I'm still getting errors trying to make this run. The rice-config.xml that was in /java/tomcat/conf looked like it should have been filtered but wasn't, it just had one line in it that looked something like "$

          {rice.config}

          ". Anyway, the startup just didn't fly at all. I'm not sure what the expected state of files in my $HOME/kuali/main/dev is to get this running, I'm suspecting my configurations were interfering. I've been trying to get it running by hand coding a /java/tomcat/conf/rice-config.xml and I got Rice starting up successfully now in the kr-dev2 app context, but KFS still wants it to be at kr-dev when it starts up. Fighting my way past that one now.

          Show
          Peter Giles (Inactive) added a comment - - edited for "ant refresh-dev2-db": I must not have had all the requisite properties set in my kfs-build.properties, or I had slightly incorrect values. To make it work I ended up adding quite a few more db properties (I'm putting all of them, old and new, below) and changing the contents of the impex-build.properties files built by ant such that import.torque.database.schema=$ {rice.server.datasource.schema} for Rice and import.torque.database.schema=${datasource.schema} for KFS. Without these changes I ran into a few different things which I don't remember terribly well unfortunately. For one thing, the task was trying to drop a database called rice, and then trying to create kfs5norice and failing there since a db by that name existed. The refresh-kfs-db task was failing the same way until I made the similar changes there. # these properties are related to ${build.environment} - you should review them, if you change that property # you will need to obtain the values for these properties for a given ${build.environment} from someone on the project datasource.username=rice datasource.password=ricepw # this is my KFS schema mysql.datasource.schema=kfs5norice datasource.schema=${mysql.datasource.schema} mysql.datasource.url=jdbc:mysql://localhost/${mysql.datasource.schema} datasource.url=${mysql.datasource.url} datasource.ojb.platform=MySQL adminUrl=jdbc:mysql://localhost/mysql impex.admin.username=root impex.admin.password=rootpw # this is my rice-only schema for kfs rice.server.datasource.schema=kfs5rice rice.server.datasource.url=jdbc:mysql://localhost/${rice.server.datasource.schema} rice.server.datasource.username=$ {datasource.username} rice.server.datasource.password=$ {datasource.password} rice.server.adminUrl=jdbc:mysql://localhost/mysql rice.server.impex.admin.username=root rice.server.impex.admin.password=rootpw for "ant run-dev2": I'm still getting errors trying to make this run. The rice-config.xml that was in /java/tomcat/conf looked like it should have been filtered but wasn't, it just had one line in it that looked something like "$ {rice.config} ". Anyway, the startup just didn't fly at all. I'm not sure what the expected state of files in my $HOME/kuali/main/dev is to get this running, I'm suspecting my configurations were interfering. I've been trying to get it running by hand coding a /java/tomcat/conf/rice-config.xml and I got Rice starting up successfully now in the kr-dev2 app context, but KFS still wants it to be at kr-dev when it starts up. Fighting my way past that one now.
          Hide
          Peter Giles (Inactive) added a comment - - edited

          More on "ant run-dev2", I got this to work finally by

          • copying the rice-config.xml that I found somewhere under the kfs/build directory into my tomcat/conf
          • fixing the database config params in it
          • copying the rice.keystore file that I found under kfs/build somewhere to my tomcat/conf as well.
          • I also had to (or so it seemed) change my kfs-build.properties to set rice.url=http://localhost:8080/kr-dev2 to make this work.

          Now that it's working when launching it this way, I can still view the Persons and Role 54 without a problem :'(

          Show
          Peter Giles (Inactive) added a comment - - edited More on "ant run-dev2", I got this to work finally by copying the rice-config.xml that I found somewhere under the kfs/build directory into my tomcat/conf fixing the database config params in it copying the rice.keystore file that I found under kfs/build somewhere to my tomcat/conf as well. I also had to (or so it seemed) change my kfs-build.properties to set rice.url= http://localhost:8080/kr-dev2 to make this work. Now that it's working when launching it this way, I can still view the Persons and Role 54 without a problem :'(
          Hide
          Jonathan Keller added a comment -

          I think it must be something with your local configuration. I was able to use those targets to set up a completely new machine and run within a few minutes. (Not including database build time.) So, I did not have any prior rice configuration files to deal with.

          Show
          Jonathan Keller added a comment - I think it must be something with your local configuration. I was able to use those targets to set up a completely new machine and run within a few minutes. (Not including database build time.) So, I did not have any prior rice configuration files to deal with.
          Hide
          Peter Giles (Inactive) added a comment - - edited

          This morning I reverted my rice-web war, cleaned and rebuilt the project and got it running again with 'ant run-dev2'. I now see the error you're reporting:

          ******************Stack Trace-Only shown when not in production*****************
          javax.xml.ws.soap.SOAPFaultException: Can't find ExternalizableBusinessObject implementation class for org.kuali.rice.coreservice.impl.namespace.NamespaceBo
          	at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:146)
          	at $Proxy634.getAttributeDefinitions(Unknown Source)
          	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          ...

          So with my fresh build of Rice it works, and with the build of Rice checked in to KFS it is broken.

          Clearly either (1) I have some uncommitted changes in my dev tree that fix the issue, or (2) STG isn't getting updated with the latest Rice build for some reason. I've gone through my few local changes with a fine toothed comb and there isn't any fix there. At this point I can only conclude that the issue is fixed in the rice-2.1 branch, and that there are build or deploy issues on STG.

          Show
          Peter Giles (Inactive) added a comment - - edited This morning I reverted my rice-web war, cleaned and rebuilt the project and got it running again with 'ant run-dev2'. I now see the error you're reporting: ******************Stack Trace-Only shown when not in production***************** javax.xml.ws.soap.SOAPFaultException: Can't find ExternalizableBusinessObject implementation class for org.kuali.rice.coreservice.impl.namespace.NamespaceBo at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:146) at $Proxy634.getAttributeDefinitions(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ... So with my fresh build of Rice it works, and with the build of Rice checked in to KFS it is broken. Clearly either (1) I have some uncommitted changes in my dev tree that fix the issue, or (2) STG isn't getting updated with the latest Rice build for some reason. I've gone through my few local changes with a fine toothed comb and there isn't any fix there. At this point I can only conclude that the issue is fixed in the rice-2.1 branch, and that there are build or deploy issues on STG.

            People

            • Assignee:
              Peter Giles (Inactive)
              Reporter:
              Jonathan Keller
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Structure Helper Panel