package org.batfish.datamodel; import java.util.SortedMap; import java.util.SortedSet; import java.util.TreeMap; import java.util.TreeSet; import org.batfish.common.util.ComparableStructure; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyDescription; public final class IkePolicy extends ComparableStructure<String> { private static final String PROPOSALS_VAR = "proposals"; /** * */ private static final long serialVersionUID = 1L; private String _preSharedKeyHash; private transient SortedSet<String> _proposalNames; private SortedMap<String, IkeProposal> _proposals; @JsonCreator public IkePolicy(@JsonProperty(NAME_VAR) String name) { super(name); _proposals = new TreeMap<>(); } @JsonPropertyDescription("SHA-256 hash of salted version of pre-shared-key stored in original configuration") public String getPreSharedKeyHash() { return _preSharedKeyHash; } @JsonProperty(PROPOSALS_VAR) @JsonPropertyDescription("Dictionary of IKE proposals attached to this policy. Each stored as @id") public SortedSet<String> getProposalNames() { if (_proposals != null && !_proposals.isEmpty()) { return new TreeSet<>(_proposals.keySet()); } else { return _proposalNames; } } @JsonIgnore public SortedMap<String, IkeProposal> getProposals() { return _proposals; } public void resolveReferences(Configuration owner) { if (_proposalNames != null) { for (String proposalName : _proposalNames) { _proposals.put(proposalName, owner.getIkeProposals().get(proposalName)); } } } public void setPreSharedKeyHash(String preSharedKeyHash) { _preSharedKeyHash = preSharedKeyHash; } @JsonProperty(PROPOSALS_VAR) public void setProposalNames(SortedSet<String> proposalNames) { _proposalNames = proposalNames; } @JsonIgnore public void setProposals(SortedMap<String, IkeProposal> proposals) { _proposals = proposals; } }