2 * Copyright (c) 2014, 2017 Hewlett-Packard Development Company, L.P. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.aaa.tokenauthrealm.auth;
10 import com.google.common.base.Strings;
11 import com.google.common.collect.ImmutableSet;
12 import java.io.Serializable;
13 import java.util.LinkedHashSet;
14 import java.util.Objects;
16 import org.opendaylight.aaa.api.Claim;
19 * Builder for a {@link Claim}. The userId, user, and roles information is
24 public class ClaimBuilder {
25 private String userId = "";
26 private String user = "";
27 private final Set<String> roles = new LinkedHashSet<>();
28 private String clientId = "";
29 private String domain = "";
31 public ClaimBuilder() {
34 public ClaimBuilder(final Claim claim) {
35 clientId = claim.clientId();
36 userId = claim.userId();
38 domain = claim.domain();
39 roles.addAll(claim.roles());
42 public ClaimBuilder setClientId(final String clientId) {
43 this.clientId = Strings.nullToEmpty(clientId).trim();
47 public ClaimBuilder setUserId(final String userId) {
48 this.userId = Strings.nullToEmpty(userId).trim();
52 public ClaimBuilder setUser(final String userName) {
53 user = Strings.nullToEmpty(userName).trim();
57 public ClaimBuilder setDomain(final String domain) {
58 this.domain = Strings.nullToEmpty(domain).trim();
62 public ClaimBuilder addRoles(final Set<String> theRoles) {
63 for (String role : theRoles) {
69 public ClaimBuilder addRole(final String role) {
70 roles.add(Strings.nullToEmpty(role).trim());
74 public Claim build() {
75 return new ImmutableClaim(this);
78 protected static class ImmutableClaim implements Claim, Serializable {
79 private static final long serialVersionUID = -8115027645190209129L;
80 private int hashCode = 0;
81 protected String clientId;
82 protected String userId;
83 protected String user;
84 protected String domain;
85 protected ImmutableSet<String> roles;
87 protected ImmutableClaim(final ClaimBuilder base) {
88 clientId = base.clientId;
92 roles = ImmutableSet.<String>builder().addAll(base.roles).build();
94 if (userId.isEmpty() || user.isEmpty() || roles.isEmpty() || roles.contains("")) {
95 throw new IllegalStateException(
96 "The Claim is missing one or more of the required fields.");
101 public String clientId() {
106 public String userId() {
111 public String user() {
116 public String domain() {
121 public Set<String> roles() {
126 public boolean equals(final Object obj) {
127 return this == obj || obj instanceof Claim other
128 && Objects.equals(roles, other.roles())
129 && Objects.equals(domain, other.domain())
130 && Objects.equals(userId, other.userId())
131 && Objects.equals(user, other.user())
132 && Objects.equals(clientId, other.clientId());
136 public int hashCode() {
138 hashCode = Objects.hash(clientId, userId, user, domain, roles);
144 public String toString() {
145 return "clientId:" + clientId + "," + "userId:" + userId + "," + "userName:" + user
146 + "," + "domain:" + domain + "," + "roles:" + roles;