2727import org .eclipse .core .runtime .CoreException ;
2828import org .eclipse .core .runtime .IConfigurationElement ;
2929import org .eclipse .core .runtime .IContributor ;
30- import org .eclipse .core .runtime .IExtensionRegistry ;
3130import org .eclipse .core .runtime .IPath ;
3231import org .eclipse .core .runtime .Path ;
3332import org .eclipse .core .runtime .Platform ;
34- import org .eclipse .core .runtime .RegistryFactory ;
3533import org .eclipse .debug .core .DebugException ;
3634import org .eclipse .debug .core .DebugPlugin ;
3735import org .eclipse .debug .core .ILaunch ;
4139import org .eclipse .debug .core .model .IProcess ;
4240import org .eclipse .debug .core .model .IThread ;
4341import org .eclipse .jdt .annotation .NonNull ;
42+ import org .erlide .backend .BackendUtils ;
4443import org .erlide .backend .api .IBackend ;
4544import org .erlide .backend .debug .BeamUtil ;
4645import org .erlide .backend .debug .DebuggerEventDaemon ;
4746import org .erlide .backend .debug .ErlangLineBreakpoint ;
4847import org .erlide .backend .debug .ErlideDebug ;
4948import org .erlide .backend .debug .IErlangDebugNode ;
50- import org .erlide .backend .internal .BackendActivator ;
5149import org .erlide .engine .ErlangEngine ;
5250import org .erlide .engine .model .IErlModel ;
5351import org .erlide .engine .model .root .ErlangProjectProperties ;
5654import org .erlide .util .IDisposable ;
5755import org .erlide .util .erlang .ErlUtils ;
5856import org .erlide .util .erlang .OtpErlang ;
59- import org .erlide .util .erlang .SignatureException ;
6057import org .erlide .util .erlang .OtpParserException ;
58+ import org .erlide .util .erlang .SignatureException ;
6159import org .osgi .framework .Bundle ;
6260
6361import com .ericsson .otp .erlang .OtpErlangAtom ;
@@ -499,11 +497,10 @@ private void distributeDebuggerCode() {
499497
500498 final List <OtpErlangTuple > modules = new ArrayList <OtpErlangTuple >(
501499 debuggerModules .size ());
500+ final String ver = backend .getRuntime ().getVersion ().asMajor ().toString ()
501+ .toLowerCase ();
502502 for (final String module : debuggerModules ) {
503- final String ver = backend .getRuntime ().getVersion ().asMajor ().toString ()
504- .toLowerCase ();
505- final String bundleName = "org.erlide.kernel.debugger." + ver ;
506- OtpErlangBinary b = getDebuggerBeam (module , bundleName );
503+ OtpErlangBinary b = getDebuggerBeam (module , "org.erlide.kernel.debugger.otp" );
507504 if (b == null ) {
508505 b = getDebuggerBeam (module , "org.erlide.kernel.debugger" );
509506 }
@@ -513,7 +510,7 @@ private void distributeDebuggerCode() {
513510 filename , b );
514511 modules .add (t );
515512 } else {
516- ErlLogger .warn ("Could not find debugger module %s" , module );
513+ ErlLogger .warn ("Could not find debugger module %s (%s) " , module , ver );
517514 }
518515 }
519516 ErlideDebug .distributeDebuggerCode (backend .getOtpRpc (), modules );
@@ -532,10 +529,8 @@ private OtpErlangBinary getDebuggerBeam(final String module,
532529 final String beamname = module + ".beam" ;
533530 final Bundle bundle = Platform .getBundle (bundleName );
534531
535- final IExtensionRegistry reg = RegistryFactory .getRegistry ();
536- final IConfigurationElement [] els = reg
537- .getConfigurationElementsFor (BackendActivator .PLUGIN_ID , "codepath" );
538-
532+ final IConfigurationElement [] els = BackendUtils
533+ .getCodepathConfigurationElements ();
539534 for (final IConfigurationElement el : els ) {
540535 final IContributor c = el .getContributor ();
541536 final String name = c .getName ();
@@ -588,26 +583,30 @@ private List<String> getDebuggerModules() {
588583 ErlLogger .warn ("debugger bundle was not found..." );
589584 return new ArrayList <String >();
590585 }
591- final List <String > dbg_modules = getModulesFromBundle (debugger );
586+ final List <String > dbg_modules = getModulesFromBundle (debugger , null );
592587
593- final String ver = backend .getRuntime ().getVersion ().asMajor ().toString ()
594- .toLowerCase ();
595- final Bundle debugger_otp = Platform
596- .getBundle ("org.erlide.kernel.debugger." + ver );
588+ final Bundle debugger_otp = Platform .getBundle ("org.erlide.kernel.debugger.otp" );
597589 if (debugger_otp == null ) {
598- ErlLogger .warn ("debugger %s bundle was not found..." , ver );
590+ ErlLogger .error ("debugger bundle was not found!" );
599591 return dbg_modules ;
600592 }
601- final List <String > dbg_otp_modules = getModulesFromBundle (debugger_otp );
593+ final String ver = backend .getRuntime ().getVersion ().asMajor ().toString ()
594+ .toLowerCase ();
595+ final List <String > dbg_otp_modules = getModulesFromBundle (debugger_otp , ver );
602596
603597 dbg_modules .addAll (dbg_otp_modules );
604598 return dbg_modules ;
605599 }
606600
607- private List <String > getModulesFromBundle (final Bundle bundle ) {
601+ private List <String > getModulesFromBundle (final Bundle bundle , final String ver ) {
608602 final List <String > modules = Lists .newArrayList ();
603+ final String path = ver == null ? "/debugger" : "/debugger/" + ver ;
609604 @ SuppressWarnings ("rawtypes" )
610- final Enumeration beams = bundle .findEntries ("/ebin" , "*.beam" , false );
605+ final Enumeration beams = bundle .findEntries (path , "*.beam" , false );
606+ if (beams == null ) {
607+ ErlLogger .error ("No beams found in %s!" , bundle );
608+ return modules ;
609+ }
611610 while (beams .hasMoreElements ()) {
612611 final URL beam = (URL ) beams .nextElement ();
613612 modules .add (new Path (beam .getPath ()).removeFileExtension ().lastSegment ());
0 commit comments