From 577aeb93081eacd5b0b29148c468ae860ea7e173 Mon Sep 17 00:00:00 2001 From: Steffen Jacobs Date: Wed, 18 Sep 2019 18:02:34 +0200 Subject: [PATCH] Bug 5085: fixed an issue regarding storing and loading associated roles to the mongodb --- .../impl/DomainObjectFactoryImpl.java | 30 ++++++++++--------- .../impl/MongoObjectFactoryImpl.java | 4 ++- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/DomainObjectFactoryImpl.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/DomainObjectFactoryImpl.java index 92fc3208aee..dd43442fdff 100644 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/DomainObjectFactoryImpl.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/DomainObjectFactoryImpl.java @@ -1885,23 +1885,25 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory { // load associated roles final ArrayList markList = dbObject.get(FieldNames.RACE_LOG_COURSE_ASSOCIATED_ROLES.name(), ArrayList.class); - for (final Object entry : markList) { - if (entry instanceof Document) { - final Document entryObject = (Document) entry; - final UUID markUUID = UUID - .fromString(entryObject.getString(FieldNames.RACE_LOG_COURSE_ASSOCIATED_ROLES_MARK_ID.name())); - final Mark mark = baseDomainFactory.getExistingMarkById(markUUID); - if (mark != null) { - final String roleOrNull = entryObject - .getString(FieldNames.RACE_LOG_COURSE_ASSOCIATED_ROLES_ROLE.name()); - if (roleOrNull != null) { - courseData.getA().addRoleMapping(mark, roleOrNull); + if (markList != null) { + for (final Object entry : markList) { + if (entry instanceof Document) { + final Document entryObject = (Document) entry; + final UUID markUUID = UUID.fromString( + entryObject.getString(FieldNames.RACE_LOG_COURSE_ASSOCIATED_ROLES_MARK_ID.name())); + final Mark mark = baseDomainFactory.getExistingMarkById(markUUID); + if (mark != null) { + final String roleOrNull = entryObject + .getString(FieldNames.RACE_LOG_COURSE_ASSOCIATED_ROLES_ROLE.name()); + if (roleOrNull != null) { + courseData.getA().addRoleMapping(mark, roleOrNull); + } + } else { + logger.warning(String.format("Could not resolve mark with id %s for course %s.", markUUID, id)); } } else { - logger.warning(String.format("Could not resolve mark with id %s for course %s.", markUUID, id)); + logger.warning(String.format("Unexpected mark entry found for course %s.", id)); } - } else { - logger.warning(String.format("Unexpected mark entry found for course %s.", id)); } } diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java index 2f930c9b33a..69eb53a821f 100644 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java @@ -1240,7 +1240,9 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory { roleMap.add(mapping); }); - result.put(FieldNames.RACE_LOG_COURSE_ASSOCIATED_ROLES.name(), roleMap); + if (!roleMap.isEmpty()) { + result.put(FieldNames.RACE_LOG_COURSE_ASSOCIATED_ROLES.name(), roleMap); + } return result; }