Program: 40982
Project: 40982
Buggy source:
/** 
 * <p> This method assigns plugins to the already initialized BuildPlan and its TemplateBuildPlans. First there will be checked if any generic plugin can handle a template of the TopologyTemplate </p>
 * @param buildPlan a BuildPlan which is alread initialized
 * @param serviceTemplateName the name of the ServiceTemplate the BuildPlanbelongs to
 * @param map a PropertyMap which contains mappings from Template toProperty and to variable name of inside the BuidlPlan
 */
private void runPlugins(BuildPlan buildPlan,QName serviceTemplateId,PropertyMap map){
  for (  TemplateBuildPlan templatePlan : buildPlan.getTemplateBuildPlans()) {
    if (templatePlan.getNodeTemplate() != null) {
      AbstractNodeTemplate nodeTemplate=templatePlan.getNodeTemplate();
      PlanBuilder.LOG.debug("String_Node_Str" + nodeTemplate.getId());
      TemplatePlanContext context=new TemplatePlanContext(templatePlan,map,serviceTemplateId);
      IPlanBuilderTypePlugin plugin=this.canGenericPluginHandle(nodeTemplate);
      if (plugin == null) {
        PlanBuilder.LOG.debug("String_Node_Str",nodeTemplate.getId());
        ProvisioningChain chain=TemplatePlanBuilder.createProvisioningChain(nodeTemplate);
        if (chain == null) {
          PlanBuilder.LOG.warn("String_Node_Str",nodeTemplate.getId());
          continue;
        }
        chain.executeIAProvisioning(context);
        chain.executeDAProvisioning(context);
        chain.executeOperationProvisioning(context,this.opNames);
      }
 else {
        PlanBuilder.LOG.info("String_Node_Str",nodeTemplate.getId());
        plugin.handle(context);
      }
      for (      IPlanBuilderPostPhasePlugin postPhasePlugin : PluginRegistry.getPostPlugins()) {
        if (postPhasePlugin.canHandle(nodeTemplate)) {
          postPhasePlugin.handle(context,nodeTemplate);
        }
      }
    }
 else {
      AbstractRelationshipTemplate relationshipTemplate=templatePlan.getRelationshipTemplate();
      TemplatePlanContext context=new TemplatePlanContext(templatePlan,map,serviceTemplateId);
      if (!this.canGenericPluginHandle(relationshipTemplate)) {
        PlanBuilder.LOG.debug("String_Node_Str",relationshipTemplate.getId());
        ProvisioningChain sourceChain=TemplatePlanBuilder.createProvisioningChain(relationshipTemplate,true);
        ProvisioningChain targetChain=TemplatePlanBuilder.createProvisioningChain(relationshipTemplate,false);
        if (targetChain != null) {
          PlanBuilder.LOG.warn("String_Node_Str",relationshipTemplate.getId());
          targetChain.executeIAProvisioning(context);
          targetChain.executeOperationProvisioning(context,this.opNames);
        }
        if (sourceChain != null) {
          PlanBuilder.LOG.warn("String_Node_Str",relationshipTemplate.getId());
          sourceChain.executeIAProvisioning(context);
          sourceChain.executeOperationProvisioning(context,this.opNames);
        }
      }
 else {
        PlanBuilder.LOG.info("String_Node_Str",relationshipTemplate.getId());
        this.handleWithGenericPlugin(context,relationshipTemplate);
      }
      for (      IPlanBuilderPostPhasePlugin postPhasePlugin : PluginRegistry.getPostPlugins()) {
        if (postPhasePlugin.canHandle(relationshipTemplate)) {
          postPhasePlugin.handle(context,relationshipTemplate);
        }
      }
    }
  }
}

Fixed version (ground truth):
/** 
 * <p> This method assigns plugins to the already initialized BuildPlan and its TemplateBuildPlans. First there will be checked if any generic plugin can handle a template of the TopologyTemplate </p>
 * @param buildPlan a BuildPlan which is alread initialized
 * @param serviceTemplateName the name of the ServiceTemplate the BuildPlanbelongs to
 * @param map a PropertyMap which contains mappings from Template toProperty and to variable name of inside the BuidlPlan
 */
private void runPlugins(BuildPlan buildPlan,QName serviceTemplateId,PropertyMap map){
  for (  TemplateBuildPlan templatePlan : buildPlan.getTemplateBuildPlans()) {
    if (templatePlan.getNodeTemplate() != null) {
      AbstractNodeTemplate nodeTemplate=templatePlan.getNodeTemplate();
      PlanBuilder.LOG.debug("String_Node_Str" + nodeTemplate.getId());
      TemplatePlanContext context=new TemplatePlanContext(templatePlan,map,serviceTemplateId);
      IPlanBuilderTypePlugin plugin=this.canGenericPluginHandle(nodeTemplate);
      if (plugin == null) {
        PlanBuilder.LOG.debug("String_Node_Str",nodeTemplate.getId());
        ProvisioningChain chain=TemplatePlanBuilder.createProvisioningChain(nodeTemplate);
        if (chain == null) {
          PlanBuilder.LOG.warn("String_Node_Str",nodeTemplate.getId());
        }
 else {
          PlanBuilder.LOG.debug("String_Node_Str",nodeTemplate.getId());
          chain.executeIAProvisioning(context);
          chain.executeDAProvisioning(context);
          chain.executeOperationProvisioning(context,this.opNames);
        }
      }
 else {
        PlanBuilder.LOG.info("String_Node_Str",nodeTemplate.getId());
        plugin.handle(context);
      }
      for (      IPlanBuilderPostPhasePlugin postPhasePlugin : PluginRegistry.getPostPlugins()) {
        if (postPhasePlugin.canHandle(nodeTemplate)) {
          postPhasePlugin.handle(context,nodeTemplate);
        }
      }
    }
 else {
      AbstractRelationshipTemplate relationshipTemplate=templatePlan.getRelationshipTemplate();
      TemplatePlanContext context=new TemplatePlanContext(templatePlan,map,serviceTemplateId);
      if (!this.canGenericPluginHandle(relationshipTemplate)) {
        PlanBuilder.LOG.debug("String_Node_Str",relationshipTemplate.getId());
        ProvisioningChain sourceChain=TemplatePlanBuilder.createProvisioningChain(relationshipTemplate,true);
        ProvisioningChain targetChain=TemplatePlanBuilder.createProvisioningChain(relationshipTemplate,false);
        if (targetChain != null) {
          PlanBuilder.LOG.warn("String_Node_Str",relationshipTemplate.getId());
          targetChain.executeIAProvisioning(context);
          targetChain.executeOperationProvisioning(context,this.opNames);
        }
        if (sourceChain != null) {
          PlanBuilder.LOG.warn("String_Node_Str",relationshipTemplate.getId());
          sourceChain.executeIAProvisioning(context);
          sourceChain.executeOperationProvisioning(context,this.opNames);
        }
      }
 else {
        PlanBuilder.LOG.info("String_Node_Str",relationshipTemplate.getId());
        this.handleWithGenericPlugin(context,relationshipTemplate);
      }
      for (      IPlanBuilderPostPhasePlugin postPhasePlugin : PluginRegistry.getPostPlugins()) {
        if (postPhasePlugin.canHandle(relationshipTemplate)) {
          postPhasePlugin.handle(context,relationshipTemplate);
        }
      }
    }
  }
}