Re: [commons-math] Three Concerns

2023-08-05 Thread Gilles Sadowski
Hello.

Le sam. 5 août 2023 à 08:08, Hasan Diwan  a écrit :
>
> I'm trying to migrate an internal service for interpolation to commons-math
> 3.6.1, using org.apache.commons.math3.fitting.GaussianCurveFitter.

Thanks for your interest in "Commons Math".
For any new code, you should use the latest version (currently, v4.0-beta1).
Version 3.6.1 is 7 years old.[1]

> My
> thoughts on this method:
>
> - The fit() function returns a double[], what the numbers mean is missing
> from the javadoc. I can write the doc, but just need to know what they
> should be.

It is documented (at least in v4.0-beta1).

> This is the quick fix, but I feel we should consider having the
> method return a Map where the key could be a descriptive
> label of what it means.

I'm not sure it adds anything to the API; a caller would have to
know the list of keys, instead of the list of indices.

> This would be in addition to the javadoc addition
> mentioned earlier.
>
> - Exceptions that are thrown by the fit() method ought to inherit from
> Exception instead of RuntimeException.
>
> - If the mean of my data is 1.54 and its standard deviation is 0.24, how is
> the interpolation using the GaussianCurveFitter yielding 5.58, when all the
> x-values differ by 1?
>

I don't know.  More details should be provided, as requested on the JIRA
ticket which you reported.[2]

Regards,
Gilles

[1] https://commons.apache.org/proper/commons-math/changes-report.html
[2] https://issues.apache.org/jira/browse/MATH-1663

-
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org



Re: [VOTE] Release Apache Commons DbUtils 1.8.0 based on RC1

2023-08-05 Thread Gary Gregory
Could we get more reviews please?

TY!
Gary


On Tue, Aug 1, 2023, 8:40 PM Gary Gregory  wrote:

