1515package dev .cel .extensions ;
1616
1717import static com .google .common .collect .ImmutableSet .toImmutableSet ;
18- import static java .util .Arrays .stream ;
1918
2019import com .google .common .collect .ImmutableSet ;
2120import com .google .common .collect .Streams ;
2221import com .google .errorprone .annotations .InlineMe ;
2322import dev .cel .common .CelOptions ;
2423import dev .cel .extensions .CelMathExtensions .Function ;
24+ import java .util .EnumSet ;
2525import java .util .Set ;
2626
2727/**
@@ -350,6 +350,18 @@ public static CelComprehensionsExtensions comprehensions() {
350350 return COMPREHENSIONS_EXTENSIONS ;
351351 }
352352
353+ /**
354+ * Extensions for supporting native Java types (POJOs) in CEL.
355+ *
356+ * <p>Refer to README.md for details on property discovery, type mapping, and limitations.
357+ *
358+ * <p>Note: Passing classes with unsupported types or anonymous/local classes will result in an
359+ * {@link IllegalArgumentException} when the runtime is built.
360+ */
361+ public static CelNativeTypesExtensions nativeTypes (Class <?>... classes ) {
362+ return CelNativeTypesExtensions .nativeTypes (classes );
363+ }
364+
353365 /**
354366 * Retrieves all function names used by every extension libraries.
355367 *
@@ -359,18 +371,17 @@ public static CelComprehensionsExtensions comprehensions() {
359371 */
360372 public static ImmutableSet <String > getAllFunctionNames () {
361373 return Streams .concat (
362- stream (CelMathExtensions .Function .values ())
363- .map (CelMathExtensions .Function ::getFunction ),
364- stream (CelStringExtensions .Function .values ())
374+ EnumSet .allOf (Function .class ).stream ().map (CelMathExtensions .Function ::getFunction ),
375+ EnumSet .allOf (CelStringExtensions .Function .class ).stream ()
365376 .map (CelStringExtensions .Function ::getFunction ),
366- stream (SetsFunction .values () ).map (SetsFunction ::getFunction ),
367- stream (CelEncoderExtensions .Function .values () )
377+ EnumSet . allOf (SetsFunction .class ). stream ( ).map (SetsFunction ::getFunction ),
378+ EnumSet . allOf (CelEncoderExtensions .Function .class ). stream ( )
368379 .map (CelEncoderExtensions .Function ::getFunction ),
369- stream (CelListsExtensions .Function .values () )
380+ EnumSet . allOf (CelListsExtensions .Function .class ). stream ( )
370381 .map (CelListsExtensions .Function ::getFunction ),
371- stream (CelRegexExtensions .Function .values () )
382+ EnumSet . allOf (CelRegexExtensions .Function .class ). stream ( )
372383 .map (CelRegexExtensions .Function ::getFunction ),
373- stream (CelComprehensionsExtensions .Function .values () )
384+ EnumSet . allOf (CelComprehensionsExtensions .Function .class ). stream ( )
374385 .map (CelComprehensionsExtensions .Function ::getFunction ))
375386 .collect (toImmutableSet ());
376387 }
0 commit comments