enable source classpath in debug breakpoints
clear cache in boot (make this configurable in future commit)


git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@883335 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/LaunchHelper.java b/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/LaunchHelper.java
index 7250bba..289428b 100644
--- a/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/LaunchHelper.java
+++ b/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/LaunchHelper.java
@@ -55,7 +55,7 @@
 
     public static String[] getProgramArgs( ILaunchConfiguration config )
     {
-        return new String[] { "-p", "9090", "-a", "localhost" };
+        return new String[] { "-p", "9090", "-a", "localhost", "-c" };
     }
 
     public static long getBackoff( ILaunchConfiguration config )
diff --git a/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/OSGiLauncher.java b/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/OSGiLauncher.java
index cab1f2f..5cbcbdb 100644
--- a/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/OSGiLauncher.java
+++ b/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/OSGiLauncher.java
@@ -77,6 +77,7 @@
         SigilCore.log( "VM=" + install.getName() );
         SigilCore.log( "Main=" + vmconfig.getClassToLaunch() );
         SigilCore.log( "VMArgs=" + Arrays.asList( vmconfig.getVMArguments() ) );
+        SigilCore.log( "Boot Classpath=" + Arrays.asList( vmconfig.getBootClassPath() ) );
         SigilCore.log( "Classpath=" + Arrays.asList( vmconfig.getClassPath() ) );
         SigilCore.log( "Args=" + Arrays.asList( vmconfig.getProgramArguments() ) );
         SigilCore.log( "Working Dir=" + vmconfig.getWorkingDirectory() );
@@ -91,7 +92,7 @@
         {
             String name = LaunchHelper.getRepositoryManagerName(config);
             IRepositoryManager manager = SigilCore.getRepositoryManager(name);
-            client.apply(form.resolve(new RuntimeBundleResolver(manager)));
+            client.apply(form.resolve(new RuntimeBundleResolver(manager, config)));
         }
         catch (Exception e)
         {
diff --git a/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/RuntimeBundleResolver.java b/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/RuntimeBundleResolver.java
index 8c4416d..2c4a399 100644
--- a/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/RuntimeBundleResolver.java
+++ b/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/RuntimeBundleResolver.java
@@ -10,6 +10,7 @@
 import org.apache.felix.sigil.common.runtime.BundleForm.Resolver;
 import org.apache.felix.sigil.eclipse.SigilCore;
 import org.apache.felix.sigil.eclipse.model.project.ISigilProjectModel;
+import org.apache.felix.sigil.eclipse.runtime.source.SigilSourcePathProvider;
 import org.apache.felix.sigil.model.ModelElementFactory;
 import org.apache.felix.sigil.model.eclipse.ISigilBundle;
 import org.apache.felix.sigil.model.osgi.IRequiredBundle;
@@ -19,6 +20,7 @@
 import org.apache.felix.sigil.repository.ResolutionConfig;
 import org.apache.felix.sigil.repository.ResolutionException;
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.ILaunchConfiguration;
 import org.osgi.framework.Version;
 
 public class RuntimeBundleResolver implements ResolutionContext
@@ -55,6 +57,8 @@
                     ISigilProjectModel p = b.getAncestor(ISigilProjectModel.class);
                     if ( p != null ) {
                         uris.add(p.findBundleLocation().toFile().toURI());
+                        SigilCore.log("Adding project source to source path " + p.getName());
+                        SigilSourcePathProvider.addProjectSource(launchConfig, p);
                     }
                     else {
                         b.synchronize(null);
@@ -80,9 +84,11 @@
     }
     
     private final IRepositoryManager manager;
+    private final ILaunchConfiguration launchConfig;
     
-    public RuntimeBundleResolver(IRepositoryManager manager) {
+    public RuntimeBundleResolver(IRepositoryManager manager, ILaunchConfiguration launchConfig) {
         this.manager = manager;
+        this.launchConfig = launchConfig;
     }
 
     public Resolver findResolver(URI uri)
diff --git a/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/config/OSGiLaunchConfigurationConstants.java b/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/config/OSGiLaunchConfigurationConstants.java
index b39a713..47a3d36 100644
--- a/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/config/OSGiLaunchConfigurationConstants.java
+++ b/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/config/OSGiLaunchConfigurationConstants.java
@@ -5,5 +5,6 @@
 
     String FORM_FILE_LOCATION = "org.apache.felix.sigil.form.location";
     String AUTOMATIC_ADD = "org.apache.felix.sigil.automatic.add";
+    String CLASSPATH_PROVIDER = "org.apache.felix.sigil.classpath.Provider";
 
 }
diff --git a/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/config/OSGiLaunchConfigurationTab.java b/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/config/OSGiLaunchConfigurationTab.java
index bfc27e8..e3d3179 100644
--- a/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/config/OSGiLaunchConfigurationTab.java
+++ b/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/config/OSGiLaunchConfigurationTab.java
@@ -29,6 +29,7 @@
 import org.eclipse.debug.core.ILaunchConfiguration;
 import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
 import org.eclipse.debug.ui.AbstractLaunchConfigurationTab;
+import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
 import org.eclipse.jface.window.Window;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.KeyAdapter;
@@ -151,6 +152,8 @@
     public void performApply( ILaunchConfigurationWorkingCopy config )
     {
         config.setAttribute(OSGiLaunchConfigurationConstants.FORM_FILE_LOCATION, formLocation);
+        config.setAttribute(IJavaLaunchConfigurationConstants.ATTR_SOURCE_PATH_PROVIDER, OSGiLaunchConfigurationConstants.CLASSPATH_PROVIDER );
+        config.setAttribute(IJavaLaunchConfigurationConstants.ATTR_CLASSPATH_PROVIDER, OSGiLaunchConfigurationConstants.CLASSPATH_PROVIDER);    
     }
 
     /* (non-Javadoc)
diff --git a/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/source/SigilSourcePathProvider.java b/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/source/SigilSourcePathProvider.java
index 63ddf0a..2b6f170 100644
--- a/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/source/SigilSourcePathProvider.java
+++ b/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/source/SigilSourcePathProvider.java
@@ -28,7 +28,7 @@
         ArrayList<IRuntimeClasspathEntry> all = new ArrayList<IRuntimeClasspathEntry>(entries.length);
         
         all.addAll( workbenchSourcePath(entries, configuration) );
-        all.addAll( launchOverridePath( configuration ) );
+//        all.addAll( launchOverridePath( configuration ) );
 //        all.addAll( newtonSourcePath( configuration ) );
         Set<IRuntimeClasspathEntry> dynamic = dynamicRuntime.get( configuration );
         if ( dynamic != null ) {