JavaVM.st
branchcvs_MAIN
changeset 3898 d8c5eadc3a52
parent 3795 b696900fb824
child 3916 f119b43d9ae4
equal deleted inserted replaced
3897:521f13dede36 3898:d8c5eadc3a52
  2764      class names are matched using String>>matches:.
  2764      class names are matched using String>>matches:.
  2765      ALL CLASSES ARE INSTALLED!!
  2765      ALL CLASSES ARE INSTALLED!!
  2766      Returns a set of loaded classes."
  2766      Returns a set of loaded classes."
  2767 
  2767 
  2768     | dir  dirString  className  loadedClasses |
  2768     | dir  dirString  className  loadedClasses |
  2769     dir := directory asFilename asAbsoluteFilename.
  2769 
       
  2770     dir := directory asFilename.
  2770     loadedClasses := Set new.
  2771     loadedClasses := Set new.
  2771     Java addToClassPath: dir pathName.
  2772     Java addToClassPath: dir pathName.
  2772     JavaClassReader classLoaderQuerySignal answer: SystemClassLoader do:[
  2773     JavaClassReader classLoaderQuerySignal answer: SystemClassLoader do:[
  2773         dir isDirectory ifTrue:[
  2774         dir isDirectory ifTrue:[
  2774             dir recursiveDirectoryContentsAsFilenamesDo: [
  2775             dir recursiveDirectoryContentsAsFilenamesDo:[:eachFilename|
  2775                 :filename |
  2776                 (eachFilename isRegularFile and: [ eachFilename suffix = #class ]) ifTrue: [
  2776                 (filename isRegularFile and: [ filename suffix = #class ]) ifTrue: [
       
  2777                     dirString := dir pathName.
  2777                     dirString := dir pathName.
  2778                     className := filename withoutSuffix pathName.
  2778                     className := eachFilename withoutSuffix pathName.
  2779                     className := className subString: dirString size + 2 to: className size.
  2779                     className := className subString: dirString size + 2 to: className size.
  2780                     className := className replaceAll: (Filename separator) with: $..
  2780                     className := className replaceAll: (Filename separator) with: $..
  2781                     (pattern isNil or:[className matches: pattern]) ifTrue: [
  2781                     (pattern isNil or:[className matches: pattern]) ifTrue: [
  2782                         (self classNamed: className) isNil ifTrue:[
  2782                         (self classNamed: className) isNil ifTrue:[
  2783                             loadedClasses add: (self classForName:className).
  2783                             loadedClasses add: (self classForName:className).
  2786                 ]
  2786                 ]
  2787             ].
  2787             ].
  2788         ] ifFalse:[
  2788         ] ifFalse:[
  2789             | zar |
  2789             | zar |
  2790 
  2790 
  2791             zar := ZipArchive oldFileNamed: dir pathName.
  2791             zar := ZipArchive oldFileNamed:dir.
  2792             zar entries do:[:entry|
  2792             zar entries do:[:entry|
  2793             (entry endsWith:'.class') ifTrue:[
  2793             (entry endsWith:'.class') ifTrue:[
  2794                 | nm |
  2794                 | nm |
  2795 
  2795 
  2796                 nm := entry copyTo: entry size - 6.
  2796                 nm := entry copyTo: entry size - 6.
  2806     ].
  2806     ].
  2807     ^ loadedClasses.
  2807     ^ loadedClasses.
  2808 
  2808 
  2809     "Modified: / 21-10-2011 / 12:52:06 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
  2809     "Modified: / 21-10-2011 / 12:52:06 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
  2810     "Modified: / 27-05-2014 / 12:20:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  2810     "Modified: / 27-05-2014 / 12:20:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
  2811     "Modified: / 11-04-2019 / 18:19:50 / Stefan Vogel"
  2811 ! !
  2812 ! !
  2812 
  2813 
  2813 !JavaVM class methodsFor:'class loading/unloading'!
  2814 !JavaVM class methodsFor:'class loading/unloading'!
  2814 
  2815 
  2815 loadClassNamed: className usingClassLoader: classLoader
  2816 loadClassNamed: className usingClassLoader: classLoader