You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@unomi.apache.org by js...@apache.org on 2023/05/02 12:53:11 UTC
[unomi] branch UNOMI-775-add-validation-endpoint updated: feedbacks
This is an automated email from the ASF dual-hosted git repository.
jsinovassinnaik pushed a commit to branch UNOMI-775-add-validation-endpoint
in repository https://gitbox.apache.org/repos/asf/unomi.git
The following commit(s) were added to refs/heads/UNOMI-775-add-validation-endpoint by this push:
new 61519b3ba feedbacks
61519b3ba is described below
commit 61519b3bac0fd2df84de734963bd72b354e29504
Author: jsinovassin <js...@jahia.com>
AuthorDate: Tue May 2 11:03:38 2023 +0200
feedbacks
---
.../unomi/schema/rest/JsonSchemaEndPoint.java | 2 +-
.../apache/unomi/schema/api/ValidationError.java | 12 +++-----
.../unomi/schema/api/ValidationException.java | 16 +++++++++++
.../unomi/schema/impl/SchemaServiceImpl.java | 32 +++++++++++-----------
4 files changed, 37 insertions(+), 25 deletions(-)
diff --git a/extensions/json-schema/rest/src/main/java/org/apache/unomi/schema/rest/JsonSchemaEndPoint.java b/extensions/json-schema/rest/src/main/java/org/apache/unomi/schema/rest/JsonSchemaEndPoint.java
index c157370fd..4064edf20 100644
--- a/extensions/json-schema/rest/src/main/java/org/apache/unomi/schema/rest/JsonSchemaEndPoint.java
+++ b/extensions/json-schema/rest/src/main/java/org/apache/unomi/schema/rest/JsonSchemaEndPoint.java
@@ -149,7 +149,7 @@ public class JsonSchemaEndPoint {
try {
return schemaService.validateEvents(events);
} catch (Exception e) {
- String errorMessage = "Unable to validate event: " + e.getMessage();
+ String errorMessage = "Unable to validate events: " + e.getMessage();
throw new InvalidRequestException(errorMessage, errorMessage);
}
}
diff --git a/extensions/json-schema/services/src/main/java/org/apache/unomi/schema/api/ValidationError.java b/extensions/json-schema/services/src/main/java/org/apache/unomi/schema/api/ValidationError.java
index 259c4cfdf..7adfabef1 100644
--- a/extensions/json-schema/services/src/main/java/org/apache/unomi/schema/api/ValidationError.java
+++ b/extensions/json-schema/services/src/main/java/org/apache/unomi/schema/api/ValidationError.java
@@ -27,23 +27,19 @@ import java.io.Serializable;
*/
public class ValidationError implements Serializable {
- private transient final ValidationMessage validationMessage;
+ private transient final String validationMessage;
- public ValidationError(ValidationMessage validationMessage) {
+ public ValidationError(String validationMessage) {
this.validationMessage = validationMessage;
}
public String getError() {
- return validationMessage.getMessage();
- }
-
- public String toString() {
- return validationMessage.toString();
+ return validationMessage;
}
public boolean equals(Object o) {
ValidationError other = (ValidationError) o;
- return validationMessage.equals(other.validationMessage);
+ return validationMessage.equals(other.getError());
}
public int hashCode() {
diff --git a/extensions/json-schema/services/src/main/java/org/apache/unomi/schema/api/ValidationException.java b/extensions/json-schema/services/src/main/java/org/apache/unomi/schema/api/ValidationException.java
index d2a278907..c5481da83 100644
--- a/extensions/json-schema/services/src/main/java/org/apache/unomi/schema/api/ValidationException.java
+++ b/extensions/json-schema/services/src/main/java/org/apache/unomi/schema/api/ValidationException.java
@@ -22,10 +22,18 @@ package org.apache.unomi.schema.api;
* Or when we can't perform the validation due to missing data or invalid required data
*/
public class ValidationException extends Exception {
+
+ private String eventType;
+
public ValidationException(String message) {
super(message);
}
+ public ValidationException(String message, String eventType) {
+ super(message);
+ this.eventType = eventType;
+ }
+
public ValidationException(Throwable throwable) {
super(throwable);
}
@@ -33,4 +41,12 @@ public class ValidationException extends Exception {
public ValidationException(String message, Throwable throwable) {
super(message, throwable);
}
+
+ public void setEventType(String eventType) {
+ this.eventType = eventType;
+ }
+
+ public String getEventType() {
+ return eventType;
+ }
}
diff --git a/extensions/json-schema/services/src/main/java/org/apache/unomi/schema/impl/SchemaServiceImpl.java b/extensions/json-schema/services/src/main/java/org/apache/unomi/schema/impl/SchemaServiceImpl.java
index 7da059fa6..d4b695a4d 100644
--- a/extensions/json-schema/services/src/main/java/org/apache/unomi/schema/impl/SchemaServiceImpl.java
+++ b/extensions/json-schema/services/src/main/java/org/apache/unomi/schema/impl/SchemaServiceImpl.java
@@ -52,6 +52,8 @@ public class SchemaServiceImpl implements SchemaService {
private static final Logger logger = LoggerFactory.getLogger(SchemaServiceImpl.class.getName());
private static final String TARGET_EVENTS = "events";
+ private static final String GENERIC_ERROR_KEY = "error";
+
ObjectMapper objectMapper = new ObjectMapper();
/**
@@ -120,33 +122,31 @@ public class SchemaServiceImpl implements SchemaService {
Map<String, Set<ValidationError>> errorsPerEventType = new HashMap<>();
JsonNode eventsNodes = parseData(events);
eventsNodes.forEach(event -> {
- String eventType = event.get("eventType").asText();
try {
Set<ValidationError> errors = validateNodeEvent(event);
- if (errorsPerEventType.containsKey(eventType)) {
- errorsPerEventType.get(eventType).addAll(errors);
- } else {
- errorsPerEventType.put(eventType, errors);
+ if (!errors.isEmpty()) {
+ String eventType = event.get("eventType").asText();
+ if (errorsPerEventType.containsKey(eventType)) {
+ errorsPerEventType.get(eventType).addAll(errors);
+ } else {
+ errorsPerEventType.put(eventType, errors);
+ }
}
} catch (ValidationException e) {
- Set<ValidationError> errors = buildCustomErrorMessage();
+ Set<ValidationError> errors = buildCustomErrorMessage(e.getMessage());
+ String eventType = e.getEventType() != null ? e.getEventType() : GENERIC_ERROR_KEY;
if (errorsPerEventType.containsKey(eventType)) {
errorsPerEventType.get(eventType).addAll(errors);
} else {
errorsPerEventType.put(eventType, errors);
}
- errorsPerEventType.put(eventType, errors);
-
- logger.debug(e.getMessage());
}
});
return errorsPerEventType;
}
- private Set<ValidationError> buildCustomErrorMessage() {
- ValidationMessage.Builder builder = new ValidationMessage.Builder();
- builder.customMessage("No Schema found for this event type").format(new MessageFormat("Not used pattern. Message format is required"));
- ValidationError error = new ValidationError(builder.build());
+ private Set<ValidationError> buildCustomErrorMessage(String errorMessage) {
+ ValidationError error = new ValidationError(errorMessage);
Set<ValidationError> errors = new HashSet<>();
errors.add(error);
return errors;
@@ -180,7 +180,7 @@ public class SchemaServiceImpl implements SchemaService {
@Override
public JsonSchemaWrapper getSchemaForEventType(String eventType) throws ValidationException {
if (StringUtils.isEmpty(eventType)) {
- throw new ValidationException("eventType missing");
+ throw new ValidationException("eventType missing", eventType);
}
return schemasById.values().stream()
@@ -190,7 +190,7 @@ public class SchemaServiceImpl implements SchemaService {
jsonSchemaWrapper.getName() != null &&
jsonSchemaWrapper.getName().equals(eventType))
.findFirst()
- .orElseThrow(() -> new ValidationException("Schema not found for event type: " + eventType));
+ .orElseThrow(() -> new ValidationException("Schema not found for event type: " + eventType, eventType));
}
@Override
@@ -240,7 +240,7 @@ public class SchemaServiceImpl implements SchemaService {
return validationMessages != null ?
validationMessages.stream()
- .map(ValidationError::new)
+ .map(validationMessage -> new ValidationError(validationMessage.getMessage()))
.collect(Collectors.toSet()) :
Collections.emptySet();
} catch (Exception e) {