My bad. I was trying to process that e-mail, fix a bug, and a few other things before a meeting and fired it off without thinking through it fully. Not the first thing I've bobbled today. :-)
So yes, 'protected' is great. Thanks! mrg On Tue, Sep 9, 2014 at 10:47 AM, Andrus Adamchik <and...@objectstyle.org> wrote: > It is the default scope that limits access to a package. "protected" > limits access to subclasses no matter their location. So that should work, > and still indicate that the class is not for instantiation. > > Andrus > > On Sep 9, 2014, at 5:37 PM, Michael Gentry <mgen...@masslight.net> wrote: > > > If the method is changed to protected, any subclass would have to reside > in > > the same package space, which seems undesirable to me. > > > > Here is how Apache Commons does it: > > > > public class FileUtils { > > > > > > /** > > > > * Instances should NOT be constructed in standard programming. > > > > */ > > > > public FileUtils() { > > > > super(); > > > > } > > ... > > > > public class StringUtils { > > ... > > > > public StringUtils() { > > > > super(); > > > > } > > ... > > > > mrg > > > > > > On Tue, Sep 9, 2014 at 2:10 AM, Andrus Adamchik <and...@objectstyle.org> > > wrote: > > > >> Usually we have private constructors for statics only classes (as is the > >> case here). It sort of indicates it to the end users that the class is > not > >> supposed to be instantiated. While technically you won't get true > >> polymorphism by inheriting from statics-only class in Java, it may > still be > >> beneficial to add more static methods to a subclass I guess. So how > about > >> we change that to protected? (in 3.2?) > >> > >> Andrus > >> > >> > >> On Sep 8, 2014, at 11:18 PM, Michael Gentry <mgen...@masslight.net> > wrote: > >>> FWIW, I tried to extend the Cayenne class (we had a discussion about > that > >>> ages ago) and even though it is no longer final, it cannot be extended > >>> because of the private constructor. Should we remove the private > >>> constructor to allow "subclassing" like Apache Commons allows? > >>> > >>> Thanks, > >>> > >>> mrg > >>> > >>> > >>> On Sat, Sep 6, 2014 at 3:03 AM, Andrus Adamchik < > and...@objectstyle.org> > >>> wrote: > >>> > >>>> Done. > >>>> > >>>> Once I was a big fan of terse non-redundant APIs. Not anymore :) Now > >> that > >>>> we are moving in the direction of richer user-facing APIs, builders, > >> etc, > >>>> so this only makes sense to add this method back. > >>>> > >>>> Andrus > >>>> > >>>> > >>>> On Sep 5, 2014, at 4:16 PM, Michael Gentry <mgen...@masslight.net> > >> wrote: > >>>>> I seem to recall a discussion on that particular method years ago, > but > >>>>> don't remember the details (I'd have to go back and find it). > >>>>> > >>>>> I'm fine with having deleteObject() just turn around and call > >>>>> deleteObjects() because it makes the calling code read better, even > at > >>>> the > >>>>> "expense" of cluttering up the API (although this isn't much, > really). > >>>>> > >>>>> mrg > >>>>> > >>>>> > >>>>> > >>>>> On Fri, Sep 5, 2014 at 7:07 AM, Andrus Adamchik < > >> and...@objectstyle.org> > >>>>> wrote: > >>>>> > >>>>>> One possible last minute change is un-deprecating > >>>>>> ObjectContext.deleteObject(..). It can easily coexist with > >>>> 'deleteObjects', > >>>>>> and getting rid of it was not the best idea on my part. > >>>>>> > >>>>>> Andrus > >>>>>> > >>>>>> On Aug 30, 2014, at 9:28 PM, Andrus Adamchik < > and...@objectstyle.org> > >>>>>> wrote: > >>>>>> > >>>>>>> In preparation to the 3.1-final vote, I ran the same set of tests > as > >> we > >>>>>> did for RC1. All tests are on Java 1.6 unless specified otherwise. > You > >>>> can > >>>>>> compare it with the previous results at > >>>>>> http://markmail.org/message/slaj64iunxbeg4cs . Essentially > everything > >>>> is > >>>>>> the same, so the latest 3.1 changes didn’t break anything obvious. > >>>> There’s > >>>>>> one less test failure on Oracle, which is related to my improved > >> Oracle > >>>>>> setup, rather than anything in Cayenne. Feel free to replicate the > >>>> results > >>>>>> in your own environment. > >>>>>>> > >>>>>>> rat: PASSED > >>>>>>> hsql: PASSED > >>>>>>> h2: PASSED > >>>>>>> derby: PASSED > >>>>>>> derby/Java7: PASSED > >>>>>>> mysql 5.0: [1] PASSED > >>>>>>> mysql 5.6: [2] PASSED > >>>>>>> sqlserver [3] PASSED > >>>>>>> postgresql: Failures: 1 > >>>>>> testBLOB(org.apache.cayenne.access.ReturnTypesMappingTest) > >>>>>>> oracle 11: Failed tests: > >>>>>>> testBIGINT(org.apache.cayenne.access.ReturnTypesMappingTest) > >>>>>>> testBIT(org.apache.cayenne.access.ReturnTypesMappingTest) > >>>>>>> testBOOLEAN(org.apache.cayenne.access.ReturnTypesMappingTest) > >>>>>>> testDOUBLE(org.apache.cayenne.access.ReturnTypesMappingTest) > >>>>>>> testFLOAT(org.apache.cayenne.access.ReturnTypesMappingTest) > >>>>>>> testREAL(org.apache.cayenne.access.ReturnTypesMappingTest) > >>>>>>> testSMALLINT(org.apache.cayenne.access.ReturnTypesMappingTest) > >>>>>>> testTINYINT(org.apache.cayenne.access.ReturnTypesMappingTest) > >>>>>>> > >>>>>>> Tests run: 2150, Failures: 8, Errors: 0, Skipped: 0 > >>>>>>> > >>>>>>> [1] MySQL 5.0 config: [mysqld] max_allowed_packet=16M > >>>>>>> > >>>>>>> [2] MySQL 5.6 config: [mysqld] max_allowed_packet=16M > >>>>>> lower_case_table_names = 1 > >>>>>>> > >>>>>>> [3] SQL Server 2005 Expression config: collation - > >>>>>> SQL_Latin1_general_CP1_CS_AS > >>>>>>> > >>>>>>> Andrus > >>>>>> > >>>>>> > >>>> > >>>> > >> > >> > >