[IGNITE-12582] Configuration by property

classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

[IGNITE-12582] Configuration by property

schernolyas
Hi igniters!

Presently, Spring Data for Ignite can't be configured dynamically. I mean ,
than I defines repository by the code:

@Repository
@RepositoryConfig(cacheName = "Calendar")
public interface CalendarRepository extends IgniteRepository<Calendar, String> {
    List<Calendar> findByName(String name);
}

But I need to configure used cache dynamically ( at runtime). To solve
this problem is proposed to use Spring Expression Language. By the
way, I will have possibility to use the code:

@Repository
@RepositoryConfig(cacheName = "${cache.calendar.name}")
public interface CalendarRepository extends IgniteRepository<Calendar, String> {
    List<Calendar> findByName(String name);
}

And property "cache.calendar.name" can be configured as usual property
at Spring Framework.

But way brakes current configuration way and I would ask about how we
can set cache name by  expression or constant string.

I see options:

1) field "cacheName" will be able to process expression and constant
string. The code of repository factory will analyse the field.

2) create new field for expressions


What is best way?


--
---------------------

With best regards, Sergey Chernolyas
Reply | Threaded
Open this post in threaded view
|

Re: [IGNITE-12582] Configuration by property

gvvinblade
Isn't a better way just to add a new annotation?

Like RepositoryConfig but from v2 package for example.

This case whose who already use it won't suffer.

Also it's would be great to provide a way to escape constants which are
similar to spel expressions.

Regards,
Igor

чт, 30 янв. 2020 г., 13:18 Sergey Chernolyas <[hidden email]>:

> Hi igniters!
>
> Presently, Spring Data for Ignite can't be configured dynamically. I mean ,
> than I defines repository by the code:
>
> @Repository
> @RepositoryConfig(cacheName = "Calendar")
> public interface CalendarRepository extends IgniteRepository<Calendar,
> String> {
>     List<Calendar> findByName(String name);
> }
>
> But I need to configure used cache dynamically ( at runtime). To solve
> this problem is proposed to use Spring Expression Language. By the
> way, I will have possibility to use the code:
>
> @Repository
> @RepositoryConfig(cacheName = "${cache.calendar.name}")
> public interface CalendarRepository extends IgniteRepository<Calendar,
> String> {
>     List<Calendar> findByName(String name);
> }
>
> And property "cache.calendar.name" can be configured as usual property
> at Spring Framework.
>
> But way brakes current configuration way and I would ask about how we
> can set cache name by  expression or constant string.
>
> I see options:
>
> 1) field "cacheName" will be able to process expression and constant
> string. The code of repository factory will analyse the field.
>
> 2) create new field for expressions
>
>
> What is best way?
>
>
> --
> ---------------------
>
> With best regards, Sergey Chernolyas
>
Reply | Threaded
Open this post in threaded view
|

Re: [IGNITE-12582] Configuration by property

Ivan Pavlukhin
Sergey,

Supporting SpEL sounds quite good. Just out of curiosity, how are you
going to evaluate SpEL from a custom annotation?

P.S. I noticed al least 3 mail threads with a name "[IGNITE-12582]
Configuration by property". Please keep the discussion in the same
mail thread.

чт, 30 янв. 2020 г. в 18:23, Seliverstov Igor <[hidden email]>:

