You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Andrey Mashenkov (Jira)" <ji...@apache.org> on 2021/09/22 09:16:00 UTC

[jira] [Updated] (IGNITE-15556) Replace SchemaBuilder interfaces with class public classes.

     [ https://issues.apache.org/jira/browse/IGNITE-15556?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Andrey Mashenkov updated IGNITE-15556:
--------------------------------------
    Description: 
SchemaBuilders implements a public API interface and resides in the ignite-schema module.
Public API implementation must be hidden from a user to avoid direct usage/instantiation, but we need a factory.

This can be achieved in next ways
1. Use ServiceLoader for schema builders factory.
This introduces implicit module dependency and a new factory interface/class.
2. Drop interfaces and make schema builders top-level public classes.

As there is no need to have interfaces, for now, let's make the schema builder classes public.

  was:
TupleImpl implements a public API interface Tuple and resides in ignite-api module.
Public API implementation must be hidden from a user to avoid direct usage/instantiation.

This can be achieved in next ways
1. Move TupleImpl to an internal package of the e.g. ignite-table module and use ServiceLoader for tuple factory.
This introduces implicit module dependency and a new factory interface/class.
2. Make TupleImpl package-private class.
We will not be able to create a TupleImpl object directly, but seems it is ok to use factory methods.


> Replace SchemaBuilder interfaces with class public classes.
> -----------------------------------------------------------
>
>                 Key: IGNITE-15556
>                 URL: https://issues.apache.org/jira/browse/IGNITE-15556
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Andrey Mashenkov
>            Assignee: Andrey Mashenkov
>            Priority: Major
>              Labels: UX, ignite-3
>             Fix For: 3.0.0-alpha3
>
>
> SchemaBuilders implements a public API interface and resides in the ignite-schema module.
> Public API implementation must be hidden from a user to avoid direct usage/instantiation, but we need a factory.
> This can be achieved in next ways
> 1. Use ServiceLoader for schema builders factory.
> This introduces implicit module dependency and a new factory interface/class.
> 2. Drop interfaces and make schema builders top-level public classes.
> As there is no need to have interfaces, for now, let's make the schema builder classes public.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)