[
https://issues.jboss.org/browse/JBMETA-325?page=com.atlassian.jira.plugin...
]
jaikiran pai resolved JBMETA-325.
---------------------------------
Fix Version/s: jboss-metadata-common-2.0.0-alpha-24
Resolution: Done
AbstractMappedMetaData.remove doesn't remove the entry
------------------------------------------------------
Key: JBMETA-325
URL:
https://issues.jboss.org/browse/JBMETA-325
Project: JBoss Metadata
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: common
Affects Versions: jboss-metadata-common-2.0.0-alpha-23
Reporter: jaikiran pai
Assignee: jaikiran pai
Fix For: jboss-metadata-common-2.0.0-alpha-24
Consider this:
DataSourcesMetaData dataSources = new DataSourcesMetaData();
DataSourceMetaData ds1 = new DataSourceMetaData();
ds1.setName("ds1");
dataSources.add(ds1);
and then doing:
boolean removed = dataSources.remove(ds1);
returns false and the entry isn't removed. This is due to a bug in
AbstractMappedMetaData.remove which has this:
public boolean remove(Object o)
{
if (o == null)
throw new IllegalArgumentException("Null object");
if (o instanceof MappableMetaData)
return false;
if (map == null)
return false;
MappableMetaData m = (MappableMetaData) o;
String key = m.getKey();
MappableMetaData v = map.get(key);
if (m.equals(v))
{
T result = map.remove(key);
if (result != null)
{
removeNotification(result);
return true;
}
}
return false;
}
the:
if (o instanceof MappableMetaData)
return false;
should have been:
if (!(o instanceof MappableMetaData))
return false;
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira