This section provides details of known issues relating to the WebCT PowerLinks SDK for WebCT Vista 4 and WebCT Campus Edition 6. Please use the link at the bottom of the page to pass on any corrections or details of any missing SDK issues so that they can be added to this site.

Note that the versions affected entry is not the result of exhaustive testing on every release of WebCT and should be taken as indicative only. In some (many) cases the issue may affect releases earlier than listed here. Please pass on any findings so this page can be updated accordingly. The reference number used is the Blackboard Case number in which the issue was first reported. A tick indicates an issue which is now fixed; a cross indicates an issue which has not been fixed. As you can see the strike rate for getting fixes to these issues is not high! If any of them affect your own PowerLink development work, please report the issue to Blackboard quoting the Case number from this page so that it adds to the pressure on Blackboard to correct them.

Reserved names for settings
Reported: 24 May 2006 (#360479)
Fixed: Partially
Affects: Vista 4.0.2+

Summary

The SDK documentation does not include a complete list of reserved names for settings to be included in the DeployableComponentConfig.xml file.

Later releases of the documentation have improved the quality of the list but the version for Application Pack 2 omits mode, openInNewWindow and operationalTimeout from the list of reserved names, as well as typographical errors with respect to the following names:

  • currentRequestMode
  • webctuserSourcedId_Id
  • webctuserSourcedId_Source

Workaround

Avoid using any of the following names for settings:

  • author
  • classname
  • currentRequestedMode
  • description
  • Enabled
  • glcid
  • groupname
  • id
  • jarfilename
  • lcid_setting
  • mode
  • openInNewWindow
  • operationalTimeout
  • releaseFlag
  • type
  • userId
  • version
  • webctUserSourcedId_Id
  • webctUserSourcedId_Source

Consider adding a prefix (such as an underscore) to all setting names to minimise the risk of conflicting with any reserved names which may be introduced in the future.

Empty locked settings in proxy tools
Reported: 24 May 2006 (#360479/VST-2157)
Fixed: No
Affects: Vista 4.0.2+

Summary

If a setting with no value is locked then creating or editing an instance of the proxy tool in a section causes a java.lang.NullPointerException error.

Workaround

Unlock the setting or lock the setting with a specific value which is treated as being empty (e.g. NA).

Assisted configuration and SQL Server
Reported: 24 May 2006 (#360479)
Fixed: Vista 4.1.2 (May 2007)
Affects: Vista 4.0.3-4.1.1

Summary

When the setting values are returned via an incoming request for a proxy tool using assisted configuration the request hangs. This only happens when using SQL Server as the database for WebCT.

Workarounds

Upgrade to a later release or change to use Oracle!

String array problem
Reported: 24 May 2006 (#360479)
Fixed: No
Affects: Vista 4.0.2+

Summary

When a setting is given a data-type of String_Array in the DeployableComponentConfig.xml file for an outbound authentication module it is not possible to edit the value. The value on the settings page displays is something like [Ljava.lang.String;@88968a].

Workaround

  1. Do not use the array data types except with the CheckList presentation type. A String value can be used and converted into an array using the split() method.
  2. Try using an array data type in combination with a presentation type such as CheckList which can accept multiple selections

Role required for ContextSDK.getInstructorPersonIDs method
Reported: 10 May 2007 (#460098/VST-1011)
Fixed: No
Affects: Vista 4.0.3+

Summary

The ContextSDK.getInstructorPersonIDs method requires a session parameter for a user who is an Institutional Administrator. To be consistent with the user interface a user with the Section Instructor role for the relevant section (or at least Instructor role for the parent Course) should not be able to execute this method.

Workarounds

  1. Create a session using the credentials for an institutional administrator
  2. Use the org.oscelot.webct.dao.LearningContextVO.getMembers(String userRole) method to obtain a list of section instructors
  3. Use the org.oscelot.webct.dao.UserService.getMembers() method to obtain a list of section members; loop through this list and use the org.oscelot.webct.dao.UserVO.isSectionInstructor() method to identify any users with the section instructor role
  4. Use the com.webct.platform.sdkext.authmoduledata.UserService.getMembers() method to obtain a list of section members; loop through this list and use the com.webct.platform.sdkext.authmoduledata.UserVO.isSectionInstructor() method to identify any users with the section instructor role (but see also issue with getMembers() method)
  5. Edit the serverconfs/security/methods.xml file and add the SINS role to the com.webct.platform.coreservice.enrollment.common.RosterOps class section. Note that this workaround has been tested in conjunction with Blackboard but a (probably harmless) side effect is that it also appears to allow users with a role of Section Designer to access this method as well.

Identifying type of SINS role via SDK
Reported: 14 May 2007 (#460601/BER-1862)
Fixed: No
Affects: Vista 4.0.3+

Summary

There is no method available to determine whether a user is a primary section instructor (or not).

Workaround

Use the org.oscelot.webct.dao.UserVO.isPrimarySectionInstructor() method.

Bug with LearningContextService.getLCChildren()
Reported: 20 May 2007 (#461876)
Fixed: No
Affects: Vista 4.0.3+

Summary

The com.webct.platform.sdkext.authmoduledata.LearningContextService.getLCChildren() method returns a list of sections based on data consistent with the rpt_learning_context view provided by the PowerSight kit. This means that it is not necessarily up-to-date and can only be relied upon to provide a correct List immediately after the view has been updated.

Workarounds

  1. Use the com.webct.platform.sdk.context.client.ContextSDK.getChildren() method instead.
  2. Use the org.oscelot.webct.dao package in place of com.webct.platform.sdkext.authmoduledata. The two packages are functionally equivalent and can be used as direct substitutes.

Bug with LearningContextVO.getAdministrativePeriod() and getOrganizationUnit() methods
Reported: 20 May 2007 (#461878/VST-3398)
Fixed: No
Affects: Vista 4.0.3+

Summary

The com.webct.platform.sdkext.authmoduledata.LearningContextVO.getAdministrativePeriod() method returns null even when a section has a value set for the Administrative Period property. Instead the com.webct.platform.sdkext.authmoduledata.LearningContextVO.getOrganizationUnit() method returns the value of the Administrative Period property. This means that it is impossible to access the value of the Organization Unit property using this module.

Workaround

Use the org.oscelot.webct.dao package in place of com.webct.platform.sdkext.authmoduledata.

Problem with UserService.getMembers() method
Reported: 22 May 2007 (#462204/VST-960)
Fixed: No
Affects: Vista 4.1+

Summary

The rpt_member_view was re-defined with the introduction of Application Pack 1 to include two additional columns: active and denied_access. Users who are not active or have been denied access are now being returned by the com.webct.platform.sdkext.authmoduledata.UserService.getMembers() method. No methods or properties are provided with which to identify these records and so the list returned by the method is not an accurate representation of current members.

Workarounds

  1. Add the following conditions to the WHERE clause of the RPT_MEMBER view:

    Oracle: AND nvl(m.deletestatus,0) = 0 AND nvl(r.deletestatus,0) = 0
    SQL Server: AND (ISNULL(m.DELETE_STATUS,0) = 0) AND (ISNULL(r.DELETE_STATUS,0) = 0)

    Blackboard has confirmed that the RPT_MEMBER view is not used by any parts of the product itself so it is safe for it to be amended. The only risk would be if an institution has installed any scripts which use this view; however, it is most unlikely that these would be affected by removing deleted users from the records returned by the view.

  2. Use the org.oscelot.webct.dao package in place of com.webct.platform.sdkext.authmoduledata. The two packages are functionally equivalent and can be used as direct substitutes.

Bug with getSettings(java.lang.Long learningContextId) method
Reported: 8 June 2007 (#465358/VST-1009)
Fixed: No
Affects: Vista 4.0.3+

Summary

The com.webct.platform.sdk.security.authentication.module.AuthenticationModule.getSettings(java.lang.Long learningContextId) method (where learningContextId is for a level above section, such as Institution or Server) returns the settings entered for the module in the System Integration column of the Settings area, rather than the settings entered for the proxy tool itself via the Tools column (as the getSettings() method does for the section level).

Workaround

For levels above section in the Learning Context hierarchy, enter the setting values for the module rather than the proxy tool. A limitation of this workaround is that the setting values must be identical for all proxy tools based on the same module.

Missing SDK methods to access Learning Context IMS values
Reported: 9 June 2007 (#465521/VST-1008)
Fixed: No
Affects: Vista 4.0.3+

Summary

No methods are available to access values from the following learning context IMS fields:

  • Organisation ID
  • E-mail
  • Web Link

Workarounds

Use the methods provided by the org.oscelot.webct.dao.LearningContextVO class.

Different data type returned by LearningContextVO.getStartDate()
Reported: 26 June 2007 (#468107/VST-1007)
Fixed: No
Affects: Vista 4.0.3+

Summary

The JavaDocs for the com.webct.platform.sdkext.authmoduledata.LearningContextVO.getStartDate() state that the method returns a string. In fact it returns Unix Epoch time in milliseconds. This is either an error in the module or the documentation.

Workarounds

  1. Treat the return value as a long rather than a string.
  2. The org.oscelot.webct.dao.LearningContextVO.getStartDateTime() method instead.

LearningContextVO.isStartDateRestricted() method error
Reported: 30 June 2007 (#468980/VST-1005)
Fixed: No
Affects: Vista 4.2+

Summary

This method returns a value of false under all conditions.

Workaround

If restricted by term dates, use the methods provided by the org.oscelot.webct.dao.TermVO class to determine whether access to a section has been restricted for a particular user role. An enhancement is planned for this package to provide a method for doing this more comprehensively.

Permissions error with FileManagerSDK.readFolder method
Reported: 23 July 2007 (#472336/VST-2873)
Fixed: No
Affects: Vista 4.0.3+

Summary

Using the com.webct.platform.sdk.filemanager.client.FileManagerSDK.readFolder() method on a folder in the Repository as a demo student (Student View tab) generates an error: Don't have permission to read entry. This does not arise when accessing the same Proxy Tool as a section designer, section instructor or normal student.

Workarounds

Use an HTTP GET request to obtain a copy of the file!

No methods for accessing term data
Reported: 23 July 2007 (#472522/VST-1004)
Fixed: No
Affects: Vista 4.2+

Summary

There are no methods to access the term related data (e.g. which term a section is associated with)?

Workarounds

Use the methods provided by the org.oscelot.webct.dao.TermVO class.

User permissions for FileManagerSDK.getFileContent() method
Reported: 29 July 2007 (#473573/BER-2468)
Fixed: No
Affects: Vista 4.0.3+

Summary

Users with a student role are not able to use the com.webct.platform.sdk.filemanager.client.FileManagerSDK.getFileContent() method to read the contents of a file in the class files area (including any in the Public Files folder).

Workarounds

  1. Use an HTTP GET request to obtain a copy of the file!
  2. Create a session using the credentials for a section designer or instructor

Changing PowerLink setting to optional
Reported: 29 July 2007 (#473575/VST-1699)
Fixed: No
Affects: Vista 4.2+ (not checked earlier versions)

Summary

Changing the optional status of a tool-specific setting from required to optional can lead to the following message being displayed when trying to edit the settings of a proxy tool instance from the Build tab of a section: An unexpected system exception has occurred. This occurs whenever the setting in the Proxy Tool at the Server level has no value.

Workaround

To edit the proxy tool instance in the section a value must be given to the proxy tool at the serveradmin level even though the setting is supposed to be optional and the proxy tool instance in the section already has a value for the field. This value must be overridden at a lower level to ensure that the correct value is available to the proxy tool instance.

Security risk with locked password settings in proxy tools
Reported: 2 August 2007 (#474378/VST-1009)
Fixed: No
Affects: Vista 4.0.3+

Summary

When a password is defined in the DeployableComponentConfig.xml file with a presentation-type of "Password" it is displayed as a set of asterisks on the settings pages (as it should be). However, the actual password is shown in plain text when viewing the source of this frame/page. This is the case even when the setting has been locked at a higher level and should, therefore, not be accessible by users who do only have roles at lower levels. If the control is disabled (because the setting is locked) there is not need for the value to be included in the source HTML and for security reasons it should be omitted. (Note this issue does not apply to assisted configuration proxy tools since the settings for these instances cannot be edited.)

Workaround

Use the not-applicable-lc-types parameter in the DeployableComponentConfig.xml file to limit the visibility of the setting to higher levels of the Learning Context hierarchy. However, this involves the issue relating to the getSettings() method for levels higher than section and means that all proxy tools based on the same module must use the same value for the password settings.

UserService.getUser() method returns wrong UserVO
Reported: 7 August 2007 (#475411/VST-1000)
Fixed: No
Affects: Vista 4.0.3+

Summary

The com.webct.platform.sdkext.authmoduledata.UserService.getUser(userId, currentLCId) should return the UserVO object for the corresponding user. However, if the userId exists in more than one institution on the same server, this method always returns the same UserVO irrespective of the currentLCId passed. Thus, this may not be the correct object.

Workarounds

  1. Do not permit the same WebCT IDs to be used in different institutions on the same server.
  2. Use the org.oscelot.webct.dao package in place of com.webct.platform.sdkext.authmoduledata. The two packages are functionally equivalent and can be used as direct substitutes.

XSLT transformations no longer work
Reported: 28 August 2007 (#480175)
Fixed: No
Affects: Vista 4.2+

Summary

Trying to perform a transformation of an XML file using a XSLT stylesheet generates the error message "weblogic.xml.jaxp.RegistrySAXTransformerFactory not found". This, for example, causes the RSS Feed PowerLink available from the OSCELOT project site to fail.

My strong suspicion is that this problem is related to a known issue with Weblogic 9.2: Running the unit tests in the Spring Pet Clinic sample application can result in the following error: Could not find a valid processor version implementation from weblogic.xml.jaxp.RegistrySAXTransformerFactory" (see the WebLogic site for details). Unfortunately the suggested workaround does not seem to work with WebCT - it merely stops the system from starting up.

Workarounds

  • Perform at least the XML transformations element of PowerLinks using a different technology (e.g. a ColdFusion script on a separate server).
  • Michael Aherne has posted a great workaround on EduGarage which only involves adding three text files to the PowerLink jar file and including three dependent Java package files in the same directory.

WebCTSSOContext.getUserId() method can return wrong ID
Reported: 10 November 2007 (#496484/VST-2033)
Fixed: No
Affects: Vista 4.2+

Summary

After adding a PowerLink which is installed using assisted configuration, any calls it (or any other PowerLink) makes to the com.webct.platform.sdk.security.authentication.module.WebCTSSOContext.getUserId() method during the same user login session return the ID of the actual user even on the Student View tab when the ID should refer to the demo student. All the other properties of the WebCTSSOContext interface refer to the correct user, including the value returned by the getWebCTId() method. A user must log out and log back in again to stop this behaviour.

Workaround

Avoid using the getUserId() method and use the getWebCTId() method instead.

Fundamental flaw with UserService.getLearningContexts() method
Fixed: No
Affects: Vista 4.0+

Summary

The com.webct.platform.sdkext.authmoduledata.UserService.getLearningContexts() method is designed to return a list of the learning contexts (at a specified level) in which a user has a role. Not only does this list include learning contexts for which a user's role has been deleted (see issue with getMembers() method) but it also includes learning contexts for users from other institutions with the same WebCT ID. The method is not passed sufficient data to allow it to identify the institution to which the requested user belongs, hence this method is fundamentally flawed.

Workarounds

  1. After retrieving the list of learning contexts, check each one to ensure that its parent institution is the same as the current institution.
  2. Use the org.oscelot.webct.dao.UserVO.getLearningContexts() method.

openInNewWindow setting for PowerLinks
Reported: 19 May 2008 (#528690/VST-3033)
Fixed: No
Affects: Vista 8.0 (not checked earlier versions)

Summary

The openInNewWindow setting for a proxy tool seems to be ignored by WebCT and the setting used when first creating the proxy tool instance is always used. Thus it is not possible to change the behaviour of a proxy tool instance after it has been created; it will always use the openInNewWindow setting specified at the time the instance was created.

Workaround

Create a new instance of the proxy tool with the required value for the openInNewWindow setting.

Invalid default settings for new GradeBook columns
Reported: June 2008 (#531212)
Fixed: No
Affects: CE 8.0 (not checked other versions)

Summary

New gradebook columns created by the GradeBookSDKUtils class in the PowerLinks SDK have the following properties by default:

  • released = true
  • gradeColumn = false

This combination of settings is not possible when using the GUI to create a column and contradicts the online help: Grade-related columns can be released to Students while non-grade-related columns cannot.. The problem can be replicated with the following code:

SectionColumnVO column = GradeBookSDKUtils.createNewTextColumn(false);
System.out.println(column.getReleased());
System.out.println(column.getGradeColumn());

Workaround

Use the setReleased() and setGradeColumn() methods to set column settings to supported values.

Error using FileManagerSDK.getFileContent() method to access repository files
Reported: March 2009 (#583751/VST-4477)
Fixed: No
Affects: Vista 8.0 (not checked other versions)

Summary

Even when a session for a Section instructor is passed to the FileManagerSDK.getFileContent() the permissions of the current user appear to be used when determining whether the contents of a file in the repository can be read. The permissions of the passed session are used to read the file details, but not when accessing the content.

Workaround

None using publicly available methods.

Checkbox settings not overridden in admin interface
Reported: September 2009 (#623174/VST-5014)
Fixed: No
Affects: Vista 8.0 (not checked other versions)

Summary

Values of Checkbox type settings in a PowerLink are not being overridden at child levels when the box is checked on the settings page at a higher level in the learning context hierarchy.

Workaround

Do not use Checkbox type settings!

Settings of type CheckList cannot be optional
Reported: September 2009 (#623628)
Fixed: No
Affects: CE 8.0 (not checked other versions)

Summary

When an optional setting with a presentation type of CheckList is set to be optional is saved with none of the options selected, at least one setting will remain selected.

Workaround

None (except to make the setting as required and include an option which represents none of the options being selected)

Inconsistent array type returned by getSettings() for CheckList-type settings
Reported: September 2009 (#623628)
Fixed: No
Affects: CE 8.0 (not checked other versions)

Summary

If a setting has a presentation type of CheckList and a data type of, for example, Boolean, then the com.webct.platform.sdk.security.authentication.module.AuthenticationModule.getSettings(java.lang.Long learningContextId) method will return a Boolean array as expected. However, the com.webct.platform.sdk.security.authentication.module.AuthenticationModule.getSettings() method will always return a String containing values of selected options separated with a "|" character.

Workaround

Recreate the array using String.split and appropriate type conversions.

Unable to use FileManagerSDK.updatePermissions to change the public status of a class file
Reported: December 2009 (#640852/VST-5348)
Fixed: No
Affects: Vista 8.0 (not checked other versions)

Summary

An "SDKFMN0001 FileManagerException" is generated when trying to use the FileManagerSDK.updatePermissions method to set the public status of a file in the Class files area.

Workaround

None.

Valid XHTML 1.0 Strict