>
> Isn't a better way just to add a new annotation?
>
> Like RepositoryConfig but from v2 package for example.
>
> This case whose who already use it won't suffer.
>
> Also it's would be great to provide a way to escape constants which are
> similar to spel expressions.
>
> Regards,
> Igor
>
> чт, 30 янв. 2020 г., 13:18 Sergey Chernolyas <[hidden email]>:
>
> > Hi igniters!
> >
> > Presently, Spring Data for Ignite can't be configured dynamically. I mean ,
> > than I defines repository by the code:
> >
> > @Repository
> > @RepositoryConfig(cacheName = "Calendar")
> > public interface CalendarRepository extends IgniteRepository<Calendar,
> > String> {
> >     List<Calendar> findByName(String name);
> > }
> >
> > But I need to configure used cache dynamically ( at runtime). To solve
> > this problem is proposed to use Spring Expression Language. By the
> > way, I will have possibility to use the code:
> >
> > @Repository
> > @RepositoryConfig(cacheName = "${cache.calendar.name}")
> > public interface CalendarRepository extends IgniteRepository<Calendar,
> > String> {
> >     List<Calendar> findByName(String name);
> > }
> >
> > And property "cache.calendar.name" can be configured as usual property
> > at Spring Framework.
> >
> > But way brakes current configuration way and I would ask about how we
> > can set cache name by  expression or constant string.
> >
> > I see options:
> >
> > 1) field "cacheName" will be able to process expression and constant
> > string. The code of repository factory will analyse the field.
> >
> > 2) create new field for expressions
> >
> >
> > What is best way?
> >
> >
> > --
> > ---------------------
> >
> > With best regards, Sergey Chernolyas
> >



--
Best regards,
Ivan Pavlukhin
Reply | Threaded
Open this post in threaded view
|

Re: [IGNITE-12582] Configuration by property

schernolyas
In reply to this post by gvvinblade
Hi!

It is proposed to use the same annotation(RepositoryConfig). But value of
field "cacheName"  can be constant or Spring EL expression.
Correct cases are:
1) By Spring EL expression
@Repository
@RepositoryConfig(cacheName = "@cacheNames.calendarCacheName")
public interface CalendarRepository extends IgniteRepository<Calendar,
String> {
    List<Calendar> findByName(String name);
}
2) By constant
@Repository
@RepositoryConfig(cacheName = "Calendar")
public interface CalendarRepository extends IgniteRepository<Calendar,
String> {
    List<Calendar> findByName(String name);
}

Any other ideas?



--
Sent from: http://apache-ignite-developers.2346864.n4.nabble.com/
Reply | Threaded
Open this post in threaded view
|

Re: [IGNITE-12582] Configuration by property

Ivan Pavlukhin
Sergey,

I understand and support the proposed idea. Just curious how to
implement it. Do you already have some prototype?

пт, 31 янв. 2020 г. в 11:48, schernolyas <[hidden email]>:

>
> Hi!
>
> It is proposed to use the same annotation(RepositoryConfig). But value of
> field "cacheName"  can be constant or Spring EL expression.
> Correct cases are:
> 1) By Spring EL expression
> @Repository
> @RepositoryConfig(cacheName = "@cacheNames.calendarCacheName")
> public interface CalendarRepository extends IgniteRepository<Calendar,
> String> {
>     List<Calendar> findByName(String name);
> }
> 2) By constant
> @Repository
> @RepositoryConfig(cacheName = "Calendar")
> public interface CalendarRepository extends IgniteRepository<Calendar,
> String> {
>     List<Calendar> findByName(String name);
> }
>
> Any other ideas?
>
>
>
> --
> Sent from: http://apache-ignite-developers.2346864.n4.nabble.com/



--
Best regards,
Ivan Pavlukhin
Reply | Threaded
Open this post in threaded view
|

Re: [IGNITE-12582] Configuration by property

schernolyas
Hi Ivan !

Yes, I have the prototype.  Right now, main question is can we remove spring
data modules into project with extensions for Ignite.



--
Sent from: http://apache-ignite-developers.2346864.n4.nabble.com/
Reply | Threaded
Open this post in threaded view
|

Re: [IGNITE-12582] Configuration by property

Ivan Pavlukhin
Sergey,

Could you please share your prototype, I would like to have a look.

сб, 1 февр. 2020 г. в 16:59, schernolyas <[hidden email]>:

>
> Hi Ivan !
>
> Yes, I have the prototype.  Right now, main question is can we remove spring
> data modules into project with extensions for Ignite.
>
>
>
> --
> Sent from: http://apache-ignite-developers.2346864.n4.nabble.com/



--
Best regards,
Ivan Pavlukhin
Reply | Threaded
Open this post in threaded view
|

