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 2016/02/17 23:24:17 UTC

svn commit: r1730958 - in /sling/trunk/tooling/ide: eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/ eclipse-core/src/org/apache/sling/ide/eclipse/core/launch/ eclipse-m2e-core/META-INF/ eclipse-m2e-core/src/org/apache/sling/ide/eclipse/m2e...

Author: rombert
Date: Wed Feb 17 22:24:17 2016
New Revision: 1730958

URL: http://svn.apache.org/viewvc?rev=1730958&view=rev
Log:
SLING-3605 - Debug based on bundles deployed on the server 

Resolve source artifacts using Maven.

Modified:
    sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/JVMDebuggerConnection.java
    sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/launch/SourceReferenceResolver.java
    sling/trunk/tooling/ide/eclipse-m2e-core/META-INF/MANIFEST.MF
    sling/trunk/tooling/ide/eclipse-m2e-core/src/org/apache/sling/ide/eclipse/m2e/core/internal/launch/MavenSourceReferenceResolver.java

Modified: sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/JVMDebuggerConnection.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/JVMDebuggerConnection.java?rev=1730958&r1=1730957&r2=1730958&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/JVMDebuggerConnection.java (original)
+++ sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/JVMDebuggerConnection.java Wed Feb 17 22:24:17 2016
@@ -16,7 +16,6 @@
  */
 package org.apache.sling.ide.eclipse.core.internal;
 
-import java.io.File;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -25,16 +24,12 @@ import java.util.Map;
 import org.apache.sling.ide.eclipse.core.ISlingLaunchpadConfiguration;
 import org.apache.sling.ide.eclipse.core.ISlingLaunchpadServer;
 import org.apache.sling.ide.eclipse.core.launch.SourceReferenceResolver;
-import org.apache.sling.ide.osgi.MavenSourceReference;
 import org.apache.sling.ide.osgi.OsgiClient;
 import org.apache.sling.ide.osgi.OsgiClientException;
 import org.apache.sling.ide.osgi.SourceReference;
-import org.apache.sling.ide.osgi.SourceReference.Type;
 import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.debug.core.DebugException;
 import org.eclipse.debug.core.DebugPlugin;
