You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by "Matt Bishop (JIRA)" <ji...@apache.org> on 2006/07/18 19:43:14 UTC

[jira] Created: (COLLECTIONS-217) Flat3Map.Entry.setValue() overwrites other Entry values

Flat3Map.Entry.setValue() overwrites other Entry values
-------------------------------------------------------

                 Key: COLLECTIONS-217
                 URL: http://issues.apache.org/jira/browse/COLLECTIONS-217
             Project: Commons Collections
          Issue Type: Bug
          Components: Bag
    Affects Versions: 3.2
         Environment: JDK 1.4, WinXP
            Reporter: Matt Bishop
            Priority: Critical


Flat3Map's Entry objects will overwrite other Entry's values if Entry.setValue() is called on one.  It should only overwrite the Entry at hand.

I've looked at the source, and the case statement incorrectly falls through, rather than returning like it should:

Flat3Map.java, lines 646-660:

        public Object setValue(Object value) {
            if (canRemove == false) {
                throw new IllegalStateException(AbstractHashedMap.SETVALUE_INVALID);
            }
            Object old = getValue();
            switch (nextIndex) {
                case 3: 
                    parent.value3 = value;
                case 2:
                    parent.value2 = value;
                case 1:
                    parent.value1 = value;
            }
            return old;
        }

With this code, if I set the value of the third item in the EntrySet, then all three values are set to the new value.


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


[jira] Closed: (COLLECTIONS-217) Flat3Map.Entry.setValue() overwrites other Entry values

Posted by "Stephen Colebourne (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/jira/browse/COLLECTIONS-217?page=all ]

Stephen Colebourne closed COLLECTIONS-217.
------------------------------------------

    Resolution: Fixed

Fixed in revision 423264

> Flat3Map.Entry.setValue() overwrites other Entry values
> -------------------------------------------------------
>
>                 Key: COLLECTIONS-217
>                 URL: http://issues.apache.org/jira/browse/COLLECTIONS-217
>             Project: Commons Collections
>          Issue Type: Bug
>          Components: Map
>    Affects Versions: 3.2
>         Environment: JDK 1.4, WinXP
>            Reporter: Matt Bishop
>         Assigned To: Stephen Colebourne
>            Priority: Critical
>             Fix For: 3.3
>
>
> Flat3Map's Entry objects will overwrite other Entry's values if Entry.setValue() is called on one.  It should only overwrite the Entry at hand.
> I've looked at the source, and the case statement incorrectly falls through, rather than returning like it should:
> Flat3Map.java, lines 646-660:
>         public Object setValue(Object value) {
>             if (canRemove == false) {
>                 throw new IllegalStateException(AbstractHashedMap.SETVALUE_INVALID);
>             }
>             Object old = getValue();
>             switch (nextIndex) {
>                 case 3: 
>                     parent.value3 = value;
>                 case 2:
>                     parent.value2 = value;
>                 case 1:
>                     parent.value1 = value;
>             }
>             return old;
>         }
> With this code, if I set the value of the third item in the EntrySet, then all three values are set to the new value.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


[jira] Commented: (COLLECTIONS-217) Flat3Map.Entry.setValue() overwrites other Entry values

Posted by "Matt Bishop (JIRA)" <ji...@apache.org>.
    [ http://issues.apache.org/jira/browse/COLLECTIONS-217?page=comments#action_12421938 ] 
            
Matt Bishop commented on COLLECTIONS-217:
-----------------------------------------

This should really be the Map component, but I don't have edit rights.

> Flat3Map.Entry.setValue() overwrites other Entry values
> -------------------------------------------------------
>
>                 Key: COLLECTIONS-217
>                 URL: http://issues.apache.org/jira/browse/COLLECTIONS-217
>             Project: Commons Collections
>          Issue Type: Bug
>          Components: Bag
>    Affects Versions: 3.2
>         Environment: JDK 1.4, WinXP
>            Reporter: Matt Bishop
>            Priority: Critical
>
> Flat3Map's Entry objects will overwrite other Entry's values if Entry.setValue() is called on one.  It should only overwrite the Entry at hand.
> I've looked at the source, and the case statement incorrectly falls through, rather than returning like it should:
> Flat3Map.java, lines 646-660:
>         public Object setValue(Object value) {
>             if (canRemove == false) {
>                 throw new IllegalStateException(AbstractHashedMap.SETVALUE_INVALID);
>             }
>             Object old = getValue();
>             switch (nextIndex) {
>                 case 3: 
>                     parent.value3 = value;
>                 case 2:
>                     parent.value2 = value;
>                 case 1:
>                     parent.value1 = value;
>             }
>             return old;
>         }
> With this code, if I set the value of the third item in the EntrySet, then all three values are set to the new value.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


[jira] Updated: (COLLECTIONS-217) Flat3Map.Entry.setValue() overwrites other Entry values

Posted by "Stephen Colebourne (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/jira/browse/COLLECTIONS-217?page=all ]

Stephen Colebourne updated COLLECTIONS-217:
-------------------------------------------

      Component/s: Map
                       (was: Bag)
    Fix Version/s: 3.3
         Assignee: Stephen Colebourne

> Flat3Map.Entry.setValue() overwrites other Entry values
> -------------------------------------------------------
>
>                 Key: COLLECTIONS-217
>                 URL: http://issues.apache.org/jira/browse/COLLECTIONS-217
>             Project: Commons Collections
>          Issue Type: Bug
>          Components: Map
>    Affects Versions: 3.2
>         Environment: JDK 1.4, WinXP
>            Reporter: Matt Bishop
>         Assigned To: Stephen Colebourne
>            Priority: Critical
>             Fix For: 3.3
>
>
> Flat3Map's Entry objects will overwrite other Entry's values if Entry.setValue() is called on one.  It should only overwrite the Entry at hand.
> I've looked at the source, and the case statement incorrectly falls through, rather than returning like it should:
> Flat3Map.java, lines 646-660:
>         public Object setValue(Object value) {
>             if (canRemove == false) {
>                 throw new IllegalStateException(AbstractHashedMap.SETVALUE_INVALID);
>             }
>             Object old = getValue();
>             switch (nextIndex) {
>                 case 3: 
>                     parent.value3 = value;
>                 case 2:
>                     parent.value2 = value;
>                 case 1:
>                     parent.value1 = value;
>             }
>             return old;
>         }
> With this code, if I set the value of the third item in the EntrySet, then all three values are set to the new value.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org