Class QueryableSettings

java.lang.Object
org.apache.juneau.rest.server.converter.QueryableSettings

public class QueryableSettings extends Object
Per-resource limits and defaults for the Queryable converter.

A resource tunes Queryable's BeanQuery engine by registering a QueryableSettings bean in its bean store (mirrors the IntrospectableSettings idiom). When no such bean is present, Queryable uses DEFAULT, which sets nothing and so leaves every setting at the context builder's own default.

The defaults live in BeanQueryContext.Builder only — this class never duplicates them. Each setting is tracked as set or unset; applyTo copies only the ones that were set, so an unset setting stays at the builder default (currently: allowRegex true, regexTimeout 50ms, countPolicy IF_REQUESTED, defaultLimit 100, maxLimit 1000, and caps of 64 search clauses, 8 sort keys, 4096 search characters and 16 expression levels).

Every setting here is a trusted, server-side cap or default; none of them is ever set from request data.

Example:

@Rest(converters=Queryable.class) public class PeopleResource extends BasicRestServlet { @Bean public QueryableSettings queryableSettings() { // allowRegex defaults to true; call allowRegex(false) here to opt this resource out. return QueryableSettings.create().defaultLimit(20).maxLimit(500).build(); } @RestGet("/people") public List<Person> getPeople() { return people; } }

See Also:
Since:
10.0.0
  • Field Details

    • DEFAULT

      public static final QueryableSettings DEFAULT
      The default settings used when no bean is registered: nothing set, so every builder default applies.
  • Method Details

    • create

      Builder creator.
      Returns:
      A new builder with nothing set.
    • copy

      Creates a builder pre-populated with these settings.
      Returns:
      A new builder.
    • applyTo

      public <B extends BeanQueryContext.Builder<?, B>> B applyTo(B builder)
      Copies every setting that was set onto a context builder.

      Settings that were not set are left untouched, so the builder's own defaults apply.

      Type Parameters:
      B - The context builder type.
      Parameters:
      builder - The builder to copy onto. Must not be null.
      Returns:
      The same builder, for chaining.
      Throws:
      IllegalArgumentException - If a value is rejected by the builder (for example a non-positive limit).