-
Notifications
You must be signed in to change notification settings - Fork 6.4k
/
AdminEvent.java
219 lines (184 loc) · 5.41 KB
/
AdminEvent.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates
* and other contributors as indicated by the @author tags.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.keycloak.events.admin;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
*/
public class AdminEvent {
private String id;
private long time;
private String realmId;
private String realmName;
private AuthDetails authDetails;
/**
* The resource type an AdminEvent was triggered for.
*/
private String resourceType;
private OperationType operationType;
private String resourcePath;
private String representation;
private String error;
public AdminEvent() {}
public AdminEvent(AdminEvent toCopy) {
this.id = toCopy.getId();
this.time = toCopy.getTime();
this.realmId = toCopy.getRealmId();
this.realmName = toCopy.getRealmName();
this.authDetails = new AuthDetails(toCopy.getAuthDetails());
this.resourceType = toCopy.getResourceTypeAsString();
this.operationType = toCopy.getOperationType();
this.resourcePath = toCopy.getResourcePath();
this.representation = toCopy.getRepresentation();
this.error = toCopy.getError();
}
/**
* Returns the UUID of the event.
*
* @return
*/
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
/**
* Returns the time of the event
*
* @return time in millis
*/
public long getTime() {
return time;
}
public void setTime(long time) {
this.time = time;
}
/**
* Returns the id of the realm
*
* @return
*/
public String getRealmId() {
return realmId;
}
public void setRealmId(String realmId) {
this.realmId = realmId;
}
/**
* @return the name of the realm
*/
public String getRealmName() {
return realmName;
}
public void setRealmName(String realmName) {
this.realmName = realmName;
}
/**
* Returns authentication details
*
* @return
*/
public AuthDetails getAuthDetails() {
return authDetails;
}
public void setAuthDetails(AuthDetails authDetails) {
this.authDetails = authDetails;
}
/**
* Returns the type of the operation
*
* @return
*/
public OperationType getOperationType() {
return operationType;
}
public void setOperationType(OperationType operationType) {
this.operationType = operationType;
}
/**
* Returns the path of the resource. For example:
* <ul>
* <li><b>realms</b> - realm list</li>
* <li><b>realms/master</b> - master realm</li>
* <li><b>realms/clients/00d4b16f-f1f9-4e73-8366-d76b18f3e0e1</b> - client within the master realm</li>
* </ul>
*
* @return
*/
public String getResourcePath() {
return resourcePath;
}
public void setResourcePath(String resourcePath) {
this.resourcePath = resourcePath;
}
/**
* Returns the updated JSON representation if <code>operationType</code> is <code>CREATE</code> or <code>UPDATE</code>.
* Otherwise returns <code>null</code>.
*
* @return
*/
public String getRepresentation() {
return representation;
}
public void setRepresentation(String representation) {
this.representation = representation;
}
/**
* If the event was unsuccessful returns the error message. Otherwise returns <code>null</code>.
*
* @return
*/
public String getError() {
return error;
}
public void setError(String error) {
this.error = error;
}
/**
* Returns the type of the affected {@link ResourceType} for this {@link AdminEvent}, e.g. {@link ResourceType#USER USER}, {@link ResourceType#GROUP GROUP} etc.
*
* @return
*/
public ResourceType getResourceType() {
if (resourceType == null) {
return null;
}
try {
return ResourceType.valueOf(resourceType);
}
catch (IllegalArgumentException e) {
return ResourceType.CUSTOM;
}
}
public void setResourceType(ResourceType resourceType) {
this.resourceType = resourceType == null ? null : resourceType.toString();
}
/**
* Returns the type as string. Custom resource types with values different from {@link ResourceType} are possible. In this case {@link #getResourceType()} returns <code>CUSTOM</code>.
*
* @return
*/
public String getResourceTypeAsString() {
return resourceType;
}
/**
* Setter for custom resource types with values different from {@link ResourceType}.
*/
public void setResourceTypeAsString(String resourceType) {
this.resourceType = resourceType;
}
}