[345778] Duplicate tld entries in taglib index
diff --git a/bundles/org.eclipse.jst.jsp.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.jsp.core/META-INF/MANIFEST.MF index 929ba6d..298ab92 100644 --- a/bundles/org.eclipse.jst.jsp.core/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.jst.jsp.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.jst.jsp.core; singleton:=true -Bundle-Version: 1.2.305.qualifier +Bundle-Version: 1.2.306.qualifier Bundle-Activator: org.eclipse.jst.jsp.core.internal.JSPCorePlugin Bundle-Vendor: %providerName Bundle-Localization: plugin
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ProjectDescription.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ProjectDescription.java index 24b3471..79c2261 100644 --- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ProjectDescription.java +++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ProjectDescription.java
@@ -239,7 +239,7 @@ boolean isMappedInWebXML; boolean isConsistent = false; IPath location; - List urlRecords; + Collection urlRecords; public boolean equals(Object obj) { if (!(obj instanceof JarRecord)) @@ -280,7 +280,7 @@ return info.uri; } - public List getURLRecords() { + public Collection getURLRecords() { return urlRecords; } @@ -289,8 +289,8 @@ s.append(location); if (urlRecords.size() > 0) { s.append('\n');//$NON-NLS-1$ - for (int i = 0; i < urlRecords.size(); i++) { - s.append(urlRecords.get(i)); + for (Iterator it = urlRecords.iterator(); it.hasNext();) { + s.append(it.next()); s.append('\n');//$NON-NLS-1$ } } @@ -361,7 +361,7 @@ public boolean equals(Object obj) { if (!(obj instanceof TaglibInfo)) return false; - return ((TaglibInfo) obj).jspVersion == jspVersion && ((TaglibInfo) obj).description.equals(description) && ((TaglibInfo) obj).largeIcon.equals(largeIcon) && ((TaglibInfo) obj).shortName.equals(shortName) && ((TaglibInfo) obj).smallIcon.equals(smallIcon) && ((TaglibInfo) obj).tlibVersion.equals(tlibVersion) && ((TaglibInfo) obj).uri.equals(uri); + return ((TaglibInfo) obj).jspVersion.equals(jspVersion) && ((TaglibInfo) obj).description.equals(description) && ((TaglibInfo) obj).largeIcon.equals(largeIcon) && ((TaglibInfo) obj).shortName.equals(shortName) && ((TaglibInfo) obj).smallIcon.equals(smallIcon) && ((TaglibInfo) obj).tlibVersion.equals(tlibVersion) && ((TaglibInfo) obj).uri.equals(uri); } public String getDescription() { @@ -459,6 +459,10 @@ return ((URLRecord) obj).baseLocation.equals(baseLocation) && ((URLRecord) obj).url.equals(url) && ((URLRecord) obj).info.equals(info); } + public int hashCode() { + return baseLocation.hashCode() + url.hashCode() + (isExported ? 1 : 0); + } + public String getBaseLocation() { return baseLocation; } @@ -902,7 +906,7 @@ record = new JarRecord(); record.info = new TaglibInfo(); record.location = new Path(fileLocation); - record.urlRecords = new ArrayList(); + record.urlRecords = new HashSet(0); fJarRecords.put(fileLocation, record); } return record; @@ -2034,11 +2038,11 @@ InputStream tldStream = JarUtilities.getInputStream(urlRecord.url); if(tldStream != null) { - libraryRecord.urlRecords.add(urlRecord); TaglibInfo info = extractInfo(urlRecord.url.toString(), tldStream); if (info != null) { urlRecord.info = info; } + libraryRecord.urlRecords.add(urlRecord); try { tldStream.close(); }