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