[jbosstools-commits] JBoss Tools SVN: r22944 - trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core.
jbosstools-commits at lists.jboss.org
jbosstools-commits at lists.jboss.org
Wed Jun 23 08:32:17 EDT 2010
Author: scabanovich
Date: 2010-06-23 08:32:17 -0400 (Wed, 23 Jun 2010)
New Revision: 22944
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamProject.java
Log:
https://jira.jboss.org/browse/JBIDE-6519
Modified: trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamProject.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamProject.java 2010-06-23 12:08:39 UTC (rev 22943)
+++ trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamProject.java 2010-06-23 12:32:17 UTC (rev 22944)
@@ -1023,7 +1023,8 @@
}
return null;
}
-
+
+ private Set<IPath> sourcesInRegistering = new HashSet<IPath>();
/**
*
* @param ds
@@ -1033,21 +1034,35 @@
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);
+ }
- for (SeamProject p : usedBy) {
- p.resolve();
- LoadedDeclarations ds1 = new LoadedDeclarations();
- for (ISeamNamespace n: ds.getNamespaces()) {
- ds1.getNamespaces().add(n); //no need to clone, it is read-only.
+ try {
+ for (SeamProject p : usedBy) {
+ if(p.sourcesInRegistering.contains(source)) continue;
+ p.resolve();
+ LoadedDeclarations ds1 = new LoadedDeclarations();
+ for (ISeamNamespace n: ds.getNamespaces()) {
+ ds1.getNamespaces().add(n); //no need to clone, it is read-only.
+ }
+ for (ISeamComponentDeclaration d: ds.getComponents()) {
+ ds1.getComponents().add(d.clone());
+ }
+ for (ISeamFactory f : ds.getFactories()) {
+ ds1.getFactories().add(f.clone());
+ }
+ ds1.getImports().addAll(ds.getImports());
+ p.registerComponents(ds1, source);
}
- for (ISeamComponentDeclaration d: ds.getComponents()) {
- ds1.getComponents().add(d.clone());
+ } finally {
+ synchronized (sourcesInRegistering) {
+ sourcesInRegistering.remove(source);
}
- for (ISeamFactory f : ds.getFactories()) {
- ds1.getFactories().add(f.clone());
- }
- ds1.getImports().addAll(ds.getImports());
- p.registerComponents(ds1, source);
}
}
More information about the jbosstools-commits
mailing list