src/JavaClass.st
branchjk_new_structure
changeset 1031 de1813ce77de
parent 1028 d30cabc12354
child 1033 a31de6a4cfa4
--- 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'!