1. bbstaging and production bb server里每个account的 username 和 batch uid是不同的,而在bbtest里两者是相同的。
By default,bboogle是使用user batch uid来和google app domain username来进行mapping的。因此,用缺省的就会出错。
解决办法是:
Bboogle提供了一个IdentityCorresponder接口,by default是使用edu.northwestern.at.bboogle.bb.servlets.data.IdentityManagerBase
你需要自定义一个实现该接口的identity corresponder,来使用username而不是batch uid。Bboogle svn里现在提供了一个用于username的identity corresponder named "UsernameIdentityCorresponder"
package edu.northwestern.at.bboogle.bb.servlets.data;
import edu.northwestern.at.logging.LogManager;
import blackboard.data.user.User;
import blackboard.persist.PersistenceException;
import blackboard.persist.user.UserDbLoader;
public class UsernameIdentityCorresponder extends IdentityManagerBase
{
public String getCorrespondingUserId(String userid)
{
// first, map the batch uid back to a username
try
{
UserDbLoader ldr = UserDbLoader.Default.getInstance();
User user = ldr.loadByBatchUid(userid);
userid = user.getUserName();
}
catch (PersistenceException e)
{
LogManager.logError(this.getClass().getName(), "Failed to load user based on batch uid "+userid, e);
}
return super.getCorrespondingUserId(userid);
}
}
把它复制到你的bboogle war里,然后install之后修改setting " IdentityCorresponder implementation" as " edu.northwestern.at.bboogle.bb.servlets.data.UsernameIdentityCorresponder"。
我之前自己写的custom identity corresponder,99%和上面一样,就是getCorrespondingUserId method的返回值不同。我的是只返回username,而上面的是调用父类
IdentityManagerBase的getCorrespondingUserId方法,该方法会返回 username + @ + google apps domain。例如,"tomsonxu@etoken.cityu.edu.hk".
2. 有同事在create a google doc link in bb course之后,click the link, it shows following error.
查源代码,该error来自tools/googleSharingDefect.jsp file,是有SSOBridgeServlet class中调用
gintService.processLinkClick(userID, courseID, gintService.obtainGroupID(courseID), linkID);
返回null引起的。源代码中,上面这行代码的第一个参数"userID"是batch uid,我怀疑是不是它的问题,是不是要转换成username or username@[googleapp domain]?
3. "Control Panel > Course Tools > Google Apps Bookmarking Tool" doesn't work
另附上一个安装时候会出现的问题:Error: Could not install Bboogle (Google Apps Integration for Bb9). There are associated database changes and the global setting has been set to prevent any Building Block from creating custom database objects.