Great, Thanks a million!
On Tue, 25 Sep 2018 at 20:39, Benedikt Ritter <[email protected]> wrote: > Am Di., 25. Sep. 2018 um 15:36 Uhr schrieb Benedikt Ritter < > [email protected]>: > > > Hello Maxim, > > Am Mo., 24. Sep. 2018 um 05:32 Uhr schrieb Maxim Solodovnik < > > [email protected]>: > > > >> Hello, > >> > >> could you please create 4.3-SNAPSHOT build? > >> > > > > I'll check whether I have permission to publish a SNAPSHOT build to the > > SNAPSHOT repo. > > > > I've deployed the latest code to > > https://repository.apache.org/content/repositories/snapshots/org/apache/commons/commons-collections4/4.3-SNAPSHOT/ > > Regards, > Benedikt > > > > > > > >> > >> And if you have any estimates on 4.3 release, could you please share it? > >> :) > >> > > > > We don't have estimates or a roadmap. But I've this on my list, because I > > know you're depending on it. I have two days vacation next week. That may > > be an opportunity for me to work towards a 4.3 release. > > > > Regards, > > Benedikt > > > > > >> > >> > >> > >> On Thu, 20 Sep 2018 at 17:58, Maxim Solodovnik <[email protected]> > >> wrote: > >> > >> > One more question: it seems there is no 4.3-SNAPSHOT build available > >> > Could you please create it? > >> > > >> > On Thu, 20 Sep 2018 at 12:47, Maxim Solodovnik <[email protected]> > >> > wrote: > >> > > > >> > > Hello Gary, > >> > > > >> > > I have tested changes, everything works as expected > >> > > Thanks a lot! > >> > > > >> > > I have closed PR, but have no rights to close JIRA :( > >> > > > >> > > Do you have any plans for 4.3 release? > >> > > On Wed, 19 Sep 2018 at 22:11, Gary Gregory <[email protected]> > >> > wrote: > >> > > > > >> > > > Maxim, > >> > > > Thank you for your patch. > >> > > > I created https://issues.apache.org/jira/browse/COLLECTIONS-696 > and > >> > > > committed you patch to git master. > >> > > > Please verify and close the Jira ticket and GitHub PR. > >> > > > > >> > > > Thank you, > >> > > > Gary > >> > > > > >> > > > On Wed, Sep 19, 2018 at 1:24 AM Maxim Solodovnik < > >> [email protected] > >> > > > >> > > > wrote: > >> > > > > >> > > > > Done: https://github.com/apache/commons-collections/pull/51 > >> > > > > Could you please take a look at this PR? > >> > > > > On Thu, 6 Sep 2018 at 03:17, Gary Gregory < > [email protected] > >> > > >> > wrote: > >> > > > > > > >> > > > > > Hi, > >> > > > > > > >> > > > > > Your best shot would be to submit a PR on GitHub which > includes > >> a > >> > unit > >> > > > > test > >> > > > > > that exercises the new code. > >> > > > > > > >> > > > > > https://github.com/apache/commons-collections > >> > > > > > > >> > > > > > Thank you, > >> > > > > > Gary > >> > > > > > > >> > > > > > On Wed, Sep 5, 2018 at 10:12 AM Maxim Solodovnik < > >> > [email protected]> > >> > > > > > wrote: > >> > > > > > > >> > > > > > > Would it be possible to modify the code of > >> > AbstractReferenceMap.java as > >> > > > > > > follows? > >> > > > > > > > >> > > > > > > > >> > > > > > > diff --git > >> > > > > > > > >> > > > > > > > >> > > > > > >> > > >> > a/src/main/java/org/apache/commons/collections4/map/AbstractReferenceMap.java > >> > > > > > > > >> > > > > > > > >> > > > > > >> > > >> > b/src/main/java/org/apache/commons/collections4/map/AbstractReferenceMap.java > >> > > > > > > index 0eda632f..81f60b4b 100644 > >> > > > > > > --- > >> > > > > > > > >> > > > > > > > >> > > > > > >> > > >> > a/src/main/java/org/apache/commons/collections4/map/AbstractReferenceMap.java > >> > > > > > > +++ > >> > > > > > > > >> > > > > > > > >> > > > > > >> > > >> > b/src/main/java/org/apache/commons/collections4/map/AbstractReferenceMap.java > >> > > > > > > @@ -400,13 +400,15 @@ public abstract class > >> > AbstractReferenceMap<K, V> > >> > > > > > > extends AbstractHashedMap<K, V> > >> > > > > > > HashEntry<K, V> previous = null; > >> > > > > > > HashEntry<K, V> entry = data[index]; > >> > > > > > > while (entry != null) { > >> > > > > > > - if (((ReferenceEntry<K, V>) entry).purge(ref)) > { > >> > > > > > > + ReferenceEntry<K, V> refEntry = > >> (ReferenceEntry<K, > >> > V>) > >> > > > > entry; > >> > > > > > > + if (refEntry.purge(ref)) { > >> > > > > > > if (previous == null) { > >> > > > > > > data[index] = entry.next; > >> > > > > > > } else { > >> > > > > > > previous.next = entry.next; > >> > > > > > > } > >> > > > > > > this.size--; > >> > > > > > > + refEntry.onPurge(); > >> > > > > > > return; > >> > > > > > > } > >> > > > > > > previous = entry; > >> > > > > > > @@ -721,12 +723,15 @@ public abstract class > >> > AbstractReferenceMap<K, V> > >> > > > > > > extends AbstractHashedMap<K, V> > >> > > > > > > throw new Error(); > >> > > > > > > } > >> > > > > > > > >> > > > > > > + protected void onPurge() { > >> > > > > > > + } > >> > > > > > > + > >> > > > > > > /** > >> > > > > > > * Purges the specified reference > >> > > > > > > * @param ref the reference to purge > >> > > > > > > * @return true or false > >> > > > > > > */ > >> > > > > > > - boolean purge(final Reference<?> ref) { > >> > > > > > > + protected boolean purge(final Reference<?> ref) { > >> > > > > > > boolean r = parent.keyType != > >> > ReferenceStrength.HARD && > >> > > > > key == > >> > > > > > > ref; > >> > > > > > > r = r || parent.valueType != > >> ReferenceStrength.HARD > >> > && > >> > > > > value > >> > > > > > > == ref; > >> > > > > > > if (r) { > >> > > > > > > @@ -1073,4 +1078,17 @@ public abstract class > >> > AbstractReferenceMap<K, V> > >> > > > > > > extends AbstractHashedMap<K, V> > >> > > > > > > protected boolean isKeyType(final ReferenceStrength > >> type) { > >> > > > > > > return this.keyType == type; > >> > > > > > > } > >> > > > > > > + > >> > > > > > > + /** > >> > > > > > > + * Provided protected read-only access to the value > type. > >> > > > > > > + * @param type the type to check against. > >> > > > > > > + * @return true if valueType has the specified type > >> > > > > > > + */ > >> > > > > > > + protected boolean isValueType(final ReferenceStrength > >> type) > >> > { > >> > > > > > > + return this.valueType == type; > >> > > > > > > + } > >> > > > > > > + > >> > > > > > > + public boolean isPurgeValues() { > >> > > > > > > + return purgeValues; > >> > > > > > > + } > >> > > > > > > } > >> > > > > > > > >> > > > > > > > >> > > > > > > On Mon, 3 Sep 2018 at 20:08, Maxim Solodovnik < > >> > [email protected]> > >> > > > > > > wrote: > >> > > > > > > > >> > > > > > > > Thanks a lot for the answer, > >> > > > > > > > > >> > > > > > > > OpenJPA ReferenceHashMap overrides purge method to be able > >> to > >> > call > >> > > > > > > > custom methods keyExpired/valueExpired [1] > >> > > > > > > > I see no way to migrate this code without massive > >> copy/paste or > >> > > > > > > reflection > >> > > > > > > > ... > >> > > > > > > > > >> > > > > > > > Maybe you can suggest something? > >> > > > > > > > Or maybe commons-collections API can be enhanced so this > >> task > >> > will be > >> > > > > > > > trivial :) > >> > > > > > > > > >> > > > > > > > > >> > > > > > > > > >> > > > > > > > >> > > > > > >> > > >> > https://github.com/apache/openjpa/blob/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/ReferenceHashMap.java#L138 > >> > > > > > > > > >> > > > > > > > On Mon, 3 Sep 2018 at 20:03, Julio Oliveira > >> > > > > > > > <[email protected]> wrote: > >> > > > > > > > > > >> > > > > > > > > What is realy your problem??.. > >> > > > > > > > > > >> > > > > > > > > On Sat, Sep 1, 2018, 5:46 AM Maxim Solodovnik < > >> > > > > [email protected]> > >> > > > > > > > wrote: > >> > > > > > > > > > >> > > > > > > > > > Hello, > >> > > > > > > > > > > >> > > > > > > > > > I'm trying to migrate code of Apache OpenJPA from > >> > > > > commons-collections > >> > > > > > > > > > to commons-collections4 > >> > > > > > > > > > > >> > > > > > > > > > The only real issue so far with migrating this class > >> > > > > > > > > > > >> > > > > > > > > > > >> > > > > > > > > >> > > > > > > > >> > > > > > >> > > >> > https://github.com/apache/openjpa/blob/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/ReferenceHashMap.java#L112 > >> > > > > > > > > > > >> > > > > > > > > > code of commons-collections4 is more restrictive could > >> you > >> > please > >> > > > > > > > > > suggest how custom purge can be implemented? > >> > > > > > > > > > > >> > > > > > > > > > -- > >> > > > > > > > > > WBR > >> > > > > > > > > > Maxim aka solomax > >> > > > > > > > > > > >> > > > > > > > > > > >> > > > > > >> --------------------------------------------------------------------- > >> > > > > > > > > > To unsubscribe, e-mail: > >> > [email protected] > >> > > > > > > > > > For additional commands, e-mail: > >> > [email protected] > >> > > > > > > > > > > >> > > > > > > > > > > >> > > > > > > > > >> > > > > > > > > >> > > > > > > > > >> > > > > > > > -- > >> > > > > > > > WBR > >> > > > > > > > Maxim aka solomax > >> > > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > -- > >> > > > > > > WBR > >> > > > > > > Maxim aka solomax > >> > > > > > > > >> > > > > > >> > > > > > >> > > > > > >> > > > > -- > >> > > > > WBR > >> > > > > Maxim aka solomax > >> > > > > > >> > > > > > >> --------------------------------------------------------------------- > >> > > > > To unsubscribe, e-mail: [email protected] > >> > > > > For additional commands, e-mail: [email protected] > >> > > > > > >> > > > > > >> > > > >> > > > >> > > > >> > > -- > >> > > WBR > >> > > Maxim aka solomax > >> > > >> > > >> > > >> > -- > >> > WBR > >> > Maxim aka solomax > >> > > >> > >> > >> -- > >> WBR > >> Maxim aka solomax > >> > > > -- WBR Maxim aka solomax
