--- a/src/JavaClass.st Thu Oct 20 12:38:32 2011 +0000
+++ b/src/JavaClass.st Thu Oct 20 14:37:20 2011 +0000
@@ -2032,25 +2032,45 @@
"Created: / 30-05-2011 / 23:07:18 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
!
-includesBehavior: aClass
- ^ (aClass isJavaClass not or: [ aClass isInterface not ])
- ifTrue: [ self name == aClass name or:[ super includesBehavior: aClass ]]
- ifFalse: [
- self name == aClass name or: [ self allInterfaces includes: aClass ]
- ].
+includesBehavior: aClass
+
+ "Answer true, iff
+ (i) receiver == aClass
+ (ii) aClass is ordinary class and receiver inherits from
+ aClass
+ (iii) aClass is interface and receiver or one of its superclasses
+ implements that interface
+ "
+
+ self == aClass ifTrue:[^true].
+ aClass isJavaClass ifFalse:[^false].
+
+ ^aClass isInterface ifTrue:[
+ self allInterfaces includes: aClass
+ ] ifFalse:[
+ super includesBehavior: aClass
+ ]
"Created: / 05-02-2011 / 23:44:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 11-02-2011 / 09:12:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 20-10-2011 / 16:11:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
-isSubclassOf: aJavaClass
-|tmpClass|
-
-tmpClass := self superclass.
-[tmpClass isJavaClass] whileTrue: [tmpClass = aJavaClass ifTrue:[^true]. tmpClass := tmpClass superclass].
-^false.
-
- "Created: / 13-04-2011 / 23:18:03 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+isSubclassOf: aClass
+
+ | cls |
+ aClass isNil ifTrue:[^false].
+ cls := self.
+ [ cls notNil ] whileTrue:[
+ "JV-2011-10-20: Q: is one subclass of another if its
+ are subclass but loaded using different classloader?"
+ cls == aClass ifTrue:[
+ ^true
+ ].
+ cls := cls superclass.
+ ].
+ ^false
+
+ "Created: / 20-10-2011 / 16:15:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!JavaClass methodsFor:'reflection'!