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.shiro.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(Claim claim) {
35 clientId = claim.clientId();
36 userId = claim.userId();
38 domain = claim.domain();
39 roles.addAll(claim.roles());
42 public ClaimBuilder setClientId(String clientId) {
43 this.clientId = Strings.nullToEmpty(clientId).trim();
47 public ClaimBuilder setUserId(String userId) {
48 this.userId = Strings.nullToEmpty(userId).trim();
52 public ClaimBuilder setUser(String userName) {
53 user = Strings.nullToEmpty(userName).trim();
57 public ClaimBuilder setDomain(String domain) {
58 this.domain = Strings.nullToEmpty(domain).trim();
62 public ClaimBuilder addRoles(Set<String> theRoles) {
63 for (String role : theRoles) {
69 public ClaimBuilder addRole(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(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(Object object) {
127 if (this == object) {
130 if (!(object instanceof Claim)) {
133 Claim claim = (Claim) object;
134 return Objects.equals(roles, claim.roles())
135 && Objects.equals(domain, claim.domain())
136 && Objects.equals(userId, claim.userId())
137 && Objects.equals(user, claim.user())
138 && Objects.equals(clientId, claim.clientId());
142 public int hashCode() {
144 hashCode = Objects.hash(clientId, userId, user, domain, roles);
150 public String toString() {
151 return "clientId:" + clientId + "," + "userId:" + userId + "," + "userName:" + user
152 + "," + "domain:" + domain + "," + "roles:" + roles;