Program: 69354
Project: 69354
Buggy source:
/** 
 * @param cpNode CourseNode
 * @param ureq
 * @param wControl
 * @param course Course Interface
 * @param euce User course environment
 */
public ScormEditController(ScormCourseNode scormNode,UserRequest ureq,WindowControl wControl,ICourse course,UserCourseEnvironment euce){
  super(ureq,wControl);
  this.course=course;
  this.scormNode=scormNode;
  this.config=scormNode.getModuleConfiguration();
  main=new Panel("String_Node_Str");
  cpConfigurationVc=this.createVelocityContainer("String_Node_Str");
  chooseCPButton=LinkFactory.createButtonSmall("String_Node_Str",cpConfigurationVc,this);
  chooseCPButton.setElementCssClass("String_Node_Str");
  changeCPButton=LinkFactory.createButtonSmall("String_Node_Str",cpConfigurationVc,this);
  changeCPButton.setElementCssClass("String_Node_Str");
  highScoreNodeConfigController=new HighScoreEditController(ureq,wControl,scormNode,euce);
  listenTo(highScoreNodeConfigController);
  DeliveryOptions parentConfig=null;
  if (config.get(CONFIG_KEY_REPOSITORY_SOFTKEY) != null) {
    RepositoryEntry re=getScormCPReference(config,false);
    if (re == null) {
      showError(NLS_ERROR_CPREPOENTRYMISSING);
      cpConfigurationVc.contextPut("String_Node_Str",Boolean.FALSE);
      cpConfigurationVc.contextPut(VC_CHOSENCP,translate(NLS_NO_CP_CHOSEN));
    }
 else {
      cpConfigurationVc.contextPut("String_Node_Str",Boolean.TRUE);
      String displayname=StringHelper.escapeHtml(re.getDisplayname());
      previewLink=LinkFactory.createCustomLink("String_Node_Str","String_Node_Str",displayname,Link.NONTRANSLATED,cpConfigurationVc,this);
      previewLink.setIconLeftCSS("String_Node_Str");
      previewLink.setCustomEnabledLinkCSS("String_Node_Str");
      previewLink.setTitle(getTranslator().translate("String_Node_Str"));
      ScormPackageConfig scormConfig=ScormMainManager.getInstance().getScormPackageConfig(re.getOlatResource());
      parentConfig=scormConfig == null ? null : scormConfig.getDeliveryOptions();
    }
  }
 else {
    cpConfigurationVc.contextPut("String_Node_Str",Boolean.FALSE);
    cpConfigurationVc.contextPut(VC_CHOSENCP,translate(NLS_NO_CP_CHOSEN));
  }
  boolean showMenu=config.getBooleanSafe(CONFIG_SHOWMENU,true);
  boolean showNavButtons=config.getBooleanSafe(CONFIG_SHOWNAVBUTTONS,true);
  boolean skipLaunchPage=config.getBooleanSafe(CONFIG_SKIPLAUNCHPAGE,false);
  boolean assessable=config.getBooleanSafe(CONFIG_ISASSESSABLE,true);
  String assessableType=null;
  if (assessable) {
    assessableType=config.getStringValue(CONFIG_ASSESSABLE_TYPE,CONFIG_ASSESSABLE_TYPE_SCORE);
  }
  boolean attemptsDependOnScore=config.getBooleanSafe(CONFIG_ATTEMPTSDEPENDONSCORE,true);
  int maxAttempts=config.getIntegerSafe(CONFIG_MAXATTEMPTS,0);
  boolean advanceScore=config.getBooleanSafe(CONFIG_ADVANCESCORE,true);
  int cutvalue=config.getIntegerSafe(CONFIG_CUTVALUE,0);
  boolean fullWindow=config.getBooleanSafe(CONFIG_FULLWINDOW,true);
  boolean closeOnFinish=config.getBooleanSafe(CONFIG_CLOSE_ON_FINISH,false);
  scorevarform=new VarForm(ureq,wControl,showMenu,skipLaunchPage,showNavButtons,assessableType,cutvalue,fullWindow,closeOnFinish,maxAttempts,advanceScore,attemptsDependOnScore);
  listenTo(scorevarform);
  cpConfigurationVc.put("String_Node_Str",scorevarform.getInitialComponent());
  Condition accessCondition=scormNode.getPreConditionAccess();
  accessibilityCondContr=new ConditionEditController(ureq,getWindowControl(),euce,accessCondition,AssessmentHelper.getAssessableNodes(course.getEditorTreeModel(),scormNode));
  listenTo(accessibilityCondContr);
  DeliveryOptions deliveryOptions=(DeliveryOptions)config.get(CONFIG_DELIVERY_OPTIONS);
  deliveryOptionsCtrl=new DeliveryOptionsConfigurationController(ureq,getWindowControl(),deliveryOptions,"String_Node_Str",parentConfig);
  listenTo(deliveryOptionsCtrl);
  main.setContent(cpConfigurationVc);
}