> We have fixed a few bugs and added some enhancements since Apache
> Commons DbUtils 1.7 was released, so I would like to release Apache
> Commons DbUtils 1.8.0.
>
> Apache Commons DbUtils 1.8.0 RC1 is available for review here:
> https://dist.apache.org/repos/dist/dev/commons/dbutils/1.8.0-RC1
> (svn revision 63303)
>
> The Git tag commons-dbutils-1.8.0-RC1 commit for this RC is
> 675cfcd2f68b03254746c24d76a83a23dcddc6a2 which you can browse here:
>
> https://gitbox.apache.org/repos/asf?p=commons-dbutils.git;a=commit;h=675cfcd2f68b03254746c24d76a83a23dcddc6a2
> You may checkout this tag using:
> git clone https://gitbox.apache.org/repos/asf/commons-dbutils.git
> --branch 
> commons-dbutils-1.8.0-RC1 commons-dbutils-1.8.0-RC1
>
> Maven artifacts are here:
>
> https://repository.apache.org/content/repositories/orgapachecommons-1648/commons-dbutils/commons-dbutils/1.8.0/
>
> These are the artifacts and their hashes:
>
> #Release SHA-512s
> #Tue Aug 01 20:32:34 EDT 2023
>
> commons-dbutils-1.8.0-src.tar.gz=be1af717639a605d9510e2ac7435c0f06ba37ce8700e93f38e3f71a83ea2758c71821545d7271adc5ae7d9506c1f557386ee9b67a4979f9ab3fe7cb27a08e179
>
> commons-dbutils_commons-dbutils-1.8.0.spdx.json=295f2decdbf6e68696b5c44939029deec01ae8619dae4093b617f4171968cf8b281bd723815331e124a807fb1c5e74b5c22cf6c146281857874f1be38ef12cde
>
> commons-dbutils-1.8.0-sources.jar=6ab3192fb57bbdabfeb5f9992e3922cf7e6ef221d3ec5a7d66bd079406f6235058bfb6f115fa3e1ad7c8e02cd65fbb00adebf65c9c8914ba2758b30c24d97e32
>
> commons-dbutils-1.8.0-bom.json=6f939509e9cf901fab00c5e45e38ca8dcfe81c35069c97a270e0ba89f0d557feddd5f98b1320ed346e401e7be5a560325c021b6d8ba55ea2b0ea0a8652d037cb
>
> commons-dbutils-1.8.0-test-sources.jar=dac78668a91c6d3eed45f591a8a2c83f3cfc4871bd3a478aa0ed117ad6b315f9e14c43e38aafcf8b6e4f2e4e8076802dc2481d3bc1950f2cb928e74685cee960
>
> commons-dbutils-1.8.0-src.zip=0af2de984787938c1277cf34a5e54cf50dd1674e962cc7280c47f6129ceeda86f8e18e422056dbf859f774cc65135e786552bb4847869e1f6e4c6f3bb089e9c7
>
> commons-dbutils-1.8.0-bom.xml=5d7be2ff22c55ce73022230a4f2242b9d43c9fe6dcf1cda552d19c4bcb255222adb78774bdfc57f0159da947ea65509fd63ad568c79f5fed51e4bb3a2ae8142b
>
> commons-dbutils-1.8.0-bin.zip=76ebf30c465218022210f4e6ffc61756360a949156b5b3100ff9024ae6d782c328624b3bf1149280b0df4c466d3b4687efa92e6f9c483fc800bac47eddb0fbf5
>
> commons-dbutils-1.8.0-javadoc.jar=453cdd7517bc1f1ab0fb48e57d2795e8d1ded586246640a77b2b71d10c227ee7fae9c952f7cb82746be3df3e6544e097219873c732ba7b70271961666c2512bd
>
> commons-dbutils-1.8.0-bin.tar.gz=1f3832fd5e7a997d93174b8c08f630522b7ef59b878e48ea1aa1f80924290dec6ce56db9ae003c010eec4384e8aea33d8c4b84e4d232bf7ba13ae42b3618e25f
>
> commons-dbutils-1.8.0-tests.jar=96291ca4e46c5c426c45d65c4a219aeadb2f9fe1b4e18dd293d1a0529b171403a064a59f675707f2cf773a6a813abf8d1b58f3e46f9652a28eec4193d2421c97
>
> I have tested this with
>
> mvn -V -Prelease -Ptest-deploy -P jacoco -P japicmp clean package site
> deploy
>
> Using:
>
> Apache Maven 3.9.3 (21122926829f1ead511c958d89bd2f672198ae9f)
> Maven home: /usr/local/Cellar/maven/3.9.3/libexec
> Java version: 11.0.20, vendor: Homebrew, runtime:
> /usr/local/Cellar/openjdk@11/11.0.20/libexec/openjdk.jdk/Contents/Home
> Default locale: en_US, platform encoding: UTF-8
> OS name: "mac os x", version: "13.5", arch: "x86_64", family: "mac"
> Darwin gdg-mac-mini.local 22.6.0 Darwin Kernel Version 22.6.0: Wed Jul
>  5 22:21:56 PDT 2023; root:xnu-8796.141.3~6/RELEASE_X86_64 x86_64
>
> Java 11 is used to produce a JPMS module but the target byte code and
> API is enforced as Java 8.
>
> Details of changes since 1.7 are in the release notes:
>
> https://dist.apache.org/repos/dist/dev/commons/dbutils/1.8.0-RC1/RELEASE-NOTES.txt
>
> https://dist.apache.org/repos/dist/dev/commons/dbutils/1.8.0-RC1/site/changes-report.html
>
> Site:
>
> https://dist.apache.org/repos/dist/dev/commons/dbutils/1.8.0-RC1/site/index.html
> (note some *relative* links are broken and the 1.8.0 directories
> are not yet created - these will be OK once the site is deployed.)
>
> JApiCmp Report (compared to 1.7):
>
> https://dist.apache.org/repos/dist/dev/commons/dbutils/1.8.0-RC1/site/japicmp.html
>
> RAT Report:
>
> https://dist.apache.org/repos/dist/dev/commons/dbutils/1.8.0-RC1/site/rat-report.html
>
> KEYS:
>   https://downloads.apache.org/commons/KEYS
>
> Please review the release candidate and vote.
> This vote will close no sooner than 72 hours from now.
>
>   [ ] +1 Release these artifacts
>   [ ] +0 OK, but...
>   [ ] -0 OK, but really should fix...
>   [ ] -1 I oppose this release because...
>
> Thank you,
>
> Gary Gregory,
> Release Manager (using key 86fdc7e2a11262cb)
>
> For following is intended as a helper and refresher for reviewers.
>
> Validating a release candidate
> ==
>
> These guidelines are NOT complete.
>
> Requi

Re: [commons-lang] Comments on new FunctionUtils / nested lambda feature

2023-08-05 Thread Daniel Watson
Nice.

