From 57f8218a7f70fd8fe4e0154851225bc223c47ede Mon Sep 17 00:00:00 2001 From: Sokwhan Huh Date: Fri, 18 Jul 2025 12:50:01 -0700 Subject: [PATCH] Internal changes PiperOrigin-RevId: 784671936 --- .../src/main/java/dev/cel/policy/BUILD.bazel | 2 ++ .../dev/cel/policy/CelPolicyYamlParser.java | 14 +++++++++---- .../dev/cel/policy/PolicyParserContext.java | 20 +++++++++++++++++++ 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/policy/src/main/java/dev/cel/policy/BUILD.bazel b/policy/src/main/java/dev/cel/policy/BUILD.bazel index e878e1be6..7b0ee71ab 100644 --- a/policy/src/main/java/dev/cel/policy/BUILD.bazel +++ b/policy/src/main/java/dev/cel/policy/BUILD.bazel @@ -167,7 +167,9 @@ java_library( ], deps = [ ":policy", + "//:auto_value", "//common/formats:parser_context", + "//policy:source", ], ) diff --git a/policy/src/main/java/dev/cel/policy/CelPolicyYamlParser.java b/policy/src/main/java/dev/cel/policy/CelPolicyYamlParser.java index e56e12169..fa2e39c42 100644 --- a/policy/src/main/java/dev/cel/policy/CelPolicyYamlParser.java +++ b/policy/src/main/java/dev/cel/policy/CelPolicyYamlParser.java @@ -94,11 +94,17 @@ private CelPolicy parseYaml() throws CelPolicyValidationException { } @Override - public CelPolicy parsePolicy(PolicyParserContext ctx, Node node) { - CelPolicy.Builder policyBuilder = CelPolicy.newBuilder(); + public NewPolicyMetadata newPolicy(Node node) { long id = ctx.collectMetadata(node); - if (!assertYamlType(ctx, id, node, YamlNodeType.MAP)) { - return policyBuilder.setPolicySource(policySource).build(); + return NewPolicyMetadata.create(policySource, id); + } + + @Override + public CelPolicy parsePolicy(PolicyParserContext ctx, Node node) { + NewPolicyMetadata newPolicyMetadata = newPolicy(node); + CelPolicy.Builder policyBuilder = newPolicyMetadata.policyBuilder(); + if (!assertYamlType(ctx, newPolicyMetadata.id(), node, YamlNodeType.MAP)) { + return policyBuilder.build(); } MappingNode rootNode = (MappingNode) node; diff --git a/policy/src/main/java/dev/cel/policy/PolicyParserContext.java b/policy/src/main/java/dev/cel/policy/PolicyParserContext.java index 0f421efe7..204bf591f 100644 --- a/policy/src/main/java/dev/cel/policy/PolicyParserContext.java +++ b/policy/src/main/java/dev/cel/policy/PolicyParserContext.java @@ -14,6 +14,7 @@ package dev.cel.policy; +import com.google.auto.value.AutoValue; import dev.cel.common.formats.ParserContext; import dev.cel.policy.CelPolicy.Match; import dev.cel.policy.CelPolicy.Rule; @@ -24,6 +25,25 @@ * for {@link CelPolicy}. */ public interface PolicyParserContext extends ParserContext { + + /** + * Wrapper for a new instance of {@link CelPolicy.Builder} and the associated node ID. The + * CelPolicy builder also has a policy source set by the parser. + */ + @AutoValue + abstract class NewPolicyMetadata { + public abstract CelPolicy.Builder policyBuilder(); + + public abstract long id(); + + static NewPolicyMetadata create(CelPolicySource source, long id) { + return new AutoValue_PolicyParserContext_NewPolicyMetadata( + CelPolicy.newBuilder().setPolicySource(source), id); + } + } + + NewPolicyMetadata newPolicy(T node); + CelPolicy parsePolicy(PolicyParserContext ctx, T node); Rule parseRule(PolicyParserContext ctx, CelPolicy.Builder policyBuilder, T node); pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy