First thing we did was to store the xml definition in the database for each user, instead of the dashboard.xml file.
Then, we took the DefinitionCache class and renamed it YFDefinitionCache, made it an instance per user instead of a singleton, and changed all private variables to protected.
Then we created our own DefinitionCache, which extended YFDefinitionCache, and overrode the initialiseDashboard method so it would pull the xml from our database instead of the dashboard.xml file.
After creating YFDefinitionCache and our own DefinitionCache, we deleted your definition of DefinitionCache from the yellowfin
jars, re-jarred them up, and put in our definition in our own com.hof package so the all Yellowfin jars could still see it.
One other important thing we did, was to change the contents of the getPathToServer method in YFDefinitionCache. Previously, it was loading the path to server from the xml file. Due to our many environments, we would have to change that file for each environment after rolling out. So we took out the contents of the function and put in a function that would calculate the path to the server.
It made it possible for us to have a dashboard for each user on each client org, something that would be really useful in the future if you decide to go that direction.
Hope you are well,
Thank you for letting us know that you have found a workaround and providing details of how you were able to complete this, I will pass this to our Development team to see what they think regarding putting this option in a future release.
If you do have any further questions please feel free to contact us.