package com.auth0.jwt.impl; import com.auth0.jwt.interfaces.Claim; import com.auth0.jwt.interfaces.Payload; import com.fasterxml.jackson.databind.JsonNode; import java.util.*; import static com.auth0.jwt.impl.JsonNodeClaim.extractClaim; /** * The PayloadImpl class implements the Payload interface. */ class PayloadImpl implements Payload { private final String issuer; private final String subject; private final List<String> audience; private final Date expiresAt; private final Date notBefore; private final Date issuedAt; private final String jwtId; private final Map<String, JsonNode> tree; PayloadImpl(String issuer, String subject, List<String> audience, Date expiresAt, Date notBefore, Date issuedAt, String jwtId, Map<String, JsonNode> tree) { this.issuer = issuer; this.subject = subject; this.audience = audience; this.expiresAt = expiresAt; this.notBefore = notBefore; this.issuedAt = issuedAt; this.jwtId = jwtId; this.tree = Collections.unmodifiableMap(tree == null ? new HashMap<String, JsonNode>() : tree); } Map<String, JsonNode> getTree() { return tree; } @Override public String getIssuer() { return issuer; } @Override public String getSubject() { return subject; } @Override public List<String> getAudience() { return audience; } @Override public Date getExpiresAt() { return expiresAt; } @Override public Date getNotBefore() { return notBefore; } @Override public Date getIssuedAt() { return issuedAt; } @Override public String getId() { return jwtId; } @Override public Claim getClaim(String name) { return extractClaim(name, tree); } @Override public Map<String, Claim> getClaims() { Map<String, Claim> claims = new HashMap<>(); for (String name : tree.keySet()) { claims.put(name, extractClaim(name, tree)); } return Collections.unmodifiableMap(claims); } }