Program: 20741
Project: 20741
Buggy source:
/** 
 * das controllevent fängt heruntergeladene file ab und wertet sie aus
 */
@SuppressWarnings("String_Node_Str") @Override public void onControlEvent(ControlEvent event){
  DownloadLink link;
switch (event.getEventID()) {
case ControlEvent.CONTROL_PLUGIN_INACTIVE:
    if (!(event.getCaller() instanceof PluginForHost))     return;
  link=((SingleDownloadController)event.getParameter()).getDownloadLink();
if (link.getFilePackage().isPostProcessing() && this.getPluginConfig().getBooleanProperty("String_Node_Str",true) && isLinkSupported(link.getFileOutput())) {
  Archive archive=buildArchive(link);
  if (archive.isComplete() && !archive.isActive()) {
    this.addToQueue(archive);
  }
}
break;
case ControlEvent.CONTROL_ON_FILEOUTPUT:
if (this.getPluginConfig().getBooleanProperty(ExtractionConstants.CONFIG_KEY_DEEP_EXTRACT,true)) {
try {
File[] list=(File[])event.getParameter();
for (File archiveStartFile : list) {
  if (isLinkSupported(archiveStartFile.getAbsolutePath())) {
    Archive ar=buildDummyArchive(archiveStartFile);
    if (ar.isActive())     continue;
    addToQueue(buildDummyArchive(archiveStartFile));
  }
}
}
 catch (Exception e) {
JDLogger.exception(e);
}
}
break;
case ControlEvent.CONTROL_LINKLIST_CONTEXT_MENU:
ArrayList<MenuAction> items=(ArrayList<MenuAction>)event.getParameter();
MenuAction m;
MenuAction container=new MenuAction("String_Node_Str",0);
container.setIcon(getIconKey());
items.add(container);
if (event.getCaller() instanceof DownloadLink) {
link=(DownloadLink)event.getCaller();
container.addMenuItem(m=new MenuAction("String_Node_Str",EXTRACT_LINK));
m.setIcon(getIconKey());
m.setActionListener(this);
boolean isLocalyAvailable=new File(link.getFileOutput()).exists() || new File(link.getStringProperty(DownloadLink.STATIC_OUTPUTFILE,link.getFileOutput())).exists();
if (isLocalyAvailable && isLinkSupported(link.getFileOutput())) {
m.setEnabled(true);
}
 else {
m.setEnabled(false);
}
m.setProperty("String_Node_Str",link);
container.addMenuItem(m=new MenuAction("String_Node_Str",SET_LINK_AUTOEXTRACT));
m.setActionListener(this);
m.setSelected(link.getFilePackage().isPostProcessing());
if (!this.getPluginConfig().getBooleanProperty("String_Node_Str",true)) {
m.setEnabled(false);
}
m.setProperty("String_Node_Str",link);
container.addMenuItem(new MenuAction(Types.SEPARATOR));
container.addMenuItem(m=new MenuAction("String_Node_Str",SET_EXTRACT_TO));
m.setActionListener(this);
m.setProperty("String_Node_Str",link);
File dir=this.getExtractToPath(link);
while (dir != null && !dir.exists()) {
if (dir.getParentFile() == null) break;
dir=dir.getParentFile();
}
if (dir == null) break;
container.addMenuItem(m=new MenuAction("String_Node_Str",OPEN_EXTRACT));
m.setActionListener(this);
link.setProperty(ExtractionConstants.DOWNLOADLINK_KEY_EXTRACTEDPATH + "String_Node_Str",dir.getAbsolutePath());
m.setProperty("String_Node_Str",link);
}
 else {
FilePackage fp=(FilePackage)event.getCaller();
container.addMenuItem(m=new MenuAction("String_Node_Str",EXTRACT_PACKAGE));
m.setIcon(getIconKey());
m.setActionListener(this);
m.setProperty("String_Node_Str",fp);
container.addMenuItem(m=new MenuAction("String_Node_Str",SET_PACKAGE_AUTOEXTRACT));
m.setSelected(fp.isPostProcessing());
m.setActionListener(this);
if (!this.getPluginConfig().getBooleanProperty("String_Node_Str",true)) {
m.setEnabled(false);
}
m.setProperty("String_Node_Str",fp);
}
break;
}
}

