[328785] Tag library functionality is broken when same library used in multiple projects
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 03501be..e727140 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
@@ -2196,8 +2196,22 @@
// XXX: runs on folders as well?!
libraryRecord = createJARRecord(libraryLocation);
synchronized (libraryRecord) {
- if (libraryRecord.isConsistent)
+ if (libraryRecord.isConsistent) {
+ // Library loaded by another Project Description, initialize our references from the existing
+ fClasspathJars.put(libraryLocation, libraryRecord);
+ Iterator records = libraryRecord.urlRecords.iterator();
+ while (records.hasNext()) {
+ URLRecord record = (URLRecord)records.next();
+ int urlDeltaKind = ITaglibIndexDelta.ADDED;
+ if (fClasspathReferences.containsKey(record.getURI())) {
+ urlDeltaKind = ITaglibIndexDelta.CHANGED;
+ }
+ fClasspathReferences.put(record.getURI(), record);
+ TaglibIndex.getInstance().addDelta(new TaglibIndexDelta(fProject, record, urlDeltaKind));
+ fClasspathReferences.put(record.info.uri, record);
+ }
return;
+ }
libraryRecord.isExported = isExported;
fClasspathJars.put(libraryLocation, libraryRecord);