You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2013/09/27 17:06:33 UTC

svn commit: r1526938 - in /sling/branches/tooling-ide-vlt/tooling/ide: api/src/org/apache/sling/ide/osgi/ api/src/org/apache/sling/ide/osgi/impl/ eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/

Author: rombert
Date: Fri Sep 27 15:06:33 2013
New Revision: 1526938

URL: http://svn.apache.org/r1526938
Log:
SLING-3121 - Deployment of java bundles fails if the maven-sling-plugin
is not declared in the pom

Move local deployment to use the OSGiClient.

Modified:
    sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/osgi/OsgiClient.java
    sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/osgi/impl/HttpOsgiClient.java
    sling/branches/tooling-ide-vlt/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java

Modified: sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/osgi/OsgiClient.java
URL: http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/osgi/OsgiClient.java?rev=1526938&r1=1526937&r2=1526938&view=diff
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/osgi/OsgiClient.java (original)
+++ sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/osgi/OsgiClient.java Fri Sep 27 15:06:33 2013
@@ -30,4 +30,16 @@ public interface OsgiClient {
 
     void installBundle(InputStream in, String fileName) throws OsgiClientException;
 
+    /**
+     * Installs a bundle from a local directory
+     * 
+     * <p>
+     * The Sling launchpad instance must have filesystem access to the specified <tt>explodedBundleLocation</tt>
+     * </p>
+     * 
+     * @param explodedBundleLocation
+     * @throws OsgiClientException
+     */
+    void installLocalBundle(String explodedBundleLocation) throws OsgiClientException;
+
 }
\ No newline at end of file

Modified: sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/osgi/impl/HttpOsgiClient.java
URL: http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/osgi/impl/HttpOsgiClient.java?rev=1526938&r1=1526937&r2=1526938&view=diff
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/osgi/impl/HttpOsgiClient.java (original)
+++ sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/osgi/impl/HttpOsgiClient.java Fri Sep 27 15:06:33 2013
@@ -23,8 +23,6 @@ import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.xml.ws.http.HTTPException;
-
 import org.apache.commons.httpclient.Credentials;
 import org.apache.commons.httpclient.HttpClient;
 import org.apache.commons.httpclient.HttpException;
@@ -138,7 +136,7 @@ public class HttpOsgiClient implements O
 
             int status = getHttpClient().executeMethod(filePost);
             if (status != 200) {
-                throw new HTTPException(status);
+                throw new OsgiClientException("Method execution returned status " + status);
             }
         } catch (IOException e) {
             throw new OsgiClientException(e);
@@ -147,4 +145,27 @@ public class HttpOsgiClient implements O
         }
     }
 
+    @Override
+    public void installLocalBundle(String explodedBundleLocation) throws OsgiClientException {
+
+        if (explodedBundleLocation == null) {
+            throw new IllegalArgumentException("explodedBundleLocation may not be null");
+        }
+
+        PostMethod method = new PostMethod(repositoryInfo.getUrl() + "system/sling/tooling/install");
+        method.addParameter("dir", explodedBundleLocation);
+
+        try {
+            int status = getHttpClient().executeMethod(method);
+            if (status != 200) {
+                throw new OsgiClientException("Method execution returned status " + status);
+            }
+        } catch (IOException e) {
+            throw new OsgiClientException(e);
+        } finally {
+            method.releaseConnection();
+        }
+
+    }
+
 }

Modified: sling/branches/tooling-ide-vlt/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java
URL: http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java?rev=1526938&r1=1526937&r2=1526938&view=diff
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java (original)
+++ sling/branches/tooling-ide-vlt/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java Fri Sep 27 15:06:33 2013
@@ -29,13 +29,6 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.commons.httpclient.Credentials;
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.HttpException;
-import org.apache.commons.httpclient.URIException;
-import org.apache.commons.httpclient.UsernamePasswordCredentials;
-import org.apache.commons.httpclient.auth.AuthScope;
-import org.apache.commons.httpclient.methods.PostMethod;
 import org.apache.commons.io.IOUtils;
 import org.apache.sling.ide.artifacts.EmbeddedArtifactLocator;
 import org.apache.sling.ide.eclipse.core.ISlingLaunchpadServer;
@@ -265,44 +258,29 @@ public class SlingLaunchpadBehaviour ext
             launchConfig.launch(ILaunchManager.RUN_MODE, monitor);
 		} else {
 			monitor.beginTask("deploying via local install", 5);
-	        HttpClient httpClient = new HttpClient();
-	        String hostname = getServer().getHost();
-	        int launchpadPort = getServer().getAttribute(ISlingLaunchpadServer.PROP_PORT, 8080);
-	        PostMethod method = new PostMethod("http://"+hostname+":"+launchpadPort+"/system/sling/tooling/install");
-	        String username = getServer().getAttribute(ISlingLaunchpadServer.PROP_USERNAME, "admin");
-	        String password = getServer().getAttribute(ISlingLaunchpadServer.PROP_PASSWORD, "admin");
-	        String userInfo = username+":"+password;
-	        if (userInfo != null) {
-	        	Credentials c = new UsernamePasswordCredentials(userInfo);
-	        	try {
-					httpClient.getState().setCredentials(
-							new AuthScope(method.getURI().getHost(), method
-									.getURI().getPort()), c);
-				} catch (URIException e) {
-					// TODO proper logging
-					e.printStackTrace();
-				}
-	        }
-	        IJavaProject javaProject = ProjectHelper.asJavaProject(project);
-	        IPath outputLocation = javaProject.getOutputLocation();
-			outputLocation = outputLocation.makeRelativeTo(project.getFullPath());
-	        IPath location = project.getRawLocation();
-	        if (location==null) {
-	        	location = project.getLocation();
-	        }
-			method.addParameter("dir", location.toString() + "/" + outputLocation.toString());
-	        monitor.worked(1);
+
             try {
-				httpClient.executeMethod(method);
-		        monitor.worked(4);
-		        setModulePublishState(module, IServer.PUBLISH_STATE_NONE);
-			} catch (HttpException e) {
-				// TODO proper logging
-				e.printStackTrace();
-			} catch (IOException e) {
-				// TODO proper logging
-				e.printStackTrace();
-			}
+                OsgiClient osgiClient = Activator.getDefault().getOsgiClientFactory()
+                        .createOsgiClient(ServerUtil.getRepositoryInfo(getServer(), monitor));
+
+                IJavaProject javaProject = ProjectHelper.asJavaProject(project);
+
+                IPath outputLocation = project.getWorkspace().getRoot().findMember(javaProject.getOutputLocation())
+                        .getLocation();
+                monitor.worked(1);
+
+                osgiClient.installLocalBundle(outputLocation.toOSString());
+                monitor.worked(4);
+                setModulePublishState(module, IServer.PUBLISH_STATE_NONE);
+
+            } catch (URISyntaxException e1) {
+                throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e1.getMessage(), e1));
+            } catch (OsgiClientException e1) {
+                throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Failed installing bundle : "
+                        + e1.getMessage(), e1));
+            } finally {
+                monitor.done();
+            }
 		}
 	}