Fixed version (ground truth):
/** 
 * das controllevent fängt heruntergeladene file ab und wertet sie aus
 */
@Override public void onControlEvent(ControlEvent event){
  DownloadLink link;
switch (event.getEventID()) {
case ControlEvent.CONTROL_PLUGIN_INACTIVE:
    if (!(event.getCaller() instanceof PluginForHost))     return;
  link=((SingleDownloadController)event.getParameter()).getDownloadLink();
if (link.getFilePackage().isPostProcessing() && this.getPluginConfig().getBooleanProperty("String_Node_Str",true) && isLinkSupported(link.getFileOutput())) {
  Archive archive=buildArchive(link);
  if (archive.isComplete() && !archive.isActive()) {
    this.addToQueue(archive);
  }
}
break;
case ControlEvent.CONTROL_ON_FILEOUTPUT:
if (this.getPluginConfig().getBooleanProperty(ExtractionConstants.CONFIG_KEY_DEEP_EXTRACT,true)) {
try {
File[] list=(File[])event.getParameter();
for (File archiveStartFile : list) {
  if (isLinkSupported(archiveStartFile.getAbsolutePath())) {
    Archive ar=buildDummyArchive(archiveStartFile);
    if (ar.isActive())     continue;
    addToQueue(buildDummyArchive(archiveStartFile));
  }
}
}
 catch (Exception e) {
JDLogger.exception(e);
}
}
break;
case ControlEvent.CONTROL_LINKLIST_CONTEXT_MENU:
ArrayList<MenuAction> items=(ArrayList<MenuAction>)event.getParameter();
MenuAction m;
MenuAction container=new MenuAction("String_Node_Str",0);
container.setIcon(getIconKey());
items.add(container);
if (event.getCaller() instanceof DownloadLink) {
link=(DownloadLink)event.getCaller();
container.addMenuItem(m=new MenuAction("String_Node_Str",EXTRACT_LINK));
m.setIcon(getIconKey());
m.setActionListener(this);
boolean isLocalyAvailable=new File(link.getFileOutput()).exists() || new File(link.getStringProperty(DownloadLink.STATIC_OUTPUTFILE,link.getFileOutput())).exists();
if (isLocalyAvailable && isLinkSupported(link.getFileOutput())) {
m.setEnabled(true);
}
 else {
m.setEnabled(false);
}
m.setProperty("String_Node_Str",link);
container.addMenuItem(m=new MenuAction("String_Node_Str",SET_LINK_AUTOEXTRACT));
m.setActionListener(this);
m.setSelected(link.getFilePackage().isPostProcessing());
if (!this.getPluginConfig().getBooleanProperty("String_Node_Str",true)) {
m.setEnabled(false);
}
m.setProperty("String_Node_Str",link);
container.addMenuItem(new MenuAction(Types.SEPARATOR));
container.addMenuItem(m=new MenuAction("String_Node_Str",SET_EXTRACT_TO));
m.setActionListener(this);
m.setProperty("String_Node_Str",link);
File dir=this.getExtractToPath(link);
while (dir != null && !dir.exists()) {
if (dir.getParentFile() == null) break;
dir=dir.getParentFile();
}
if (dir == null) break;
container.addMenuItem(m=new MenuAction("String_Node_Str",OPEN_EXTRACT));
m.setActionListener(this);
link.setProperty(ExtractionConstants.DOWNLOADLINK_KEY_EXTRACTEDPATH + "String_Node_Str",dir.getAbsolutePath());
m.setProperty("String_Node_Str",link);
}
 else {
FilePackage fp=(FilePackage)event.getCaller();
container.addMenuItem(m=new MenuAction("String_Node_Str",EXTRACT_PACKAGE));
m.setIcon(getIconKey());
m.setActionListener(this);
m.setProperty("String_Node_Str",fp);
container.addMenuItem(m=new MenuAction("String_Node_Str",SET_PACKAGE_AUTOEXTRACT));
m.setSelected(fp.isPostProcessing());
m.setActionListener(this);
if (!this.getPluginConfig().getBooleanProperty("String_Node_Str",true)) {
m.setEnabled(false);
}
m.setProperty("String_Node_Str",fp);
}
break;
}
}