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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to