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 > >>>> > >>>> > >> > >> > >