You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@unomi.apache.org by jk...@apache.org on 2021/08/16 09:42:29 UTC
[unomi] branch unomi-1.6.x updated: UNOMI-502: do not validate
disabled segments/scoring to be able to save incomplete objects (only in
case they are disabled) (#330)
This is an automated email from the ASF dual-hosted git repository.
jkevan pushed a commit to branch unomi-1.6.x
in repository https://gitbox.apache.org/repos/asf/unomi.git
The following commit(s) were added to refs/heads/unomi-1.6.x by this push:
new 06e9c69 UNOMI-502: do not validate disabled segments/scoring to be able to save incomplete objects (only in case they are disabled) (#330)
06e9c69 is described below
commit 06e9c69c3dcb8d7f99bcdb60277bfad6dd66bb1c
Author: kevan Jahanshahi <ke...@jahia.com>
AuthorDate: Mon Aug 16 11:41:31 2021 +0200
UNOMI-502: do not validate disabled segments/scoring to be able to save incomplete objects (only in case they are disabled) (#330)
---
.../java/org/apache/unomi/itests/SegmentIT.java | 12 +++++++
.../services/impl/segments/SegmentServiceImpl.java | 42 ++++++++++++----------
2 files changed, 36 insertions(+), 18 deletions(-)
diff --git a/itests/src/test/java/org/apache/unomi/itests/SegmentIT.java b/itests/src/test/java/org/apache/unomi/itests/SegmentIT.java
index bc05a24..207bd93 100644
--- a/itests/src/test/java/org/apache/unomi/itests/SegmentIT.java
+++ b/itests/src/test/java/org/apache/unomi/itests/SegmentIT.java
@@ -93,6 +93,18 @@ public class SegmentIT extends BaseIT {
segmentService.setSegmentDefinition(segment);
}
+ @Test
+ public void testSegmentWithNullConditionButDisabled() {
+ Metadata segmentMetadata = new Metadata(SEGMENT_ID);
+ segmentMetadata.setEnabled(false);
+ Segment segment = new Segment();
+ segment.setMetadata(segmentMetadata);
+ segment.setCondition(null);
+
+ segmentService.setSegmentDefinition(segment);
+ segmentService.removeSegmentDefinition(SEGMENT_ID, false);
+ }
+
@Test(expected = BadSegmentConditionException.class)
public void testSegmentWithInValidCondition() {
Metadata segmentMetadata = new Metadata(SEGMENT_ID);
diff --git a/services/src/main/java/org/apache/unomi/services/impl/segments/SegmentServiceImpl.java b/services/src/main/java/org/apache/unomi/services/impl/segments/SegmentServiceImpl.java
index afe551f..1dc599d 100644
--- a/services/src/main/java/org/apache/unomi/services/impl/segments/SegmentServiceImpl.java
+++ b/services/src/main/java/org/apache/unomi/services/impl/segments/SegmentServiceImpl.java
@@ -254,28 +254,32 @@ public class SegmentServiceImpl extends AbstractServiceImpl implements SegmentSe
private List<Segment> getAllSegmentDefinitions() {
List<Segment> allItems = persistenceService.getAllItems(Segment.class);
for (Segment segment : allItems) {
- ParserHelper.resolveConditionType(definitionsService, segment.getCondition(), "segment " + segment.getItemId());
+ if (segment.getMetadata().isEnabled()) {
+ ParserHelper.resolveConditionType(definitionsService, segment.getCondition(), "segment " + segment.getItemId());
+ }
}
return allItems;
}
public Segment getSegmentDefinition(String segmentId) {
Segment definition = persistenceService.load(segmentId, Segment.class);
- if (definition != null) {
+ if (definition != null && definition.getMetadata().isEnabled()) {
ParserHelper.resolveConditionType(definitionsService, definition.getCondition(), "segment " + segmentId);
}
return definition;
}
public void setSegmentDefinition(Segment segment) {
- ParserHelper.resolveConditionType(definitionsService, segment.getCondition(), "segment " + segment.getItemId());
- if (!persistenceService.isValidCondition(segment.getCondition(), new Profile(VALIDATION_PROFILE_ID))) {
- throw new BadSegmentConditionException();
+ if (segment.getMetadata().isEnabled()) {
+ ParserHelper.resolveConditionType(definitionsService, segment.getCondition(), "segment " + segment.getItemId());
+ if (!persistenceService.isValidCondition(segment.getCondition(), new Profile(VALIDATION_PROFILE_ID))) {
+ throw new BadSegmentConditionException();
+ }
+ if (!segment.getMetadata().isMissingPlugins()) {
+ updateAutoGeneratedRules(segment.getMetadata(), segment.getCondition());
+ }
}
- if (segment.getMetadata().isEnabled() && !segment.getMetadata().isMissingPlugins()) {
- updateAutoGeneratedRules(segment.getMetadata(), segment.getCondition());
- }
// make sure we update the name and description metadata that might not match, so first we remove the entry from the map
persistenceService.save(segment, null, true);
updateExistingProfilesForSegment(segment);
@@ -524,7 +528,7 @@ public class SegmentServiceImpl extends AbstractServiceImpl implements SegmentSe
List<Segment> allSegments = this.allSegments;
for (Segment segment : allSegments) {
- if (persistenceService.testMatch(segment.getCondition(), profile)) {
+ if (segment.getMetadata().isEnabled() && persistenceService.testMatch(segment.getCondition(), profile)) {
metadatas.add(segment.getMetadata());
}
}
@@ -543,8 +547,10 @@ public class SegmentServiceImpl extends AbstractServiceImpl implements SegmentSe
private List<Scoring> getAllScoringDefinitions() {
List<Scoring> allItems = persistenceService.getAllItems(Scoring.class);
for (Scoring scoring : allItems) {
- for (ScoringElement element : scoring.getElements()) {
- ParserHelper.resolveConditionType(definitionsService, element.getCondition(), "scoring " + scoring.getItemId());
+ if (scoring.getMetadata().isEnabled()) {
+ for (ScoringElement element : scoring.getElements()) {
+ ParserHelper.resolveConditionType(definitionsService, element.getCondition(), "scoring " + scoring.getItemId());
+ }
}
}
return allItems;
@@ -552,7 +558,7 @@ public class SegmentServiceImpl extends AbstractServiceImpl implements SegmentSe
public Scoring getScoringDefinition(String scoringId) {
Scoring definition = persistenceService.load(scoringId, Scoring.class);
- if (definition != null) {
+ if (definition != null && definition.getMetadata().isEnabled()) {
for (ScoringElement element : definition.getElements()) {
ParserHelper.resolveConditionType(definitionsService, element.getCondition(), "scoring " + scoringId);
}
@@ -561,12 +567,12 @@ public class SegmentServiceImpl extends AbstractServiceImpl implements SegmentSe
}
public void setScoringDefinition(Scoring scoring) {
- for (ScoringElement element : scoring.getElements()) {
- ParserHelper.resolveConditionType(definitionsService, element.getCondition(), "scoring " + scoring.getItemId() + " element ");
- }
- for (ScoringElement element : scoring.getElements()) {
- if (scoring.getMetadata().isEnabled() && !scoring.getMetadata().isMissingPlugins()) {
- updateAutoGeneratedRules(scoring.getMetadata(), element.getCondition());
+ if (scoring.getMetadata().isEnabled()) {
+ for (ScoringElement element : scoring.getElements()) {
+ ParserHelper.resolveConditionType(definitionsService, element.getCondition(), "scoring " + scoring.getItemId() + " element ");
+ if (!scoring.getMetadata().isMissingPlugins()) {
+ updateAutoGeneratedRules(scoring.getMetadata(), element.getCondition());
+ }
}
}
// make sure we update the name and description metadata that might not match, so first we remove the entry from the map