Sounds like everyone is leaning towards "no". Would it be worth submitting
a PR to include more usage examples - which I assume could also serve as a
place to collect more feedback? Or just keep it within this thread given
the way it's leaning? (or unless that consensus changes)

Ultimately in my web/UI project the reduction (after using function(...))
is something like...

Failable.asFunction(Parent::getChild)
.andThen(Optional::ofNullable)
.andThen(o -> o.map(Child::getGrandChild))
.andThen(o-> o.map(GrandChild::getName).orElse(defaultValue));

vs my util method

FunctionUtils.nested(Parent::getChild, Child::getGrandChild,
GrandChild::getName, defaultValue);

So it's still a big difference in clarity for me, given how often its used.
FWIW - My project is using Vaadin, and this util function is used to bind
nested bean properties to Vaadin input fields. On that note - In addition
to the bean "getter" binding, it also uses a similar util method to bind
bean "setter" methods - because input fields obviously need access to both.
The setter util call looks similar, with the last argument being
a BiConsumer...

FunctionUtils.nested(Parent::getChild, Child::getGrandChild,
GrandChild::setName);

Although in general this code does not reference any Vaadin specific
functionality, the overall use case may be quite specific to those needs,
so all of these utilities may be better suited to a utils class within a
vaadin specific library.

Dan

On Fri, Aug 4, 2023 at 9:11 PM Gary Gregory  wrote:

