[ https://issues.apache.org/jira/browse/CALCITE-3328?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17016907#comment-17016907 ]
Vladimir Sitnikov commented on CALCITE-3328: -------------------------------------------- [~julianhyde], it seems to cause test failures in Java 8: https://travis-ci.org/apache/calcite/jobs/637863311#L1424-L1440 Can you please check that? Should `ImmutableBeans` require the interface to be public? > 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 > Assignee: Julian Hyde > Priority: Major > Fix For: 1.22.0 > > > 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(); > MyBean withAge(int age); > @Property String getName(); > MyBean withName(String name); > } > 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. > Work in progress: > https://github.com/julianhyde/calcite/tree/3328-immutable-beans -- This message was sent by Atlassian Jira (v8.3.4#803005)