Author: rombert
Date: Thu Sep 26 20:39:29 2013
New Revision: 1526674

URL: http://svn.apache.org/r1526674
Log:
SLING-3120 - Allow installing/updating the install support bundle from
the servers view

New bundle creation wizard - record the version of the support bundle,
if installed.

Modified:
    
sling/branches/tooling-ide-vlt/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/AbstractNewSlingApplicationWizard.java
    
sling/branches/tooling-ide-vlt/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/SetupServerWizardPage.java

Modified: 
sling/branches/tooling-ide-vlt/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/AbstractNewSlingApplicationWizard.java
URL: 
http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/AbstractNewSlingApplicationWizard.java?rev=1526674&r1=1526673&r2=1526674&view=diff
==============================================================================
--- 
sling/branches/tooling-ide-vlt/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/AbstractNewSlingApplicationWizard.java
 (original)
+++ 
sling/branches/tooling-ide-vlt/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/AbstractNewSlingApplicationWizard.java
 Thu Sep 26 20:39:29 2013
@@ -131,6 +131,9 @@ public abstract class AbstractNewSlingAp
         * using wizard as execution context.
         */
        public boolean performFinish() {
+
+        // TODO - should probably rely on exception handling here
+        final boolean[] success = new boolean[0];
         try {
                        getContainer().run(false, true, new 
IRunnableWithProgress() {
 
@@ -138,14 +141,14 @@ public abstract class AbstractNewSlingAp
                                public void run(IProgressMonitor monitor)
                                                throws 
InvocationTargetException, InterruptedException {
                                        try {
-                                               performFinish(monitor);
+                        success[0] = performFinish(monitor);
                                        } catch (Exception e) {
                         throw new InvocationTargetException(e);
                                        }
                                }
                                
                        });
-                       return true;
+            return success[0];
         } catch (InterruptedException e) {
             Thread.currentThread().interrupt();
                return false;
@@ -170,7 +173,7 @@ public abstract class AbstractNewSlingAp
                if (monitor.isCanceled()) {
                        return false;
                }
-               IServer server = setupServerWizardPage.getOrCreateServer();
+        IServer server = setupServerWizardPage.getOrCreateServer(monitor);
                monitor.worked(1);
         if (monitor.isCanceled() || server == null) {
                        return false;

Modified: 
sling/branches/tooling-ide-vlt/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/SetupServerWizardPage.java
URL: 
http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/SetupServerWizardPage.java?rev=1526674&r1=1526673&r2=1526674&view=diff
==============================================================================
--- 
sling/branches/tooling-ide-vlt/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/SetupServerWizardPage.java
 (original)
+++ 
sling/branches/tooling-ide-vlt/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/SetupServerWizardPage.java
 Thu Sep 26 20:39:29 2013
@@ -18,7 +18,6 @@ package org.apache.sling.ide.eclipse.ui.
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.net.URL;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -32,7 +31,7 @@ import org.apache.sling.ide.osgi.OsgiCli
 import org.apache.sling.ide.osgi.OsgiClientFactory;
 import org.apache.sling.ide.transport.RepositoryInfo;
 import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.KeyEvent;
@@ -285,20 +284,6 @@ public class SetupServerWizardPage exten
         return 
newOsgiClient().getBundleVersion(EmbeddedArtifactLocator.SUPPORT_BUNDLE_SYMBOLIC_NAME);
     }
     
-    private void installToolingSupportBundle() throws OsgiClientException, 
IOException {
-
-        EmbeddedArtifactLocator artifactsLocator = 
Activator.getDefault().getArtifactsLocator();
-        EmbeddedArtifact toolingSupportBundle = 
artifactsLocator.loadToolingSupportBundle();
-
-        InputStream contents = null;
-        try {
-            contents = toolingSupportBundle.openInputStream();
-            newOsgiClient().installBundle(contents, 
toolingSupportBundle.getName());
-        } finally {
-            IOUtils.closeQuietly(contents);
-        }
-    }
-
     private OsgiClient newOsgiClient() {
 
         String hostname = getHostname();
@@ -311,7 +296,7 @@ public class SetupServerWizardPage exten
                 + "/"));
     }
        