Re: [IGNITE-12582] Configuration by property

schernolyas
Hi Ivan!

https://github.com/apache/ignite/pull/7347 . It is link to PR.  Criticism
is welcome :-)

On Sat, 1 Feb 2020 at 18:15, Ivan Pavlukhin <[hidden email]> wrote:

> Sergey,
>
> Could you please share your prototype, I would like to have a look.
>
> сб, 1 февр. 2020 г. в 16:59, schernolyas <[hidden email]>:
> >
> > Hi Ivan !
> >
> > Yes, I have the prototype.  Right now, main question is can we remove
> spring
> > data modules into project with extensions for Ignite.
> >
> >
> >
> > --
> > Sent from: http://apache-ignite-developers.2346864.n4.nabble.com/
>
>
>
> --
> Best regards,
> Ivan Pavlukhin
>


--
---------------------

With best regards, Sergey Chernolyas
Reply | Threaded
Open this post in threaded view
|

Re: [IGNITE-12582] Configuration by property

Ivan Pavlukhin
Sergey,

Thank you for your efforts! I left some comments in the ticket [1].

[1] https://issues.apache.org/jira/browse/IGNITE-12582

сб, 1 февр. 2020 г. в 18:35, Sergey Chernolyas <[hidden email]>:

>
> Hi Ivan!
>
> https://github.com/apache/ignite/pull/7347 . It is link to PR.  Criticism
> is welcome :-)
>
> On Sat, 1 Feb 2020 at 18:15, Ivan Pavlukhin <[hidden email]> wrote:
>
> > Sergey,
> >
> > Could you please share your prototype, I would like to have a look.
> >
> > сб, 1 февр. 2020 г. в 16:59, schernolyas <[hidden email]>:
> > >
> > > Hi Ivan !
> > >
> > > Yes, I have the prototype.  Right now, main question is can we remove
> > spring
> > > data modules into project with extensions for Ignite.
> > >
> > >
> > >
> > > --
> > > Sent from: http://apache-ignite-developers.2346864.n4.nabble.com/
> >
> >
> >
> > --
> > Best regards,
> > Ivan Pavlukhin
> >
>
>
> --
> ---------------------
>
> With best regards, Sergey Chernolyas



--
Best regards,
Ivan Pavlukhin
Reply | Threaded
Open this post in threaded view
|

Re: [IGNITE-12582] Configuration by property

schernolyas
Ivan,

Thanks. I have answered.


On Tue, 4 Feb 2020 at 15:03, Ivan Pavlukhin <[hidden email]> wrote:

> Sergey,
>
> Thank you for your efforts! I left some comments in the ticket [1].
>
> [1] https://issues.apache.org/jira/browse/IGNITE-12582
>
> сб, 1 февр. 2020 г. в 18:35, Sergey Chernolyas <
> [hidden email]>:
> >
> > Hi Ivan!
> >
> > https://github.com/apache/ignite/pull/7347 . It is link to PR.
> Criticism
> > is welcome :-)
> >
> > On Sat, 1 Feb 2020 at 18:15, Ivan Pavlukhin <[hidden email]> wrote:
> >
> > > Sergey,
> > >
> > > Could you please share your prototype, I would like to have a look.
> > >
> > > сб, 1 февр. 2020 г. в 16:59, schernolyas <[hidden email]
> >:
> > > >
> > > > Hi Ivan !
> > > >
> > > > Yes, I have the prototype.  Right now, main question is can we remove
> > > spring
> > > > data modules into project with extensions for Ignite.
> > > >
> > > >
> > > >
> > > > --
> > > > Sent from: http://apache-ignite-developers.2346864.n4.nabble.com/
> > >
> > >
> > >
> > > --
> > > Best regards,
> > > Ivan Pavlukhin
> > >
> >
> >
> > --
> > ---------------------
> >
> > With best regards, Sergey Chernolyas
>
>
>
> --
> Best regards,
> Ivan Pavlukhin
>


--
---------------------

With best regards, Sergey Chernolyas