Repository: incubator-unomi Updated Branches: refs/heads/master 150010a28 -> 35330b452
UNOMI-134 : Avoid NPE when no filter is set on personalization Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/35330b45 Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/35330b45 Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/35330b45 Branch: refs/heads/master Commit: 35330b452641f0ce15090486c838c04e7961f686 Parents: 150010a Author: Thomas Draier <[email protected]> Authored: Wed Nov 8 11:25:45 2017 +0100 Committer: Thomas Draier <[email protected]> Committed: Wed Nov 8 11:25:53 2017 +0100 ---------------------------------------------------------------------- .../services/PersonalizationServiceImpl.java | 10 ++++++---- .../sorts/FilterPersonalizationStrategy.java | 8 +++++--- .../sorts/ScorePersonalizationStrategy.java | 18 ++++++++++-------- 3 files changed, 21 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/35330b45/services/src/main/java/org/apache/unomi/services/services/PersonalizationServiceImpl.java ---------------------------------------------------------------------- diff --git a/services/src/main/java/org/apache/unomi/services/services/PersonalizationServiceImpl.java b/services/src/main/java/org/apache/unomi/services/services/PersonalizationServiceImpl.java index 199b529..6ce7610 100644 --- a/services/src/main/java/org/apache/unomi/services/services/PersonalizationServiceImpl.java +++ b/services/src/main/java/org/apache/unomi/services/services/PersonalizationServiceImpl.java @@ -60,10 +60,12 @@ public class PersonalizationServiceImpl implements PersonalizationService { @Override public boolean filter(Profile profile, Session session, PersonalizedContent personalizedContent) { boolean result = true; - for (Filter filter : personalizedContent.getFilters()) { - Condition condition = filter.getCondition(); - if (condition != null && condition.getConditionTypeId() != null) { - result &= profileService.matchCondition(condition, profile, session); + if (personalizedContent.getFilters() != null) { + for (Filter filter : personalizedContent.getFilters()) { + Condition condition = filter.getCondition(); + if (condition != null && condition.getConditionTypeId() != null) { + result &= profileService.matchCondition(condition, profile, session); + } } } return result; http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/35330b45/services/src/main/java/org/apache/unomi/services/sorts/FilterPersonalizationStrategy.java ---------------------------------------------------------------------- diff --git a/services/src/main/java/org/apache/unomi/services/sorts/FilterPersonalizationStrategy.java b/services/src/main/java/org/apache/unomi/services/sorts/FilterPersonalizationStrategy.java index b3e6bb4..41ac9b5 100644 --- a/services/src/main/java/org/apache/unomi/services/sorts/FilterPersonalizationStrategy.java +++ b/services/src/main/java/org/apache/unomi/services/sorts/FilterPersonalizationStrategy.java @@ -40,9 +40,11 @@ public class FilterPersonalizationStrategy implements PersonalizationStrategy { List<String> sortedContent = new ArrayList<>(); for (PersonalizationService.PersonalizedContent personalizedContent : personalizationRequest.getContents()) { boolean result = true; - for (PersonalizationService.Filter filter : personalizedContent.getFilters()) { - Condition condition = filter.getCondition(); - result &= profileService.matchCondition(condition, profile, session); + if (personalizedContent.getFilters() != null) { + for (PersonalizationService.Filter filter : personalizedContent.getFilters()) { + Condition condition = filter.getCondition(); + result &= profileService.matchCondition(condition, profile, session); + } } if (result) { sortedContent.add(personalizedContent.getId()); http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/35330b45/services/src/main/java/org/apache/unomi/services/sorts/ScorePersonalizationStrategy.java ---------------------------------------------------------------------- diff --git a/services/src/main/java/org/apache/unomi/services/sorts/ScorePersonalizationStrategy.java b/services/src/main/java/org/apache/unomi/services/sorts/ScorePersonalizationStrategy.java index c8d391b..f22d951 100644 --- a/services/src/main/java/org/apache/unomi/services/sorts/ScorePersonalizationStrategy.java +++ b/services/src/main/java/org/apache/unomi/services/sorts/ScorePersonalizationStrategy.java @@ -67,14 +67,16 @@ public class ScorePersonalizationStrategy implements PersonalizationStrategy { } } - for (PersonalizationService.Filter filter : personalizedContent.getFilters()) { - Condition condition = filter.getCondition(); - if (condition != null && condition.getConditionTypeId() != null) { - if (profileService.matchCondition(condition, profile, session)) { - if (filter.getProperties().get("score") != null) { - score += (int) filter.getProperties().get("score"); - } else { - score += 1; + if (personalizedContent.getFilters() != null) { + for (PersonalizationService.Filter filter : personalizedContent.getFilters()) { + Condition condition = filter.getCondition(); + if (condition != null && condition.getConditionTypeId() != null) { + if (profileService.matchCondition(condition, profile, session)) { + if (filter.getProperties().get("score") != null) { + score += (int) filter.getProperties().get("score"); + } else { + score += 1; + } } } }
