You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "Julian Hyde (Jira)" <ji...@apache.org> on 2019/09/07 06:23:00 UTC

[jira] [Created] (CALCITE-3328) Immutable beans, powered by reflection

Julian Hyde created CALCITE-3328:
------------------------------------

             Summary: Immutable beans, powered by reflection
                 Key: CALCITE-3328
                 URL: https://issues.apache.org/jira/browse/CALCITE-3328
             Project: Calcite
          Issue Type: Bug
            Reporter: Julian Hyde


In quite a few places we have immutable config classes, and because they are immutable we have builders. It all gets quite verbose.

I propose to add a utility class, {{ImmutableBeans}}, that is able to generate an implementation of a given interface. For example,
{code:java}
interface MyBean {
  @Property  int getAge();
  @Property String getName();
}

MyBean b = ImmutableBeans.create(MyBean.class);
assertThat(b.withAge(37).withName("Fred").getAge(), is(37));
{code}

We could replace SqlParser.ConfigBuilder, Frameworks.ConfigBuilder, RelBuilder.ConfigBuilder, quite a few of the associated Config classes, and perhaps quite a few fluent classes that we use in tests.



--
This message was sent by Atlassian Jira
(v8.3.2#803003)