Artifact artifact = new DefaultArtifact(_mrid, _pubdate, artifactName, type, ext, ExtendableItemHelper.getExtraAttributes(attributes, new String[] {"name", "type", "ext", "status"}));
Artifact artifact = new DefaultArtifact(_mrid, _pubdate, artifactName, type, ext, ExtendableItemHelper.getExtraAttributes(attributes, "extra-"));
                public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {                    if ("module".equals(qName)) {                        _organisation = attributes.getValue("organisation");                        _module = attributes.getValue("name");                    } else if ("revision".equals(qName)) {                        _revisionArtifacts = new ArrayList();                        _revision = attributes.getValue("name");                        _default = Boolean.valueOf(attributes.getValue("default")).booleanValue();                        // retrieve position from file. If no position is found, it may be an old report generated with a previous version,                        // in which case, we put it at the last position                        String pos = attributes.getValue("position");                        _position = pos == null ? getMaxPos()+1 : Integer.valueOf(pos).intValue();                        if (attributes.getValue("error") != null || attributes.getValue("evicted") != null) {                            _skip = true;                        } else {                            _revisionsMap.put(new Integer(_position), _revisionArtifacts);	                        _mrid = ModuleRevisionId.newInstance(_organisation, _module, _revision,                                     ExtendableItemHelper.getExtraAttributes(attributes, new String[] {"position", "name", "default", "evicted", "error", "pubdate", "conf", "searched", "downloaded", "resolver", "artresolver", "status", "homepage"}));							_mrids.add(_mrid);                            if (_default) {                                _defaultMrids.add(_mrid);                            } else {                                _realMrids.add(_mrid);                            }                            try {                                _pubdate = Ivy.DATE_FORMAT.parse(attributes.getValue("pubdate"));                                _skip = false;                            } catch (ParseException e) {                                throw new IllegalArgumentException("invalid publication date for "+_organisation+" "+_module+" "+_revision+": "+attributes.getValue("pubdate"));                            }                        }                    } else if ("artifact".equals(qName)) {                        if (_skip) {                            return;                        }                        String status = attributes.getValue("status");                        if (status != null && "failed".equals(status)) {                            return;                        }                        String artifactName = attributes.getValue("name");                        String type = attributes.getValue("type");                        String ext = attributes.getValue("ext");						Artifact artifact = new DefaultArtifact(_mrid, _pubdate, artifactName, type, ext, ExtendableItemHelper.getExtraAttributes(attributes, new String[] {"name", "type", "ext", "status"}));                        _revisionArtifacts.add(artifact);                    }                }