[jbosstools-commits] JBoss Tools SVN: r22984 - trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal.
jbosstools-commits at lists.jboss.org
jbosstools-commits at lists.jboss.org
Thu Jun 24 06:12:39 EDT 2010
Author: scabanovich
Date: 2010-06-24 06:12:38 -0400 (Thu, 24 Jun 2010)
New Revision: 22984
Modified:
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/KbProject.java
Log:
https://jira.jboss.org/browse/JBIDE-6519
Modified: trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/KbProject.java
===================================================================
--- trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/KbProject.java 2010-06-24 10:06:26 UTC (rev 22983)
+++ trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/KbProject.java 2010-06-24 10:12:38 UTC (rev 22984)
@@ -712,6 +712,7 @@
}
}
+ private Set<IPath> sourcesInRegistering = new HashSet<IPath>();
/**
*
* @param ds
@@ -721,15 +722,29 @@
public void registerComponentsInDependentProjects(LoadedDeclarations ds, IPath source) throws CloneNotSupportedException {
if(usedBy.isEmpty()) return;
if(EclipseResourceUtil.isJar(source.toString())) return;
+
+ if(sourcesInRegistering.contains(source)) {
+ return;
+ }
+ synchronized (sourcesInRegistering) {
+ sourcesInRegistering.add(source);
+ }
- KbProject[] ps = getDependentKbProjects();
- for (KbProject p : ps) {
- p.resolve();
- LoadedDeclarations ds1 = new LoadedDeclarations();
- for (ITagLibrary f : ds.getLibraries()) {
- ds1.getLibraries().add(f.clone());
+ try {
+ KbProject[] ps = getDependentKbProjects();
+ for (KbProject p : ps) {
+ if(p.sourcesInRegistering.contains(source)) continue;
+ p.resolve();
+ LoadedDeclarations ds1 = new LoadedDeclarations();
+ for (ITagLibrary f : ds.getLibraries()) {
+ ds1.getLibraries().add(f.clone());
+ }
+ p.registerComponents(ds1, source);
}
- p.registerComponents(ds1, source);
+ } finally {
+ synchronized (sourcesInRegistering) {
+ sourcesInRegistering.remove(source);
+ }
}
}
More information about the jbosstools-commits
mailing list