Skip to content

Commit 65a0298

Browse files
committed
Allow handling static string in expressions
1 parent 3473acd commit 65a0298

18 files changed

+74
-40
lines changed

src/main/java/io/opentelemetry/contrib/generator/core/ResourceModelGenerator.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@
1717
package io.opentelemetry.contrib.generator.core;
1818

1919
import io.opentelemetry.contrib.generator.core.dto.*;
20+
import io.opentelemetry.contrib.generator.core.jel.ExpressionProcessor;
2021
import io.opentelemetry.contrib.generator.core.jel.JELProvider;
2122
import io.opentelemetry.contrib.generator.core.jel.methods.ResourceModelExpressions;
2223
import io.opentelemetry.contrib.generator.core.utils.CommonUtils;
2324
import io.opentelemetry.proto.common.v1.KeyValue;
2425
import io.opentelemetry.proto.resource.v1.Resource;
25-
import jakarta.el.ELProcessor;
2626
import lombok.extern.slf4j.Slf4j;
2727
import org.apache.commons.collections4.CollectionUtils;
2828
import org.apache.commons.collections4.MapUtils;
@@ -47,7 +47,7 @@ public class ResourceModelGenerator {
4747

4848
private final Map<String, ResourceDefinition> allResources; //input resource definitions
4949
private final String requestID;
50-
private static final ELProcessor jelProcessor = JELProvider.getJelProcessor();
50+
private static final ExpressionProcessor jelProcessor = JELProvider.getJelProcessor();
5151
private static Map<String, List<GeneratorResource>> resourceModel; //output resource model
5252
private Map<String, ResourceType> typeMappings; //stores parent & child types for each resource type
5353

@@ -145,7 +145,7 @@ private void mapChildResources() {
145145
var nextChildIndex = 0;
146146
//For each resource of the parent type
147147
for (var parentCounter = 0; parentCounter < parentType.getCountWithRuntimeModifications(); parentCounter++) {
148-
int count = (int) jelProcessor.eval(eachChildTypeExpr.getValue());
148+
int count = jelProcessor.eval(eachChildTypeExpr.getValue());
149149
int childEndIndex = nextChildIndex + count;
150150
if (childEndIndex > childrenSize) {
151151
childEndIndex = childrenSize;
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package io.opentelemetry.contrib.generator.core.jel;
2+
3+
import jakarta.el.ELProcessor;
4+
import jakarta.el.PropertyNotFoundException;
5+
6+
public class ExpressionProcessor extends ELProcessor {
7+
8+
public ExpressionProcessor() {
9+
super();
10+
}
11+
12+
public <T> T eval(String expression) {
13+
try {
14+
return super.eval(expression);
15+
} catch (PropertyNotFoundException exception) {
16+
return (T) expression;
17+
}
18+
}
19+
}

src/main/java/io/opentelemetry/contrib/generator/core/jel/JELProvider.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package io.opentelemetry.contrib.generator.core.jel;
1818

1919
import io.opentelemetry.contrib.generator.core.exception.GeneratorException;
20-
import jakarta.el.ELProcessor;
2120

2221
import java.util.Arrays;
2322
import java.util.List;
@@ -27,13 +26,13 @@
2726
*/
2827
public class JELProvider {
2928

30-
private static ELProcessor jelProcessor;
29+
private static ExpressionProcessor jelProcessor;
3130

3231
private JELProvider() {}
3332

34-
public static ELProcessor getJelProcessor() {
33+
public static ExpressionProcessor getJelProcessor() {
3534
if (jelProcessor == null) {
36-
jelProcessor = new ELProcessor();
35+
jelProcessor = new ExpressionProcessor();
3736
var expressionsClass = "io.opentelemetry.contrib.generator.core.jel.methods.ResourceModelExpressions";
3837
List<String> methods = Arrays.asList("counter", "UUIDFromStringCounter", "roundRobin", "alphanumericSequenceFromEnv",
3938
"alphanumericSequence", "IPv4Sequence", "distribution", "count", "getLong", "getDouble", "getBoolean");

src/main/java/io/opentelemetry/contrib/generator/core/jel/methods/ResourceModelExpressions.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package io.opentelemetry.contrib.generator.core.jel.methods;
1818

19+
import io.opentelemetry.contrib.generator.core.jel.ExpressionProcessor;
1920
import io.opentelemetry.contrib.generator.core.jel.JELProvider;
2021
import io.opentelemetry.contrib.generator.core.jel.helpers.AlphanumericHelper;
2122
import io.opentelemetry.contrib.generator.core.jel.helpers.IPHelper;
@@ -40,7 +41,7 @@ public class ResourceModelExpressions {
4041
private static final ConcurrentHashMap<String, Integer> counters = new ConcurrentHashMap<>();
4142
private static final ConcurrentHashMap<String, Double> doubleCounters = new ConcurrentHashMap<>();
4243
private static final ConcurrentHashMap<String, String> stringCounters = new ConcurrentHashMap<>();
43-
private static final ELProcessor jelProcessor = JELProvider.getJelProcessor();
44+
private static final ExpressionProcessor jelProcessor = JELProvider.getJelProcessor();
4445
public static String expressionsGlobalKey = ""; //Modified by the resource model generator every time a new resource/attribute is being processed
4546

4647
private ResourceModelExpressions() {}

src/main/java/io/opentelemetry/contrib/generator/telemetry/jel/JELProvider.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@
1717
package io.opentelemetry.contrib.generator.telemetry.jel;
1818

1919
import io.opentelemetry.contrib.generator.core.exception.GeneratorException;
20+
import io.opentelemetry.contrib.generator.core.jel.ExpressionProcessor;
2021
import io.opentelemetry.contrib.generator.telemetry.jel.methods.LogSeverityGenerator;
2122
import io.opentelemetry.contrib.generator.telemetry.jel.methods.MetricValueGenerators;
2223
import io.opentelemetry.contrib.generator.telemetry.jel.methods.MELTAttributeGenerators;
23-
import jakarta.el.ELProcessor;
2424

2525
import java.util.List;
2626

@@ -29,13 +29,13 @@
2929
*/
3030
public class JELProvider {
3131

32-
private static ELProcessor jelProcessor;
32+
private static ExpressionProcessor jelProcessor;
3333

3434
private JELProvider() {}
3535

36-
public static ELProcessor getJelProcessor() {
36+
public static ExpressionProcessor getJelProcessor() {
3737
if (jelProcessor == null) {
38-
jelProcessor = new ELProcessor();
38+
jelProcessor = new ExpressionProcessor();
3939
defineMetricFunction("arithmeticSequence", String.class, String.class, double.class, double.class, String.class);
4040
defineMetricFunction("arithmeticSequenceSummary", String.class, String.class, double.class, double.class, String.class, int.class);
4141
defineMetricFunction("geometricSequence", String.class, String.class, double.class, double.class, String.class);

src/main/java/io/opentelemetry/contrib/generator/telemetry/jel/methods/MELTAttributeGenerators.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package io.opentelemetry.contrib.generator.telemetry.jel.methods;
1818

19+
import io.opentelemetry.contrib.generator.core.jel.ExpressionProcessor;
1920
import io.opentelemetry.contrib.generator.core.jel.helpers.AlphanumericHelper;
2021
import io.opentelemetry.contrib.generator.core.jel.helpers.IPHelper;
2122
import io.opentelemetry.contrib.generator.core.jel.methods.ResourceModelExpressions;
@@ -43,7 +44,7 @@ public class MELTAttributeGenerators {
4344
private static final ConcurrentHashMap<String, Integer> counters = new ConcurrentHashMap<>();
4445
private static final ConcurrentHashMap<String, Double> doubleCounters = new ConcurrentHashMap<>();
4546
private static final ConcurrentHashMap<String, String> stringCounters = new ConcurrentHashMap<>();
46-
private static final ELProcessor jelProcessor = JELProvider.getJelProcessor();
47+
private static final ExpressionProcessor jelProcessor = JELProvider.getJelProcessor();
4748

4849
private MELTAttributeGenerators() {}
4950

src/main/java/io/opentelemetry/contrib/generator/telemetry/jel/methods/MetricValueGenerators.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package io.opentelemetry.contrib.generator.telemetry.jel.methods;
1818

19+
import io.opentelemetry.contrib.generator.core.jel.ExpressionProcessor;
1920
import io.opentelemetry.contrib.generator.telemetry.GeneratorsStateProvider;
2021
import jakarta.el.ELProcessor;
2122

@@ -35,7 +36,7 @@
3536
@SuppressWarnings("unused")
3637
public class MetricValueGenerators {
3738

38-
private static final ELProcessor jelProcessor = new ELProcessor();
39+
private static final ExpressionProcessor jelProcessor = new ExpressionProcessor();
3940
private static final ConcurrentMap<String, Double> controlledRandom = new ConcurrentHashMap<>();
4041
private static final DecimalFormat formatter = new DecimalFormat("##.##");
4142

src/main/java/io/opentelemetry/contrib/generator/telemetry/logs/LogGeneratorThread.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package io.opentelemetry.contrib.generator.telemetry.logs;
1818

1919
import io.opentelemetry.contrib.generator.core.dto.GeneratorResource;
20+
import io.opentelemetry.contrib.generator.core.jel.ExpressionProcessor;
2021
import io.opentelemetry.contrib.generator.telemetry.ResourceModelProvider;
2122
import io.opentelemetry.contrib.generator.telemetry.GeneratorsStateProvider;
2223
import io.opentelemetry.contrib.generator.telemetry.dto.GeneratorState;
@@ -31,7 +32,6 @@
3132
import io.opentelemetry.proto.logs.v1.ScopeLogs;
3233
import io.opentelemetry.proto.resource.v1.Resource;
3334
import io.opentelemetry.proto.logs.v1.LogRecord;
34-
import jakarta.el.ELProcessor;
3535
import lombok.Getter;
3636
import lombok.extern.slf4j.Slf4j;
3737
import org.apache.commons.collections4.MapUtils;
@@ -53,7 +53,7 @@ public class LogGeneratorThread implements Runnable {
5353
private final LogDefinition logDefinition;
5454
private final PayloadHandler payloadHandler;
5555
private final GeneratorState<LogGeneratorThread> logGeneratorState;
56-
private final ELProcessor jelProcessor;
56+
private final ExpressionProcessor jelProcessor;
5757
private int currentPayloadCount;
5858

5959
public LogGeneratorThread(LogDefinition logDefinition, PayloadHandler payloadHandler, String requestID) {

src/main/java/io/opentelemetry/contrib/generator/telemetry/metrics/GaugeGenerator.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@
1616

1717
package io.opentelemetry.contrib.generator.telemetry.metrics;
1818

19+
import io.opentelemetry.contrib.generator.core.jel.ExpressionProcessor;
1920
import io.opentelemetry.contrib.generator.telemetry.metrics.dto.MetricDefinition;
2021
import io.opentelemetry.contrib.generator.telemetry.misc.GeneratorUtils;
2122
import io.opentelemetry.proto.metrics.v1.Gauge;
2223
import io.opentelemetry.proto.metrics.v1.Metric;
2324
import io.opentelemetry.proto.metrics.v1.NumberDataPoint;
24-
import jakarta.el.ELProcessor;
2525

2626
import java.util.concurrent.TimeUnit;
2727

@@ -30,9 +30,9 @@
3030
*/
3131
public class GaugeGenerator {
3232

33-
private final ELProcessor jelProcessor;
33+
private final ExpressionProcessor jelProcessor;
3434

35-
public GaugeGenerator(ELProcessor jelProcessor) {
35+
public GaugeGenerator(ExpressionProcessor jelProcessor) {
3636
this.jelProcessor = jelProcessor;
3737
}
3838

src/main/java/io/opentelemetry/contrib/generator/telemetry/metrics/MetricGeneratorThread.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package io.opentelemetry.contrib.generator.telemetry.metrics;
1818

1919
import io.opentelemetry.contrib.generator.core.dto.GeneratorResource;
20+
import io.opentelemetry.contrib.generator.core.jel.ExpressionProcessor;
2021
import io.opentelemetry.contrib.generator.telemetry.GeneratorsStateProvider;
2122
import io.opentelemetry.contrib.generator.telemetry.dto.GeneratorState;
2223
import io.opentelemetry.contrib.generator.telemetry.misc.GeneratorUtils;
@@ -30,7 +31,6 @@
3031
import io.opentelemetry.proto.common.v1.KeyValue;
3132
import io.opentelemetry.proto.metrics.v1.*;
3233
import io.opentelemetry.proto.resource.v1.Resource;
33-
import jakarta.el.ELProcessor;
3434
import lombok.extern.slf4j.Slf4j;
3535
import org.apache.commons.collections4.CollectionUtils;
3636
import org.apache.commons.lang3.tuple.Pair;
@@ -62,7 +62,7 @@ public MetricGeneratorThread(String groupKey, List<MetricDefinition> metrics, Pa
6262
this.metrics = metrics.stream().collect(Collectors.toMap(MetricDefinition::getName, Function.identity()));
6363
this.payloadHandler = payloadHandler;
6464
this.metricGeneratorState = GeneratorsStateProvider.getMetricGeneratorState(requestID);
65-
ELProcessor jelProcessor = JELProvider.getJelProcessor();
65+
ExpressionProcessor jelProcessor = JELProvider.getJelProcessor();
6666
gaugeGenerator = new GaugeGenerator(jelProcessor);
6767
sumGenerator = new SumGenerator(requestID, jelProcessor);
6868
summaryGenerator = new SummaryGenerator(jelProcessor);

0 commit comments

Comments
 (0)