2683 "Modified: / 23-10-2011 / 12:01:16 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2683 "Modified: / 23-10-2011 / 12:01:16 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2684 "Modified: / 01-11-2011 / 15:36:21 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
2684 "Modified: / 01-11-2011 / 15:36:21 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
2685 ! |
2685 ! |
2686 |
2686 |
2687 loadClassesIn: directory |
2687 loadClassesIn: directory |
2688 "load all classes (.class files, strictly speaking) found in given directory. |
2688 "Load all classes (.class files, strictly speaking) found in given directory or .jar file. |
2689 The argument is string containing the name of the directory. |
2689 |
2690 |
2690 Returns a set of loaded classes." |
2691 Returns a set of loaded classes." |
2691 |
2692 |
2692 ^ self loadClassesIn: directory matching: '*'. |
2693 ^ self loadClassesIn: directory matching: '*'. |
|
2694 |
2693 |
2695 "Modified: / 11-06-2011 / 13:35:08 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2694 "Modified: / 11-06-2011 / 13:35:08 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2696 "Created: / 21-10-2011 / 12:40:34 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
2695 "Created: / 21-10-2011 / 12:40:34 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
2696 "Modified (comment): / 19-10-2013 / 17:32:59 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2697 ! |
2697 ! |
2698 |
2698 |
2699 loadClassesIn: directory matching: pattern |
2699 loadClassesIn: directory matching: pattern |
2700 "load all classes (.class files, strictly speaking) found in given directory. |
2700 "Load all classes (.class files, strictly speaking) found in given directory or .jar file. |
2701 The arguments are a string containing the name of the directory |
2701 The arguments are a string containing the name of the directory or .jar file |
2702 and a class name pattern. Only classes matching the pattern are loaded. |
2702 and a class name pattern. Only classes matching the pattern are loaded. |
2703 class names are matched using String>>matches:. |
2703 class names are matched using String>>matches:. |
2704 ALL CLASSES ARE INSTALLED!! |
2704 ALL CLASSES ARE INSTALLED!! |
2705 Returns a set of loaded classes." |
2705 Returns a set of loaded classes." |
2706 |
2706 |
2707 | dir dirString className loadedClasses | |
2707 | dir dirString className loadedClasses | |
2708 dir := directory asFilename asAbsoluteFilename. |
2708 dir := directory asFilename asAbsoluteFilename. |
2709 loadedClasses := Set new. |
2709 loadedClasses := Set new. |
2710 Java addToClassPath: dir pathName. |
2710 Java addToClassPath: dir pathName. |
2711 JavaClassReader classLoaderQuerySignal answer: SystemClassLoader do:[ |
2711 JavaClassReader classLoaderQuerySignal answer: SystemClassLoader do:[ |
2712 |
2712 dir isDirectory ifTrue:[ |
2713 dir |
2713 dir recursiveDirectoryContentsAsFilenamesDo: [ |
2714 recursiveDirectoryContentsAsFilenamesDo: [ |
2714 :filename | |
2715 :filename | |
2715 (filename isRegularFile and: [ filename suffix = #class ]) ifTrue: [ |
2716 (filename isRegularFile and: [ filename suffix = #class ]) ifTrue: [ |
2716 dirString := dir pathName. |
2717 dirString := dir pathName. |
2717 className := filename withoutSuffix pathName. |
2718 className := filename withoutSuffix pathName. |
2718 className := className subString: dirString size + 2 to: className size. |
2719 className := className subString: dirString size + 2 to: className size. |
2719 className := className copyReplaceAll: (Filename separator) with: $.. |
2720 className := className copyReplaceAll: (Filename separator) with: $.. |
2720 (className matches: pattern) ifTrue: [ |
2721 (className matches: pattern) ifTrue: [ |
2721 (self classNamed: className) isNil ifTrue:[ |
2722 (self classNamed: className) isNil ifTrue:[ |
2722 loadedClasses add: (self classForName:className). |
2723 loadedClasses add: (self classForName:className). |
2723 ]. |
2724 ]. |
2724 ] |
|
2725 ] |
|
2726 ]. |
|
2727 ] ifFalse:[ |
|
2728 | zar | |
|
2729 |
|
2730 zar := ZipArchive oldFileNamed: dir pathName. |
|
2731 zar entries do:[:entry| |
|
2732 (entry endsWith:'.class') ifTrue:[ |
|
2733 | nm | |
|
2734 |
|
2735 nm := entry copyTo: entry size - 6. |
|
2736 className := nm copyReplaceAll: (Filename separator) with: $.. |
|
2737 (className matches: pattern) ifTrue: [ |
|
2738 (self classNamed: className) isNil ifTrue:[ |
|
2739 loadedClasses add: (self classForName:className). |
|
2740 ]. |
|
2741 ] |
2725 ] |
2742 ] |
2726 ] |
2743 ] |
2727 ]. |
2744 ]. |
2728 ]. |
2745 ]. |
2729 ^ loadedClasses. |
2746 ^ loadedClasses. |
2730 |
2747 |
2731 "Modified: / 21-10-2011 / 12:52:06 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
2748 "Modified: / 21-10-2011 / 12:52:06 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
2732 "Modified: / 30-10-2011 / 14:02:31 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2749 "Modified (comment): / 19-10-2013 / 17:32:32 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2733 ! ! |
2750 ! ! |
2734 |
2751 |
2735 !JavaVM class methodsFor:'class loading/unloading'! |
2752 !JavaVM class methodsFor:'class loading/unloading'! |
2736 |
2753 |
2737 loadClassNamed: className usingClassLoader: classLoader |
2754 loadClassNamed: className usingClassLoader: classLoader |