public TableFlowUpdateState(final KeyedInstanceIdentifier<Table, TableKey> tablePath, final Table table) {
tableRef = tablePath;
tableKey = tablePath.getKey();
flowIdByHash = HashBiMap.create();
if(table != null) {
final FlowHashIdMapping flowHashMapping = table.getAugmentation(FlowHashIdMapping.class);
if (flowHashMapping != null) {
final List<FlowHashIdMap> flowHashMap = flowHashMapping.getFlowHashIdMap() != null
? flowHashMapping.getFlowHashIdMap() : Collections.<FlowHashIdMap> emptyList();
for (final FlowHashIdMap flowHashId : flowHashMap) {
try {
flowIdByHash.put(flowHashId.getKey(), flowHashId.getFlowId());
} catch (final Exception e) {
if(LOG.isDebugEnabled()) {
final FlowId currData = flowIdByHash.get(flowHashId.getKey());
LOG.debug("flow hashing hit a duplicate for {} -> {}. Curr value: {} Equals:{}. Exception was raised:",
flowHashId.getKey(), flowHashId.getFlowId(), currData, flowHashId.getFlowId().equals(currData), e);
}
else
{
LOG.warn("flow hashing hit a duplicate {}. Exception was raised: {}. Enable DEBUG for more detail.",
flowHashId.getFlowId().toString().substring(0, Math.min(TRUNCATED_LOG_MESSAGE_LENGTH,flowHashId.getFlowId().toString().length())),
e.getMessage().substring(0,Math.min(TRUNCATED_LOG_MESSAGE_LENGTH,e.getMessage().length())));
}
}
}
}
}
}