Program: 119167
Project: 119167
Buggy source:
private void loadComponentsFromFolder(String pathSource,AbstractComponentsProvider provider){
  boolean isCustom=false;
  if ("String_Node_Str".equals(provider.getId()) || "String_Node_Str".equals(provider.getId())) {
    isCustom=true;
  }
  File source;
  try {
    source=provider.getInstallationFolder();
  }
 catch (  IOException e1) {
    ExceptionHandler.process(e1);
    return;
  }
  File[] childDirectories;
  FileFilter fileFilter=new FileFilter(){
    @Override public boolean accept(    final File file){
      return file.isDirectory() && file.getName().charAt(0) != '.' && !file.getName().equals(IComponentsFactory.EXTERNAL_COMPONENTS_INNER_FOLDER);
    }
  }
;
  if (source == null) {
    ExceptionHandler.process(new Exception(Messages.getString("String_Node_Str") + pathSource));
    return;
  }
  childDirectories=source.listFiles(fileFilter);
  IBrandingService service=(IBrandingService)GlobalServiceRegister.getDefault().getService(IBrandingService.class);
  FileFilter skeletonFilter=new FileFilter(){
    @Override public boolean accept(    final File file){
      String fileName=file.getName();
      return file.isFile() && fileName.charAt(0) != '.' && (fileName.endsWith(SKELETON_SUFFIX) || fileName.endsWith(INCLUDEFILEINJET_SUFFIX));
    }
  }
;
  BundleContext context=null;
  if (Platform.getProduct() != null) {
    final Bundle definingBundle=Platform.getProduct().getDefiningBundle();
    if (definingBundle != null) {
      context=definingBundle.getBundleContext();
    }
  }
  if (context == null) {
    context=CodeGeneratorActivator.getDefault().getBundle().getBundleContext();
  }
  ServiceReference sref=context.getServiceReference(PackageAdmin.class.getName());
  PackageAdmin admin=(PackageAdmin)context.getService(sref);
  String bundleName;
  if (!isCustom) {
    bundleName=admin.getBundle(provider.getClass()).getSymbolicName();
  }
 else {
    bundleName=IComponentsFactory.COMPONENTS_LOCATION;
  }
  if (childDirectories != null) {
    if (monitor != null) {
      this.subMonitor=SubMonitor.convert(monitor,Messages.getString("String_Node_Str"),childDirectories.length);
    }
    if (skeletonList != null) {
      skeletonList.ensureCapacity(childDirectories.length);
      for (      File currentFolder : childDirectories) {
        File[] skeletonFiles=currentFolder.listFiles(skeletonFilter);
        if (skeletonFiles != null) {
          for (          File file : skeletonFiles) {
            skeletonList.add(file.getAbsolutePath());
          }
        }
        try {
          File xmlMainFile=new File(currentFolder,ComponentFilesNaming.getInstance().getMainXMLFileName(currentFolder.getName(),getCodeLanguageSuffix()));
          if (!xmlMainFile.exists()) {
            continue;
          }
          String currentXmlSha1=null;
          try {
            currentXmlSha1=SHA1Util.calculateFromTextStream(new FileInputStream(xmlMainFile));
          }
 catch (          FileNotFoundException e) {
          }
          ComponentsCache cache=ComponentManager.getComponentCache();
          boolean foundComponentIsSame=false;
          ComponentInfo existingComponentInfoInCache=null;
          if (cache.getComponentEntryMap().containsKey(currentFolder.getName())) {
            EList<ComponentInfo> infos=cache.getComponentEntryMap().get(currentFolder.getName());
            for (            ComponentInfo info : infos) {
              if (StringUtils.equals(bundleName,info.getSourceBundleName())) {
                existingComponentInfoInCache=info;
                if (StringUtils.equals(info.getSha1(),currentXmlSha1)) {
                  foundComponentIsSame=true;
                }
                break;
              }
            }
          }
          if (foundComponentIsSame) {
            if (componentsCache.containsKey(xmlMainFile.getAbsolutePath())) {
              IComponent componentFromThisProvider=null;
              for (              IComponent component : componentsCache.get(xmlMainFile.getAbsolutePath()).values()) {
                if (component instanceof EmfComponent) {
                  if (bundleName.equals(((EmfComponent)component).getSourceBundleName())) {
                    componentFromThisProvider=component;
                    break;
                  }
                }
              }
              if (componentFromThisProvider != null) {
                componentList.add(componentFromThisProvider);
                if (isCustom) {
                  customComponentList.add(componentFromThisProvider);
                }
                continue;
              }
            }
          }
          if (!foundComponentIsSame) {
            ComponentFileChecker.checkComponentFolder(currentFolder,getCodeLanguageSuffix());
          }
          String pathName=xmlMainFile.getAbsolutePath();
          String applicationPath=ComponentBundleToPath.getPathFromBundle(bundleName);
          pathName=(new Path(pathName)).toPortableString();
          pathName=pathName.replace(applicationPath,"String_Node_Str");
          EmfComponent currentComp=new EmfComponent(pathName,bundleName,xmlMainFile.getParentFile().getName(),pathSource,cache,foundComponentIsSame,provider);
          if (!foundComponentIsSame) {
            currentComp.isVisibleInComponentDefinition();
            currentComp.isTechnical();
            currentComp.getOriginalFamilyName();
            currentComp.getTranslatedFamilyName();
            currentComp.getPluginExtension();
            currentComp.getVersion();
            currentComp.getModulesNeeded();
            currentComp.getPluginDependencies();
            EList<ComponentInfo> componentsInfo=cache.getComponentEntryMap().get(currentFolder.getName());
            for (            ComponentInfo cInfo : componentsInfo) {
              if (cInfo.getSourceBundleName().equals(bundleName)) {
                cInfo.setSha1(currentXmlSha1);
                break;
              }
            }
            ComponentManager.setModified(true);
          }
          boolean hiddenComponent=false;
          Collection<IComponentFactoryFilter> filters=ComponentsFactoryProviderManager.getInstance().getProviders();
          for (          IComponentFactoryFilter filter : filters) {
            if (!filter.isAvailable(currentComp.getName())) {
              hiddenComponent=true;
              break;
            }
          }
          if (hiddenComponent && !(currentComp.getOriginalFamilyName().contains("String_Node_Str") || currentComp.isTechnical())) {
            continue;
          }
          componentToProviderMap.put(currentComp,provider);
          if (hiddenComponent && (currentComp.getOriginalFamilyName().contains("String_Node_Str") || currentComp.isTechnical())) {
            currentComp.setVisible(false);
            currentComp.setTechnical(true);
          }
          if (provider.getId().contains("String_Node_Str")) {
            currentComp.setPaletteType(ComponentCategory.CATEGORY_4_CAMEL.getName());
          }
 else {
            currentComp.setPaletteType(currentComp.getType());
          }
          if (componentList.contains(currentComp)) {
            log.warn("String_Node_Str" + currentComp.getName() + "String_Node_Str");
          }
 else {
            currentComp.setProvider(provider);
            componentList.add(currentComp);
            if (isCustom) {
              customComponentList.add(currentComp);
            }
            if (pathSource != null) {
              Path userComponent=new Path(pathSource);
              Path templatePath=new Path(IComponentsFactory.COMPONENTS_INNER_FOLDER + File.separatorChar + IComponentsFactory.EXTERNAL_COMPONENTS_INNER_FOLDER+ File.separatorChar+ ComponentUtilities.getExtFolder(OLD_COMPONENTS_USER_INNER_FOLDER));
              if (userComponent.equals(templatePath)) {
                userComponentList.add(currentComp);
              }
            }
          }
          String componentName=xmlMainFile.getAbsolutePath();
          if (!componentsCache.containsKey(componentName)) {
            componentsCache.put(componentName,new HashMap<String,IComponent>());
          }
          componentsCache.get(xmlMainFile.getAbsolutePath()).put(currentComp.getPaletteType(),currentComp);
        }
 catch (        MissingMainXMLComponentFileException e) {
          log.trace(currentFolder.getName() + "String_Node_Str" + getCodeLanguageSuffix()+ "String_Node_Str",e);
        }
catch (        BusinessException e) {
          BusinessException ex=new BusinessException("String_Node_Str" + currentFolder.getName() + "String_Node_Str"+ e.getMessage(),e);
          ExceptionHandler.process(ex,Level.WARN);
        }
        if (this.subMonitor != null) {
          this.subMonitor.worked(1);
        }
        if (this.monitor != null && this.monitor.isCanceled()) {
          return;
        }
      }
      skeletonList.trimToSize();
    }
  }
}

