Skip to content

Commit

Permalink
feat(SpEL): implement to configure the limit of characters for SpEL e…
Browse files Browse the repository at this point in the history
…xpressions

Spring Expression Lanuage (SpEL) has a default limit of 10,000 characters. Springframework provides the feature to configure the limit. This feature allows to configure the limit of characters for SpEL expressions.

Approach:
In order to use an expression with characters more than the given default limit, require to follow either of the below approaches:
1. For Springframework >=5.3.28 and <6.1.3, by setting `maximumExpressionLength` field while instantiating the custom `SpelParserConfiguration` class.
spring-projects/spring-framework#30380
spring-projects/spring-framework#30446
2. For Springframework >=6.1.3, by setting a JVM system property or Spring property named `spring.context.expression.maxLength` to the maximum expression length needed by your application.
spring-projects/spring-framework#31952
spring-projects/spring-framework@7855986
Spinnaker supports spring boot 2.7.18, that brings springframework 5.3.31 [https://docs.spring.io/spring-boot/docs/2.7.18/reference/html/dependency-versions.html#appendix.dependency-versions.propertie9]. So first approach need to be implemented along with spinnaker enhancement to expose the `maximumExpressionLength` field.
  • Loading branch information
j-sandy committed Jun 26, 2024
1 parent 8180419 commit 4309bdb
Showing 1 changed file with 4 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;

@Data
Expand All @@ -26,6 +27,9 @@ public class ExpressionProperties {

private final FeatureFlag doNotEvalSpel = new FeatureFlag().setEnabled(true);

@Value("${expression.max-expression-length:-1}")
private int maxExpressionLength;

@Data
@Accessors(chain = true)
public static class FeatureFlag {
Expand Down

0 comments on commit 4309bdb

Please sign in to comment.