Fixed version (ground truth):
/** 
 * @param cpNode CourseNode
 * @param ureq
 * @param wControl
 * @param course Course Interface
 * @param euce User course environment
 */
public ScormEditController(ScormCourseNode scormNode,UserRequest ureq,WindowControl wControl,ICourse course,UserCourseEnvironment euce){
  super(ureq,wControl);
  this.course=course;
  this.scormNode=scormNode;
  this.config=scormNode.getModuleConfiguration();
  main=new Panel("String_Node_Str");
  cpConfigurationVc=this.createVelocityContainer("String_Node_Str");
  chooseCPButton=LinkFactory.createButtonSmall("String_Node_Str",cpConfigurationVc,this);
  chooseCPButton.setElementCssClass("String_Node_Str");
  changeCPButton=LinkFactory.createButtonSmall("String_Node_Str",cpConfigurationVc,this);
  changeCPButton.setElementCssClass("String_Node_Str");
  highScoreNodeConfigController=new HighScoreEditController(ureq,wControl,scormNode);
  listenTo(highScoreNodeConfigController);
  DeliveryOptions parentConfig=null;
  if (config.get(CONFIG_KEY_REPOSITORY_SOFTKEY) != null) {
    RepositoryEntry re=getScormCPReference(config,false);
    if (re == null) {
      showError(NLS_ERROR_CPREPOENTRYMISSING);
      cpConfigurationVc.contextPut("String_Node_Str",Boolean.FALSE);
      cpConfigurationVc.contextPut(VC_CHOSENCP,translate(NLS_NO_CP_CHOSEN));
    }
 else {
      cpConfigurationVc.contextPut("String_Node_Str",Boolean.TRUE);
      String displayname=StringHelper.escapeHtml(re.getDisplayname());
      previewLink=LinkFactory.createCustomLink("String_Node_Str","String_Node_Str",displayname,Link.NONTRANSLATED,cpConfigurationVc,this);
      previewLink.setIconLeftCSS("String_Node_Str");
      previewLink.setCustomEnabledLinkCSS("String_Node_Str");
      previewLink.setTitle(getTranslator().translate("String_Node_Str"));
      ScormPackageConfig scormConfig=ScormMainManager.getInstance().getScormPackageConfig(re.getOlatResource());
      parentConfig=scormConfig == null ? null : scormConfig.getDeliveryOptions();
    }
  }
 else {
    cpConfigurationVc.contextPut("String_Node_Str",Boolean.FALSE);
    cpConfigurationVc.contextPut(VC_CHOSENCP,translate(NLS_NO_CP_CHOSEN));
  }
  boolean showMenu=config.getBooleanSafe(CONFIG_SHOWMENU,true);
  boolean showNavButtons=config.getBooleanSafe(CONFIG_SHOWNAVBUTTONS,true);
  boolean skipLaunchPage=config.getBooleanSafe(CONFIG_SKIPLAUNCHPAGE,false);
  boolean assessable=config.getBooleanSafe(CONFIG_ISASSESSABLE,true);
  String assessableType=null;
  if (assessable) {
    assessableType=config.getStringValue(CONFIG_ASSESSABLE_TYPE,CONFIG_ASSESSABLE_TYPE_SCORE);
  }
  boolean attemptsDependOnScore=config.getBooleanSafe(CONFIG_ATTEMPTSDEPENDONSCORE,true);
  int maxAttempts=config.getIntegerSafe(CONFIG_MAXATTEMPTS,0);
  boolean advanceScore=config.getBooleanSafe(CONFIG_ADVANCESCORE,true);
  int cutvalue=config.getIntegerSafe(CONFIG_CUTVALUE,0);
  boolean fullWindow=config.getBooleanSafe(CONFIG_FULLWINDOW,true);
  boolean closeOnFinish=config.getBooleanSafe(CONFIG_CLOSE_ON_FINISH,false);
  scorevarform=new VarForm(ureq,wControl,showMenu,skipLaunchPage,showNavButtons,assessableType,cutvalue,fullWindow,closeOnFinish,maxAttempts,advanceScore,attemptsDependOnScore);
  listenTo(scorevarform);
  cpConfigurationVc.put("String_Node_Str",scorevarform.getInitialComponent());
  Condition accessCondition=scormNode.getPreConditionAccess();
  accessibilityCondContr=new ConditionEditController(ureq,getWindowControl(),euce,accessCondition,AssessmentHelper.getAssessableNodes(course.getEditorTreeModel(),scormNode));
  listenTo(accessibilityCondContr);
  DeliveryOptions deliveryOptions=(DeliveryOptions)config.get(CONFIG_DELIVERY_OPTIONS);
  deliveryOptionsCtrl=new DeliveryOptionsConfigurationController(ureq,getWindowControl(),deliveryOptions,"String_Node_Str",parentConfig);
  listenTo(deliveryOptionsCtrl);
  main.setContent(cpConfigurationVc);
}