On Mon, Oct 31, 2016 at 10:15 PM, Martin Grigorov <mgrigo...@apache.org>
wrote:

>
> On Mon, Oct 31, 2016 at 5:11 PM, Emond Papegaaij <
> emond.papega...@topicus.nl> wrote:
>
>> On maandag 31 oktober 2016 16:38:48 CET Martin Grigorov wrote:
>> > Hi Emond,
>> >
>> > On Mon, Oct 31, 2016 at 4:28 PM, Emond Papegaaij <
>> emond.papega...@topicus.nl
>> > > wrote:
>> > >
>> > > Hi,
>> > >
>> > > I'm not sure about the duplicate functional interfaces in
>> > > org.apache.wicket.lambda. The current solution ties these interfaces
>> to
>> > > Wicket, making it impossible to share function-libraries between
>> wicket
>> > > and
>> > > non-wicket code.
>> > >
>> > > For example this method returns a function that prints a time with
>> seconds
>> > > in
>> > >
>> > > the given locale:
>> > >   public static WicketFunction<Instant, String>
>> > >
>> > >       timeWithSeconds(final Supplier<Locale> localeSupplier) { ... }
>> >
>> > I am not sure this is true.
>> > The important thing is the Wicket APIs to use WicketXyz. This tells the
>> > compiler to use/create a java.lang.invoke.SerializedLambda.
>> > You can pass any kind of Xyz as an argument and it will work just fine.
>>
>> Functional interfaces are just normal interfaces. A Function is not a
>> WicketFunction and a TopicusFunction is not a WicketFunction either. You
>> can
>> create a serializable method reference to the apply method, but that's
>> just
>> ugly. A method taking a WicketFunction will not accept a Function nor a
>> TopicusFunction. This is something we ran into when converting Guava code
>> to
>> java.util interfaces.
>>
>
> OK. I see what you mean.
> I've found https://github.com/danekja/jdk-serializable-functional but it
> seems it is not at Maven Central. I've created an issue to ask the author.
>

https://github.com/danekja/jdk-serializable-functional/issues/1#issuecomment-257903712
Happy customer!


>
>
>>
>> >
>> > > The current WicketFunction is tied to wicket, so I cannot place this
>> > > function
>> > > in a shared library. When changing the type to java.util.Function, I
>> > > cannot
>> > > use it on pages, because it is not serializable. The only option that
>> > > remains
>> > >
>> > > is changing it to and constructing functions on the spot:
>> > >   public static String timeWithSeconds(Instant instant, Locale
>> locale) {
>> > >
>> > > ... }
>> > >
>> > > I propose to move the classes to a standalone maven module, rename
>> them to
>> > > SerializableFunction (etc.) and let them implement Serializable (not
>> > > IClusterable). Maybe even change the package to something non-wicket.
>> > >
>> > > Also, the current interfaces do not override the default methods
>> provided
>> > > by
>> > > the super-interfaces (such as compose and andThen). Using the methods
>> on
>> > > the
>> > > current classes will give non-serializable versions of the interfaces.
>> > >
>> > > Finally, many commonly used interfaces are missing, such as: Runnable,
>> > > Predicate, BiPredicate and more. Perhaps we should duplicate all
>> > > FunctionalInterfaces, maybe only the ones most often used.
>> >
>> > I am not sure this is even needed and most definitely we cannot provide
>> > serializable version for all interfaces out there.
>>
>> At Topicus we have the ones provided by Wicket, plus Runnable, Predicate
>> and
>> BiPredicate. That seems to be fine for most cases. It is important to
>> provide
>> all default methode though. Otherwise SerializablePredicate.negate() no
>> longer
>> is serializable, and that's not what you would expect.
>>
>> > > In all, I propose to create a simple library that provides many
>> > > serializable
>> > > versions of functional interfaces. I think such a library does not
>> belong
>> > > in
>> > > Wicket, but that's the best we can do. Mayby the guys from commons are
>> > > willing
>> > > to take the code.
>> > >
>> > > What do you think?
>> > >
>> > > Best regards,
>> > > Emond
>> > >
>> > > On maandag 31 oktober 2016 14:41:12 CET Martin Grigorov wrote:
>> > > > Hi,
>> > > >
>> > > > What other improvements do we need in 8.x/master before promoting
>> it to
>> > > > 8.0.0 final ?
>> > > >
>> > > > At https://cwiki.apache.org/confluence/display/WICKET/
>> > >
>> > > Ideas+for+Wicket+8.0
>> > >
>> > > > we still have:
>> > > >
>> > > > - new DateTime APIs for wicket-datetime *WICKET-6105
>> > > > <https://issues.apache.org/jira/browse/WICKET-6105>* - I'll give
>> this
>> > >
>> > > one
>> > >
>> > > > more try but the problem is that I don't believe this is the proper
>> way
>> > >
>> > > and
>> > >
>> > > > this demotivates me.
>> > > > If someone else wants to give it a try - please assign it to
>> yourself!
>> > > >
>> > > > - Better SEO for stateful pages - the only way I see this is by
>> using
>> > > > ServiceWorker to add the pageId as a request header to all requests
>> > >
>> > > (normal
>> > >
>> > > > & Ajax)
>> > > >
>> > > >
>> > > > Recently I wondered whether Redux.js could be in use for Wicket.
>> > > > I don't have much experience with it, but both React and AngularJs
>> > > > communities use it to manage the state for their components.
>> > > > There are some Java impls, even a standard is coming:
>> > > > https://github.com/jvm-redux/jvm-redux-api
>> > > >
>> > > > What else ?
>> > > >
>> > > > Martin Grigorov
>> > > > Wicket Training and Consulting
>> > > > https://twitter.com/mtgrigorov
>>
>>
>>
>

Reply via email to