Re: [rng] binary compatibility with final modifier

2019-05-23 Thread Alex Herbert



On 23/05/2019 13:46, Gilles Sadowski wrote:

Hello.

Le jeu. 23 mai 2019 à 14:10, Alex Herbert  a écrit :


On 23/05/2019 12:53, sebb wrote:

Are the classes supposed to be final?
Or just the existing constructor(s)?

The two package-private classes are definitely helper classes and should
be final.

The class with the clirr issue (it is actually an info) only has static
methods. So currently it is a utility class.

Changing it to have a new role with instance methods would be a design
update that could be served by introducing a new class. However this
class has taken the best name.

Any instance role for the class would require that it is typed for
generics. But a quick try seems to pass clirr.

Gilles, any opinion on a future for ListSampler as:

public class ListSampler {

 // Other static stuff (already in the class)...

 T sample();

}

Unless I'm missing something, this use-case is covered by
"CollectionSampler".[1]
"ListSampler" is for other use-cases (sublist, in-place shuffle).[2]
Yes. I missed that. So there is never a need for an instance of 
ListSampler and it can be made final without breaking any compatibility.


Regards,
Gilles

[1] 
http://commons.apache.org/proper/commons-rng/commons-rng-sampling/javadocs/api-1.2/org/apache/commons/rng/sampling/CollectionSampler.html
[2] 
http://commons.apache.org/proper/commons-rng/commons-rng-sampling/javadocs/api-1.2/org/apache/commons/rng/sampling/ListSampler.html


Alex



On Thu, 23 May 2019 at 12:51, Gilles Sadowski  wrote:

Hello.

Le jeu. 23 mai 2019 à 13:43, Alex Herbert  a écrit :

[rng] has three classes with a private constructor that are not
currently marked as final. 1 is public and 2 are package private.

If I mark them as final then clirr:check ignores the package private
ones and produces this warning for the public one:

If it's a "Warning" and not an "Error", I don't think that it could
count as a release blocker.  [Confirmation from PMC members
welcome...]


"Added final modifier to class, but class was effectively final anyway"


Given the class could not have been extended (due to a private
constructor) it seems OK to allow the final modifier.

I think so.


So can the final modifier be added? Is there a precedent here with
regard to releases?

Cf. above.

Gilles


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



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



Re: [rng] binary compatibility with final modifier

2019-05-23 Thread Gilles Sadowski
Hello.

Le jeu. 23 mai 2019 à 14:10, Alex Herbert  a écrit :
>
>
> On 23/05/2019 12:53, sebb wrote:
> > Are the classes supposed to be final?
> > Or just the existing constructor(s)?
>
> The two package-private classes are definitely helper classes and should
> be final.
>
> The class with the clirr issue (it is actually an info) only has static
> methods. So currently it is a utility class.
>
> Changing it to have a new role with instance methods would be a design
> update that could be served by introducing a new class. However this
> class has taken the best name.
>
> Any instance role for the class would require that it is typed for
> generics. But a quick try seems to pass clirr.
>
> Gilles, any opinion on a future for ListSampler as:
>
> public class ListSampler {
>
> // Other static stuff (already in the class)...
>
> T sample();
>
> }

Unless I'm missing something, this use-case is covered by
"CollectionSampler".[1]
"ListSampler" is for other use-cases (sublist, in-place shuffle).[2]

Regards,
Gilles

[1] 
http://commons.apache.org/proper/commons-rng/commons-rng-sampling/javadocs/api-1.2/org/apache/commons/rng/sampling/CollectionSampler.html
[2] 
http://commons.apache.org/proper/commons-rng/commons-rng-sampling/javadocs/api-1.2/org/apache/commons/rng/sampling/ListSampler.html

