finally forced myself to refactor tests.. fieldRef tests are ok now.. methodRef to come.. jk_new_structure
authorhlopkmar
Mon, 23 May 2011 14:53:35 +0000
branchjk_new_structure
changeset 814 68df82c46fb0
parent 813 cb429d02faca
child 815 f98e7173ef67
finally forced myself to refactor tests.. fieldRef tests are ok now.. methodRef to come..
src/AbstractJavaTestCase.st
src/JavaClassRef2.st
src/JavaFieldRefTests.st
src/JavaRef2.st
src/JavaResolver.st
src/JavaRuntimeConstantPoolTests.st
src/stx_libjava.st
--- a/src/AbstractJavaTestCase.st	Mon May 23 12:42:27 2011 +0000
+++ b/src/AbstractJavaTestCase.st	Mon May 23 14:53:35 2011 +0000
@@ -16,6 +16,89 @@
     "Created: / 26-04-2011 / 13:03:05 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 ! !
 
+!AbstractJavaTestCase methodsFor:'cp creation helpers'!
+
+getClassRefNamed: name 
+    "creates classRef with correctly prepared constant pool"
+    
+    | cp |
+
+    cp := JavaConstantPool new:2.
+    cp at: 1 put: (self getClassRefIn: cp withNameAt: 2).
+    cp at: 2 put: name.
+
+    ^ cp at: 1.
+
+    "Created: / 23-05-2011 / 16:17:28 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+!
+
+getFieldRefNamed: name typed: type inClass: classString
+    "creates fieldRef with correctly prepared constant pool"
+    | cp |
+
+    cp := JavaConstantPool new: 6.
+    cp at: 1 put: (self getClassRefIn: cp withNameAt: 2).
+    cp at: 2 put: classString.
+    cp at: 3 put: name.
+    cp at: 4 put: type.
+    cp at: 5
+        put: (self 
+                getFieldRefIn: cp
+                withNameAndTypeAt: 6 andClassAt: 1).
+    cp at: 6 put: (self getNameAndTypeIn: cp withNameAt: 3 andTypeAt: 4).
+    ^ cp at: 5.
+
+    "Created: / 23-05-2011 / 15:56:12 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+!
+
+getInterfaceMethodRefNamed: name typed: type inClass: classString 
+   "creates interfaceMethodRef with correctly prepared constant pool"
+    | cp |
+
+    cp := JavaConstantPool new: 6.
+    cp at: 1 put: (self getClassRefIn: cp withNameAt: 2).
+    cp at: 2 put: classString.
+    cp at: 3 put: name.
+    cp at: 4 put: type.
+    cp at: 5
+        put: (self 
+                getInterfaceMethodRefIn: cp
+                withNameAndTypeAt: 6
+                andClassAt: 1).
+    cp at: 6
+        put: (self 
+                getNameAndTypeIn: cp
+                withNameAt: 3
+                andTypeAt: 4).
+    ^ cp at: 5.
+
+    "Created: / 23-05-2011 / 16:15:14 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+!
+
+getMethodRefNamed: name typed: type inClass: classString 
+   "creates methodRef with correctly prepared constant pool"
+    | cp |
+
+    cp := JavaConstantPool new: 6.
+    cp at: 1 put: (self getClassRefIn: cp withNameAt: 2).
+    cp at: 2 put: classString.
+    cp at: 3 put: name.
+    cp at: 4 put: type.
+    cp at: 5
+        put: (self 
+                getMethodRefIn: cp
+                withNameAndTypeAt: 6
+                andClassAt: 1).
+    cp at: 6
+        put: (self 
+                getNameAndTypeIn: cp
+                withNameAt: 3
+                andTypeAt: 4).
+    ^ cp at: 5.
+
+    "Created: / 23-05-2011 / 16:00:01 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+! !
+
 !AbstractJavaTestCase methodsFor:'helpers'!
 
 disableMockedExceptionThrowing
@@ -31,19 +114,6 @@
     "Created: / 13-04-2011 / 14:11:01 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 !
 