> The function() method is a great technique, it's now in Functions and
> FailableFunction (git master).
>
> I'll see later if it can be used within Lang. I know I can use it in other
> projects.
>
> Wrt an API for a vararg of functions that implements chaining internally,
> I'm not so sure. I've though I needed something like that in past, but I've
> always ended up with other coding patterns I found better at the time for
> whatever reason..
>
> Gary
>
> Gary
>
> On Fri, Aug 4, 2023, 3:24 PM Gary Gregory  wrote:
>
> > Worth adding adding function(Function)? Seems low cost to add it
> > FailableFunction.
> >
> > Gary
> >
> > On Fri, Aug 4, 2023, 2:04 PM Rob Spoor  wrote:
> >
> >> With just one simple utility method you can get all the chaining you
> want:
> >>
> >>  public static  Function function(Function func) {
> >>  return func;
> >>  }
> >>
> >> This doesn't look very useful, but it allows you to turn a method
> >> reference or lambda into a typed Function without needing a cast. After
> >> that it's really simple using what's provided in the Java API:
> >>
> >>  Function func = function(MyBean::getChild)
> >>  .andThen(Child::getName);
> >>
> >> You want a default value? Almost just as easy:
> >>
> >>  someFrameworkThing.setProperty(function(ParentBean::getChild)
> >>  .andThen(ChildBean::getName)
> >>  .andThen(Optional::ofNullable)
> >>  .andThen(o -> o.orElse("defaultName"));
> >>
> >>
> >> On 04/08/2023 16:04, Daniel Watson wrote:
> >> > Asking for comments and thoughts on a potential new feature. Already
> >> > developed in a commons-like style, but dont want to submit PR without
> >> > discussion as it may be considered out of scope or too use case
> >> specific.
> >> >
> >> > Justification and details...
> >> >
> >> > I've run into a scenario a few times where nested lamba functions
> would
> >> be
> >> > incredibly useful. e.g.
> >> >
> >> > MyBean::getChild::getName
> >> >
> >> > Obviously this is not a language feature, but can be simulated in a
> >> useful
> >> > way. So far my use has mostly been related to code that works with
> POJO
> >> > beans, and frameworks that use function references to understand those
> >> > beans and properties. Specifically useful where the context of the
> code
> >> > block is the parent entity, but you need to reference a child, and
> >> without
> >> > nested lambdas you end up with things like the below...
> >> >
> >> > ParentBean parentBean = new ParentBean();
> >> > parentBean.setChild(new ChildBean("name"));
> >> > //imagine that FrameworkThing is a generic class, and thus the generic
> >> type
> >> > is ParentBean
> >> > FrameworkThing someFrameworkThing = new FrameworkThing
> >> (ParentBean.class)
> >> > //but we need to get to a property of a child bean
> >> > someFrameworkThing.setProperty((parentBean) ->  {
> >> >
> >> > return parentBean.getChild().getName();
> >> >
> >> > });
> >> >
> >> > Obviously this could be handled with a getChildName() method on the
> >> parent
> >> > bean, but that has pitfalls as well (e.g. bean class cannot be
> changed,
> >> or
> >> > adding of properties interferes with other usage of the class e.g.
> JPA,
> >> > JAX).  However with a util class the second call can be reduced to
> >> > something like below, leaving the bean API untouched.
> >> >
> >> >
> >>
> someFrameworkThing.setProperty(FunctionUtils.nested(ParentBean::getChild,ChildBean::getName));
> >> >

Re: [VOTE] Release Apache Commons DbUtils 1.8.0 based on RC1

2023-08-05 Thread Gary Gregory
My +1

Gary


On Tue, Aug 1, 2023, 8:40 PM Gary Gregory  wrote:

> We have fixed a few bugs and added some enhancements since Apache
> Commons DbUtils 1.7 was released, so I would like to release Apache
> Commons DbUtils 1.8.0.
>
> Apache Commons DbUtils 1.8.0 RC1 is available for review here:
> https://dist.apache.org/repos/dist/dev/commons/dbutils/1.8.0-RC1
> (svn revision 63303)
>
> The Git tag commons-dbutils-1.8.0-RC1 commit for this RC is
> 675cfcd2f68b03254746c24d76a83a23dcddc6a2 which you can browse here:
>
> https://gitbox.apache.org/repos/asf?p=commons-dbutils.git;a=commit;h=675cfcd2f68b03254746c24d76a83a23dcddc6a2
> You may checkout this tag using:
> git clone https://gitbox.apache.org/repos/asf/commons-dbutils.git
> --branch 
> commons-dbutils-1.8.0-RC1 commons-dbutils-1.8.0-RC1
>
> Maven artifacts are here:
>
> https://repository.apache.org/content/repositories/orgapachecommons-1648/commons-dbutils/commons-dbutils/1.8.0/
>
> These are the artifacts and their hashes:
>
> #Release SHA-512s
> #Tue Aug 01 20:32:34 EDT 2023
>
> commons-dbutils-1.8.0-src.tar.gz=be1af717639a605d9510e2ac7435c0f06ba37ce8700e93f38e3f71a83ea2758c71821545d7271adc5ae7d9506c1f557386ee9b67a4979f9ab3fe7cb27a08e179
>
> commons-dbutils_commons-dbutils-1.8.0.spdx.json=295f2decdbf6e68696b5c44939029deec01ae8619dae4093b617f4171968cf8b281bd723815331e124a807fb1c5e74b5c22cf6c146281857874f1be38ef12cde
>
> commons-dbutils-1.8.0-sources.jar=6ab3192fb57bbdabfeb5f9992e3922cf7e6ef221d3ec5a7d66bd079406f6235058bfb6f115fa3e1ad7c8e02cd65fbb00adebf65c9c8914ba2758b30c24d97e32
>
> commons-dbutils-1.8.0-bom.json=6f939509e9cf901fab00c5e45e38ca8dcfe81c35069c97a270e0ba89f0d557feddd5f98b1320ed346e401e7be5a560325c021b6d8ba55ea2b0ea0a8652d037cb
>
> commons-dbutils-1.8.0-test-sources.jar=dac78668a91c6d3eed45f591a8a2c83f3cfc4871bd3a478aa0ed117ad6b315f9e14c43e38aafcf8b6e4f2e4e8076802dc2481d3bc1950f2cb928e74685cee960
>
> commons-dbutils-1.8.0-src.zip=0af2de984787938c1277cf34a5e54cf50dd1674e962cc7280c47f6129ceeda86f8e18e422056dbf859f774cc65135e786552bb4847869e1f6e4c6f3bb089e9c7
>
> commons-dbutils-1.8.0-bom.xml=5d7be2ff22c55ce73022230a4f2242b9d43c9fe6dcf1cda552d19c4bcb255222adb78774bdfc57f0159da947ea65509fd63ad568c79f5fed51e4bb3a2ae8142b
>
> commons-dbutils-1.8.0-bin.zip=76ebf30c465218022210f4e6ffc61756360a949156b5b3100ff9024ae6d782c328624b3bf1149280b0df4c466d3b4687efa92e6f9c483fc800bac47eddb0fbf5
>
> commons-dbutils-1.8.0-javadoc.jar=453cdd7517bc1f1ab0fb48e57d2795e8d1ded586246640a77b2b71d10c227ee7fae9c952f7cb82746be3df3e6544e097219873c732ba7b70271961666c2512bd
>
> commons-dbutils-1.8.0-bin.tar.gz=1f3832fd5e7a997d93174b8c08f630522b7ef59b878e48ea1aa1f80924290dec6ce56db9ae003c010eec4384e8aea33d8c4b84e4d232bf7ba13ae42b3618e25f
>
> commons-dbutils-1.8.0-tests.jar=96291ca4e46c5c426c45d65c4a219aeadb2f9fe1b4e18dd293d1a0529b171403a064a59f675707f2cf773a6a813abf8d1b58f3e46f9652a28eec4193d2421c97
>
> I have tested this with
>
> mvn -V -Prelease -Ptest-deploy -P jacoco -P japicmp clean package site
> deploy
>
> Using:
>
> Apache Maven 3.9.3 (21122926829f1ead511c958d89bd2f672198ae9f)
> Maven home: /usr/local/Cellar/maven/3.9.3/libexec
> Java version: 11.0.20, vendor: Homebrew, runtime:
> /usr/local/Cellar/openjdk@11/11.0.20/libexec/openjdk.jdk/Contents/Home
> Default locale: en_US, platform encoding: UTF-8
> OS name: "mac os x", version: "13.5", arch: "x86_64", family: "mac"
> Darwin gdg-mac-mini.local 22.6.0 Darwin Kernel Version 22.6.0: Wed Jul
>  5 22:21:56 PDT 2023; root:xnu-8796.141.3~6/RELEASE_X86_64 x86_64
>
> Java 11 is used to produce a JPMS module but the target byte code and
> API is enforced as Java 8.
>
> Details of changes since 1.7 are in the release notes:
>
> https://dist.apache.org/repos/dist/dev/commons/dbutils/1.8.0-RC1/RELEASE-NOTES.txt
>
> https://dist.apache.org/repos/dist/dev/commons/dbutils/1.8.0-RC1/site/changes-report.html
>
> Site:
>
> https://dist.apache.org/repos/dist/dev/commons/dbutils/1.8.0-RC1/site/index.html
> (note some *relative* links are broken and the 1.8.0 directories
> are not yet created - these will be OK once the site is deployed.)
>
> JApiCmp Report (compared to 1.7):
>
> https://dist.apache.org/repos/dist/dev/commons/dbutils/1.8.0-RC1/site/japicmp.html
>
> RAT Report:
>
> https://dist.apache.org/repos/dist/dev/commons/dbutils/1.8.0-RC1/site/rat-report.html
>
> KEYS:
>   https://downloads.apache.org/commons/KEYS
>
> Please review the release candidate and vote.
> This vote will close no sooner than 72 hours from now.
>
>   [ ] +1 Release these artifacts
>   [ ] +0 OK, but...
>   [ ] -0 OK, but really should fix...
>   [ ] -1 I oppose this release because...
>
> Thank you,
>
> Gary Gregory,
> Release Manager (using key 86fdc7e2a11262cb)
>
> For following is intended as a helper and refresher for reviewers.
>
> Validating a release candidate
> ==
>
> These guidelines are NOT complete.
>
> Requirements: Git, Java, Maven.
>
> Y

Re: [VOTE] Release Apache Commons DbUtils 1.8.0 based on RC1

2023-08-05 Thread Gary Gregory
Could I get more PMC reviews please?

Gary

On Tue, Aug 1, 2023, 8:40 PM Gary Gregory  wrote:

> We have fixed a few bugs and added some enhancements since Apache
> Commons DbUtils 1.7 was released, so I would like to release Apache
> Commons DbUtils 1.8.0.
>
> Apache Commons DbUtils 1.8.0 RC1 is available for review here:
> https://dist.apache.org/repos/dist/dev/commons/dbutils/1.8.0-RC1
> (svn revision 63303)
>
> The Git tag commons-dbutils-1.8.0-RC1 commit for this RC is
> 675cfcd2f68b03254746c24d76a83a23dcddc6a2 which you can browse here:
>
> https://gitbox.apache.org/repos/asf?p=commons-dbutils.git;a=commit;h=675cfcd2f68b03254746c24d76a83a23dcddc6a2
> You may checkout this tag using:
> git clone https://gitbox.apache.org/repos/asf/commons-dbutils.git
> --branch 
> commons-dbutils-1.8.0-RC1 commons-dbutils-1.8.0-RC1
>
> Maven artifacts are here:
>
> https://repository.apache.org/content/repositories/orgapachecommons-1648/commons-dbutils/commons-dbutils/1.8.0/
>
> These are the artifacts and their hashes:
>
> #Release SHA-512s
> #Tue Aug 01 20:32:34 EDT 2023
>
> commons-dbutils-1.8.0-src.tar.gz=be1af717639a605d9510e2ac7435c0f06ba37ce8700e93f38e3f71a83ea2758c71821545d7271adc5ae7d9506c1f557386ee9b67a4979f9ab3fe7cb27a08e179
>
> commons-dbutils_commons-dbutils-1.8.0.spdx.json=295f2decdbf6e68696b5c44939029deec01ae8619dae4093b617f4171968cf8b281bd723815331e124a807fb1c5e74b5c22cf6c146281857874f1be38ef12cde
>
> commons-dbutils-1.8.0-sources.jar=6ab3192fb57bbdabfeb5f9992e3922cf7e6ef221d3ec5a7d66bd079406f6235058bfb6f115fa3e1ad7c8e02cd65fbb00adebf65c9c8914ba2758b30c24d97e32
>
> commons-dbutils-1.8.0-bom.json=6f939509e9cf901fab00c5e45e38ca8dcfe81c35069c97a270e0ba89f0d557feddd5f98b1320ed346e401e7be5a560325c021b6d8ba55ea2b0ea0a8652d037cb
>
> commons-dbutils-1.8.0-test-sources.jar=dac78668a91c6d3eed45f591a8a2c83f3cfc4871bd3a478aa0ed117ad6b315f9e14c43e38aafcf8b6e4f2e4e8076802dc2481d3bc1950f2cb928e74685cee960
>
> commons-dbutils-1.8.0-src.zip=0af2de984787938c1277cf34a5e54cf50dd1674e962cc7280c47f6129ceeda86f8e18e422056dbf859f774cc65135e786552bb4847869e1f6e4c6f3bb089e9c7
>
> commons-dbutils-1.8.0-bom.xml=5d7be2ff22c55ce73022230a4f2242b9d43c9fe6dcf1cda552d19c4bcb255222adb78774bdfc57f0159da947ea65509fd63ad568c79f5fed51e4bb3a2ae8142b
>
> commons-dbutils-1.8.0-bin.zip=76ebf30c465218022210f4e6ffc61756360a949156b5b3100ff9024ae6d782c328624b3bf1149280b0df4c466d3b4687efa92e6f9c483fc800bac47eddb0fbf5
>
> commons-dbutils-1.8.0-javadoc.jar=453cdd7517bc1f1ab0fb48e57d2795e8d1ded586246640a77b2b71d10c227ee7fae9c952f7cb82746be3df3e6544e097219873c732ba7b70271961666c2512bd
>
> commons-dbutils-1.8.0-bin.tar.gz=1f3832fd5e7a997d93174b8c08f630522b7ef59b878e48ea1aa1f80924290dec6ce56db9ae003c010eec4384e8aea33d8c4b84e4d232bf7ba13ae42b3618e25f
>
> commons-dbutils-1.8.0-tests.jar=96291ca4e46c5c426c45d65c4a219aeadb2f9fe1b4e18dd293d1a0529b171403a064a59f675707f2cf773a6a813abf8d1b58f3e46f9652a28eec4193d2421c97
>
> I have tested this with
>
> mvn -V -Prelease -Ptest-deploy -P jacoco -P japicmp clean package site
> deploy
>
> Using:
>
> Apache Maven 3.9.3 (21122926829f1ead511c958d89bd2f672198ae9f)
> Maven home: /usr/local/Cellar/maven/3.9.3/libexec
> Java version: 11.0.20, vendor: Homebrew, runtime:
> /usr/local/Cellar/openjdk@11/11.0.20/libexec/openjdk.jdk/Contents/Home
> Default locale: en_US, platform encoding: UTF-8
> OS name: "mac os x", version: "13.5", arch: "x86_64", family: "mac"
> Darwin gdg-mac-mini.local 22.6.0 Darwin Kernel Version 22.6.0: Wed Jul
>  5 22:21:56 PDT 2023; root:xnu-8796.141.3~6/RELEASE_X86_64 x86_64
>
> Java 11 is used to produce a JPMS module but the target byte code and
> API is enforced as Java 8.
>
> Details of changes since 1.7 are in the release notes:
>
> https://dist.apache.org/repos/dist/dev/commons/dbutils/1.8.0-RC1/RELEASE-NOTES.txt
>
> https://dist.apache.org/repos/dist/dev/commons/dbutils/1.8.0-RC1/site/changes-report.html
>
> Site:
>
> https://dist.apache.org/repos/dist/dev/commons/dbutils/1.8.0-RC1/site/index.html
> (note some *relative* links are broken and the 1.8.0 directories
> are not yet created - these will be OK once the site is deployed.)
>
> JApiCmp Report (compared to 1.7):
>
> https://dist.apache.org/repos/dist/dev/commons/dbutils/1.8.0-RC1/site/japicmp.html
>
> RAT Report:
>
> https://dist.apache.org/repos/dist/dev/commons/dbutils/1.8.0-RC1/site/rat-report.html
>
> KEYS:
>   https://downloads.apache.org/commons/KEYS
>
> Please review the release candidate and vote.
> This vote will close no sooner than 72 hours from now.
>
>   [ ] +1 Release these artifacts
>   [ ] +0 OK, but...
>   [ ] -0 OK, but really should fix...
>   [ ] -1 I oppose this release because...
>
> Thank you,
>
> Gary Gregory,
> Release Manager (using key 86fdc7e2a11262cb)
>
> For following is intended as a helper and refresher for reviewers.
>
> Validating a release candidate
> ==
>
> These guidelines are NOT complete.
>
> Require

Re: [commons-lang] Comments on new FunctionUtils / nested lambda feature

2023-08-05 Thread Gary Gregory
I'm not sure the "nested" example API is quite what it should be, because
the last argument is the default value, you cannot make the input functions
a vararg, which seems very limiting. I should be able to use the same API
whether I need to go 1, 2, or N functions deep. I'm saying the above
independently of whether this type of code should be in Lang.

Gary

On Sat, Aug 5, 2023, 9:27 AM Daniel Watson  wrote:

> Nice.
>
> Sounds like everyone is leaning towards "no". Would it be worth submitting
> a PR to include more usage examples - which I assume could also serve as a
> place to collect more feedback? Or just keep it within this thread given
> the way it's leaning? (or unless that consensus changes)
>
> Ultimately in my web/UI project the reduction (after using function(...))
> is something like...
>
> Failable.asFunction(Parent::getChild)
> .andThen(Optional::ofNullable)
> .andThen(o -> o.map(Child::getGrandChild))
> .andThen(o-> o.map(GrandChild::getName).orElse(defaultValue));
>
> vs my util method
>
> FunctionUtils.nested(Parent::getChild, Child::getGrandChild,
> GrandChild::getName, defaultValue);
>
> So it's still a big difference in clarity for me, given how often its used.
> FWIW - My project is using Vaadin, and this util function is used to bind
> nested bean properties to Vaadin input fields. On that note - In addition
> to the bean "getter" binding, it also uses a similar util method to bind
> bean "setter" methods - because input fields obviously need access to both.
> The setter util call looks similar, with the last argument being
> a BiConsumer...
>
> FunctionUtils.nested(Parent::getChild, Child::getGrandChild,
> GrandChild::setName);
>
> Although in general this code does not reference any Vaadin specific
> functionality, the overall use case may be quite specific to those needs,
> so all of these utilities may be better suited to a utils class within a
> vaadin specific library.
>
> Dan
>
> On Fri, Aug 4, 2023 at 9:11 PM Gary Gregory 
> wrote:
>
> > The function() method is a great technique, it's now in Functions and
> > FailableFunction (git master).
> >
> > I'll see later if it can be used within Lang. I know I can use it in
> other
> > projects.
> >
> > Wrt an API for a vararg of functions that implements chaining internally,
> > I'm not so sure. I've though I needed something like that in past, but
> I've
> > always ended up with other coding patterns I found better at the time for
> > whatever reason..
> >
> > Gary
> >
> > Gary
> >
> > On Fri, Aug 4, 2023, 3:24 PM Gary Gregory 
> wrote:
> >
> > > Worth adding adding function(Function)? Seems low cost to add it
> > > FailableFunction.
> > >
> > > Gary
> > >
> > > On Fri, Aug 4, 2023, 2:04 PM Rob Spoor  wrote:
> > >
> > >> With just one simple utility method you can get all the chaining you
> > want:
> > >>
> > >>  public static  Function function(Function
> func) {
> > >>  return func;
> > >>  }
> > >>
> > >> This doesn't look very useful, but it allows you to turn a method
> > >> reference or lambda into a typed Function without needing a cast.
> After
> > >> that it's really simple using what's provided in the Java API:
> > >>
> > >>  Function func = function(MyBean::getChild)
> > >>  .andThen(Child::getName);
> > >>
> > >> You want a default value? Almost just as easy:
> > >>
> > >>  someFrameworkThing.setProperty(function(ParentBean::getChild)
> > >>  .andThen(ChildBean::getName)
> > >>  .andThen(Optional::ofNullable)
> > >>  .andThen(o -> o.orElse("defaultName"));
> > >>
> > >>
> > >> On 04/08/2023 16:04, Daniel Watson wrote:
> > >> > Asking for comments and thoughts on a potential new feature. Already
> > >> > developed in a commons-like style, but dont want to submit PR
> without
> > >> > discussion as it may be considered out of scope or too use case
> > >> specific.
> > >> >
> > >> > Justification and details...
> > >> >
> > >> > I've run into a scenario a few times where nested lamba functions
> > would
> > >> be
> > >> > incredibly useful. e.g.
> > >> >
> > >> > MyBean::getChild::getName
> > >> >
> > >> > Obviously this is not a language feature, but can be simulated in a
> > >> useful
> > >> > way. So far my use has mostly been related to code that works with
> > POJO
> > >> > beans, and frameworks that use function references to understand
> those
> > >> > beans and properties. Specifically useful where the context of the
> > code
> > >> > block is the parent entity, but you need to reference a child, and
> > >> without
> > >> > nested lambdas you end up with things like the below...
> > >> >
> > >> > ParentBean parentBean = new ParentBean();
> > >> > parentBean.setChild(new ChildBean("name"));
> > >> > //imagine that FrameworkThing is a generic class, and thus the
> generic
> > >> type
> > >> > is ParentBean
> > >> > FrameworkThing someFrameworkThing = new FrameworkThing
> > >> (ParentBean.class)
> > >> > //but we need to get to a property of a c

Exposing my own/wrapper functions using JEXL

2023-08-05 Thread Aditya Kumar1
Hi,

I was trying to expose my own functions using JEXL library. I am trying the 
below example.


public static class MyMath {
public double cos(final double x) {
return Math.cos(x);
}
}

public static void testCustomFunction2() {

try {
Map funcs = new HashMap();
funcs.put("math", new MyMath());
JexlEngine jexl = new JexlBuilder().namespaces(funcs).create();
JexlContext jc = new MapContext();
jc.set("pi", Math.PI);
JexlExpression e = jexl.createExpression("math:cos(pi)");
Object result = e.evaluate(jc);
System.out.println("Result: " + result);
}
catch (JexlException e) {
Throwable original = e.getCause();
System.out.println(e.getMessage());
original.printStackTrace();
//do something with the original
}
}

which is given at below link:
https://commons.apache.org/proper/commons-jexl/apidocs/org/apache/commons/jexl3/package-summary.html#usage

When I run the above code, I get below exception.

org.example.Main.testCustomFunction2:93@1:9 unsolvable function/method 
'cos(Float)'
Exception in thread "main" java.lang.NullPointerException
   at org.example.Main.testCustomFunction2(Main.java:100)
   at org.example.Main.main(Main.java:33)

Can someone, please help me with this? I think, this is a supported way to use 
custom functions or exposing my own/wrapper functions. I am using Java 11 to 
run the above example.

Thanks,
Aditya



—
Aditya Kumar1
Technology Architect
Precisely.com

 ATTENTION: -The information contained in this message (including any files 
transmitted with this message) may contain proprietary, trade secret or other 
confidential and/or legally privileged information. Any pricing information 
contained in this message or in any files transmitted with this message is 
always confidential and cannot be shared with any third parties without prior 
written approval from Precisely. This message is intended to be read only by 
the individual or entity to whom it is addressed or by their designee. If the 
reader of this message is not the intended recipient, you are on notice that 
any use, disclosure, copying or distribution of this message, in any form, is 
strictly prohibited. If you have received this message in error, please 
immediately notify the sender and/or Precisely and destroy all copies of this 
message in your possession, custody or control.