Program: 101187
Project: 101187
Buggy source:
/** 
 * The constructor of this class is used to build the tree of UI components that will be aggregated in the portal page.  1) The component is stored in the current PortalRequestContext ThreadLocal  2) The configuration for the portal associated with the current user request is extracted from the  PortalRequestContext 3) Then according to the context path, either a public or private portal is initiated. Usually a public portal does not contain the left column and only the private one has it. 4) The skin to use is setup 5) Finally, the current component is associated with the current portal owner      
 * @param initParams
 * @throws Exception
 */
@SuppressWarnings("String_Node_Str") public UIPortalApplication(InitParams initParams) throws Exception {
  log=ExoLogger.getLogger("String_Node_Str");
  PortalRequestContext context=PortalRequestContext.getCurrentInstance();
  context.setUIApplication(this);
  userPortalConfig_=(UserPortalConfig)context.getAttribute(UserPortalConfig.class);
  if (userPortalConfig_ == null)   throw new Exception("String_Node_Str");
  if (context.getAccessPath() == PortalRequestContext.PUBLIC_ACCESS) {
    if (log.isDebugEnabled())     log.debug("String_Node_Str");
    initPublicPortal(initParams);
  }
 else {
    if (log.isDebugEnabled())     log.debug("String_Node_Str");
    initPrivatePortal(context.getRemoteUser());
  }
  String currentSkin=userPortalConfig_.getPortalConfig().getSkin();
  if (currentSkin != null && currentSkin.trim().length() > 0)   skin_=currentSkin;
  LocaleConfigService localeConfigService=getApplicationComponent(LocaleConfigService.class);
  LocaleConfig localeConfig=localeConfigService.getLocaleConfig(userPortalConfig_.getPortalConfig().getLocale());
  if (localeConfig == null)   localeConfig=localeConfigService.getDefaultLocaleConfig();
  setLocale(localeConfig.getLocale());
  setOwner(context.getPortalOwner());
}

Fixed version (ground truth):
/** 
 * The constructor of this class is used to build the tree of UI components that will be aggregated in the portal page.  1) The component is stored in the current PortalRequestContext ThreadLocal  2) The configuration for the portal associated with the current user request is extracted from the  PortalRequestContext 3) Then according to the context path, either a public or private portal is initiated. Usually a public portal does not contain the left column and only the private one has it. 4) The skin to use is setup 5) Finally, the current component is associated with the current portal owner      
 * @param initParams
 * @throws Exception
 */
@SuppressWarnings("String_Node_Str") public UIPortalApplication() throws Exception {
  log=ExoLogger.getLogger("String_Node_Str");
  PortalRequestContext context=PortalRequestContext.getCurrentInstance();
  context.setUIApplication(this);
  userPortalConfig_=(UserPortalConfig)context.getAttribute(UserPortalConfig.class);
  if (userPortalConfig_ == null)   throw new Exception("String_Node_Str");
  UserACL acl=getApplicationComponent(UserACL.class);
  String test=context.getRemoteUser();
  if (acl.hasAccessControlWorkspacePermission(test))   addChild(UIControlWorkspace.class,UIPortalApplication.UI_CONTROL_WS_ID,null);
  addWorkingWorkspace();
  String currentSkin=userPortalConfig_.getPortalConfig().getSkin();
  if (currentSkin != null && currentSkin.trim().length() > 0)   skin_=currentSkin;
  LocaleConfigService localeConfigService=getApplicationComponent(LocaleConfigService.class);
  LocaleConfig localeConfig=localeConfigService.getLocaleConfig(userPortalConfig_.getPortalConfig().getLocale());
  if (localeConfig == null)   localeConfig=localeConfigService.getDefaultLocaleConfig();
  setLocale(localeConfig.getLocale());
  setOwner(context.getPortalOwner());
}