Fixed version (ground truth):
private void loadComponentsFromFolder(String pathSource,AbstractComponentsProvider provider){
  boolean isCustom=false;
  if ("String_Node_Str".equals(provider.getId()) || "String_Node_Str".equals(provider.getId())) {
    isCustom=true;
  }
  File source;
  try {
    source=provider.getInstallationFolder();
  }
 catch (  IOException e1) {
    ExceptionHandler.process(e1);
    return;
  }
  File[] childDirectories;
  FileFilter fileFilter=new FileFilter(){
    @Override public boolean accept(    final File file){
      return file.isDirectory() && file.getName().charAt(0) != '.' && !file.getName().equals(IComponentsFactory.EXTERNAL_COMPONENTS_INNER_FOLDER);
    }
  }
;
  if (source == null) {
    ExceptionHandler.process(new Exception(Messages.getString("String_Node_Str") + pathSource));
    return;
  }
  childDirectories=source.listFiles(fileFilter);
  IBrandingService service=(IBrandingService)GlobalServiceRegister.getDefault().getService(IBrandingService.class);
  FileFilter skeletonFilter=new FileFilter(){
    @Override public boolean accept(    final File file){
      String fileName=file.getName();
      return file.isFile() && fileName.charAt(0) != '.' && (fileName.endsWith(SKELETON_SUFFIX) || fileName.endsWith(INCLUDEFILEINJET_SUFFIX));
    }
  }
;
  BundleContext context=null;
  if (Platform.getProduct() != null) {
    final Bundle definingBundle=Platform.getProduct().getDefiningBundle();
    if (definingBundle != null) {
      context=definingBundle.getBundleContext();
    }
  }
  if (context == null) {
    context=CodeGeneratorActivator.getDefault().getBundle().getBundleContext();
  }
  ServiceReference sref=context.getServiceReference(PackageAdmin.class.getName());
  PackageAdmin admin=(PackageAdmin)context.getService(sref);
  String bundleName;
  if (!isCustom) {
    bundleName=admin.getBundle(provider.getClass()).getSymbolicName();
  }
 else {
    bundleName=IComponentsFactory.COMPONENTS_LOCATION;
  }
  if (childDirectories != null) {
    if (monitor != null) {
      this.subMonitor=SubMonitor.convert(monitor,Messages.getString("String_Node_Str"),childDirectories.length);
    }
    if (skeletonList != null) {
      skeletonList.ensureCapacity(childDirectories.length);
      for (      File currentFolder : childDirectories) {
        File[] skeletonFiles=currentFolder.listFiles(skeletonFilter);
        if (skeletonFiles != null) {
          for (          File file : skeletonFiles) {
            skeletonList.add(file.getAbsolutePath());
          }
        }
        try {
          File xmlMainFile=new File(currentFolder,ComponentFilesNaming.getInstance().getMainXMLFileName(currentFolder.getName(),getCodeLanguageSuffix()));
          if (!xmlMainFile.exists()) {
            continue;
          }
          String currentXmlSha1=null;
          try {
            currentXmlSha1=SHA1Util.calculateFromTextStream(new FileInputStream(xmlMainFile));
          }
 catch (          FileNotFoundException e) {
          }
          ComponentsCache cache=ComponentManager.getComponentCache();
          boolean foundComponentIsSame=false;
          ComponentInfo existingComponentInfoInCache=null;
          if (cache.getComponentEntryMap().containsKey(currentFolder.getName())) {
            EList<ComponentInfo> infos=cache.getComponentEntryMap().get(currentFolder.getName());
            for (            ComponentInfo info : infos) {
              if (StringUtils.equals(bundleName,info.getSourceBundleName())) {
                existingComponentInfoInCache=info;
                if (StringUtils.equals(info.getSha1(),currentXmlSha1)) {
                  foundComponentIsSame=true;
                }
                break;
              }
            }
          }
          if (foundComponentIsSame) {
            if (componentsCache.containsKey(xmlMainFile.getAbsolutePath())) {
              IComponent componentFromThisProvider=null;
              for (              IComponent component : componentsCache.get(xmlMainFile.getAbsolutePath()).values()) {
                if (component instanceof EmfComponent) {
                  if (bundleName.equals(((EmfComponent)component).getSourceBundleName())) {
                    componentFromThisProvider=component;
                    break;
                  }
                }
              }
              if (componentFromThisProvider != null) {
                componentList.add(componentFromThisProvider);
                if (isCustom) {
                  customComponentList.add(componentFromThisProvider);
                }
                continue;
              }
            }
          }
          if (!foundComponentIsSame) {
            ComponentFileChecker.checkComponentFolder(currentFolder,getCodeLanguageSuffix());
          }
          String pathName=xmlMainFile.getAbsolutePath();
          String applicationPath=ComponentBundleToPath.getPathFromBundle(bundleName);
          pathName=(new Path(pathName)).toPortableString();
          pathName=pathName.replace(applicationPath,"String_Node_Str");
          EmfComponent currentComp=new EmfComponent(pathName,bundleName,xmlMainFile.getParentFile().getName(),pathSource,cache,foundComponentIsSame,provider);
          if (!foundComponentIsSame) {
            currentComp.isVisibleInComponentDefinition();
            currentComp.isTechnical();
            currentComp.getOriginalFamilyName();
            currentComp.getTranslatedFamilyName();
            currentComp.getPluginExtension();
            currentComp.getVersion();
            currentComp.getModulesNeeded();
            currentComp.getPluginDependencies();
            EList<ComponentInfo> componentsInfo=cache.getComponentEntryMap().get(currentFolder.getName());
            for (            ComponentInfo cInfo : componentsInfo) {
              if (cInfo.getSourceBundleName().equals(bundleName)) {
                cInfo.setSha1(currentXmlSha1);
                break;
              }
            }
            ComponentManager.setModified(true);
          }
          boolean hiddenComponent=false;
          Collection<IComponentFactoryFilter> filters=ComponentsFactoryProviderManager.getInstance().getProviders();
          for (          IComponentFactoryFilter filter : filters) {
            if (!filter.isAvailable(currentComp.getName())) {
              hiddenComponent=true;
              break;
            }
          }
          if (hiddenComponent && !(currentComp.getOriginalFamilyName().contains("String_Node_Str") || currentComp.isTechnical())) {
            continue;
          }
          componentToProviderMap.put(currentComp,provider);
          if (hiddenComponent && (currentComp.getOriginalFamilyName().contains("String_Node_Str") || currentComp.isTechnical())) {
            currentComp.setVisible(false);
            currentComp.setTechnical(true);
          }
          if (provider.getId().contains("String_Node_Str")) {
            currentComp.setPaletteType(ComponentCategory.CATEGORY_4_CAMEL.getName());
          }
 else {
            currentComp.setPaletteType(currentComp.getType());
          }
          if (componentList.contains(currentComp)) {
            log.warn("String_Node_Str" + currentComp.getName() + "String_Node_Str");
          }
 else {
            currentComp.setProvider(provider);
            componentList.add(currentComp);
            if (isCustom) {
              customComponentList.add(currentComp);
            }
            if (pathSource != null) {
              Path userComponent=new Path(pathSource);
              Path templatePath=new Path(IComponentsFactory.COMPONENTS_INNER_FOLDER + File.separatorChar + IComponentsFactory.EXTERNAL_COMPONENTS_INNER_FOLDER+ File.separatorChar+ ComponentUtilities.getExtFolder(OLD_COMPONENTS_USER_INNER_FOLDER));
              if (userComponent.equals(templatePath)) {
                userComponentList.add(currentComp);
              }
            }
          }
          String componentName=xmlMainFile.getAbsolutePath();
          if (!componentsCache.containsKey(componentName)) {
            componentsCache.put(componentName,new HashMap<String,IComponent>());
          }
          componentsCache.get(xmlMainFile.getAbsolutePath()).put(currentComp.getPaletteType(),currentComp);
        }
 catch (        MissingMainXMLComponentFileException e) {
          log.trace(currentFolder.getName() + "String_Node_Str" + getCodeLanguageSuffix()+ "String_Node_Str",e);
        }
catch (        BusinessException e) {
          BusinessException ex=new BusinessException("String_Node_Str" + currentFolder.getName() + "String_Node_Str"+ e.getMessage(),e);
          ExceptionHandler.process(ex,Level.ERROR);
        }
        if (this.subMonitor != null) {
          this.subMonitor.worked(1);
        }
        if (this.monitor != null && this.monitor.isCanceled()) {
          return;
        }
      }
      skeletonList.trimToSize();
    }
  }
}