From 6879f2bcd6026d279826d3672e58ffca2b2e947e Mon Sep 17 00:00:00 2001 From: memesaregood Date: Thu, 16 May 2024 18:40:23 +0300 Subject: Allow Date class in a JEXL whitelist --- src/main/java/org/traccar/handler/ComputedAttributesHandler.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/main/java/org/traccar/handler/ComputedAttributesHandler.java') diff --git a/src/main/java/org/traccar/handler/ComputedAttributesHandler.java b/src/main/java/org/traccar/handler/ComputedAttributesHandler.java index 4293bd1fc..7c2fd70a5 100644 --- a/src/main/java/org/traccar/handler/ComputedAttributesHandler.java +++ b/src/main/java/org/traccar/handler/ComputedAttributesHandler.java @@ -41,6 +41,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.Date; public class ComputedAttributesHandler extends BasePositionHandler { @@ -63,7 +64,7 @@ public class ComputedAttributesHandler extends BasePositionHandler { sandbox.allow(Math.class.getName()); List.of( Double.class, Float.class, Integer.class, Long.class, Short.class, - Character.class, Boolean.class, String.class, Byte.class) + Character.class, Boolean.class, String.class, Byte.class, Date.class) .forEach((type) -> sandbox.allow(type.getName())); features = new JexlFeatures() .localVar(config.getBoolean(Keys.PROCESSING_COMPUTED_ATTRIBUTES_LOCAL_VARIABLES)) -- cgit v1.2.3 From 4ebc4c6ee6539af45aacf284e331de1fd79b0d0c Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Mon, 27 May 2024 16:24:14 -0700 Subject: Add computed attributes priority --- schema/changelog-6.2.xml | 6 ++++++ .../java/org/traccar/handler/ComputedAttributesHandler.java | 7 +++++-- src/main/java/org/traccar/model/Attribute.java | 10 ++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) (limited to 'src/main/java/org/traccar/handler/ComputedAttributesHandler.java') diff --git a/schema/changelog-6.2.xml b/schema/changelog-6.2.xml index 471987d12..568d9a3a0 100644 --- a/schema/changelog-6.2.xml +++ b/schema/changelog-6.2.xml @@ -11,6 +11,12 @@ + + + + + + diff --git a/src/main/java/org/traccar/handler/ComputedAttributesHandler.java b/src/main/java/org/traccar/handler/ComputedAttributesHandler.java index 7c2fd70a5..d286866a5 100644 --- a/src/main/java/org/traccar/handler/ComputedAttributesHandler.java +++ b/src/main/java/org/traccar/handler/ComputedAttributesHandler.java @@ -35,13 +35,14 @@ import org.traccar.session.cache.CacheManager; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Arrays; -import java.util.Collection; import java.util.Collections; +import java.util.Comparator; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.Date; +import java.util.stream.Collectors; public class ComputedAttributesHandler extends BasePositionHandler { @@ -140,7 +141,9 @@ public class ComputedAttributesHandler extends BasePositionHandler { @Override public void handlePosition(Position position, Callback callback) { - Collection attributes = cacheManager.getDeviceObjects(position.getDeviceId(), Attribute.class); + var attributes = cacheManager.getDeviceObjects(position.getDeviceId(), Attribute.class).stream() + .sorted(Comparator.comparing(Attribute::getPriority).reversed()) + .collect(Collectors.toUnmodifiableList()); for (Attribute attribute : attributes) { if (attribute.getAttribute() != null) { Object result = null; diff --git a/src/main/java/org/traccar/model/Attribute.java b/src/main/java/org/traccar/model/Attribute.java index 65f2e3881..573207170 100644 --- a/src/main/java/org/traccar/model/Attribute.java +++ b/src/main/java/org/traccar/model/Attribute.java @@ -61,4 +61,14 @@ public class Attribute extends BaseModel { this.type = type; } + private int priority; + + public int getPriority() { + return priority; + } + + public void setPriority(int priority) { + this.priority = priority; + } + } -- cgit v1.2.3