You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@unomi.apache.org by sh...@apache.org on 2020/11/18 13:27:26 UTC
[unomi] branch UNOMI-400-hardcodedpropertyaccessors-refactoring
updated: UNOMI-400 More refactoring on property accessors & added unit test
This is an automated email from the ASF dual-hosted git repository.
shuber pushed a commit to branch UNOMI-400-hardcodedpropertyaccessors-refactoring
in repository https://gitbox.apache.org/repos/asf/unomi.git
The following commit(s) were added to refs/heads/UNOMI-400-hardcodedpropertyaccessors-refactoring by this push:
new 10ededf UNOMI-400 More refactoring on property accessors & added unit test
10ededf is described below
commit 10ededf90baca45fac0df63b03c1275365289acd
Author: Serge Huber <sh...@jahia.com>
AuthorDate: Wed Nov 18 14:27:11 2020 +0100
UNOMI-400 More refactoring on property accessors & added unit test
---
.../HardcodedPropertyAccessorRegistry.java | 97 +++++++++++-----------
.../conditions/PropertyConditionEvaluator.java | 4 -
...PropertyAccessor.java => CampaignAccessor.java} | 7 +-
...dPropertyAccessor.java => ConsentAccessor.java} | 7 +-
...opertyAccessor.java => CustomItemAccessor.java} | 7 +-
...dedPropertyAccessor.java => EventAccessor.java} | 7 +-
...odedPropertyAccessor.java => GoalAccessor.java} | 7 +-
.../accessors/HardcodedPropertyAccessor.java | 4 +-
...odedPropertyAccessor.java => ItemAccessor.java} | 7 +-
...codedPropertyAccessor.java => MapAccessor.java} | 8 +-
...PropertyAccessor.java => MetadataAccessor.java} | 7 +-
...ertyAccessor.java => MetadataItemAccessor.java} | 7 +-
...dPropertyAccessor.java => ProfileAccessor.java} | 5 +-
...odedPropertyAccessor.java => RuleAccessor.java} | 7 +-
...dPropertyAccessor.java => SessionAccessor.java} | 7 +-
...yAccessor.java => TimestampedItemAccessor.java} | 7 +-
.../HardcodedPropertyAccessorRegistryTest.java | 56 +++++++++++++
17 files changed, 160 insertions(+), 91 deletions(-)
diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/HardcodedPropertyAccessorRegistry.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/HardcodedPropertyAccessorRegistry.java
similarity index 56%
rename from plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/HardcodedPropertyAccessorRegistry.java
rename to plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/HardcodedPropertyAccessorRegistry.java
index 6094a8f..59a70b5 100644
--- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/HardcodedPropertyAccessorRegistry.java
+++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/HardcodedPropertyAccessorRegistry.java
@@ -14,12 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.unomi.plugins.baseplugin.conditions.accessors;
+package org.apache.unomi.plugins.baseplugin.conditions;
import org.apache.unomi.api.*;
import org.apache.unomi.api.campaigns.Campaign;
import org.apache.unomi.api.goals.Goal;
import org.apache.unomi.api.rules.Rule;
+import org.apache.unomi.plugins.baseplugin.conditions.accessors.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -36,19 +37,19 @@ public class HardcodedPropertyAccessorRegistry {
Map<String, HardcodedPropertyAccessor> propertyAccessors = new HashMap<>();
public HardcodedPropertyAccessorRegistry() {
- propertyAccessors.put(Item.class.getName(), new ItemHardcodedPropertyAccessor(this));
- propertyAccessors.put(MetadataItem.class.getName(), new MetadataItemHardcodedPropertyAccessor(this));
- propertyAccessors.put(Metadata.class.getName(), new MetadataHardcodedPropertyAccessor(this));
- propertyAccessors.put(TimestampedItem.class.getName(), new TimestampedItemHardcodedPropertyAccessor(this));
- propertyAccessors.put(Event.class.getName(), new EventHardcodedPropertyAccessor(this));
- propertyAccessors.put(Profile.class.getName(), new ProfileHardcodedPropertyAccessor(this));
- propertyAccessors.put(Consent.class.getName(), new ConsentHardcodedPropertyAccessor(this));
- propertyAccessors.put(Session.class.getName(), new SessionHardcodedPropertyAccessor(this));
- propertyAccessors.put(Rule.class.getName(), new RuleHardcodedPropertyAccessor(this));
- propertyAccessors.put(Goal.class.getName(), new GoalHardcodedPropertyAccessor(this));
- propertyAccessors.put(CustomItem.class.getName(), new CustomItemHardcodedPropertyAccessor(this));
- propertyAccessors.put(Campaign.class.getName(), new CampaignHardcodedPropertyAccessor(this));
- propertyAccessors.put(Map.class.getName(), new MapHardcodedPropertyAccessor(this));
+ propertyAccessors.put(Item.class.getName(), new ItemAccessor(this));
+ propertyAccessors.put(MetadataItem.class.getName(), new MetadataItemAccessor(this));
+ propertyAccessors.put(Metadata.class.getName(), new MetadataAccessor(this));
+ propertyAccessors.put(TimestampedItem.class.getName(), new TimestampedItemAccessor(this));
+ propertyAccessors.put(Event.class.getName(), new EventAccessor(this));
+ propertyAccessors.put(Profile.class.getName(), new ProfileAccessor(this));
+ propertyAccessors.put(Consent.class.getName(), new ConsentAccessor(this));
+ propertyAccessors.put(Session.class.getName(), new SessionAccessor(this));
+ propertyAccessors.put(Rule.class.getName(), new RuleAccessor(this));
+ propertyAccessors.put(Goal.class.getName(), new GoalAccessor(this));
+ propertyAccessors.put(CustomItem.class.getName(), new CustomItemAccessor(this));
+ propertyAccessors.put(Campaign.class.getName(), new CampaignAccessor(this));
+ propertyAccessors.put(Map.class.getName(), new MapAccessor(this));
}
public static class NextTokens {
@@ -57,52 +58,52 @@ public class HardcodedPropertyAccessorRegistry {
}
protected NextTokens getNextTokens(String expression) {
- NextTokens nextTokens = new NextTokens();
if (expression.startsWith("[\"")) {
int lookupNameBeginPos = "[\"".length();
- int lookupNameEndPos = expression.indexOf("\"].", lookupNameBeginPos);
- if (lookupNameEndPos > lookupNameBeginPos) {
- nextTokens.propertyName = expression.substring(lookupNameBeginPos, lookupNameEndPos);
- nextTokens.leftoverExpression = expression.substring(lookupNameEndPos+2);
- } else {
- nextTokens.propertyName = expression.substring(lookupNameBeginPos);
- nextTokens.leftoverExpression = null;
- }
+ int lookupNameEndPos = expression.indexOf("\"]", lookupNameBeginPos);
+ return buildNextTokens(expression, lookupNameBeginPos, lookupNameEndPos, lookupNameEndPos+2);
} else if (expression.startsWith(".")) {
int lookupNameBeginPos = ".".length();
- int lookupNameEndPos = lookupNameBeginPos;
- int dotlookupNameEndPos = expression.indexOf(".", lookupNameBeginPos);
- int squareBracketlookupNameEndPos = expression.indexOf("[", lookupNameBeginPos);
- if (dotlookupNameEndPos > lookupNameBeginPos && squareBracketlookupNameEndPos > lookupNameBeginPos) {
- lookupNameEndPos = Math.min(dotlookupNameEndPos, squareBracketlookupNameEndPos);
- } else if (dotlookupNameEndPos > lookupNameBeginPos) {
- lookupNameEndPos = dotlookupNameEndPos;
- } else if (squareBracketlookupNameEndPos > lookupNameBeginPos) {
- lookupNameEndPos = squareBracketlookupNameEndPos;
- } else {
- lookupNameEndPos = -1;
- }
- if (lookupNameEndPos > lookupNameBeginPos) {
- nextTokens.propertyName = expression.substring(lookupNameBeginPos, lookupNameEndPos);
- nextTokens.leftoverExpression = expression.substring(lookupNameEndPos);
- } else {
- nextTokens.propertyName = expression.substring(lookupNameBeginPos);
- nextTokens.leftoverExpression = null;
- }
+ int lookupNameEndPos = findNextStartDelimiterPos(expression, lookupNameBeginPos);
+ return buildNextTokens(expression, lookupNameBeginPos, lookupNameEndPos, lookupNameEndPos);
} else {
int lookupNameBeginPos = 0;
- int lookupNameEndPos = expression.indexOf(".", lookupNameBeginPos);
- if (lookupNameEndPos > lookupNameBeginPos) {
- nextTokens.propertyName = expression.substring(lookupNameBeginPos, lookupNameEndPos);
- nextTokens.leftoverExpression = expression.substring(lookupNameEndPos);
- } else {
- nextTokens.propertyName = expression.substring(lookupNameBeginPos);
+ int lookupNameEndPos = findNextStartDelimiterPos(expression, lookupNameBeginPos);
+ return buildNextTokens(expression, lookupNameBeginPos, lookupNameEndPos, lookupNameEndPos);
+ }
+ }
+
+ private NextTokens buildNextTokens(String expression, int lookupNameBeginPos, int lookupNameEndPos, int leftoverStartPos) {
+ NextTokens nextTokens = new NextTokens();
+ if (lookupNameEndPos >= lookupNameBeginPos) {
+ nextTokens.propertyName = expression.substring(lookupNameBeginPos, lookupNameEndPos);
+ nextTokens.leftoverExpression = expression.substring(leftoverStartPos);
+ if ("".equals(nextTokens.leftoverExpression)) {
nextTokens.leftoverExpression = null;
}
+ } else {
+ nextTokens.propertyName = expression.substring(lookupNameBeginPos);
+ nextTokens.leftoverExpression = null;
}
return nextTokens;
}
+ private int findNextStartDelimiterPos(String expression, int lookupNameBeginPos) {
+ int lookupNameEndPos;
+ int dotlookupNameEndPos = expression.indexOf(".", lookupNameBeginPos);
+ int squareBracketlookupNameEndPos = expression.indexOf("[\"", lookupNameBeginPos);
+ if (dotlookupNameEndPos >= lookupNameBeginPos && squareBracketlookupNameEndPos >= lookupNameBeginPos) {
+ lookupNameEndPos = Math.min(dotlookupNameEndPos, squareBracketlookupNameEndPos);
+ } else if (dotlookupNameEndPos >= lookupNameBeginPos) {
+ lookupNameEndPos = dotlookupNameEndPos;
+ } else if (squareBracketlookupNameEndPos >= lookupNameBeginPos) {
+ lookupNameEndPos = squareBracketlookupNameEndPos;
+ } else {
+ lookupNameEndPos = -1;
+ }
+ return lookupNameEndPos;
+ }
+
public Object getProperty(Object object, String expression) {
if (expression == null) {
diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/PropertyConditionEvaluator.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/PropertyConditionEvaluator.java
index aa50586..13319b6 100644
--- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/PropertyConditionEvaluator.java
+++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/PropertyConditionEvaluator.java
@@ -23,11 +23,7 @@ import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.unomi.api.*;
import org.apache.unomi.api.conditions.Condition;
-import org.apache.unomi.api.goals.Goal;
-import org.apache.unomi.api.rules.Rule;
import org.apache.unomi.plugins.baseplugin.conditions.accessors.HardcodedPropertyAccessor;
-import org.apache.unomi.plugins.baseplugin.conditions.accessors.HardcodedPropertyAccessorRegistry;
-import org.apache.unomi.scripting.ExpressionFilter;
import org.apache.unomi.scripting.ExpressionFilterFactory;
import org.apache.unomi.scripting.SecureFilteringClassLoader;
import org.apache.unomi.persistence.elasticsearch.conditions.ConditionContextHelper;
diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/CampaignHardcodedPropertyAccessor.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/CampaignAccessor.java
similarity index 82%
rename from plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/CampaignHardcodedPropertyAccessor.java
rename to plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/CampaignAccessor.java
index 2718cfb..5736780 100644
--- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/CampaignHardcodedPropertyAccessor.java
+++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/CampaignAccessor.java
@@ -17,14 +17,15 @@
package org.apache.unomi.plugins.baseplugin.conditions.accessors;
import org.apache.unomi.api.campaigns.Campaign;
+import org.apache.unomi.plugins.baseplugin.conditions.HardcodedPropertyAccessorRegistry;
-public class CampaignHardcodedPropertyAccessor extends HardcodedPropertyAccessor<Campaign> {
- public CampaignHardcodedPropertyAccessor(HardcodedPropertyAccessorRegistry registry) {
+public class CampaignAccessor extends HardcodedPropertyAccessor<Campaign> {
+ public CampaignAccessor(HardcodedPropertyAccessorRegistry registry) {
super(registry);
}
@Override
- Object getProperty(Campaign object, String propertyName, String leftoverExpression) {
+ public Object getProperty(Campaign object, String propertyName, String leftoverExpression) {
if ("startDate".equals(propertyName)) {
return object.getStartDate();
} else if ("endDate".equals(propertyName)) {
diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/ConsentHardcodedPropertyAccessor.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/ConsentAccessor.java
similarity index 82%
rename from plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/ConsentHardcodedPropertyAccessor.java
rename to plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/ConsentAccessor.java
index 5f63e3a..1b052b9 100644
--- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/ConsentHardcodedPropertyAccessor.java
+++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/ConsentAccessor.java
@@ -17,15 +17,16 @@
package org.apache.unomi.plugins.baseplugin.conditions.accessors;
import org.apache.unomi.api.Consent;
+import org.apache.unomi.plugins.baseplugin.conditions.HardcodedPropertyAccessorRegistry;
-public class ConsentHardcodedPropertyAccessor extends HardcodedPropertyAccessor<Consent> {
+public class ConsentAccessor extends HardcodedPropertyAccessor<Consent> {
- public ConsentHardcodedPropertyAccessor(HardcodedPropertyAccessorRegistry registry) {
+ public ConsentAccessor(HardcodedPropertyAccessorRegistry registry) {
super(registry);
}
@Override
- Object getProperty(Consent object, String propertyName, String leftoverExpression) {
+ public Object getProperty(Consent object, String propertyName, String leftoverExpression) {
if ("typeIdentifier".equals(propertyName)) {
return object.getTypeIdentifier();
} else if ("scope".equals(propertyName)) {
diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/CustomItemHardcodedPropertyAccessor.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/CustomItemAccessor.java
similarity index 77%
rename from plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/CustomItemHardcodedPropertyAccessor.java
rename to plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/CustomItemAccessor.java
index ed85103..66ceab2 100644
--- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/CustomItemHardcodedPropertyAccessor.java
+++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/CustomItemAccessor.java
@@ -17,15 +17,16 @@
package org.apache.unomi.plugins.baseplugin.conditions.accessors;
import org.apache.unomi.api.CustomItem;
+import org.apache.unomi.plugins.baseplugin.conditions.HardcodedPropertyAccessorRegistry;
-public class CustomItemHardcodedPropertyAccessor extends HardcodedPropertyAccessor<CustomItem> {
+public class CustomItemAccessor extends HardcodedPropertyAccessor<CustomItem> {
- public CustomItemHardcodedPropertyAccessor(HardcodedPropertyAccessorRegistry registry) {
+ public CustomItemAccessor(HardcodedPropertyAccessorRegistry registry) {
super(registry);
}
@Override
- Object getProperty(CustomItem object, String propertyName, String leftoverExpression) {
+ public Object getProperty(CustomItem object, String propertyName, String leftoverExpression) {
if ("properties".equals(propertyName)) {
return registry.getProperty(object.getProperties(), leftoverExpression);
}
diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/EventHardcodedPropertyAccessor.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/EventAccessor.java
similarity index 86%
rename from plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/EventHardcodedPropertyAccessor.java
rename to plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/EventAccessor.java
index 81c1fb6..ba10bd9 100644
--- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/EventHardcodedPropertyAccessor.java
+++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/EventAccessor.java
@@ -17,15 +17,16 @@
package org.apache.unomi.plugins.baseplugin.conditions.accessors;
import org.apache.unomi.api.Event;
+import org.apache.unomi.plugins.baseplugin.conditions.HardcodedPropertyAccessorRegistry;
-public class EventHardcodedPropertyAccessor extends HardcodedPropertyAccessor<Event> {
+public class EventAccessor extends HardcodedPropertyAccessor<Event> {
- public EventHardcodedPropertyAccessor(HardcodedPropertyAccessorRegistry registry) {
+ public EventAccessor(HardcodedPropertyAccessorRegistry registry) {
super(registry);
}
@Override
- Object getProperty(Event object, String propertyName, String leftoverExpression) {
+ public Object getProperty(Event object, String propertyName, String leftoverExpression) {
if ("properties".equals(propertyName)) {
return registry.getProperty(object.getProperties(), leftoverExpression);
}
diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/GoalHardcodedPropertyAccessor.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/GoalAccessor.java
similarity index 77%
rename from plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/GoalHardcodedPropertyAccessor.java
rename to plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/GoalAccessor.java
index c1cbbf0..03e0b6c 100644
--- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/GoalHardcodedPropertyAccessor.java
+++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/GoalAccessor.java
@@ -17,15 +17,16 @@
package org.apache.unomi.plugins.baseplugin.conditions.accessors;
import org.apache.unomi.api.goals.Goal;
+import org.apache.unomi.plugins.baseplugin.conditions.HardcodedPropertyAccessorRegistry;
-public class GoalHardcodedPropertyAccessor extends HardcodedPropertyAccessor<Goal> {
+public class GoalAccessor extends HardcodedPropertyAccessor<Goal> {
- public GoalHardcodedPropertyAccessor(HardcodedPropertyAccessorRegistry registry) {
+ public GoalAccessor(HardcodedPropertyAccessorRegistry registry) {
super(registry);
}
@Override
- Object getProperty(Goal object, String propertyName, String leftoverExpression) {
+ public Object getProperty(Goal object, String propertyName, String leftoverExpression) {
if ("campaignId".equals(propertyName)) {
return object.getCampaignId();
}
diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/HardcodedPropertyAccessor.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/HardcodedPropertyAccessor.java
index 9a8385b..7a414fd 100644
--- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/HardcodedPropertyAccessor.java
+++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/HardcodedPropertyAccessor.java
@@ -16,6 +16,8 @@
*/
package org.apache.unomi.plugins.baseplugin.conditions.accessors;
+import org.apache.unomi.plugins.baseplugin.conditions.HardcodedPropertyAccessorRegistry;
+
/**
* Hardcoded property accessors serve two purpose:
* - control access to object fields, only expose the ones that are "safe" to use
@@ -31,6 +33,6 @@ public abstract class HardcodedPropertyAccessor<T> {
this.registry = registry;
}
- abstract Object getProperty(T object, String propertyName, String leftoverExpression);
+ public abstract Object getProperty(T object, String propertyName, String leftoverExpression);
}
diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/ItemHardcodedPropertyAccessor.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/ItemAccessor.java
similarity index 81%
rename from plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/ItemHardcodedPropertyAccessor.java
rename to plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/ItemAccessor.java
index 41ce3a4..7dc9913 100644
--- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/ItemHardcodedPropertyAccessor.java
+++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/ItemAccessor.java
@@ -17,15 +17,16 @@
package org.apache.unomi.plugins.baseplugin.conditions.accessors;
import org.apache.unomi.api.Item;
+import org.apache.unomi.plugins.baseplugin.conditions.HardcodedPropertyAccessorRegistry;
-public class ItemHardcodedPropertyAccessor extends HardcodedPropertyAccessor<Item> {
+public class ItemAccessor extends HardcodedPropertyAccessor<Item> {
- public ItemHardcodedPropertyAccessor(HardcodedPropertyAccessorRegistry registry) {
+ public ItemAccessor(HardcodedPropertyAccessorRegistry registry) {
super(registry);
}
@Override
- Object getProperty(Item object, String propertyName, String leftoverExpression) {
+ public Object getProperty(Item object, String propertyName, String leftoverExpression) {
if ("itemId".equals(propertyName)) {
return object.getItemId();
}
diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/MapHardcodedPropertyAccessor.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/MapAccessor.java
similarity index 79%
rename from plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/MapHardcodedPropertyAccessor.java
rename to plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/MapAccessor.java
index 92895fe..fb04257 100644
--- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/MapHardcodedPropertyAccessor.java
+++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/MapAccessor.java
@@ -16,15 +16,17 @@
*/
package org.apache.unomi.plugins.baseplugin.conditions.accessors;
+import org.apache.unomi.plugins.baseplugin.conditions.HardcodedPropertyAccessorRegistry;
+
import java.util.Map;
-public class MapHardcodedPropertyAccessor extends HardcodedPropertyAccessor<Map> {
- public MapHardcodedPropertyAccessor(HardcodedPropertyAccessorRegistry registry) {
+public class MapAccessor extends HardcodedPropertyAccessor<Map> {
+ public MapAccessor(HardcodedPropertyAccessorRegistry registry) {
super(registry);
}
@Override
- Object getProperty(Map object, String propertyName, String leftoverExpression) {
+ public Object getProperty(Map object, String propertyName, String leftoverExpression) {
Object mapValue = object.get(propertyName);
if (mapValue == null) {
return null;
diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/MetadataHardcodedPropertyAccessor.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/MetadataAccessor.java
similarity index 85%
rename from plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/MetadataHardcodedPropertyAccessor.java
rename to plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/MetadataAccessor.java
index edb3310..c4effd1 100644
--- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/MetadataHardcodedPropertyAccessor.java
+++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/MetadataAccessor.java
@@ -17,15 +17,16 @@
package org.apache.unomi.plugins.baseplugin.conditions.accessors;
import org.apache.unomi.api.Metadata;
+import org.apache.unomi.plugins.baseplugin.conditions.HardcodedPropertyAccessorRegistry;
-public class MetadataHardcodedPropertyAccessor extends HardcodedPropertyAccessor<Metadata> {
+public class MetadataAccessor extends HardcodedPropertyAccessor<Metadata> {
- public MetadataHardcodedPropertyAccessor(HardcodedPropertyAccessorRegistry registry) {
+ public MetadataAccessor(HardcodedPropertyAccessorRegistry registry) {
super(registry);
}
@Override
- Object getProperty(Metadata object, String propertyName, String leftoverExpression) {
+ public Object getProperty(Metadata object, String propertyName, String leftoverExpression) {
if ("id".equals(propertyName)) {
return object.getId();
} else if ("name".equals(propertyName)) {
diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/MetadataItemHardcodedPropertyAccessor.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/MetadataItemAccessor.java
similarity index 76%
rename from plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/MetadataItemHardcodedPropertyAccessor.java
rename to plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/MetadataItemAccessor.java
index 7c26c59..1c787a3 100644
--- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/MetadataItemHardcodedPropertyAccessor.java
+++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/MetadataItemAccessor.java
@@ -17,14 +17,15 @@
package org.apache.unomi.plugins.baseplugin.conditions.accessors;
import org.apache.unomi.api.MetadataItem;
+import org.apache.unomi.plugins.baseplugin.conditions.HardcodedPropertyAccessorRegistry;
-public class MetadataItemHardcodedPropertyAccessor extends HardcodedPropertyAccessor<MetadataItem> {
- public MetadataItemHardcodedPropertyAccessor(HardcodedPropertyAccessorRegistry registry) {
+public class MetadataItemAccessor extends HardcodedPropertyAccessor<MetadataItem> {
+ public MetadataItemAccessor(HardcodedPropertyAccessorRegistry registry) {
super(registry);
}
@Override
- Object getProperty(MetadataItem object, String propertyName, String leftoverExpression) {
+ public Object getProperty(MetadataItem object, String propertyName, String leftoverExpression) {
if ("metadata".equals(propertyName)) {
registry.getProperty(object.getMetadata(), leftoverExpression);
}
diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/ProfileHardcodedPropertyAccessor.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/ProfileAccessor.java
similarity index 88%
rename from plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/ProfileHardcodedPropertyAccessor.java
rename to plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/ProfileAccessor.java
index 3778c27..d008cfd 100644
--- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/ProfileHardcodedPropertyAccessor.java
+++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/ProfileAccessor.java
@@ -17,10 +17,11 @@
package org.apache.unomi.plugins.baseplugin.conditions.accessors;
import org.apache.unomi.api.Profile;
+import org.apache.unomi.plugins.baseplugin.conditions.HardcodedPropertyAccessorRegistry;
-public class ProfileHardcodedPropertyAccessor extends HardcodedPropertyAccessor<Profile> {
+public class ProfileAccessor extends HardcodedPropertyAccessor<Profile> {
- public ProfileHardcodedPropertyAccessor(HardcodedPropertyAccessorRegistry registry) {
+ public ProfileAccessor(HardcodedPropertyAccessorRegistry registry) {
super(registry);
}
diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/RuleHardcodedPropertyAccessor.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/RuleAccessor.java
similarity index 79%
rename from plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/RuleHardcodedPropertyAccessor.java
rename to plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/RuleAccessor.java
index 28e9bb1..e398798 100644
--- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/RuleHardcodedPropertyAccessor.java
+++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/RuleAccessor.java
@@ -17,15 +17,16 @@
package org.apache.unomi.plugins.baseplugin.conditions.accessors;
import org.apache.unomi.api.rules.Rule;
+import org.apache.unomi.plugins.baseplugin.conditions.HardcodedPropertyAccessorRegistry;
-public class RuleHardcodedPropertyAccessor extends HardcodedPropertyAccessor<Rule> {
+public class RuleAccessor extends HardcodedPropertyAccessor<Rule> {
- public RuleHardcodedPropertyAccessor(HardcodedPropertyAccessorRegistry registry) {
+ public RuleAccessor(HardcodedPropertyAccessorRegistry registry) {
super(registry);
}
@Override
- Object getProperty(Rule object, String propertyName, String leftoverExpression) {
+ public Object getProperty(Rule object, String propertyName, String leftoverExpression) {
if ("linkedItems".equals(propertyName)) {
return object.getLinkedItems();
} else if ("priority".equals(propertyName)) {
diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/SessionHardcodedPropertyAccessor.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/SessionAccessor.java
similarity index 84%
rename from plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/SessionHardcodedPropertyAccessor.java
rename to plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/SessionAccessor.java
index a318721..a3da510 100644
--- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/SessionHardcodedPropertyAccessor.java
+++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/SessionAccessor.java
@@ -17,15 +17,16 @@
package org.apache.unomi.plugins.baseplugin.conditions.accessors;
import org.apache.unomi.api.Session;
+import org.apache.unomi.plugins.baseplugin.conditions.HardcodedPropertyAccessorRegistry;
-public class SessionHardcodedPropertyAccessor extends HardcodedPropertyAccessor<Session> {
+public class SessionAccessor extends HardcodedPropertyAccessor<Session> {
- public SessionHardcodedPropertyAccessor(HardcodedPropertyAccessorRegistry registry) {
+ public SessionAccessor(HardcodedPropertyAccessorRegistry registry) {
super(registry);
}
@Override
- Object getProperty(Session object, String propertyName, String leftoverExpression) {
+ public Object getProperty(Session object, String propertyName, String leftoverExpression) {
if ("duration".equals(propertyName)) {
return object.getDuration();
}
diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/TimestampedItemHardcodedPropertyAccessor.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/TimestampedItemAccessor.java
similarity index 75%
rename from plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/TimestampedItemHardcodedPropertyAccessor.java
rename to plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/TimestampedItemAccessor.java
index c408e8c..7916a28 100644
--- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/TimestampedItemHardcodedPropertyAccessor.java
+++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/accessors/TimestampedItemAccessor.java
@@ -17,15 +17,16 @@
package org.apache.unomi.plugins.baseplugin.conditions.accessors;
import org.apache.unomi.api.TimestampedItem;
+import org.apache.unomi.plugins.baseplugin.conditions.HardcodedPropertyAccessorRegistry;
-public class TimestampedItemHardcodedPropertyAccessor extends HardcodedPropertyAccessor<TimestampedItem> {
+public class TimestampedItemAccessor extends HardcodedPropertyAccessor<TimestampedItem> {
- public TimestampedItemHardcodedPropertyAccessor(HardcodedPropertyAccessorRegistry registry) {
+ public TimestampedItemAccessor(HardcodedPropertyAccessorRegistry registry) {
super(registry);
}
@Override
- Object getProperty(TimestampedItem object, String propertyName, String leftoverExpression) {
+ public Object getProperty(TimestampedItem object, String propertyName, String leftoverExpression) {
if ("timeStamp".equals(propertyName)) {
return object.getTimeStamp();
}
diff --git a/plugins/baseplugin/src/test/java/org/apache/unomi/plugins/baseplugin/conditions/HardcodedPropertyAccessorRegistryTest.java b/plugins/baseplugin/src/test/java/org/apache/unomi/plugins/baseplugin/conditions/HardcodedPropertyAccessorRegistryTest.java
new file mode 100644
index 0000000..03bdb30
--- /dev/null
+++ b/plugins/baseplugin/src/test/java/org/apache/unomi/plugins/baseplugin/conditions/HardcodedPropertyAccessorRegistryTest.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.unomi.plugins.baseplugin.conditions;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class HardcodedPropertyAccessorRegistryTest {
+
+ HardcodedPropertyAccessorRegistry registry = new HardcodedPropertyAccessorRegistry();
+
+ @Test
+ public void testGetNextTokens() {
+ assertTokens("test", "test", null);
+ assertTokens("test.test", "test", ".test");
+ assertTokens("test..", "test", "..");
+ assertTokens("test...", "test", "...");
+ assertTokens(".test", "test", null);
+ assertTokens(".test[abc]", "test[abc]", null);
+ assertTokens("[abc]", "[abc]", null);
+ assertTokens("[\"abc\"]", "abc", null);
+ assertTokens(".test[\"abc\"]", "test", "[\"abc\"]");
+ assertTokens("..test", "", ".test");
+ assertTokens(".[test", "[test", null);
+ assertTokens("[\"test\"][\"a\"]", "test", "[\"a\"]");
+ assertTokens("test[\"a\"].c", "test", "[\"a\"].c");
+ assertTokens("[\"b\"]", "b", null);
+ assertTokens("[\"b\"].c", "b", ".c");
+ assertTokens("[\"b.c\"].c", "b.c", ".c");
+ assertTokens("[\"b\"test\"].c", "b\"test", ".c");
+ assertTokens("[\"b\"]test\"].c", "b", "test\"].c");
+ assertTokens("[\"b\\.\\\"]c\"].c", "b\\.\\", "c\"].c");
+ assertTokens("[]", "[]", null);
+ }
+
+ private void assertTokens(String expression, String expectedPropertyName, String expectedLeftoverExpression) {
+ HardcodedPropertyAccessorRegistry.NextTokens nextTokens = registry.getNextTokens(expression);
+ assertEquals("Property name value was wrong", expectedPropertyName, nextTokens.propertyName);
+ assertEquals("Leftover expression value was wrong", expectedLeftoverExpression, nextTokens.leftoverExpression);
+ }
+}