-getClassRefFor: classString
-^ JavaClassRef2 in: (JavaConstantPool with: classString)
-                withNameAt: 1.
-
-    "Created: / 10-05-2011 / 15:03:38 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-!
-
-getClassRefIn: aJavaConstantPool withNameAt: nameCPIndex
-^ JavaClassRef2 in: aJavaConstantPool withNameAt: nameCPIndex.
-
-    "Created: / 12-05-2011 / 19:14:30 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-!
-
 getCrateClassReadStream
     ^ ((Filename named: UserPreferences current javaTestsDirectory) 
         / 'libjava' / 'bin' 
@@ -55,21 +125,6 @@
     "Modified: / 12-05-2011 / 16:26:34 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 !
 
-getName: name descriptor: type 
-    ^ JavaNameAndType2 
-        in: (JavaConstantPool with: name with: type)
-        withNameAt: 1
-        andDescriptorAt: 2.
-
-    "Created: / 10-05-2011 / 16:01:13 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-!
-
-getNameAndTypeIn: aJavaConstantPool nameAt: nameCPIndex typeAt: typeCPIndex 
-    ^ JavaNameAndType2 in: aJavaConstantPool withNameAt: nameCPIndex andDescriptorAt: typeCPIndex.
-
-    "Created: / 12-05-2011 / 19:15:17 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-!
-
 getPrettyBigConstantPool
     | cp |
 
@@ -114,7 +169,7 @@
         andNameAndTypeAt: 18.
     ^ cp
 
-    "Modified: / 13-05-2011 / 09:53:54 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 23-05-2011 / 15:16:57 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 !
 
 javaLangObject
@@ -123,6 +178,71 @@
     "Created: / 12-05-2011 / 19:09:15 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 ! !
 
+!AbstractJavaTestCase methodsFor:'refs creation'!
+
+getClassRefIn: aJavaConstantPool withNameAt: nameCPIndex 
+    | result |
+
+    result := JavaClassRef2 in: aJavaConstantPool withNameAt: nameCPIndex.
+    result owner: self javaLangObject.
+    ^ result.
+
+    "Created: / 12-05-2011 / 19:14:30 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 23-05-2011 / 16:24:32 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+!
+
+getFieldRefIn: cp withNameAndTypeAt: nmIndex andClassAt: classIndex 
+    |result|
+
+    result := JavaFieldRef2 
+        in: cp
+        withNameAndTypeAt: nmIndex
+        andClassAt: classIndex.
+result owner: self javaLangObject.
+    ^ result.
+
+    "Created: / 23-05-2011 / 16:01:36 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+!
+
+getInterfaceMethodRefIn: cp withNameAndTypeAt: nmIndex andClassAt: classIndex 
+    |result|
+
+    result:= JavaInterfaceMethodRef2 
+        in: cp
+        withNameAndTypeAt: nmIndex
+        andClassAt: classIndex.
+ result owner: self javaLangObject.
+    ^ result.
+
+    "Created: / 23-05-2011 / 15:58:34 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+!
+
+getMethodRefIn: cp withNameAndTypeAt: nmIndex andClassAt: classIndex 
+    |result|
+
+    result := JavaMethodRef2 
+        in: cp
+        withNameAndTypeAt: nmIndex
+        andClassAt: classIndex.
+ result owner: self javaLangObject.
+    ^ result.
+
+    "Created: / 23-05-2011 / 15:58:39 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+!
+
+getNameAndTypeIn: cp withNameAt: nameIndex andTypeAt: typeIndex 
+    |result|
+
+    result := JavaNameAndType2 
+        in: cp
+        withNameAt: nameIndex
+        andDescriptorAt: typeIndex.
+ result owner: self javaLangObject.
+    ^ result.
+
+    "Created: / 23-05-2011 / 16:00:54 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+! !
+
 !AbstractJavaTestCase methodsFor:'running'!
 
 setUp
--- a/src/JavaClassRef2.st	Mon May 23 12:42:27 2011 +0000
+++ b/src/JavaClassRef2.st	Mon May 23 14:53:35 2011 +0000
@@ -41,15 +41,15 @@
     
     | tmp |
 
-    tmp := self name.
-    [tmp startsWith: '['] whileTrue: [tmp := tmp copyFrom: 2].
+    tmp := self name copy.
+    [ tmp startsWith: '[' ] whileTrue: [ tmp := tmp copyFrom: 2 ].
     tmp := tmp replaceAll: $/ with: $..
     (tmp startsWith: 'L') ifTrue: [ tmp := tmp copyFrom: 2 to: tmp size ].
     (tmp endsWith: ';') ifTrue: [ tmp := tmp copyFrom: 1 to: tmp size - 1 ].
     ^ tmp.
 
     "Created: / 08-04-2011 / 18:30:44 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 13-05-2011 / 18:14:22 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 23-05-2011 / 15:30:01 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 !
 
 name
@@ -148,14 +148,16 @@
 
 invalidateForClass: internalJavaClassName 
     "Invalidate (means call invalidate) reference if it has something to do with given class (e.g Class named internalJavaClassName was unloaded).
-     Return true, if reference was invalidated."    
+     Return true, if reference was invalidated."
+    
     self name = internalJavaClassName 
         ifTrue: 
-            [ self invalidate.
+            [ 
+            self invalidate.
             ^ true ].
     ^ false.
 
-    "Modified: / 13-05-2011 / 09:59:37 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 23-05-2011 / 15:21:20 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 ! !
 
 !JavaClassRef2 class methodsFor:'documentation'!
--- a/src/JavaFieldRefTests.st	Mon May 23 12:42:27 2011 +0000
+++ b/src/JavaFieldRefTests.st	Mon May 23 14:53:35 2011 +0000
@@ -11,307 +11,274 @@
 !JavaFieldRefTests methodsFor:'permission tests'!
 
 testAccessingPPFromOutside
-    | javaClassRef  javaFieldRef  initString  throwedException |
-
-    self enableMockedExceptionThrowing.
-    
-    [ initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
-    javaClassRef := self getClassRefFor: initString.
-    javaClassRef owner: (Java classForName: 'java.lang.Object').
-    javaFieldRef := JavaFieldRef2 in: nil
-                namedAndTyped: (self getName: 'packagePrivateField'
-                        descriptor: 'Ljava/lang/String;')
-                inClassIdentifiedByRef: javaClassRef.
-    javaFieldRef resolve. ] on: Error
-            do: [:e | throwedException := e ].
-    self assertTrue: (throwedException messageText = 'IllegalAccessError').
-    self disableMockedExceptionThrowing.
+    | javaFieldRef  initString |
+          initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
+    self 
+        should: 
+            [ 
+            javaFieldRef := self 
+                        getFieldRefNamed: 'packagePrivateField'
+                        typed: 'Ljava/lang/String;'
+                        inClass: initString.
+            javaFieldRef resolve. ]
+        raise: Error
+        suchThat: [:e | e messageText = 'IllegalAccessError' ].
 
     "Created: / 14-04-2011 / 15:05:20 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 10-05-2011 / 16:21:14 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 23-05-2011 / 16:40:03 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 !
 
 testAccessingPPFromPackage
-    | javaClassRef  javaFieldRef  initString |
+    | javaFieldRef  initString |
+                       initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
+
 
-    self enableMockedExceptionThrowing.
-    self shouldnt: 
-            [ initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
-            javaClassRef := self getClassRefFor: initString.
-            javaClassRef owner: (Java classForName: 'stx.libjava.tests.mocks.Crate').
-            javaFieldRef := JavaFieldRef2 in: nil 
-                        namedAndTyped: (self getName: 'packagePrivateField'
-                                descriptor: 'Ljava/lang/String;')
-                        inClassIdentifiedByRef: javaClassRef.
+self 
+        shouldnt: 
+            [ javaFieldRef := self 
+                        getFieldRefNamed: 'packagePrivateField'
+                        typed: 'Ljava/lang/String;'
+                        inClass: initString.
+                javaFieldRef owner: (Java classForName: 'stx.libjava.tests.mocks.Crate').
             javaFieldRef resolve. ]
-        raise: Error.
-    self disableMockedExceptionThrowing.
+        raise: Error
+        .
 
     "Created: / 14-04-2011 / 15:08:11 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 10-05-2011 / 16:21:17 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 23-05-2011 / 16:41:32 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 !
 
 testAccessingPPFromSubclass
-    | javaClassRef  javaFieldRef  initString |
+    | javaFieldRef  initString |
+
 
-    self enableMockedExceptionThrowing.
+
+
+initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
     self shouldnt: 
-            [ initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
-            javaClassRef := self getClassRefFor: initString.
-            javaClassRef 
-                owner: (Java classForName: 'stx.libjava.tests.mocks.SubclassOfPublicClass').
-            javaFieldRef := JavaFieldRef2 in: nil
-                        namedAndTyped: (self getName: 'packagePrivateField'
-                                descriptor: 'Ljava/lang/String;')
-                        inClassIdentifiedByRef: javaClassRef.
+            [ javaFieldRef := self 
+                        getFieldRefNamed: 'packagePrivateField'
+                        typed: 'Ljava/lang/String;'
+                        inClass: initString.
+            javaFieldRef owner: (Java classForName:  'stx.libjava.tests.mocks.SubclassOfPublicClass').
             javaFieldRef resolve. ]
         raise: Error.
-    self disableMockedExceptionThrowing.
 
     "Created: / 14-04-2011 / 15:08:39 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 10-05-2011 / 16:21:21 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 23-05-2011 / 16:42:05 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 !
 
 testAccessingPrivateFromOutside
-    | javaClassRef  javaFieldRef  initString  throwedException |
+    | javaFieldRef  initString |
+
+
+
 
-    self enableMockedExceptionThrowing.
-    
-    [ initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
-    javaClassRef := self getClassRefFor: initString.
-    javaClassRef owner: (Java classForName: 'java.lang.Object').
-    javaFieldRef := JavaFieldRef2 in: nil namedAndTyped: (self getName: 'privateField'
-                        descriptor: 'Ljava/lang/String;')
-                inClassIdentifiedByRef: javaClassRef.
-    javaFieldRef resolve. ] on: Error
-            do: [:e | throwedException := e ].
-    self assertTrue: (throwedException notNil 
-                and: [ throwedException messageText = 'IllegalAccessError' ]).
-    self disableMockedExceptionThrowing.
+initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
+    self 
+        should: 
+            [ javaFieldRef := self 
+                        getFieldRefNamed: 'privateField'
+                        typed: 'Ljava/lang/String;'
+                        inClass: initString.
+            javaFieldRef resolve. ]
+        raise: Error
+        suchThat: [:e | e messageText = 'IllegalAccessError' ].
 
     "Created: / 13-04-2011 / 14:44:48 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 10-05-2011 / 16:21:31 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 23-05-2011 / 16:42:57 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 !
 
 testAccessingPrivateFromOutsideInNonPublic
-    | javaClassRef  javaFieldRef  initString  throwedException |
+    | javaFieldRef  initString |
+
+
+
 
-    self enableMockedExceptionThrowing.
-    
-    [ initString := 'Lstx/libjava/tests/mocks/NonPublicClass;'.
-    javaClassRef := self getClassRefFor: initString.
-    javaClassRef owner: (Java classForName: 'java.lang.Object').
-    javaFieldRef := JavaFieldRef2  in: nil namedAndTyped: (self getName: 'privateField'
-                        descriptor: 'Ljava/lang/String;')
-                inClassIdentifiedByRef: javaClassRef.
-    javaFieldRef resolve. ] on: Error
-            do: [:e | throwedException := e ].
-    self assertTrue: (throwedException notNil 
-                and: [ throwedException messageText = 'IllegalAccessError' ]).
-    self disableMockedExceptionThrowing.
+initString := 'Lstx/libjava/tests/mocks/NonPublicClass;'.
+    self 
+        should: 
+            [ javaFieldRef := self 
+                        getFieldRefNamed: 'privateField'
+                        typed: 'Ljava/lang/String;'
+                        inClass: initString.
+            javaFieldRef resolve. ]
+        raise: Error
+        suchThat: [:e | e messageText = 'IllegalAccessError' ].
 
     "Created: / 13-04-2011 / 14:47:44 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 10-05-2011 / 16:21:35 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 23-05-2011 / 16:43:35 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 !
 
 testAccessingPrivateFromSubclass
-    | javaClassRef  javaFieldRef  initString  throwedException |
+    | javaFieldRef  initString |
 
-    self enableMockedExceptionThrowing.
-    
-    [ initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
-    javaClassRef := self getClassRefFor: initString.
-    javaClassRef owner: (Java classForName: 'java.lang.SubclassOfPublicClass').
-    javaFieldRef := JavaFieldRef2 in: nil namedAndTyped: (self getName: 'privateField'
-                        descriptor: 'Ljava/lang/String;')
-                inClassIdentifiedByRef: javaClassRef.
-    javaFieldRef resolve. ] on: Error
-            do: [:e | throwedException := e ].
-    self assertTrue: (throwedException notNil 
-                and: [ throwedException messageText = 'IllegalAccessError' ]).
-    self disableMockedExceptionThrowing.
+    initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
+    self 
+        should: 
+            [ javaFieldRef := self 
+                        getFieldRefNamed: 'privateField'
+                        typed: 'Ljava/lang/String;'
+                        inClass: initString.
+            javaFieldRef owner: (Java classForName: 'stx.libjava.tests.mocks.SubclassOfPublicClass').
+            javaFieldRef resolve. ]
+        raise: Error
+        suchThat: [:e | e messageText = 'IllegalAccessError' ].
 
     "Created: / 13-04-2011 / 14:49:32 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 10-05-2011 / 16:21:39 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 23-05-2011 / 16:45:56 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 !
 
 testAccessingProtectedFromOutside
-    | javaClassRef  javaFieldRef  initString  throwedException |
+    | javaFieldRef  initString |
+
 
-    self enableMockedExceptionThrowing.
-    
-    [ initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
-    javaClassRef := self getClassRefFor: initString.
-    javaClassRef owner: (Java classForName: 'java.lang.Object').
-    javaFieldRef := JavaFieldRef2 in: nil
-                namedAndTyped: (self getName: 'protectedField'
-                        descriptor: 'Ljava/lang/String;')
-                inClassIdentifiedByRef: javaClassRef.
-    javaFieldRef resolve. ] on: Error
-            do: [:e | throwedException := e ].
-    self assertTrue: (throwedException notNil 
-                and: [ throwedException messageText = 'IllegalAccessError' ]).
-    self disableMockedExceptionThrowing.
+initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
+    self 
+        should: 
+            [ javaFieldRef := self 
+                        getFieldRefNamed: 'protectedField'
+                        typed: 'Ljava/lang/String;'
+                        inClass: initString.
+
+            javaFieldRef resolve. ]
+        raise: Error
+        suchThat: [:e | e messageText = 'IllegalAccessError' ].
 
     "Created: / 13-04-2011 / 14:44:48 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 10-05-2011 / 16:21:44 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 23-05-2011 / 16:46:30 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 !
 
 testAccessingProtectedFromOutsideInNonPublic
-    | javaClassRef  javaFieldRef  initString  throwedException |
+    | javaFieldRef  initString |
+
+
 
-    self enableMockedExceptionThrowing.
-    
-    [ initString := 'Lstx/libjava/tests/mocks/NonPublicClass;'.
-    javaClassRef := self getClassRefFor: initString.
-    javaClassRef owner: (Java classForName: 'java.lang.Object').
-    javaFieldRef := JavaFieldRef2        in: nil
-                namedAndTyped: (self getName: 'protectedMethod'
-                        descriptor: 'Ljava/lang/String;')
-                inClassIdentifiedByRef: javaClassRef.
-    javaFieldRef resolve. ] on: Error
-            do: [:e | throwedException := e ].
-    self assertTrue: (throwedException notNil 
-                and: [ throwedException messageText = 'IllegalAccessError' ]).
-    self disableMockedExceptionThrowing.
+initString := 'Lstx/libjava/tests/mocks/NonPublicClass;'.
+    self 
+        should: 
+            [ javaFieldRef := self 
+                        getFieldRefNamed: 'protectedField'
+                        typed: 'Ljava/lang/String;'
+                        inClass: initString.
+
+            javaFieldRef resolve. ]
+        raise: Error
+        suchThat: [:e | e messageText = 'IllegalAccessError' ].
 
     "Created: / 13-04-2011 / 14:47:54 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 10-05-2011 / 16:21:47 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 23-05-2011 / 16:46:59 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 !
 
 testAccessingProtectedFromPackage
-    | javaClassRef  javaFieldRef  initString |
+    | javaFieldRef  initString |
 
-    self enableMockedExceptionThrowing.
-    self shouldnt: 
-            [ initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
-            javaClassRef := self getClassRefFor: initString.
-            javaClassRef owner: (Java classForName: 'stx.libjava.tests.mocks.Crate').
-            javaFieldRef := JavaFieldRef2       in: nil
-                        namedAndTyped: (self getName: 'protectedField'
-                                descriptor: 'Ljava/lang/String;')
-                        inClassIdentifiedByRef: javaClassRef.
+    initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
+    self 
+        shouldnt: 
+            [ javaFieldRef := self 
+                        getFieldRefNamed: 'protectedField'
+                        typed: 'Ljava/lang/String;'
+                        inClass: initString.
+            javaFieldRef owner: (Java classForName: 'stx.libjava.tests.mocks.Crate').
             javaFieldRef resolve. ]
-        raise: Error.
-    self disableMockedExceptionThrowing.
+        raise: Error
+       .
 
     "Created: / 14-04-2011 / 15:09:02 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 10-05-2011 / 16:21:48 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 23-05-2011 / 16:48:32 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 !
 
 testAccessingProtectedFromSubclass
-    | javaClassRef  javaFieldRef  initString  throwedException |
+    | javaFieldRef  initString |
 
-    self enableMockedExceptionThrowing.
-    
-    [ initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
-    javaClassRef := self getClassRefFor: initString.
-    javaClassRef 
-        owner: (Java classForName: 'stx.libjava.tests.mocks.SubclassOfPublicClass').
-    javaFieldRef := JavaFieldRef2 in: nil
-                namedAndTyped: (self getName: 'protectedField'
-                        descriptor: 'Ljava/lang/String;')
-                inClassIdentifiedByRef: javaClassRef.
-    javaFieldRef resolve. ] on: Error
-            do: [:e | throwedException := e ].
-    self assertTrue: (throwedException isNil).
-    self disableMockedExceptionThrowing.
+    initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
+    self 
+        shouldnt: 
+            [ javaFieldRef := self 
+                        getFieldRefNamed: 'protectedField'
+                        typed: 'Ljava/lang/String;'
+                        inClass: initString.
+            javaFieldRef 
+                owner: (Java classForName: 'stx.libjava.tests.mocks.SubclassOfPublicClass').
+            javaFieldRef resolve. ]
+        raise: Error
+        .
 
     "Created: / 13-04-2011 / 14:49:23 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 10-05-2011 / 16:21:52 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-!
-
-testAccessingPublic
-    | javaClassRef  javaFieldRef  initString |
-
-    self enableMockedExceptionThrowing.
-    self shouldnt: 
-            [ initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
-            javaClassRef := self getClassRefFor: initString.
-            javaClassRef owner: (Java classForName: 'java.lang.Object').
-            javaFieldRef := JavaFieldRef2 in: nil
-                        namedAndTyped: (self getName: 'publicField' descriptor: 'Ljava/lang/String;')
-                        inClassIdentifiedByRef: javaClassRef.
-            javaFieldRef resolve. ]
-        raise: Error.
-    self disableMockedExceptionThrowing.
-
-    "Created: / 13-04-2011 / 14:44:13 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 10-05-2011 / 16:21:55 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 23-05-2011 / 16:49:17 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 !
 
 testAccessingPublicFromOutside
-    | javaClassRef  javaFieldRef  initString |
+    | javaFieldRef  initString |
 
-    self enableMockedExceptionThrowing.
-    self shouldnt: 
-            [ initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
-            javaClassRef := self getClassRefFor: initString.
-            javaClassRef owner: (Java classForName: 'java.lang.Object').
-            javaFieldRef := JavaFieldRef2        in: nil
-                        namedAndTyped: (self getName: 'publicField' descriptor: 'Ljava/lang/String;')
-                        inClassIdentifiedByRef: javaClassRef.
+    initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
+    self 
+        shouldnt: 
+            [ javaFieldRef := self 
+                        getFieldRefNamed: 'publicField'
+                        typed: 'Ljava/lang/String;'
+                        inClass: initString.
+            javaFieldRef 
+                owner: (Java classForName: 'stx.libjava.tests.mocks.SubclassOfPublicClass').
             javaFieldRef resolve. ]
-        raise: Error.
-    self disableMockedExceptionThrowing.
+        raise: Error
+        .
 
     "Created: / 13-04-2011 / 14:44:31 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 10-05-2011 / 16:21:58 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 23-05-2011 / 16:51:08 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 !
 
 testAccessingPublicFromOutsideInNonPublic
-    | javaClassRef  javaFieldRef  initString  throwedException |
+    | javaFieldRef  initString |
 
-    self enableMockedExceptionThrowing.
-    
-    [ initString := 'Lstx/libjava/tests/mocks/NonPublicClass;'.
-    javaClassRef := self getClassRefFor: initString.
-    javaClassRef owner: (Java classForName: 'java.lang.Object').
-    javaFieldRef := JavaFieldRef2                       in: nil
-                namedAndTyped: (self getName: 'publicField' descriptor: 'Ljava/lang/String;')
-                inClassIdentifiedByRef: javaClassRef.
-    javaFieldRef resolve. ] on: Error
-            do: [:e | throwedException := e ].
-    self assertTrue: (throwedException notNil 
-                and: [ throwedException messageText = 'IllegalAccessError' ]).
-    self disableMockedExceptionThrowing.
+    initString := 'Lstx/libjava/tests/mocks/NonPublicClass;'.
+    self 
+        shouldnt: 
+            [ javaFieldRef := self 
+                        getFieldRefNamed: 'publicField'
+                        typed: 'Ljava/lang/String;'
+                        inClass: initString.
+            javaFieldRef 
+                owner: (Java classForName: 'stx.libjava.tests.mocks.SubclassOfPublicClass').
+            javaFieldRef resolve. ]
+        raise: Error
+        .
 
     "Created: / 13-04-2011 / 14:48:05 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 10-05-2011 / 16:22:00 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 23-05-2011 / 16:52:57 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 !
 
 testAccessingPublicFromSubclass
-    | javaClassRef  javaFieldRef  initString  throwedException |
+    | javaFieldRef  initString |
 
-    self enableMockedExceptionThrowing.
-    
-    [ initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
-    javaClassRef := self getClassRefFor: initString.
-    javaClassRef owner: (Java classForName: 'java.lang.SubclassOfPublicClass').
-    javaFieldRef := JavaFieldRef2                              in: nil
-                namedAndTyped: (self getName: 'publicField' descriptor: 'Ljava/lang/String;')
-                inClassIdentifiedByRef: javaClassRef.
-    javaFieldRef resolve. ] on: Error
-            do: [:e | throwedException := e ].
-    self assertTrue: (throwedException isNil).
-    self disableMockedExceptionThrowing.
+    initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
+    self 
+        shouldnt: 
+            [ javaFieldRef := self 
+                        getFieldRefNamed: 'publicField'
+                        typed: 'Ljava/lang/String;'
+                        inClass: initString.
+            javaFieldRef 
+                owner: (Java classForName: 'stx.libjava.tests.mocks.SubclassOfPublicClass').
+            javaFieldRef resolve. ]
+        raise: Error
+       .
 
     "Created: / 13-04-2011 / 14:49:11 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 10-05-2011 / 16:22:03 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 23-05-2011 / 16:52:27 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 ! !
 
 !JavaFieldRefTests methodsFor:'resolving static tests'!
 
 testResolvingStatic
-    | javaClassRef  javaFieldRef  initString  result  expectedResult |
+    | javaFieldRef  initString  result  expectedResult |
 
     initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
-    javaClassRef := self getClassRefFor: initString.
-    javaClassRef owner: (Java classForName: 'java.lang.Object').
-    javaFieldRef := JavaFieldRef2 in: nil
-                namedAndTyped: (self getName: 'publicStaticField'
-                        descriptor: 'Ljava/lang/String;')
-                inClassIdentifiedByRef: javaClassRef.
+    javaFieldRef := self 
+                getFieldRefNamed: 'publicStaticField'
+                typed: 'Ljava/lang/String;'
+                inClass: initString.
     result := javaFieldRef resolveStatic.
     expectedResult := (Java 
                 classForName: 'stx.libjava.tests.mocks.PublicClass') staticFields 
@@ -319,57 +286,60 @@
     self assertTrue: (result = expectedResult).
 
     "Created: / 28-04-2011 / 22:00:52 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 10-05-2011 / 16:21:10 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 23-05-2011 / 16:32:14 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 ! !
 
 !JavaFieldRefTests methodsFor:'resolving tests'!
 
 testCorrectInstanceCreation
-    | javaClassRef  initString  javaFieldRef |
+    | initString  javaFieldRef |
 
     initString := 'Ljava/lang/String;'.
-    javaClassRef := self getClassRefFor: initString.
-    javaClassRef owner: (Java classForName: 'java.lang.Object').
-    javaFieldRef := self getFieldRefwithNameAndType: (self getName: 'value' descriptor: '[C')
-                andWithClassRef: javaClassRef.
+    javaFieldRef := self 
+                getFieldRefNamed: 'value'
+                typed: '[C'
+                inClass: initString.
     self assertTrue: (javaFieldRef isResolved not).
     self assertTrue: (javaFieldRef valueCache isNil).
     self assertTrue: (javaFieldRef name = 'value').
     self assertTrue: (javaFieldRef descriptor = '[C').
-    self assertTrue: (javaFieldRef classRef name = 'Ljava/lang/String;').
+    self assertTrue: (javaFieldRef classRef name = initString).
 
     "Created: / 08-04-2011 / 14:01:41 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 12-05-2011 / 19:02:50 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 23-05-2011 / 16:28:11 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 !
 
 testCorrectResolving
-    | javaClassRef  initString  javaFieldRef  expectedResult  result |
+    | initString  javaFieldRef  expectedResult  result |
 
     initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
-    javaClassRef := self getClassRefFor: initString.
-    javaClassRef owner: (Java classForName: 'java.lang.Object').
-    javaFieldRef := JavaFieldRef2 in: nil
-                namedAndTyped: (self getName: 'publicField' descriptor: 'Ljava/lang/String;')
-                inClassIdentifiedByRef: javaClassRef.
+    javaFieldRef := self 
+                getFieldRefNamed: 'publicField'
+                typed: 'Ljava/lang/String;'
+                inClass: initString.
+    self assertTrue: (javaFieldRef isResolved not).
+    javaFieldRef resolve.
+    self assertTrue: (javaFieldRef isResolved).
     result := javaFieldRef resolve.
     expectedResult := (Java 
                 classForName: 'stx.libjava.tests.mocks.PublicClass') fields 
                 at: 3.
     self assertTrue: (result = expectedResult).
+    self assertTrue: (javaFieldRef offset = 3).
+    self assertTrue: (javaFieldRef type = 'java.lang.String').
 
     "Created: / 08-04-2011 / 14:07:57 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 10-05-2011 / 16:20:53 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 23-05-2011 / 16:29:53 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 !
 
 testInvalidation
-    | javaClassRef  javaFieldRef  initString |
+    | javaFieldRef  initString |
 
-    initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
-    javaClassRef := self getClassRefFor: initString.
-    javaClassRef owner: (Java classForName: 'java.lang.Object').
-    javaFieldRef := JavaFieldRef2        in: nil
-                namedAndTyped: (self getName: 'publicField' descriptor: 'Ljava/lang/String;')
-                inClassIdentifiedByRef: javaClassRef.
+ initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
+    javaFieldRef := self 
+                getFieldRefNamed: 'publicField'
+                typed: 'Ljava/lang/String;'
+                inClass: initString.
     self assertTrue: (javaFieldRef isResolved not).
     javaFieldRef resolve.
     self assertTrue: (javaFieldRef isResolved).
@@ -379,18 +349,17 @@
     self assertTrue: (javaFieldRef classRef isResolved not).
 
     "Created: / 08-04-2011 / 14:09:06 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 10-05-2011 / 16:20:56 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 23-05-2011 / 16:30:56 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 !
 
 testInvalidationForClassNegative
-    | javaClassRef  javaFieldRef  initString |
+    | javaFieldRef  initString |
 
     initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
-    javaClassRef := self getClassRefFor: initString.
-    javaClassRef owner: (Java classForName: 'java.lang.Object').
-    javaFieldRef := JavaFieldRef2               in: nil
-                namedAndTyped: (self getName: 'publicField' descriptor: 'Ljava/lang/String;')
-                inClassIdentifiedByRef: javaClassRef.
+    javaFieldRef := self 
+                getFieldRefNamed: 'publicField'
+                typed: 'Ljava/lang/String;'
+                inClass: initString.
     self assertTrue: (javaFieldRef isResolved not).
     javaFieldRef resolve.
     self assertTrue: (javaFieldRef isResolved).
@@ -398,18 +367,17 @@
     self assertTrue: (javaFieldRef isResolved).
 
     "Created: / 08-04-2011 / 16:23:06 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 10-05-2011 / 16:20:58 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 23-05-2011 / 16:31:18 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 !
 
 testInvalidationForClassPositive
-    | javaClassRef  javaFieldRef  initString |
+    | javaFieldRef  initString |
 
     initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
-    javaClassRef := self getClassRefFor: initString.
-    javaClassRef owner: (Java classForName: 'java.lang.Object').
-    javaFieldRef := JavaFieldRef2                      in: nil
-                namedAndTyped: (self getName: 'publicField' descriptor: 'Ljava/lang/String;')
-                inClassIdentifiedByRef: javaClassRef.
+    javaFieldRef := self 
+                getFieldRefNamed: 'publicField'
+                typed: 'Ljava/lang/String;'
+                inClass: initString.
     self assertTrue: (javaFieldRef isResolved not).
     javaFieldRef resolve.
     self assertTrue: (javaFieldRef isResolved).
@@ -417,25 +385,20 @@
     self assertTrue: (javaFieldRef isResolved not).
 
     "Created: / 08-04-2011 / 16:23:19 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 10-05-2011 / 16:21:01 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 23-05-2011 / 16:31:48 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 !
 
 testResolving
-    | javaClassRef  javaFieldRef  initString |
+    | javaFieldRef  initString |
+     initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
+    javaFieldRef := self getFieldRefNamed: 'publicField' typed:'Ljava/lang/String;' inClass:initString.
 
-    initString := 'Lstx/libjava/tests/mocks/PublicClass;'.
-    javaClassRef := self getClassRefFor: initString.
-    javaClassRef owner: (Java classForName: 'java.lang.Object').
-    javaFieldRef := JavaFieldRef2                             in: nil
-                namedAndTyped: (self getName: 'publicField' descriptor: 'Ljava/lang/String;')
-                inClassIdentifiedByRef: javaClassRef.
     self assertTrue: (javaFieldRef isResolved not).
     javaFieldRef resolve.
-    self assertTrue: (javaClassRef isResolved).
     self assertTrue: (javaFieldRef isResolved).
 
     "Created: / 08-04-2011 / 14:04:01 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 10-05-2011 / 16:21:04 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 23-05-2011 / 15:53:39 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 ! !
 
 !JavaFieldRefTests class methodsFor:'documentation'!
--- a/src/JavaRef2.st	Mon May 23 12:42:27 2011 +0000
+++ b/src/JavaRef2.st	Mon May 23 14:53:35 2011 +0000
@@ -86,14 +86,6 @@
     "Created: / 08-04-2011 / 11:37:31 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 ! !
 
-!JavaRef2 methodsFor:'backward compatibility'!
-
-preResolve
-"does nothing and will be deleted as soon as transition to new resolving is finished"
-
-    "Created: / 13-05-2011 / 17:26:06 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-! !
-
 !JavaRef2 methodsFor:'comparing'!
 
 = anotherJavaRef
--- a/src/JavaResolver.st	Mon May 23 12:42:27 2011 +0000
+++ b/src/JavaResolver.st	Mon May 23 14:53:35 2011 +0000
@@ -50,6 +50,7 @@
     result ifNotNil: 
             [ "/wrap result with array(s) if needed and return it
             self checkIfArrayRef: aJavaClassRef andWrap: result ].
+
      "
      To resolve an unresolved symbolic reference from D to a class or interface C denoted by N,
      the following steps are performed:
@@ -60,23 +61,18 @@
     "
     classLoader := aJavaClassRef classLoader.
     classLoader isNil 
-        ifTrue: 
-            [
-            result := self loadUnresolvedClass: aJavaClassRef ]
+        ifTrue: [ result := self loadUnresolvedClass: aJavaClassRef ]
         ifFalse: 
             [ result := self loadUnresolvedClass: aJavaClassRef
                         withJavaClassLoader: classLoader. ].
+
     result ifNil: 
             [ self halt.
-            "tell mh, he will throw exception instead, for now, he wants to halt."
-             ].
-
-    "JV@2011-05-22: Take primitive types into an account"
-    result isJavaPrimitiveType ifTrue:
-        [^self checkIfArrayRef: aJavaClassRef andWrap: result].
-
+             "tell mh, he will throw exception instead, for now, he wants to halt." ].
+     "JV@2011-05-22: Take primitive types into an account"
+    result isJavaPrimitiveType 
+        ifTrue: [ ^ self checkIfArrayRef: aJavaClassRef andWrap: result ].
     result classInit.
-    
      "
      If C is an array class and its element type is a reference type, then the symbolic reference
      to the class or interface representing the element type is resolved by invoking the algorithm
@@ -94,8 +90,8 @@
         ifFalse: [ self throwIllegalAccessError ].
 
     "Created: / 11-04-2011 / 19:07:19 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 13-05-2011 / 17:51:20 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
     "Modified: / 22-05-2011 / 17:59:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 23-05-2011 / 15:30:06 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 ! !
 
 !JavaResolver methodsFor:'class resolving helpers'!
--- a/src/JavaRuntimeConstantPoolTests.st	Mon May 23 12:42:27 2011 +0000
+++ b/src/JavaRuntimeConstantPoolTests.st	Mon May 23 14:53:35 2011 +0000
@@ -67,6 +67,7 @@
 
     self cleanUpCPCache.
     cp := self getPrettyBigConstantPool.
+
     cp do: [:each | each isJavaRef ifTrue: [ each resolve ] ].
     cp 
         do: [:each | each isJavaRef ifTrue: [ self assertTrue: (each isResolved) ] ].
@@ -83,7 +84,7 @@
                 ifTrue: [ self assertTrue: (cp at: index) isResolved not ] ].
 
     "Created: / 08-04-2011 / 17:10:42 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 13-05-2011 / 09:55:07 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 23-05-2011 / 15:29:53 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 ! !
 
 !JavaRuntimeConstantPoolTests class methodsFor:'documentation'!
--- a/src/stx_libjava.st	Mon May 23 12:42:27 2011 +0000
+++ b/src/stx_libjava.st	Mon May 23 14:53:35 2011 +0000
@@ -366,7 +366,7 @@
     "Return a SVN revision number of myself.
      This number is updated after a commit"
 
-    ^ "$SVN-Revision:"'1152M'"$"
+    ^ "$SVN-Revision:"'1157'"$"
 ! !
 
 !stx_libjava class methodsFor:'file generation'!