Program: 148501
Project: 148501
Buggy source:
protected void executeProcedure(){
  BusyIndicator.showWhile(this.getPartControl().getDisplay(),new Runnable(){
    public void run(){
      WSDataClusterPK dcpk=null;
      if (!"String_Node_Str".equals(dataClusterCombo.getText()))       dcpk=new WSDataClusterPK(dataClusterCombo.getText());
      try {
        String proc=procedureViewer.getDocument().get();
        int number=0;
        while (true) {
          Pattern p=Pattern.compile("String_Node_Str" + number + "String_Node_Str",Pattern.DOTALL);
          Matcher m=p.matcher(proc);
          if (!m.matches())           break;
 else           ++number;
        }
        String[] ps=null;
        if (number > 0) {
          ps=new String[number];
          for (int i=0; i < number; i++) {
            if (i < currentParameters.size())             ps[i]=currentParameters.get(i);
 else             ps[i]="String_Node_Str";
          }
          QueryParametersDialog dialog=new QueryParametersDialog(StoredProcedureMainPage.this.getSite().getShell(),ps);
          dialog.setBlockOnOpen(true);
          dialog.open();
          if (dialog.getButtonPressed() == QueryParametersDialog.BUTTON_CANCEL)           return;
          ps=dialog.getParameters();
          for (int i=0; i < ps.length; i++) {
            if (i < currentParameters.size())             currentParameters.set(i,ps[i]);
 else             currentParameters.add(ps[i]);
          }
        }
        XtentisPort port=Util.getPort(getXObject());
        WSStoredProcedure wsStoredProcedure=(WSStoredProcedure)(getXObject().getWsObject());
        port.putStoredProcedure(new WSPutStoredProcedure(wsStoredProcedure));
        WSStringArray array=port.executeStoredProcedure(new WSExecuteStoredProcedure(new WSStoredProcedurePK(wsStoredProcedure.getName()),null,dcpk,currentParameters.toArray(new String[currentParameters.size()])));
        String[] results=array.getStrings();
        resultsLabel.setText("String_Node_Str" + results.length + "String_Node_Str");
        resultsViewer.setInput(results);
      }
 catch (      Exception ex) {
        MessageDialog.openError(StoredProcedureMainPage.this.getSite().getShell(),"String_Node_Str","String_Node_Str" + ex.getClass().getName() + "String_Node_Str"+ ex.getMessage());
      }
    }
  }
);
}

Fixed version (ground truth):
protected void executeProcedure(){
  BusyIndicator.showWhile(this.getPartControl().getDisplay(),new Runnable(){
    public void run(){
      WSDataClusterPK dcpk=null;
      if (!"String_Node_Str".equals(dataClusterCombo.getText()))       dcpk=new WSDataClusterPK(dataClusterCombo.getText());
      try {
        String proc=procedureViewer.getDocument().get();
        int number=0;
        while (true) {
          Pattern p=Pattern.compile("String_Node_Str" + number + "String_Node_Str",Pattern.DOTALL);
          Matcher m=p.matcher(proc);
          if (!m.matches())           break;
 else           ++number;
        }
        String[] ps=null;
        if (number > 0) {
          ps=new String[number];
          for (int i=0; i < number; i++) {
            if (i < currentParameters.size())             ps[i]=currentParameters.get(i);
 else             ps[i]="String_Node_Str";
          }
          QueryParametersDialog dialog=new QueryParametersDialog(StoredProcedureMainPage.this.getSite().getShell(),ps);
          dialog.setBlockOnOpen(true);
          dialog.open();
          if (dialog.getButtonPressed() == QueryParametersDialog.BUTTON_CANCEL)           return;
          ps=dialog.getParameters();
          for (int i=0; i < ps.length; i++) {
            if (i < currentParameters.size())             currentParameters.set(i,ps[i]);
 else             currentParameters.add(ps[i]);
          }
        }
        XtentisPort port=Util.getPort(getXObject());
        WSStoredProcedure wsStoredProcedure=(WSStoredProcedure)(getXObject().getWsObject());
        port.putStoredProcedure(new WSPutStoredProcedure(wsStoredProcedure));
        WSStringArray array=port.executeStoredProcedure(new WSExecuteStoredProcedure(new WSStoredProcedurePK(wsStoredProcedure.getName()),null,dcpk,currentParameters.toArray(new String[currentParameters.size()])));
        String[] results=array.getStrings();
        resultsLabel.setText("String_Node_Str" + results.length + "String_Node_Str");
        resultsViewer.setInput(results);
      }
 catch (      Exception ex) {
        MessageDialog.openError(StoredProcedureMainPage.this.getSite().getShell(),"String_Node_Str",ex.getMessage());
      }
    }
  }
);
}