openequella / openEQUELLA-blackboard-integration

0 stars 3 forks source link

Primary Building Block fails in Blackboard 3400 #4

Closed cbeach47 closed 5 years ago

cbeach47 commented 6 years ago

Observed in Bb Release 3400.0.1-rel.90+b74efee and Release 3400.11.0-rel.2+11d8a47.

Try to do any action (save building block, access links, begin selection session), and you're presented with:

An error has occurred
java.lang.NoSuchMethodError: blackboard.platform.blti.BasicLTIDomainConfigManager.save(Lblackboard/data/blti/BasicLTIDomainConfig;)V
at com.tle.blackboard.buildingblock.Configuration.createDomainConfig(Configuration.java:495)
at com.tle.blackboard.buildingblock.Configuration.ensureLtiPlacement(Configuration.java:319)
...

Testing goal: Confirm the building block works on all three types (self hosted, managed hosted, SaaS) running 3400.

Areas to review: From https://community.blackboard.com/docs/DOC-1595-preparing-your-building-blocks-for-learn-saas

abidingotter commented 5 years ago

I think the best thing to do is to leave the use of private APIs as is. Blackboard will be taking on support of the B2 and can consult with us on any breaking changes. I think it would be a greater risk (and level of effort) to change the code than to leave it as-is.

abidingotter commented 5 years ago

As discussed, for the database we will continue using the custom SQL for specific databases. If we intended to support the B2 past the end of the year then it would have been highly preferable to use schema.xml, however the B2 is being phased out and the fewer modifications the better.

abidingotter commented 5 years ago

We are already using PlugInUtil.getConfigDirectory(BbUtil.VENDOR, BbUtil.HANDLE); instead of the path of the JAR file. There is a mention of checking to see if any logging you are doing goes to the "log folder" as well, but we are using the dedicated logging service and not writing to a file, so that isn't an issue. We are ok here.

Interesting that there specifically refer to logging to a file. I guess the logging service we use is not expected to be used by B2s? LogServiceFactory is in their public API, so not sure. In any case, given we are using the public API, we are also ok here.

Trying to understand how/why the user is using the session and can't make sense of it, even though I originally wrote it... 🤦‍♂️ Will dig deeper.

All ok there. Can easily compile to Java 8 compatibility regardless of which Java version we actually compile it with.

Thanks to Chris, JSPs are now pre-compiled, however I noted that the TLDs are being included in the building block. I guess the way forward is to remove them and test that the B2 settings page, and the edit options of added oEQ content, are still usable.

Nothing to do here unless removal of the TLDs proves problematic.

Currently on 2.3, not 3.0 as specified. Have updated as recommended and will re-test.

We don't expect to ever include '{', '|', or '}' in our URLs. We do send JSON data which includes braces, but that is sent in the post data, not in the query string.

We do not use any of the blocked or "warned" permissions. If I remember correctly, the list we have is a minimum set to get the B2 to run. Potentially we could review it, but it seems unnecessary when all the currently requested permissions are ok by Blackboard.

We don't use any of the functions mentioned. Particularly, we are using bbNG and not bbUI in our JSPs.

abidingotter commented 5 years ago

In relation to all the Tomcat points, I have completely removed TLDs from the B2 and added the bb-context-config.properties file (the code in our custom tag was actually empty...). Also updated the web.xml version to 3 as recommended in the BB article.

Didn't get time to visit the session use. Will try to look into that tomorrow.

cbeach47 commented 5 years ago

This fix has now been pushed to master via PR #9 .

statelessness is the only possible outstanding issue, but we haven't seen it be problematic yet.