Author: scabanovich
Date: 2011-12-08 18:17:41 -0500 (Thu, 08 Dec 2011)
New Revision: 37133
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDICoreNature.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDICorePlugin.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDIUtil.java
Log:
JBIDE-10330
https://issues.jboss.org/browse/JBIDE-10330
Provided loading of stored project dependencies at Eclipse restart.
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDICoreNature.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDICoreNature.java 2011-12-08
21:40:32 UTC (rev 37132)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDICoreNature.java 2011-12-08
23:17:41 UTC (rev 37133)
@@ -295,7 +295,6 @@
}
-
public void addCDIProject(final CDICoreNature p) {
if(dependsOn.contains(p)) return;
addUsedCDIProject(p);
@@ -561,10 +560,24 @@
public void reloadProjectDependencies() {
dependsOn.clear();
usedBy.clear();
+ synchronized (this) {
+ projectDependenciesLoaded = false;
+ }
loadProjectDependenciesFromKBProject();
}
+ boolean projectDependenciesLoaded = false;
+
+ public void loadProjectDependencies() {
+ loadProjectDependenciesFromKBProject();
+ }
+
private void loadProjectDependenciesFromKBProject() {
+ if(projectDependenciesLoaded) return;
+ synchronized(this) {
+ if(projectDependenciesLoaded) return;
+ projectDependenciesLoaded = true;
+ }
Element root = null;
File file = getKBStorageFile();
if(file != null && file.isFile()) {
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDICorePlugin.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDICorePlugin.java 2011-12-08
21:40:32 UTC (rev 37132)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDICorePlugin.java 2011-12-08
23:17:41 UTC (rev 37133)
@@ -104,7 +104,11 @@
CDICoreNature n = null;
try {
n = (CDICoreNature)project.getNature(CDICoreNature.NATURE_ID);
- if(resolve) n.resolve();
+ if(resolve) {
+ n.resolve();
+ } else {
+ n.loadProjectDependencies();
+ }
} catch (CoreException e) {
getDefault().logError(e);
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDIUtil.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDIUtil.java 2011-12-08
21:40:32 UTC (rev 37132)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDIUtil.java 2011-12-08
23:17:41 UTC (rev 37133)
@@ -17,6 +17,7 @@
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -54,6 +55,7 @@
import org.eclipse.wst.common.project.facet.core.IFacetedProject;
import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
+import org.jboss.tools.cdi.internal.core.impl.CDIProject;
import org.jboss.tools.cdi.internal.core.impl.ClassBean;
import org.jboss.tools.cdi.internal.core.validation.AnnotationValidationDelegate;
import org.jboss.tools.cdi.internal.core.validation.CDICoreValidator;
@@ -946,7 +948,20 @@
*/
public static CDICoreNature getCDINatureWithProgress(final IProject project){
final CDICoreNature cdiNature = CDICorePlugin.getCDI(project, false);
- if(cdiNature != null && !cdiNature.isStorageResolved()){
+ if(cdiNature == null) {
+ return null;
+ }
+ boolean resolved = cdiNature.isStorageResolved();
+ if(resolved) {
+ Set<CDICoreNature> ps = cdiNature.getCDIProjects(true);
+ for (CDICoreNature p: ps) {
+ if(!p.isStorageResolved()) {
+ resolved = false;
+ break;
+ }
+ }
+ }
+ if(!resolved){
if (Display.getCurrent() != null) {
try{
PlatformUI.getWorkbench().getProgressService().busyCursorWhile(new
IRunnableWithProgress(){
@@ -955,7 +970,21 @@
monitor.beginTask(CDICoreMessages.CDI_UTIL_BUILD_CDI_MODEL, 10);
monitor.worked(3);
cdiNature.resolve();
- monitor.worked(7);
+ Set<CDICoreNature> ps = cdiNature.getCDIProjects(true);
+ Iterator<CDICoreNature> it = ps.iterator();
+ while(it.hasNext()) {
+ CDICoreNature n = it.next();
+ if(n.isStorageResolved()) it.remove();
+ }
+ if(ps.isEmpty()) {
+ monitor.worked(7);
+ } else {
+ int delta = (ps.size() == 1) ? 7 : ps.size() == 2 ? 3 : ps.size() == 3 ? 2 : 1;
+ for (CDICoreNature p: ps) {
+ p.resolve();
+ monitor.worked(delta);
+ }
+ }
}
});
}catch(InterruptedException ie){