Program: 132180
Project: 132180
Buggy source:
@Override public void onDataChanged(final AsyncDataChangeEvent<InstanceIdentifier<?>,DataObject> change){
  printTraceStart(LOG);
  Map<InstanceIdentifier<?>,DataObject> dataOriginalConfigurationObject=change.getOriginalData();
  for (  Map.Entry<InstanceIdentifier<?>,DataObject> entry : dataOriginalConfigurationObject.entrySet()) {
    if (entry.getValue() instanceof ServiceFunctionClassifier) {
      ServiceFunctionClassifier originalServiceFunctionClassifier=(ServiceFunctionClassifier)entry.getValue();
      LOG.debug("String_Node_Str",originalServiceFunctionClassifier.getName());
      LOG.debug("String_Node_Str",originalServiceFunctionClassifier.getAccessList());
      LOG.debug("String_Node_Str",originalServiceFunctionClassifier.getRenderedServicePath());
    }
  }
  Map<InstanceIdentifier<?>,DataObject> dataCreatedObject=change.getCreatedData();
  for (  Map.Entry<InstanceIdentifier<?>,DataObject> entry : dataCreatedObject.entrySet()) {
    if (entry.getValue() instanceof ServiceFunctionClassifier) {
      ServiceFunctionClassifier createdServiceFunctionClassifier=(ServiceFunctionClassifier)entry.getValue();
      LOG.debug("String_Node_Str",createdServiceFunctionClassifier.getName());
      String serviceFunctionPathName=null;
      serviceFunctionPathName=createdServiceFunctionClassifier.getRenderedServicePath();
      if (serviceFunctionPathName != null) {
        Object[] params={createdServiceFunctionClassifier.getAccessList(),createdServiceFunctionClassifier.getRenderedServicePath()};
        Class[] paramsTypes={String.class,String.class};
        odlSfc.executor.submit(SfcProviderAclAPI.getSetAclEntriesSfcAction(params,paramsTypes));
      }
    }
  }
  Map<InstanceIdentifier<?>,DataObject> dataUpdatedConfigurationObject=change.getUpdatedData();
  for (  Map.Entry<InstanceIdentifier<?>,DataObject> entry : dataUpdatedConfigurationObject.entrySet()) {
    if ((entry.getValue() instanceof ServiceFunctionClassifier) && (!(dataCreatedObject.containsKey(entry.getKey())))) {
      ServiceFunctionClassifier updatedServiceFunctionClassifier=(ServiceFunctionClassifier)entry.getValue();
      LOG.debug("String_Node_Str",updatedServiceFunctionClassifier.getName());
      ServiceFunctionClassifier originalServiceFunctionClassifier=(ServiceFunctionClassifier)dataOriginalConfigurationObject.get(entry.getKey());
      if (originalServiceFunctionClassifier != null && (!originalServiceFunctionClassifier.getAccessList().equalsIgnoreCase(updatedServiceFunctionClassifier.getAccessList()))) {
        Object[] params={originalServiceFunctionClassifier.getAccessList(),"String_Node_Str"};
        Class[] paramsTypes={String.class,String.class};
        odlSfc.executor.submit(SfcProviderAclAPI.getSetAclEntriesSfcAction(params,paramsTypes));
      }
      Object[] params={updatedServiceFunctionClassifier.getAccessList(),updatedServiceFunctionClassifier.getRenderedServicePath()};
      Class[] paramsTypes={String.class,String.class};
      odlSfc.executor.submit(SfcProviderAclAPI.getSetAclEntriesSfcAction(params,paramsTypes));
    }
  }
  Set<InstanceIdentifier<?>> dataRemovedConfigurationIID=change.getRemovedPaths();
  for (  InstanceIdentifier instanceIdentifier : dataRemovedConfigurationIID) {
    DataObject dataObject=dataOriginalConfigurationObject.get(instanceIdentifier);
    if (dataObject instanceof ServiceFunctionClassifier) {
      ServiceFunctionClassifier originalServiceFunctionClassifier=(ServiceFunctionClassifier)dataObject;
      Object[] params={originalServiceFunctionClassifier.getAccessList(),"String_Node_Str"};
      Class[] paramsTypes={String.class,String.class};
      odlSfc.executor.submit(SfcProviderAclAPI.getSetAclEntriesSfcAction(params,paramsTypes));
    }
  }
  printTraceStop(LOG);
}

