diff -r 5f55da80009b -r 43e017ec7958 src/JavaClass.st --- a/src/JavaClass.st Mon Apr 25 19:32:44 2011 +0000 +++ b/src/JavaClass.st Sun May 01 12:52:23 2011 +0000 @@ -1907,6 +1907,60 @@ "Created: / 05-02-2011 / 23:44:00 / Jan Vrany " "Modified: / 11-02-2011 / 09:12:27 / Jan Vrany " +! + +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 " +! ! + +!JavaClass methodsFor:'reflection'! + +lookupFieldByNameAndType: aJavaNameAndType + | result | + + result := fields detect: + [:each | + (each name = aJavaNameAndType name + and: [ each signature = aJavaNameAndType descriptor ]) ]. + result ifNotNil: [ ^ result ]. + self superclass ~= JavaObject + ifTrue: [ ^ self superclass lookupFieldByNameAndType: aJavaNameAndType ] + ifFalse: [ ^ nil ]. + + "Created: / 11-04-2011 / 21:27:08 / Marcel Hlopko " + "Modified: / 28-04-2011 / 22:31:05 / Marcel Hlopko " +! + +lookupMethodByNameAndType: aJavaNameAndType + ^ self lookupMethodFor: aJavaNameAndType selector. + + "Created: / 11-04-2011 / 21:28:34 / Marcel Hlopko " +! + +lookupStaticFieldByNameAndType: aJavaNameAndType + | result | + + result := staticFields detect: + [:each | + (each name = aJavaNameAndType name + and: [ each signature = aJavaNameAndType descriptor ]) ]. + result ifNotNil: [ ^ result ]. + self superclass ~= JavaObject ifTrue: [^ self superclass lookupStaticFieldByNameAndType: aJavaNameAndType] + ifFalse: [^nil]. + + "Created: / 28-04-2011 / 22:25:39 / Marcel Hlopko " +! + +lookupStaticMethodByNameAndType: aJavaNameAndType + ^ self lookupMethodFor: aJavaNameAndType selector. + + "Created: / 28-04-2011 / 22:50:31 / Marcel Hlopko " ! ! !JavaClass methodsFor:'special'! @@ -1985,34 +2039,46 @@ !JavaClass methodsFor:'support - sUnit'! asTestCase - - ^JUnitTestCaseProxy for: self + self halt. + self isTestletLike + ifTrue: + [ self halt. + ^ TestletTestCaseProxy for: self ]. + ^ JUnitTestCaseProxy for: self. "Created: / 04-03-2011 / 08:20:36 / Jan Vrany " + "Modified: / 29-04-2011 / 17:52:13 / Marcel Hlopko " +! + +asTestlet + ^ TestletTestCaseProxy for: self + + "Created: / 29-04-2011 / 16:53:18 / Marcel Hlopko " ! isTestCaseLike - | junit_framework_TestCase org_junit_Test | + | junit_framework_TestCase org_junit_Test | "try JUnit 4.x" - - [ org_junit_Test := - JavaVM classForName:'org.junit.Test' - ] on:Error do:[ "nothing" ]. - (org_junit_Test notNil and:[self containsMethodsAnnotatedWith:org_junit_Test typeName ]) - ifTrue:[^true]. - - "Try jUnit 3.x" - [ junit_framework_TestCase := - JavaVM classForName:'junit.framework.TestCase' - ] on:Error do:[ "nothing" ]. - - junit_framework_TestCase ifNotNil: - [self == org_junit_Test ifTrue:[ ^ false ]. - (self includesBehavior:junit_framework_TestCase) - ifTrue:[^true]]. - - ^false + [ org_junit_Test := JavaVM classForName: 'org.junit.Test' ] on: Error + do: + [ "nothing" + ]. + (org_junit_Test notNil + and: [ self containsMethodsAnnotatedWith: org_junit_Test typeName ]) + ifTrue: [ ^ true ]. + "Try jUnit 3.x" + + [ junit_framework_TestCase := JavaVM + classForName: 'junit.framework.TestCase' ] on: Error + do: + [ "nothing" + ]. + junit_framework_TestCase ifNotNil: + [ self == org_junit_Test ifTrue: [ ^ false ]. + (self includesBehavior: junit_framework_TestCase) ifTrue: [ ^ true ] ]. + ^ self isTestletLike. + " JAVA::java::lang::Object isTestCaseLike JAVA::stx::libjava::tests::junit::JUnit3Tests isTestCaseLike" @@ -2020,6 +2086,7 @@ "Created: / 28-02-2011 / 21:31:08 / Jan Vrany " "Modified: / 02-03-2011 / 23:08:02 / Marcel Hlopko " "Modified: / 06-03-2011 / 14:27:58 / Jan Vrany " + "Modified: / 29-04-2011 / 17:52:49 / Marcel Hlopko " ! isTestSelector: selector @@ -2038,6 +2105,24 @@ "Modified: / 02-03-2011 / 23:08:02 / Marcel Hlopko " "Created: / 04-03-2011 / 07:07:36 / Jan Vrany " +! + +isTestletLike + | testlet | + + + [ testlet := JavaVM classForName: 'gnu.testlet.Testlet' ] on: Error + do: + [ "nothing" + ]. + testlet ifNil:[^ false]. + self == testlet ifTrue: [ ^ false ]. + (self includesBehavior: testlet) ifTrue: [ ^ true ]. + ^ false. + + "Modified: / 02-03-2011 / 23:08:02 / Marcel Hlopko " + "Modified: / 06-03-2011 / 14:27:58 / Jan Vrany " + "Created: / 29-04-2011 / 17:02:22 / Marcel Hlopko " ! ! !JavaClass class methodsFor:'documentation'! @@ -2052,3 +2137,4 @@ JavaClass initialize! +