You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2020/02/26 11:54:30 UTC
[syncope] branch master updated: [SYNCOPE-1531] More robust
handling in case value for key column is missing
This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/master by this push:
new f640386 [SYNCOPE-1531] More robust handling in case value for key column is missing
f640386 is described below
commit f640386145d5269d1ea3a6e28bc7a29fc7a7635d
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Wed Feb 26 12:50:58 2020 +0100
[SYNCOPE-1531] More robust handling in case value for key column is missing
---
.../java/pushpull/stream/CSVStreamConnector.java | 22 ++++++++++++++++------
1 file changed, 16 insertions(+), 6 deletions(-)
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/CSVStreamConnector.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/CSVStreamConnector.java
index a1e04ef..8d70cea 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/CSVStreamConnector.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/CSVStreamConnector.java
@@ -245,20 +245,30 @@ public class CSVStreamConnector implements Connector, AutoCloseable {
SearchResult result = new SearchResult();
try {
- while (reader().hasNext()) {
+ for (int record = 1; reader().hasNext(); record++) {
Map<String, String> row = reader().next();
- ConnectorObjectBuilder builder = new ConnectorObjectBuilder();
- builder.setObjectClass(objectClass);
- builder.setUid(row.get(keyColumn));
- builder.setName(row.get(keyColumn));
+ String keyValue = row.get(keyColumn);
+ if (StringUtils.isBlank(keyValue)) {
+ keyValue = "Record " + record;
+ }
+
+ ConnectorObjectBuilder builder = new ConnectorObjectBuilder().
+ setObjectClass(objectClass).
+ setUid(keyValue).
+ setName(keyValue);
row.forEach((key, value) -> builder.addAttribute(arrayElementsSeparator == null
? AttributeBuilder.build(key, value)
: AttributeBuilder.build(key,
(Object[]) StringUtils.splitByWholeSeparator(value, arrayElementsSeparator))));
- handler.handle(builder.build());
+ ConnectorObject obj = builder.build();
+ if (filter == null || filter.accept(obj)) {
+ handler.handle(obj);
+ } else {
+ LOG.debug("Found but not passing the provided filter {}: {}", filter, obj);
+ }
}
} catch (IOException e) {
LOG.error("Could not read CSV from provided stream", e);