-       IServer getOrCreateServer() {
+    IServer getOrCreateServer(IProgressMonitor monitor) {
                if (useExistingServer.getSelection()) {
                        String key = 
existingServerCombo.getItem(existingServerCombo.getSelectionIndex());
                        return serversMap.get(key);
@@ -327,9 +312,9 @@ public class SetupServerWizardPage exten
                                }
                        }
                        
+            Version finalVersion = null;
+                       
                        if (installToolingSupportBundle.getSelection()) {
-                // TODO - read from manifest instead of hardcoding
-                Version ourVersion = new Version(0, 0, 1, "SNAPSHOT");
                 Version installedVersion;
                 try {
                     installedVersion = getToolingSupportBundleVersion();
@@ -337,10 +322,23 @@ public class SetupServerWizardPage exten
                     getWizard().reportError(e);
                     return null;
                 }
+                finalVersion = installedVersion;
+                EmbeddedArtifactLocator artifactsLocator = 
Activator.getDefault().getArtifactsLocator();
+                EmbeddedArtifact toolingSupportBundle = 
artifactsLocator.loadToolingSupportBundle();
+                Version ourVersion = new 
Version(toolingSupportBundle.getVersion());
+
                 if (installedVersion == null || 
ourVersion.compareTo(installedVersion) > 0) {
                                        // then auto-install it if possible
                                        try {
-                        installToolingSupportBundle();
+
+                        InputStream contents = null;
+                        try {
+                            contents = toolingSupportBundle.openInputStream();
+                            newOsgiClient().installBundle(contents, 
toolingSupportBundle.getName());
+                        } finally {
+                            IOUtils.closeQuietly(contents);
+                        }
+                        finalVersion = ourVersion;
                                        } catch (IOException e) {
                         getWizard().reportError(e);
                         return null;
@@ -352,21 +350,25 @@ public class SetupServerWizardPage exten
                        }
                        
                        IRuntimeType serverRuntime = 
ServerCore.findRuntimeType("org.apache.sling.ide.launchpadRuntimeType");
-            // TODO progress monitor
                        try {
                 // TODO pass in username and password
-                               IRuntime runtime = 
serverRuntime.createRuntime(null, new NullProgressMonitor());
-                               runtime = 
runtime.createWorkingCopy().save(true, new NullProgressMonitor());
-                               IServerWorkingCopy wc = 
serverType.createServer(null, null, runtime, new NullProgressMonitor());
+                // TODO there should be a nicer API for creating this, and 
also a central place for defaults
+                IRuntime runtime = serverRuntime.createRuntime(null, monitor);
+                runtime = runtime.createWorkingCopy().save(true, monitor);
+                IServerWorkingCopy wc = serverType.createServer(null, null, 
runtime, monitor);
                                wc.setHost(getHostname());
                                wc.setName(newServerName.getText() + " 
(external)");
                                
wc.setAttribute(ISlingLaunchpadServer.PROP_PORT, getPort());
                                
wc.setAttribute(ISlingLaunchpadServer.PROP_DEBUG_PORT, 
Integer.parseInt(newServerDebugPort.getText()));
                 wc.setAttribute(ISlingLaunchpadServer.PROP_INSTALL_LOCALLY, 
installToolingSupportBundle.getSelection());
-                               wc.setAttribute("auto-publish-setting", 2); // 
2: automatically publish when resources change
-                               wc.setAttribute("auto-publish-time", 0);    // 
0: zero delay after a resource change (and the builder was kicked, I guess)
+                wc.setAttribute("auto-publish-setting", 
ISlingLaunchpadServer.PUBLISH_STATE_RESOURCE_CHANGE);
+                wc.setAttribute("auto-publish-time", 0);
+                if (finalVersion != null) {
+                    
wc.setAttribute(String.format(ISlingLaunchpadServer.PROP_BUNDLE_VERSION_FORMAT,
+                        EmbeddedArtifactLocator.SUPPORT_BUNDLE_SYMBOLIC_NAME), 
finalVersion.toString());
+                }
                                wc.setRuntime(runtime);
-                               return wc.save(true, new NullProgressMonitor());
+                return wc.save(true, monitor);
                        } catch (CoreException e) {
                 getWizard().reportError(e);
                        }


Reply via email to