[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