>
> Alex
>
>
> >
> > On Thu, 23 May 2019 at 12:51, Gilles Sadowski  wrote:
> >> Hello.
> >>
> >> Le jeu. 23 mai 2019 à 13:43, Alex Herbert  a 
> >> écrit :
> >>> [rng] has three classes with a private constructor that are not
> >>> currently marked as final. 1 is public and 2 are package private.
> >>>
> >>> If I mark them as final then clirr:check ignores the package private
> >>> ones and produces this warning for the public one:
> >> If it's a "Warning" and not an "Error", I don't think that it could
> >> count as a release blocker.  [Confirmation from PMC members
> >> welcome...]
> >>
> >>> "Added final modifier to class, but class was effectively final anyway"
> >>>
> >>>
> >>> Given the class could not have been extended (due to a private
> >>> constructor) it seems OK to allow the final modifier.
> >> I think so.
> >>
> >>> So can the final modifier be added? Is there a precedent here with
> >>> regard to releases?
> >> Cf. above.
> >>
> >> Gilles
> >>

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



Re: [rng] binary compatibility with final modifier

2019-05-23 Thread Alex Herbert



On 23/05/2019 12:53, sebb wrote:

Are the classes supposed to be final?
Or just the existing constructor(s)?


The two package-private classes are definitely helper classes and should 
be final.


The class with the clirr issue (it is actually an info) only has static 
methods. So currently it is a utility class.


Changing it to have a new role with instance methods would be a design 
update that could be served by introducing a new class. However this 
class has taken the best name.


Any instance role for the class would require that it is typed for 
generics. But a quick try seems to pass clirr.


Gilles, any opinion on a future for ListSampler as:

public class ListSampler {

   // Other static stuff (already in the class)...

   T sample();

}


Alex




On Thu, 23 May 2019 at 12:51, Gilles Sadowski  wrote:

Hello.

Le jeu. 23 mai 2019 à 13:43, Alex Herbert  a écrit :

[rng] has three classes with a private constructor that are not
currently marked as final. 1 is public and 2 are package private.

If I mark them as final then clirr:check ignores the package private
ones and produces this warning for the public one:

If it's a "Warning" and not an "Error", I don't think that it could
count as a release blocker.  [Confirmation from PMC members
welcome...]


"Added final modifier to class, but class was effectively final anyway"


Given the class could not have been extended (due to a private
constructor) it seems OK to allow the final modifier.

I think so.


So can the final modifier be added? Is there a precedent here with
regard to releases?

Cf. above.

Gilles

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


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



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



Re: [rng] binary compatibility with final modifier

2019-05-23 Thread sebb
Are the classes supposed to be final?
Or just the existing constructor(s)?

On Thu, 23 May 2019 at 12:51, Gilles Sadowski  wrote:
>
> Hello.
>
> Le jeu. 23 mai 2019 à 13:43, Alex Herbert  a écrit :
> >
> > [rng] has three classes with a private constructor that are not
> > currently marked as final. 1 is public and 2 are package private.
> >
> > If I mark them as final then clirr:check ignores the package private
> > ones and produces this warning for the public one:
>
> If it's a "Warning" and not an "Error", I don't think that it could
> count as a release blocker.  [Confirmation from PMC members
> welcome...]
>
> >
> > "Added final modifier to class, but class was effectively final anyway"
> >
> >
> > Given the class could not have been extended (due to a private
> > constructor) it seems OK to allow the final modifier.
>
> I think so.
>
> >
> > So can the final modifier be added? Is there a precedent here with
> > regard to releases?
>
> Cf. above.
>
> Gilles
>
> -
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>

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



Re: [rng] binary compatibility with final modifier

2019-05-23 Thread Gilles Sadowski
Hello.

Le jeu. 23 mai 2019 à 13:43, Alex Herbert  a écrit :
>
> [rng] has three classes with a private constructor that are not
> currently marked as final. 1 is public and 2 are package private.
>
> If I mark them as final then clirr:check ignores the package private
> ones and produces this warning for the public one:

If it's a "Warning" and not an "Error", I don't think that it could
count as a release blocker.  [Confirmation from PMC members
welcome...]

>
> "Added final modifier to class, but class was effectively final anyway"
>
>
> Given the class could not have been extended (due to a private
> constructor) it seems OK to allow the final modifier.

I think so.

>
> So can the final modifier be added? Is there a precedent here with
> regard to releases?

Cf. above.

Gilles

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