Fixed version (ground truth):
@Override public void onDataChanged(final AsyncDataChangeEvent<InstanceIdentifier<?>,DataObject> change){
  printTraceStart(LOG);
  Map<InstanceIdentifier<?>,DataObject> dataOriginalConfigurationObject=change.getOriginalData();
  for (  Map.Entry<InstanceIdentifier<?>,DataObject> entry : dataOriginalConfigurationObject.entrySet()) {
    if (entry.getValue() instanceof ServiceFunctionClassifier) {
      ServiceFunctionClassifier originalServiceFunctionClassifier=(ServiceFunctionClassifier)entry.getValue();
      LOG.debug("String_Node_Str",originalServiceFunctionClassifier.getName());
      LOG.debug("String_Node_Str",originalServiceFunctionClassifier.getAccessList());
      LOG.debug("String_Node_Str",originalServiceFunctionClassifier.getRenderedServicePath());
    }
  }
  Map<InstanceIdentifier<?>,DataObject> dataCreatedObject=change.getCreatedData();
  for (  Map.Entry<InstanceIdentifier<?>,DataObject> entry : dataCreatedObject.entrySet()) {
    if (entry.getValue() instanceof ServiceFunctionClassifier) {
      ServiceFunctionClassifier createdServiceFunctionClassifier=(ServiceFunctionClassifier)entry.getValue();
      LOG.debug("String_Node_Str",createdServiceFunctionClassifier.getName());
      String serviceFunctionPathName=null;
      serviceFunctionPathName=createdServiceFunctionClassifier.getRenderedServicePath();
      if (serviceFunctionPathName != null) {
        Object[] params={createdServiceFunctionClassifier.getAccessList(),createdServiceFunctionClassifier.getRenderedServicePath()};
        Class[] paramsTypes={String.class,String.class};
        odlSfc.getExecutor().submit(SfcProviderAclAPI.getSetAclEntriesSfcAction(params,paramsTypes));
      }
    }
  }
  Map<InstanceIdentifier<?>,DataObject> dataUpdatedConfigurationObject=change.getUpdatedData();
  for (  Map.Entry<InstanceIdentifier<?>,DataObject> entry : dataUpdatedConfigurationObject.entrySet()) {
    if ((entry.getValue() instanceof ServiceFunctionClassifier) && (!(dataCreatedObject.containsKey(entry.getKey())))) {
      ServiceFunctionClassifier updatedServiceFunctionClassifier=(ServiceFunctionClassifier)entry.getValue();
      LOG.debug("String_Node_Str",updatedServiceFunctionClassifier.getName());
      ServiceFunctionClassifier originalServiceFunctionClassifier=(ServiceFunctionClassifier)dataOriginalConfigurationObject.get(entry.getKey());
      if (originalServiceFunctionClassifier != null && (!originalServiceFunctionClassifier.getAccessList().equalsIgnoreCase(updatedServiceFunctionClassifier.getAccessList()))) {
        Object[] params={originalServiceFunctionClassifier.getAccessList(),"String_Node_Str"};
        Class[] paramsTypes={String.class,String.class};
        odlSfc.getExecutor().submit(SfcProviderAclAPI.getSetAclEntriesSfcAction(params,paramsTypes));
      }
      Object[] params={updatedServiceFunctionClassifier.getAccessList(),updatedServiceFunctionClassifier.getRenderedServicePath()};
      Class[] paramsTypes={String.class,String.class};
      odlSfc.getExecutor().submit(SfcProviderAclAPI.getSetAclEntriesSfcAction(params,paramsTypes));
    }
  }
  Set<InstanceIdentifier<?>> dataRemovedConfigurationIID=change.getRemovedPaths();
  for (  InstanceIdentifier instanceIdentifier : dataRemovedConfigurationIID) {
    DataObject dataObject=dataOriginalConfigurationObject.get(instanceIdentifier);
    if (dataObject instanceof ServiceFunctionClassifier) {
      ServiceFunctionClassifier originalServiceFunctionClassifier=(ServiceFunctionClassifier)dataObject;
      Object[] params={originalServiceFunctionClassifier.getAccessList(),"String_Node_Str"};
      Class[] paramsTypes={String.class,String.class};
      odlSfc.getExecutor().submit(SfcProviderAclAPI.getSetAclEntriesSfcAction(params,paramsTypes));
    }
  }
  printTraceStop(LOG);
}