@@ -113,9 +108,14 @@ public class JVMDebuggerConnection {
         if ( resolver != null ) {
             try {
                 for ( SourceReference reference :  osgiClient.findSourceReferences() ) {
-                    IRuntimeClasspathEntry classpathEntry = resolver.resolve(reference);
-                    if ( classpathEntry != null ) {
-                        classpathEntries.add(classpathEntry);
+                    try {
+                        IRuntimeClasspathEntry classpathEntry = resolver.resolve(reference);
+                        if ( classpathEntry != null ) {
+                            classpathEntries.add(classpathEntry);
+                        }
+                    } catch (CoreException e) {
+                        // don't fail the debug launch for artifact resolution errors
+                        Activator.getDefault().getPluginLogger().warn("Failed resolving source reference", e);
                     }
                 }
             } catch (OsgiClientException e1) {

Modified: sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/launch/SourceReferenceResolver.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/launch/SourceReferenceResolver.java?rev=1730958&r1=1730957&r2=1730958&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/launch/SourceReferenceResolver.java (original)
+++ sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/launch/SourceReferenceResolver.java Wed Feb 17 22:24:17 2016
@@ -17,6 +17,7 @@
 package org.apache.sling.ide.eclipse.core.launch;
 
 import org.apache.sling.ide.osgi.SourceReference;
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.jdt.launching.IRuntimeClasspathEntry;
 
 /**
@@ -29,6 +30,6 @@ public interface SourceReferenceResolver
      * @param reference the reference, must not be null
      * @return the classspath entry, possibly null
      */
-    IRuntimeClasspathEntry resolve(SourceReference reference);
+    IRuntimeClasspathEntry resolve(SourceReference reference) throws CoreException;
     
 }

Modified: sling/trunk/tooling/ide/eclipse-m2e-core/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-m2e-core/META-INF/MANIFEST.MF?rev=1730958&r1=1730957&r2=1730958&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-m2e-core/META-INF/MANIFEST.MF (original)
+++ sling/trunk/tooling/ide/eclipse-m2e-core/META-INF/MANIFEST.MF Wed Feb 17 22:24:17 2016
@@ -11,3 +11,5 @@ Import-Package: org.apache.sling.ide.ecl
  org.eclipse.core.runtime;version="3.4.0",
  org.eclipse.jdt.launching
 Service-Component: OSGI-INF/MavenSourceReferenceResolver.xml
+Require-Bundle: org.eclipse.m2e.core;bundle-version="1.4.0",
+ org.eclipse.m2e.maven.runtime;bundle-version="1.4.0"

Modified: sling/trunk/tooling/ide/eclipse-m2e-core/src/org/apache/sling/ide/eclipse/m2e/core/internal/launch/MavenSourceReferenceResolver.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-m2e-core/src/org/apache/sling/ide/eclipse/m2e/core/internal/launch/MavenSourceReferenceResolver.java?rev=1730958&r1=1730957&r2=1730958&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-m2e-core/src/org/apache/sling/ide/eclipse/m2e/core/internal/launch/MavenSourceReferenceResolver.java (original)
+++ sling/trunk/tooling/ide/eclipse-m2e-core/src/org/apache/sling/ide/eclipse/m2e/core/internal/launch/MavenSourceReferenceResolver.java Wed Feb 17 22:24:17 2016
@@ -1,41 +1,36 @@
 package org.apache.sling.ide.eclipse.m2e.core.internal.launch;
 
-import java.io.File;
+import java.util.List;
 
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.sling.ide.eclipse.core.launch.SourceReferenceResolver;
 import org.apache.sling.ide.osgi.MavenSourceReference;
 import org.apache.sling.ide.osgi.SourceReference;
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.jdt.launching.IRuntimeClasspathEntry;
 import org.eclipse.jdt.launching.JavaRuntime;
+import org.eclipse.m2e.core.MavenPlugin;
 
 public class MavenSourceReferenceResolver implements SourceReferenceResolver {
     @Override
-    public IRuntimeClasspathEntry resolve(SourceReference reference) {
+    public IRuntimeClasspathEntry resolve(SourceReference reference) throws CoreException {
         if ( reference == null || reference.getType() != SourceReference.Type.MAVEN) {
             return null;
         }
         
         MavenSourceReference sr = (MavenSourceReference) reference;
         
-        // TODO - delegate to m2e and move to eclipse-m2e-core
-        StringBuilder path = new StringBuilder();
-        path.append(System.getProperty("user.home"))
-            .append(File.separator).append(".m2").append(File.separator).append("repository").append(File.separator);
+        List<ArtifactRepository> repos = MavenPlugin.getMaven().getArtifactRepositories();
         
-        for (String segment : sr.getGroupId().split("\\.") ) {
-            path.append(segment).append(File.separator);
-        }
-        path.append(sr.getArtifactId()).append(File.separator).append(sr.getVersion()).append(File.separator);
-        path.append(sr.getArtifactId()).append("-").append(sr.getVersion());
+        Artifact jarArtifact = MavenPlugin.getMaven().resolve(sr.getGroupId(), sr.getArtifactId(), sr.getVersion(), "jar", "", repos, new NullProgressMonitor());
+        Artifact sourcesArtifact = MavenPlugin.getMaven().resolve(sr.getGroupId(), sr.getArtifactId(), sr.getVersion(), "jar", "sources", repos, new NullProgressMonitor());
         
-        IPath jarPath = Path.fromOSString(path.toString() + ".jar");
-        IPath sourcePath = Path.fromOSString(path.toString() + "-sources.jar");
-        // TODO - ensure exists
-        if ( !jarPath.toFile().exists() || !sourcePath.toFile().exists()) {
-            return null;
-        }
+        IPath jarPath = Path.fromOSString(jarArtifact.getFile().getAbsolutePath());
+        IPath sourcePath = Path.fromOSString(sourcesArtifact.getFile().getAbsolutePath());
         
         IRuntimeClasspathEntry mavenEntry = JavaRuntime.newArchiveRuntimeClasspathEntry(jarPath);
         mavenEntry.setSourceAttachmentPath(sourcePath);