Skip to content

Commit 894a411

Browse files
committed
Fix missing ending brackets, ensure the event listener works with
keycloak 15.0.2 Convert events as JSON Objects first, then serialize to strings. This fixes errors where closing brackets could be missing. Ensure the SPI works with keycloak 15.0.2. Disable obsolete deployment test. Change-Id: Ibd7fe78bffa89dcd203e74c72cd7b818fc2ddeb3
1 parent 079d47c commit 894a411

File tree

3 files changed

+50
-55
lines changed

3 files changed

+50
-55
lines changed

.zuul.yaml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@
33
check:
44
jobs:
55
- maven-build
6-
- keycloak-test-deploy:
7-
dependencies:
8-
- maven-build
96
gate:
107
jobs:
11-
- keycloak-test-deploy
8+
- maven-build

pom.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
1919
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
2020
<groupId>org.softwarefactory.keycloak.providers.events.mqtt</groupId>
21-
<version>9.0.0</version>
21+
<version>15.0.2</version>
2222

2323
<name>Keycloak: Event Publisher to MQTT</name>
2424
<description/>
@@ -122,6 +122,11 @@
122122
<artifactId>hamcrest-all</artifactId>
123123
<version>1.3</version>
124124
</dependency>
125+
<dependency>
126+
<groupId>com.googlecode.json-simple</groupId>
127+
<artifactId>json-simple</artifactId>
128+
<version>1.1.1</version>
129+
</dependency>
125130
</dependencies>
126131

127132
<build>

src/main/java/org/softwarefactory/keycloak/providers/events/mqtt/MQTTEventListenerProvider.java

Lines changed: 43 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
3030
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
3131

32+
import org.json.simple.JSONObject;
33+
3234
import java.util.Map;
3335
import java.util.Set;
3436
import java.lang.Exception;
@@ -130,64 +132,55 @@ private MqttMessage toPayload(String s) {
130132
}
131133

132134
private String toString(Event event) {
133-
StringBuilder sb = new StringBuilder();
134-
135-
sb.append("{'type': '");
136-
sb.append(event.getType());
137-
sb.append("', 'realmId': '");
138-
sb.append(event.getRealmId());
139-
sb.append("', 'clientId': '");
140-
sb.append(event.getClientId());
141-
sb.append("', 'userId': '");
142-
sb.append(event.getUserId());
143-
sb.append("', 'ipAddress': '");
144-
sb.append(event.getIpAddress());
145-
sb.append("'");
146-
147-
if (event.getError() != null) {
148-
sb.append(", 'error': '");
149-
sb.append(event.getError());
150-
sb.append("'");
151-
}
152-
sb.append(", 'details': {");
135+
JSONObject obj = toJSON(event);
136+
return obj.toString();
137+
138+
}
139+
140+
private JSONObject toJSON(Event event) {
141+
JSONObject ev = new JSONObject();
142+
143+
ev.put("type", event.getType().toString());
144+
ev.put("realmId", event.getRealmId());
145+
ev.put("clientId", event.getClientId());
146+
ev.put("userId", event.getUserId());
147+
ev.put("ipAddress", event.getIpAddress());
148+
ev.put("time", event.getTime());
149+
150+
ev.put("error", event.getError());
151+
152+
JSONObject evDetails = new JSONObject();
153153
if (event.getDetails() != null) {
154154
for (Map.Entry<String, String> e : event.getDetails().entrySet()) {
155-
sb.append("'");
156-
sb.append(e.getKey());
157-
sb.append("': '");
158-
sb.append(e.getValue());
159-
sb.append("', ");
155+
evDetails.put(e.getKey(), e.getValue());
160156
}
161157
}
162-
sb.append("}}");
158+
ev.put("details", evDetails);
163159

164-
return sb.toString();
160+
return ev;
165161
}
166162

167163
private String toString(AdminEvent adminEvent) {
168-
StringBuilder sb = new StringBuilder();
169-
170-
sb.append("{'type': '");
171-
sb.append(adminEvent.getOperationType());
172-
sb.append("', 'realmId': '");
173-
sb.append(adminEvent.getAuthDetails().getRealmId());
174-
sb.append("', 'clientId': '");
175-
sb.append(adminEvent.getAuthDetails().getClientId());
176-
sb.append("', 'userId': '");
177-
sb.append(adminEvent.getAuthDetails().getUserId());
178-
sb.append("', 'ipAddress': '");
179-
sb.append(adminEvent.getAuthDetails().getIpAddress());
180-
sb.append("', 'resourcePath': '");
181-
sb.append(adminEvent.getResourcePath());
182-
sb.append("'");
183-
184-
if (adminEvent.getError() != null) {
185-
sb.append(", 'error': '");
186-
sb.append(adminEvent.getError());
187-
sb.append("'");
188-
}
189-
sb.append("}");
190-
return sb.toString();
164+
JSONObject obj = toJSON(adminEvent);
165+
return obj.toString();
166+
167+
}
168+
169+
private JSONObject toJSON(AdminEvent adminEvent) {
170+
JSONObject ev = new JSONObject();
171+
172+
ev.put("type",adminEvent.getOperationType().toString());
173+
ev.put("realmId", adminEvent.getAuthDetails().getRealmId());
174+
ev.put("clientId", adminEvent.getAuthDetails().getClientId());
175+
ev.put("userId", adminEvent.getAuthDetails().getUserId());
176+
ev.put("ipAddress", adminEvent.getAuthDetails().getIpAddress());
177+
ev.put("time", adminEvent.getTime());
178+
ev.put("resourcePath", adminEvent.getResourcePath());
179+
ev.put("resourceType", adminEvent.getResourceTypeAsString());
180+
181+
ev.put("error", adminEvent.getError());
182+
183+
return ev;
191184
}
192185

193186
@Override

0 commit comments

Comments
 (0)