You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2010/03/23 22:22:52 UTC

svn commit: r926790 - /tuscany/sandbox/rfeng/eclipse-workspace/src/main/java/org/apache/tuscany/eclipse/workspace/WorkspaceConfigurator.java

Author: rfeng
Date: Tue Mar 23 21:22:52 2010
New Revision: 926790

URL: http://svn.apache.org/viewvc?rev=926790&view=rev
Log:
Schedule the target definition job

Modified:
    tuscany/sandbox/rfeng/eclipse-workspace/src/main/java/org/apache/tuscany/eclipse/workspace/WorkspaceConfigurator.java

Modified: tuscany/sandbox/rfeng/eclipse-workspace/src/main/java/org/apache/tuscany/eclipse/workspace/WorkspaceConfigurator.java
URL: http://svn.apache.org/viewvc/tuscany/sandbox/rfeng/eclipse-workspace/src/main/java/org/apache/tuscany/eclipse/workspace/WorkspaceConfigurator.java?rev=926790&r1=926789&r2=926790&view=diff
==============================================================================
--- tuscany/sandbox/rfeng/eclipse-workspace/src/main/java/org/apache/tuscany/eclipse/workspace/WorkspaceConfigurator.java (original)
+++ tuscany/sandbox/rfeng/eclipse-workspace/src/main/java/org/apache/tuscany/eclipse/workspace/WorkspaceConfigurator.java Tue Mar 23 21:22:52 2010
@@ -35,7 +35,6 @@ import org.eclipse.core.resources.IMarke
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IProjectDescription;
 import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceVisitor;
 import org.eclipse.core.resources.IWorkspace;
 import org.eclipse.core.resources.IWorkspaceRoot;
 import org.eclipse.core.resources.IncrementalProjectBuilder;
@@ -45,6 +44,9 @@ import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.jobs.IJobChangeEvent;
+import org.eclipse.core.runtime.jobs.IJobChangeListener;
+import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.equinox.app.IApplication;
 import org.eclipse.equinox.app.IApplicationContext;
 import org.eclipse.jdt.core.JavaCore;
@@ -66,6 +68,7 @@ public class WorkspaceConfigurator imple
     private static final String M2_REPO = "M2_REPO";
 
     private IWorkspace workspace;
+    private final Object lock = new Object();
 
     public Object start(final IApplicationContext appcontext) throws Exception {
         IProgressMonitor monitor = createMonitor();
@@ -74,12 +77,15 @@ public class WorkspaceConfigurator imple
         configureJDT();
         setM2REPOClassPathVariable(args, monitor);
         setTargetPlatform(args, monitor);
+        synchronized (lock) {
+            lock.wait(60000);
+        }
         configureWorkspace(args, monitor);
         return EXIT_OK;
     }
 
-    private void setTargetPlatform(String args[], IProgressMonitor monitor) throws FileNotFoundException, CoreException,
-        ParserConfigurationException, SAXException, IOException {
+    private void setTargetPlatform(String args[], IProgressMonitor monitor) throws FileNotFoundException,
+        CoreException, ParserConfigurationException, SAXException, IOException {
         String targetFile = getOptionValue(args, TARGET_DEFINITION);
         if (targetFile == null) {
             return;
@@ -96,7 +102,39 @@ public class WorkspaceConfigurator imple
             is.close();
         }
         LoadTargetDefinitionJob job = new LoadTargetDefinitionJob(th.getTargetDefinition());
-        job.run(monitor);
+        Job.getJobManager().cancel("LoadTargetDefinitionJob");
+        job.setUser(true);
+        job.addJobChangeListener(new IJobChangeListener() {
+
+            @Override
+            public void sleeping(IJobChangeEvent event) {
+            }
+
+            @Override
+            public void scheduled(IJobChangeEvent event) {
+            }
+
+            @Override
+            public void running(IJobChangeEvent event) {
+            }
+
+            @Override
+            public void done(IJobChangeEvent event) {
+                print("Target platform is now configured. (" + event.getResult() + ")");
+                synchronized (lock) {
+                    lock.notifyAll();
+                }
+            }
+
+            @Override
+            public void awake(IJobChangeEvent event) {
+            }
+
+            @Override
+            public void aboutToRun(IJobChangeEvent event) {
+            }
+        });
+        job.schedule();
     }
 
     private IProgressMonitor createMonitor() {
@@ -143,9 +181,7 @@ public class WorkspaceConfigurator imple
             sourceRoot = new File(sourceRootArg);
         }
 
-        if (sourceRoot != null) {
-            importProjects(sourceRoot, monitor);
-        }
+        configureProjects(sourceRoot, monitor);
 
         // cleanProjects(monitor);
         buildWorkspace(monitor);
@@ -169,12 +205,13 @@ public class WorkspaceConfigurator imple
         this.workspace = null;
     }
 
-    private void importProjects(File sourceRoot, final IProgressMonitor monitor) throws Exception {
+    private void configureProjects(File sourceRoot, final IProgressMonitor monitor) throws Exception {
         IWorkspaceRoot workspaceRoot = workspace.getRoot();
 
         loadProjects(sourceRoot, monitor);
 
         for (IProject p : workspaceRoot.getProjects()) {
+            print("Refreshing project: " + p.getName());
             if (!p.isOpen()) {
                 // Open the project
                 p.open(monitor);
@@ -187,7 +224,9 @@ public class WorkspaceConfigurator imple
                 p.delete(false, true, monitor);
             }
         }
-        
+
+        // If we set .svn to private member, the svn plugin will not bind the project
+        /*
         workspaceRoot.accept(new IResourceVisitor() {
 
             public boolean visit(IResource res) throws CoreException {
@@ -200,6 +239,7 @@ public class WorkspaceConfigurator imple
                 return true;
             }
         });
+        */
 
     }
 
@@ -217,6 +257,9 @@ public class WorkspaceConfigurator imple
     }
 
     private void loadProjects(File sourceRoot, final IProgressMonitor monitor) throws CoreException {
+        if (sourceRoot == null) {
+            return;
+        }
         if (sourceRoot.isDirectory()) {
             File dotProject = new File(sourceRoot, ".project");
             if (dotProject.exists() && dotProject.isFile()) {
@@ -245,7 +288,8 @@ public class WorkspaceConfigurator imple
     }
 
     private void buildWorkspace(IProgressMonitor monitor) throws Exception {
-        print("Running a full build...");
+        print("Running a clean/full build...");
+        workspace.build(IncrementalProjectBuilder.CLEAN_BUILD, monitor);
         workspace.build(IncrementalProjectBuilder.FULL_BUILD, monitor);
 
         reportErrors();