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);