tools/JavaParserTests.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sun, 16 Dec 2012 21:04:02 +0100
branchdirectory_structure_refactoring
changeset 1899 800c0f76adce
parent 1818 2e5ed72e7dfd
child 1895 2d30e588124c
permissions -rw-r--r--
Closing branch directory_structure_refactoring
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1403
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
     1
"
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
     2
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
     3
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
     4
 New code and modifications done at SWING Research Group [1]:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
     5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
     6
 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
     7
                            SWING Research Group, Czech Technical University in Prague
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
     8
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
     9
 This software is furnished under a license and may be used
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    10
 only in accordance with the terms of that license and with the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    11
 inclusion of the above copyright notice.   This software may not
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    12
 be provided or otherwise made available to, or used by, any
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    13
 other person.  No title to or ownership of the software is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    14
 hereby transferred.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    15
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    16
 [1] Code written at SWING Research Group contains a signature
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    17
     of one of the above copright owners. For exact set of such code,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    18
     see the differences between this version and version stx:libjava
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    19
     as of 1.9.2010
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    20
"
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    21
"{ Package: 'stx:libjava/tools' }"
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    22
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    23
JavaParserTestCase subclass:#JavaParserTests
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    24
	instanceVariableNames:''
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    25
	classVariableNames:''
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    26
	poolDictionaries:''
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    27
	category:'Languages-Java-Tests-Parser'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    28
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    29
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    30
!JavaParserTests class methodsFor:'documentation'!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    31
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    32
copyright
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    33
"
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    34
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    35
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    36
 New code and modifications done at SWING Research Group [1]:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    37
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    38
 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    39
                            SWING Research Group, Czech Technical University in Prague
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    40
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    41
 This software is furnished under a license and may be used
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    42
 only in accordance with the terms of that license and with the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    43
 inclusion of the above copyright notice.   This software may not
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    44
 be provided or otherwise made available to, or used by, any
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    45
 other person.  No title to or ownership of the software is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    46
 hereby transferred.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    47
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    48
 [1] Code written at SWING Research Group contains a signature
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    49
     of one of the above copright owners. For exact set of such code,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    50
     see the differences between this version and version stx:libjava
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    51
     as of 1.9.2010
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    52
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    53
"
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    54
! !
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    55
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    56
!JavaParserTests methodsFor:'arguments'!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    57
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    58
testMethodWithArgs
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    59
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    60
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    61
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    62
			public void fooMethod(Object o)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    63
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    64
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    65
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    66
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    67
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    68
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    69
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    70
testMethodWithArgs2
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    71
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    72
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    73
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    74
			public void fooMethod(Object o, Object o2)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    75
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    76
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    77
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    78
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    79
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    80
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    81
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    82
testMethodWithArgs3
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    83
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    84
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    85
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    86
			public void fooMethod(int i)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    87
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    88
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    89
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    90
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    91
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    92
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    93
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    94
testMethodWithArgs4
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    95
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    96
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    97
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    98
			public void fooMethod(int i, Object o)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
    99
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   100
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   101
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   102
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   103
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   104
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   105
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   106
testMethodWithArgs5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   107
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   108
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   109
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   110
			public void fooMethod(final int i, Object o)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   111
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   112
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   113
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   114
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   115
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   116
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   117
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   118
testMethodWithArgs6
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   119
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   120
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   121
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   122
			public void fooMethod(final int i, final Object o)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   123
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   124
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   125
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   126
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   127
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   128
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   129
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   130
testMethodWithArgs7
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   131
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   132
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   133
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   134
			public void fooMethod(java.lang.Object o)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   135
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   136
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   137
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   138
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   139
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   140
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   141
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   142
testMethodWithArgs8
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   143
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   144
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   145
			public void fooMethod(int ... numbers)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   146
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   147
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   148
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   149
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   150
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   151
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   152
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   153
testMethodWithArgs9
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   154
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   155
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   156
			public void fooMethod(Object<T> ... numbers)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   157
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   158
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   159
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   160
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   161
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   162
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   163
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   164
testMethodWithArrayArgs
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   165
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   166
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   167
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   168
			public void fooMethod(Object[] o)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   169
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   170
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   171
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   172
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   173
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   174
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   175
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   176
testMethodWithArrayArgs2
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   177
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   178
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   179
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   180
			public void fooMethod(int[] o)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   181
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   182
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   183
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   184
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   185
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   186
! !
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   187
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   188
!JavaParserTests methodsFor:'classOrInterface'!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   189
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   190
testClassWithComment
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   191
        ^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   192
// this is one line comment
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   193
public class Object {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   194
}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   195
        '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   196
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   197
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   198
testClassWithComment2
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   199
        ^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   200
// this is one line comment
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   201
public class Object {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   202
        // this is one line comment
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   203
}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   204
'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   205
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   206
    "Modified: / 29-12-2010 / 20:28:27 / Jan Kurs <kurs.jan@post.cz>"
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   207
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   208
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   209
testClassWithComment3
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   210
        ^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   211
public class Object {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   212
        // this is one line comment
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   213
}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   214
'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   215
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   216
    "Modified: / 29-12-2010 / 20:28:40 / Jan Kurs <kurs.jan@post.cz>"
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   217
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   218
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   219
testClassWithJavadoc
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   220
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   221
		/** this is class javadoc */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   222
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   223
			public void foo() {}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   224
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   225
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   226
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   227
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   228
testClassWithJavadoc2
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   229
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   230
/*
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   231
 * Possible end/of javadoc?
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   232
 */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   233
public class Object {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   234
}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   235
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   236
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   237
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   238
testClassWithStaticInitializer
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   239
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   240
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   241
			int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   242
			
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   243
			static { 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   244
				//cokoli
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   245
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   246
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   247
			
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   248
			public void fooMethod()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   249
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   250
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   251
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   252
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   253
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   254
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   255
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   256
testClassWithStaticInitializer2
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   257
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   258
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   259
			static { 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   260
				//cokoli
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   261
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   262
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   263
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   264
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   265
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   266
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   267
testClassWithStaticInitializer3
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   268
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   269
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   270
			public void fooMethod()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   271
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   272
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   273
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   274
			static { 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   275
				//cokoli
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   276
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   277
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   278
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   279
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   280
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   281
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   282
testEmptyAbstractClass
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   283
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   284
		public abstract class Foo {}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   285
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   286
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   287
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   288
testEmptyClass
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   289
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   290
		public class Foo {}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   291
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   292
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   293
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   294
testEmptyStatement
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   295
	^ self
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   296
		assertParse:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   297
			'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   298
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   299
			;;;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   300
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   301
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   302
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   303
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   304
testFinalClass
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   305
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   306
		public final class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   307
			public Foo fooMethod()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   308
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   309
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   310
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   311
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   312
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   313
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   314
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   315
testFoo
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   316
	self assert: true.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   317
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   318
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   319
testGenericClass
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   320
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   321
		public class Foo<T> {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   322
			public T fooMethod()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   323
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   324
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   325
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   326
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   327
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   328
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   329
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   330
testGenericClass2
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   331
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   332
		public class Foo<T extends Foo> {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   333
			public T fooMethod()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   334
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   335
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   336
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   337
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   338
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   339
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   340
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   341
testHeader
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   342
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   343
		package a.b.c;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   344
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   345
		import a.b.*;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   346
		import c.d.*;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   347
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   348
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   349
			public void foo() {}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   350
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   351
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   352
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   353
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   354
testHeader2
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   355
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   356
		package a.b.c;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   357
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   358
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   359
			public void foo() {}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   360
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   361
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   362
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   363
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   364
testHeader3
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   365
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   366
		import a.b.c;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   367
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   368
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   369
			public void foo() {}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   370
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   371
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   372
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   373
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   374
testHeader4
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   375
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   376
		/* some doc */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   377
		package a.b;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   378
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   379
		import a.b.c;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   380
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   381
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   382
			public void foo() {}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   383
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   384
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   385
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   386
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   387
testHeader5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   388
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   389
		/* some doc */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   390
		package a.b;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   391
		/* another doc */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   392
		import a.b.c;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   393
		/* ane another doc */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   394
		/** class javadoc */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   395
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   396
			public void foo() {}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   397
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   398
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   399
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   400
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   401
testHeader6
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   402
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   403
/*
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   404
 * simple doc
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   405
 */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   406
public class Object {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   407
}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   408
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   409
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   410
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   411
testHeader7
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   412
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   413
/*
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   414
 * Copyright (c) 2006, Oracle and/or its affiliates.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   415
 */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   416
public class Object {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   417
}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   418
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   419
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   420
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   421
testInnerClass
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   422
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   423
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   424
			private class A
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   425
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   426
				public void foo() {}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   427
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   428
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   429
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   430
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   431
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   432
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   433
testInnerClass2
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   434
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   435
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   436
			private class A
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   437
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   438
				public void foo() {}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   439
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   440
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   441
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   442
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   443
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   444
testInnerClass3
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   445
	^ self
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   446
		assertParse:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   447
			'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   448
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   449
			private class A
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   450
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   451
				public void foo() {}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   452
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   453
			
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   454
			private int foo2() {int i = 9;}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   455
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   456
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   457
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   458
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   459
testInnerClass4
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   460
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   461
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   462
			public void foo() {}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   463
			
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   464
			/** class javadoc */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   465
			private class A
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   466
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   467
				/* comment */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   468
				public void foo() {}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   469
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   470
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   471
			/**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   472
			 * javadoc */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   473
			private int foo2() {int i = 9;}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   474
			/**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   475
			 * javadoc */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   476
			private int foo2() {int i = 9;}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   477
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   478
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   479
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   480
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   481
testInnerClass5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   482
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   483
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   484
			private class A
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   485
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   486
				public void foo() {}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   487
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   488
			int i;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   489
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   490
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   491
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   492
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   493
testInterface1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   494
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   495
public interface MyVisitor
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   496
{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   497
}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   498
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   499
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   500
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   501
testInterface2
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   502
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   503
public interface Visitor
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   504
{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   505
	public void process(Circle c);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   506
	public void process(Square s);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   507
}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   508
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   509
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   510
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   511
testInterface3
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   512
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   513
public interface MyVisitor extends Visitor
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   514
{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   515
	public void foo();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   516
}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   517
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   518
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   519
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   520
testInterface4
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   521
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   522
public interface MyVisitor extends Visitor
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   523
{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   524
	public void foo() {};
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   525
}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   526
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   527
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   528
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   529
testInterface5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   530
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   531
public class MyVisitor implements Visitor
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   532
{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   533
	public void foo() {};
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   534
}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   535
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   536
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   537
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   538
testInterface6
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   539
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   540
public class MyVisitor implements Visitor, Iterator<Foo>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   541
{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   542
	public void foo() {};
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   543
}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   544
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   545
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   546
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   547
testSubclass
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   548
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   549
public class MyVisitor extends Visitor
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   550
{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   551
	public void foo() {};
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   552
}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   553
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   554
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   555
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   556
testSubclass2
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   557
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   558
public class MyVisitor extends ArrayList<Foo>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   559
{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   560
	public void foo() {};
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   561
}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   562
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   563
! !
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   564
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   565
!JavaParserTests methodsFor:'fields'!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   566
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   567
testClassWithFields
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   568
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   569
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   570
			int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   571
			
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   572
			public void fooMethod()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   573
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   574
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   575
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   576
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   577
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   578
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   579
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   580
testClassWithFields2
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   581
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   582
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   583
			int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   584
			private Object[] o = new Array[3];
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   585
			
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   586
			public void fooMethod()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   587
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   588
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   589
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   590
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   591
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   592
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   593
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   594
testClassWithFields3
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   595
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   596
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   597
			public static int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   598
			
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   599
			public void fooMethod()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   600
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   601
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   602
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   603
			private Object[] o = new Array[3];
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   604
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   605
			public void fooMethod2()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   606
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   607
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   608
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   609
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   610
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   611
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   612
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   613
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   614
testClassWithFields4
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   615
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   616
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   617
			private List<Foo> l = new ArrayList<Foo>();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   618
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   619
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   620
! !
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   621
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   622
!JavaParserTests methodsFor:'methods'!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   623
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   624
testAbstractMethod
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   625
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   626
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   627
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   628
			public abstract void fooMethod();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   629
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   630
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   631
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   632
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   633
testAbstractMethod2
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   634
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   635
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   636
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   637
			public abstract void fooMethod();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   638
			public abstract void fooMethod2();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   639
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   640
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   641
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   642
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   643
testAbstractMethod3
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   644
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   645
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   646
			int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   647
			/** javadoc */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   648
			public abstract void fooMethod();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   649
			/* another javadoc */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   650
			public abstract void fooMethod2();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   651
			
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   652
			public void method() {int b = 3;}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   653
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   654
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   655
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   656
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   657
testAnnotation
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   658
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   659
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   660
		     @Override
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   661
			public void fooMethod() {};
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   662
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   663
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   664
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   665
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   666
testAnnotation2
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   667
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   668
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   669
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   670
			public @Interface void fooMethod() {};
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   671
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   672
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   673
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   674
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   675
testAnnotation3
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   676
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   677
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   678
			@Test
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   679
			public @Interface void fooMethod() {};
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   680
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   681
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   682
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   683
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   684
testClassWithMethod
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   685
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   686
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   687
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   688
			public void fooMethod()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   689
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   690
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   691
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   692
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   693
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   694
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   695
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   696
testClassWithMethod10
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   697
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   698
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   699
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   700
			public java.lang.Object fooMethod()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   701
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   702
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   703
				return new Object();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   704
			};
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   705
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   706
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   707
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   708
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   709
testClassWithMethod11
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   710
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   711
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   712
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   713
			public java.util.Map<Foo, String> fooMethod()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   714
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   715
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   716
				return new Object();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   717
			};
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   718
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   719
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   720
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   721
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   722
testClassWithMethod12
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   723
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   724
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   725
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   726
    			public Constructor<?> getConstructors()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   727
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   728
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   729
				return new Object();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   730
			};
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   731
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   732
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   733
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   734
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   735
testClassWithMethod13
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   736
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   737
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   738
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   739
    			public Constructor<?>[] getConstructors()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   740
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   741
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   742
				return new Object();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   743
			};
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   744
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   745
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   746
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   747
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   748
testClassWithMethod14
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   749
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   750
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   751
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   752
    			public Constructor[] getConstructors()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   753
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   754
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   755
				return new Object();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   756
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   757
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   758
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   759
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   760
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   761
testClassWithMethod15
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   762
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   763
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   764
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   765
    			public Constructor<Foo>[] getConstructors()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   766
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   767
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   768
				return new Object();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   769
			};
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   770
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   771
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   772
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   773
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   774
testClassWithMethod16
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   775
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   776
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   777
    public <U> Class<? extends U> asSubclass(Class<U> clazz) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   778
        if (clazz.isAssignableFrom(this))
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   779
            return (Class<? extends U>) this;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   780
        else
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   781
            throw new ClassCastException(this.toString());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   782
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   783
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   784
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   785
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   786
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   787
testClassWithMethod2
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   788
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   789
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   790
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   791
			public Object fooMethod()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   792
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   793
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   794
				return new Object();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   795
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   796
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   797
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   798
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   799
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   800
testClassWithMethod3
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   801
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   802
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   803
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   804
			public int fooMethod()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   805
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   806
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   807
				return new Object();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   808
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   809
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   810
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   811
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   812
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   813
testClassWithMethod4
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   814
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   815
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   816
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   817
			public byte fooMethod()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   818
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   819
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   820
				return new Object();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   821
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   822
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   823
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   824
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   825
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   826
testClassWithMethod5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   827
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   828
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   829
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   830
			public boolean fooMethod()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   831
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   832
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   833
				return new Object();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   834
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   835
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   836
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   837
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   838
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   839
testClassWithMethod6
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   840
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   841
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   842
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   843
			public float fooMethod()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   844
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   845
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   846
				return new Object();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   847
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   848
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   849
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   850
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   851
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   852
testClassWithMethod7
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   853
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   854
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   855
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   856
			public double fooMethod()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   857
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   858
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   859
				return new Object();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   860
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   861
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   862
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   863
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   864
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   865
testClassWithMethod8
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   866
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   867
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   868
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   869
			public double fooMethod()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   870
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   871
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   872
				return new Object();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   873
			};
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   874
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   875
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   876
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   877
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   878
testClassWithMethod9
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   879
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   880
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   881
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   882
			public List<Foo> fooMethod()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   883
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   884
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   885
				return new Object();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   886
			};
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   887
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   888
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   889
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   890
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   891
testConstructor
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   892
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   893
public class MyVisitor
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   894
{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   895
	public Myvisitor() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   896
		super();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   897
	}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   898
}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   899
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   900
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   901
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   902
testConstructor2
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   903
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   904
public class MyVisitor
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   905
{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   906
	/** this is constructor */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   907
	protected Myvisitor() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   908
		super();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   909
	}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   910
}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   911
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   912
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   913
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   914
testConstructor3
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   915
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   916
public class MyVisitor
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   917
{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   918
	/** this is constructor */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   919
	Myvisitor() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   920
		super();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   921
	}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   922
}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   923
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   924
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   925
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   926
testConstructor4
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   927
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   928
public class MyVisitor
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   929
{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   930
	/** this is constructor */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   931
	private Myvisitor() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   932
		super();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   933
	}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   934
}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   935
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   936
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   937
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   938
testFinalMethod
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   939
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   940
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   941
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   942
			public final void fooMethod() {};
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   943
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   944
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   945
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   946
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   947
testFinalMethod2
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   948
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   949
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   950
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   951
			static final void fooMethod() {};
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   952
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   953
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   954
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   955
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   956
testMethodWithArrayRetval
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   957
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   958
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   959
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   960
			public Object[] fooMethod(Object[] o)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   961
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   962
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   963
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   964
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   965
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   966
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   967
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   968
testMethodWithArrayRetval2
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   969
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   970
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   971
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   972
			public int[] fooMethod(Object[] o)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   973
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   974
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   975
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   976
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   977
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   978
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   979
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   980
testMethodWithComment
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   981
        ^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   982
                public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   983
                        // Some comment
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   984
                        public void fooMethod()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   985
                        {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   986
                                int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   987
                        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   988
                }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   989
    '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   990
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   991
    "Modified: / 29-12-2010 / 20:29:01 / Jan Kurs <kurs.jan@post.cz>"
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   992
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   993
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   994
testMethodWithJavadoc
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   995
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   996
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   997
			/**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   998
			 * This is a javadoc, isnt it?
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
   999
			 */		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1000
			public void fooMethod()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1001
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1002
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1003
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1004
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1005
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1006
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1007
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1008
testMethodWithJavadoc2
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1009
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1010
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1011
			/*
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1012
			 * This is not a javadoc, but it is before method, is it?
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1013
			 */		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1014
			public void fooMethod()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1015
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1016
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1017
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1018
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1019
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1020
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1021
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1022
testMethodWithJavadoc3
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1023
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1024
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1025
			/** constant with javadoc */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1026
			private static String MY_CONSTANT = "This is a constant";
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1027
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1028
			/*
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1029
			 * This is not a javadoc, but it is before method, is it?
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1030
			 */		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1031
			public void fooMethod()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1032
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1033
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1034
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1035
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1036
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1037
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1038
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1039
testMethodWithJavadoc4
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1040
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1041
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1042
			/** constant with javadoc */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1043
			private static String MY_CONSTANT = "This is a constant";
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1044
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1045
			/* random comment */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1046
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1047
			/**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1048
			 * This is not a javadoc, but it is before method, is it?
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1049
			 */		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1050
			public void fooMethod()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1051
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1052
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1053
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1054
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1055
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1056
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1057
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1058
testMethodWithJavadoc5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1059
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1060
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1061
			/** constant with javadoc */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1062
			private static String MY_CONSTANT = "This is a constant";
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1063
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1064
			/* random comment */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1065
			int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1066
			/* another random comment */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1067
			
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1068
			/**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1069
			 * This is not a javadoc, but it is before method, is it?
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1070
			 */		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1071
			public void fooMethod()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1072
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1073
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1074
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1075
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1076
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1077
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1078
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1079
testMethodWithJavadoc6
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1080
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1081
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1082
			/**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1083
			 * Multiple Javadoc per methods :)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1084
			 */	
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1085
			/**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1086
			 * This is not a javadoc, but it is before method, is it?
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1087
			 */		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1088
			public void fooMethod()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1089
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1090
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1091
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1092
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1093
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1094
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1095
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1096
testMultipleMethods
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1097
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1098
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1099
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1100
			public void fooMethod(int i, Object o)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1101
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1102
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1103
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1104
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1105
			public void fooMethod2(Object o)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1106
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1107
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1108
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1109
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1110
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1111
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1112
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1113
testMultipleMethods2
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1114
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1115
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1116
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1117
			public void fooMethod(int i, Object o)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1118
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1119
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1120
			};
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1121
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1122
			public void fooMethod2(Object o)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1123
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1124
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1125
			}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1126
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1127
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1128
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1129
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1130
testMultipleMethods3
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1131
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1132
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1133
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1134
			public void fooMethod(int i, Object o)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1135
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1136
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1137
			};
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1138
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1139
			public void fooMethod2(Object o)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1140
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1141
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1142
			};
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1143
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1144
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1145
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1146
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1147
testMultipleMethods4
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1148
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1149
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1150
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1151
			public void fooMethod(int i, Object o)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1152
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1153
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1154
			};
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1155
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1156
			int i = 9;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1157
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1158
			public void fooMethod2(Object o)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1159
			{
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1160
				int i = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1161
			};
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1162
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1163
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1164
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1165
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1166
testNativeMethod
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1167
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1168
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1169
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1170
			public native void wait();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1171
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1172
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1173
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1174
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1175
testNativeMethod2
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1176
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1177
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1178
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1179
			public native void wait(long millis);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1180
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1181
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1182
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1183
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1184
testNativeMethod3
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1185
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1186
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1187
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1188
			private static native Object wait(long millis);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1189
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1190
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1191
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1192
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1193
testSynchronizedMethod
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1194
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1195
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1196
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1197
			public final synchronized void fooMethod() {};
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1198
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1199
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1200
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1201
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1202
testThrow
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1203
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1204
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1205
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1206
			public void fooMethod() throws MyException;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1207
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1208
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1209
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1210
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1211
testThrow2
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1212
	^ self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1213
		public class Foo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1214
		
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1215
			public void fooMethod() throws MyException, YourException;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1216
		}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1217
	'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1218
! !
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1219
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1220
!JavaParserTests methodsFor:'realClasses'!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1221
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1222
testJavaLangClass6
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1223
    | res time |
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1224
    time := Time millisecondsToRun: [
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1225
    res := self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1226
/*
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1227
 * %W% %E%
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1228
 *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1229
 * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1230
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1231
 */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1232
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1233
package java.lang;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1234
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1235
import java.lang.reflect.Array;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1236
import java.lang.reflect.GenericArrayType;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1237
import java.lang.reflect.Member;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1238
import java.lang.reflect.Field;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1239
import java.lang.reflect.Method;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1240
import java.lang.reflect.Constructor;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1241
import java.lang.reflect.GenericDeclaration;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1242
import java.lang.reflect.Modifier;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1243
import java.lang.reflect.Type;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1244
import java.lang.reflect.TypeVariable;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1245
import java.lang.reflect.InvocationTargetException;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1246
import java.lang.ref.SoftReference;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1247
import java.io.InputStream;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1248
import java.io.ObjectStreamField;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1249
import java.security.AccessController;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1250
import java.security.PrivilegedAction;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1251
import java.util.ArrayList;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1252
import java.util.Arrays;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1253
import java.util.Collection;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1254
import java.util.HashSet;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1255
import java.util.Iterator;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1256
import java.util.List;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1257
import java.util.LinkedList;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1258
import java.util.LinkedHashSet;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1259
import java.util.Set;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1260
import java.util.Map;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1261
import java.util.HashMap;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1262
import sun.misc.Unsafe;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1263
import sun.reflect.ConstantPool;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1264
import sun.reflect.Reflection;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1265
import sun.reflect.ReflectionFactory;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1266
import sun.reflect.SignatureIterator;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1267
import sun.reflect.generics.factory.CoreReflectionFactory;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1268
import sun.reflect.generics.factory.GenericsFactory;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1269
import sun.reflect.generics.repository.ClassRepository;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1270
import sun.reflect.generics.repository.MethodRepository;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1271
import sun.reflect.generics.repository.ConstructorRepository;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1272
import sun.reflect.generics.scope.ClassScope;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1273
import sun.security.util.SecurityConstants;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1274
import java.lang.annotation.Annotation;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1275
import sun.reflect.annotation.*;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1276
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1277
/**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1278
 * Instances of the class <code>Class</code> represent classes and
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1279
 * interfaces in a running Java application.  An enum is a kind of
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1280
 * class and an annotation is a kind of interface.  Every array also
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1281
 * belongs to a class that is reflected as a <code>Class</code> object
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1282
 * that is shared by all arrays with the same element type and number
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1283
 * of dimensions.  The primitive Java types (<code>boolean</code>,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1284
 * <code>byte</code>, <code>char</code>, <code>short</code>,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1285
 * <code>int</code>, <code>long</code>, <code>float</code>, and
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1286
 * <code>double</code>), and the keyword <code>void</code> are also
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1287
 * represented as <code>Class</code> objects.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1288
 *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1289
 * <p> <code>Class</code> has no public constructor. Instead <code>Class</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1290
 * objects are constructed automatically by the Java Virtual Machine as classes
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1291
 * are loaded and by calls to the <code>defineClass</code> method in the class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1292
 * loader.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1293
 *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1294
 * <p> The following example uses a <code>Class</code> object to print the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1295
 * class name of an object:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1296
 *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1297
 * <p> <blockquote><pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1298
 *     void printClassName(Object obj) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1299
 *         System.out.println("The class of " + obj +
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1300
 *                            " is " + obj.getClass().getName());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1301
 *     }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1302
 * </pre></blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1303
 * 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1304
 * <p> It is also possible to get the <code>Class</code> object for a named
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1305
 * type (or for void) using a class literal 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1306
 * (JLS Section <A HREF="http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html#251530">15.8.2</A>). 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1307
 * For example:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1308
 *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1309
 * <p> <blockquote><pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1310
 *     System.out.println("The name of class Foo is: "+Foo.class.getName());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1311
 * </pre></blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1312
 *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1313
 * @param <T> the type of the class modeled by this {@code Class}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1314
 * object.  For example, the type of {@code String.class} is {@code
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1315
 * Class<String>}.  Use {@code Class<?>} if the class being modeled is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1316
 * unknown.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1317
 *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1318
 * @author  unascribed
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1319
 * @version %I%, %G%
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1320
 * @see     java.lang.ClassLoader#defineClass(byte[], int, int)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1321
 * @since   JDK1.0
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1322
 */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1323
public final
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1324
    class Class<T> implements java.io.Serializable, 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1325
                              java.lang.reflect.GenericDeclaration, 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1326
                              java.lang.reflect.Type,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1327
                              java.lang.reflect.AnnotatedElement {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1328
    private static final int ANNOTATION= 0x00002000;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1329
    private static final int ENUM      = 0x00004000;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1330
    private static final int SYNTHETIC = 0x00001000;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1331
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1332
    private static native void registerNatives();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1333
    static {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1334
        registerNatives();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1335
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1336
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1337
    /*
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1338
     * Constructor. Only the Java Virtual Machine creates Class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1339
     * objects.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1340
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1341
    private Class() {}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1342
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1343
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1344
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1345
     * Converts the object to a string. The string representation is the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1346
     * string "class" or "interface", followed by a space, and then by the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1347
     * fully qualified name of the class in the format returned by
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1348
     * <code>getName</code>.  If this <code>Class</code> object represents a
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1349
     * primitive type, this method returns the name of the primitive type.  If
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1350
     * this <code>Class</code> object represents void this method returns
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1351
     * "void".
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1352
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1353
     * @return a string representation of this class object.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1354
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1355
    public String toString() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1356
        return (isInterface() ? "interface " : (isPrimitive() ? "" : "class "))
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1357
            + getName();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1358
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1359
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1360
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1361
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1362
     * Returns the <code>Class</code> object associated with the class or
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1363
     * interface with the given string name.  Invoking this method is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1364
     * equivalent to:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1365
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1366
     * <blockquote><pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1367
     *  Class.forName(className, true, currentLoader)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1368
     * </pre></blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1369
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1370
     * where <code>currentLoader</code> denotes the defining class loader of
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1371
     * the current class.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1372
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1373
     * <p> For example, the following code fragment returns the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1374
     * runtime <code>Class</code> descriptor for the class named
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1375
     * <code>java.lang.Thread</code>:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1376
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1377
     * <blockquote><pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1378
     *   Class&nbsp;t&nbsp;= Class.forName("java.lang.Thread")
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1379
     * </pre></blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1380
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1381
     * A call to <tt>forName("X")</tt> causes the class named 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1382
     * <tt>X</tt> to be initialized.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1383
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1384
     * @param      className   the fully qualified name of the desired class.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1385
     * @return     the <code>Class</code> object for the class with the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1386
     *             specified name.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1387
     * @exception LinkageError if the linkage fails
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1388
     * @exception ExceptionInInitializerError if the initialization provoked
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1389
     *            by this method fails
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1390
     * @exception ClassNotFoundException if the class cannot be located
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1391
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1392
    public static Class<?> forName(String className) 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1393
                throws ClassNotFoundException {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1394
        return forName0(className, true, ClassLoader.getCallerClassLoader());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1395
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1396
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1397
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1398
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1399
     * Returns the <code>Class</code> object associated with the class or
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1400
     * interface with the given string name, using the given class loader.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1401
     * Given the fully qualified name for a class or interface (in the same
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1402
     * format returned by <code>getName</code>) this method attempts to
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1403
     * locate, load, and link the class or interface.  The specified class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1404
     * loader is used to load the class or interface.  If the parameter
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1405
     * <code>loader</code> is null, the class is loaded through the bootstrap
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1406
     * class loader.  The class is initialized only if the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1407
     * <code>initialize</code> parameter is <code>true</code> and if it has
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1408
     * not been initialized earlier.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1409
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1410
     * <p> If <code>name</code> denotes a primitive type or void, an attempt
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1411
     * will be made to locate a user-defined class in the unnamed package whose
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1412
     * name is <code>name</code>. Therefore, this method cannot be used to
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1413
     * obtain any of the <code>Class</code> objects representing primitive
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1414
     * types or void.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1415
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1416
     * <p> If <code>name</code> denotes an array class, the component type of
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1417
     * the array class is loaded but not initialized.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1418
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1419
     * <p> For example, in an instance method the expression:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1420
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1421
     * <blockquote><pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1422
     *  Class.forName("Foo")
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1423
     * </pre></blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1424
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1425
     * is equivalent to:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1426
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1427
     * <blockquote><pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1428
     *  Class.forName("Foo", true, this.getClass().getClassLoader())
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1429
     * </pre></blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1430
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1431
     * Note that this method throws errors related to loading, linking or
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1432
     * initializing as specified in Sections 12.2, 12.3 and 12.4 of <em>The
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1433
     * Java Language Specification</em>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1434
     * Note that this method does not check whether the requested class 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1435
     * is accessible to its caller.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1436
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1437
     * <p> If the <code>loader</code> is <code>null</code>, and a security
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1438
     * manager is present, and the caller''s class loader is not null, then this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1439
     * method calls the security manager''s <code>checkPermission</code> method
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1440
     * with a <code>RuntimePermission("getClassLoader")</code> permission to
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1441
     * ensure it''s ok to access the bootstrap class loader.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1442
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1443
     * @param name       fully qualified name of the desired class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1444
     * @param initialize whether the class must be initialized
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1445
     * @param loader     class loader from which the class must be loaded
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1446
     * @return           class object representing the desired class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1447
     * 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1448
     * @exception LinkageError if the linkage fails
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1449
     * @exception ExceptionInInitializerError if the initialization provoked
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1450
     *            by this method fails
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1451
     * @exception ClassNotFoundException if the class cannot be located by
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1452
     *            the specified class loader
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1453
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1454
     * @see       java.lang.Class#forName(String) 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1455
     * @see       java.lang.ClassLoader
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1456
     * @since     1.2
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1457
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1458
    public static Class<?> forName(String name, boolean initialize,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1459
                                   ClassLoader loader)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1460
        throws ClassNotFoundException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1461
    {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1462
        if (loader == null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1463
            SecurityManager sm = System.getSecurityManager();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1464
            if (sm !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1465
                ClassLoader ccl = ClassLoader.getCallerClassLoader();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1466
                if (ccl !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1467
                    sm.checkPermission(
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1468
                        SecurityConstants.GET_CLASSLOADER_PERMISSION);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1469
                }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1470
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1471
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1472
        return forName0(name, initialize, loader);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1473
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1474
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1475
    /** Called after security checks have been made. */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1476
    private static native Class forName0(String name, boolean initialize,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1477
                                            ClassLoader loader)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1478
        throws ClassNotFoundException;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1479
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1480
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1481
     * Creates a new instance of the class represented by this <tt>Class</tt>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1482
     * object.  The class is instantiated as if by a <code>new</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1483
     * expression with an empty argument list.  The class is initialized if it
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1484
     * has not already been initialized.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1485
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1486
     * <p>Note that this method propagates any exception thrown by the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1487
     * nullary constructor, including a checked exception.  Use of
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1488
     * this method effectively bypasses the compile-time exception
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1489
     * checking that would otherwise be performed by the compiler.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1490
     * The {@link
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1491
     * java.lang.reflect.Constructor#newInstance(java.lang.Object...)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1492
     * Constructor.newInstance} method avoids this problem by wrapping
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1493
     * any exception thrown by the constructor in a (checked) {@link
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1494
     * java.lang.reflect.InvocationTargetException}.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1495
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1496
     * @return     a newly allocated instance of the class represented by this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1497
     *             object.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1498
     * @exception  IllegalAccessException  if the class or its nullary 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1499
     *               constructor is not accessible.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1500
     * @exception  InstantiationException 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1501
     *               if this <code>Class</code> represents an abstract class,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1502
     *               an interface, an array class, a primitive type, or void;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1503
     *               or if the class has no nullary constructor;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1504
     *               or if the instantiation fails for some other reason.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1505
     * @exception  ExceptionInInitializerError if the initialization
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1506
     *               provoked by this method fails.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1507
     * @exception  SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1508
     *             If a security manager, <i>s</i>, is present and any of the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1509
     *             following conditions is met:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1510
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1511
     *             <ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1512
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1513
     *             <li> invocation of 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1514
     *             <tt>{@link SecurityManager#checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1515
     *             s.checkMemberAccess(this, Member.PUBLIC)}</tt> denies
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1516
     *             creation of new instances of this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1517
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1518
     *             <li> the caller''s class loader is not the same as or an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1519
     *             ancestor of the class loader for the current class and
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1520
     *             invocation of <tt>{@link SecurityManager#checkPackageAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1521
     *             s.checkPackageAccess()}</tt> denies access to the package
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1522
     *             of this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1523
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1524
     *             </ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1525
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1526
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1527
    public T newInstance() 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1528
        throws InstantiationException, IllegalAccessException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1529
    {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1530
        if (System.getSecurityManager() !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1531
            checkMemberAccess(Member.PUBLIC, ClassLoader.getCallerClassLoader());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1532
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1533
        return newInstance0();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1534
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1535
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1536
    private T newInstance0()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1537
        throws InstantiationException, IllegalAccessException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1538
    {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1539
        // NOTE: the following code may not be strictly correct under
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1540
        // the current Java memory model.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1541
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1542
        // Constructor lookup
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1543
        if (cachedConstructor == null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1544
            if (this == Class.class) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1545
                throw new IllegalAccessException(
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1546
                    "Can not call newInstance() on the Class for java.lang.Class"
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1547
                );
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1548
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1549
            try {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1550
                Class[] empty = {};
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1551
                final Constructor<T> c = getConstructor0(empty, Member.DECLARED);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1552
                // Disable accessibility checks on the constructor
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1553
                // since we have to do the security check here anyway
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1554
                // (the stack depth is wrong for the Constructor''s
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1555
                // security check to work)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1556
                java.security.AccessController.doPrivileged
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1557
                    (new java.security.PrivilegedAction() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1558
                            public Object run() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1559
                                c.setAccessible(true);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1560
                                return null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1561
                            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1562
                        });
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1563
                cachedConstructor = c;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1564
            } catch (NoSuchMethodException e) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1565
                throw new InstantiationException(getName());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1566
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1567
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1568
        Constructor<T> tmpConstructor = cachedConstructor;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1569
        // Security check (same as in java.lang.reflect.Constructor)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1570
        int modifiers = tmpConstructor.getModifiers();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1571
        if (!!Reflection.quickCheckMemberAccess(this, modifiers)) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1572
            Class caller = Reflection.getCallerClass(3);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1573
            if (newInstanceCallerCache !!= caller) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1574
                Reflection.ensureMemberAccess(caller, this, null, modifiers);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1575
                newInstanceCallerCache = caller;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1576
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1577
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1578
        // Run constructor
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1579
        try {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1580
            return tmpConstructor.newInstance((Object[])null);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1581
        } catch (InvocationTargetException e) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1582
            Unsafe.getUnsafe().throwException(e.getTargetException());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1583
            // Not reached
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1584
            return null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1585
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1586
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1587
    private volatile transient Constructor<T> cachedConstructor;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1588
    private volatile transient Class       newInstanceCallerCache;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1589
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1590
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1591
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1592
     * Determines if the specified <code>Object</code> is assignment-compatible
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1593
     * with the object represented by this <code>Class</code>.  This method is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1594
     * the dynamic equivalent of the Java language <code>instanceof</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1595
     * operator. The method returns <code>true</code> if the specified
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1596
     * <code>Object</code> argument is non-null and can be cast to the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1597
     * reference type represented by this <code>Class</code> object without
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1598
     * raising a <code>ClassCastException.</code> It returns <code>false</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1599
     * otherwise.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1600
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1601
     * <p> Specifically, if this <code>Class</code> object represents a
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1602
     * declared class, this method returns <code>true</code> if the specified
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1603
     * <code>Object</code> argument is an instance of the represented class (or
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1604
     * of any of its subclasses); it returns <code>false</code> otherwise. If
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1605
     * this <code>Class</code> object represents an array class, this method
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1606
     * returns <code>true</code> if the specified <code>Object</code> argument
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1607
     * can be converted to an object of the array class by an identity
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1608
     * conversion or by a widening reference conversion; it returns
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1609
     * <code>false</code> otherwise. If this <code>Class</code> object
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1610
     * represents an interface, this method returns <code>true</code> if the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1611
     * class or any superclass of the specified <code>Object</code> argument
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1612
     * implements this interface; it returns <code>false</code> otherwise. If
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1613
     * this <code>Class</code> object represents a primitive type, this method
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1614
     * returns <code>false</code>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1615
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1616
     * @param   obj the object to check
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1617
     * @return  true if <code>obj</code> is an instance of this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1618
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1619
     * @since JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1620
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1621
    public native boolean isInstance(Object obj);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1622
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1623
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1624
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1625
     * Determines if the class or interface represented by this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1626
     * <code>Class</code> object is either the same as, or is a superclass or
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1627
     * superinterface of, the class or interface represented by the specified
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1628
     * <code>Class</code> parameter. It returns <code>true</code> if so;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1629
     * otherwise it returns <code>false</code>. If this <code>Class</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1630
     * object represents a primitive type, this method returns
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1631
     * <code>true</code> if the specified <code>Class</code> parameter is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1632
     * exactly this <code>Class</code> object; otherwise it returns
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1633
     * <code>false</code>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1634
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1635
     * <p> Specifically, this method tests whether the type represented by the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1636
     * specified <code>Class</code> parameter can be converted to the type
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1637
     * represented by this <code>Class</code> object via an identity conversion
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1638
     * or via a widening reference conversion. See <em>The Java Language
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1639
     * Specification</em>, sections 5.1.1 and 5.1.4 , for details.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1640
     * 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1641
     * @param cls the <code>Class</code> object to be checked
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1642
     * @return the <code>boolean</code> value indicating whether objects of the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1643
     * type <code>cls</code> can be assigned to objects of this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1644
     * @exception NullPointerException if the specified Class parameter is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1645
     *            null.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1646
     * @since JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1647
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1648
    public native boolean isAssignableFrom(Class<?> cls);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1649
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1650
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1651
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1652
     * Determines if the specified <code>Class</code> object represents an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1653
     * interface type.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1654
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1655
     * @return  <code>true</code> if this object represents an interface;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1656
     *          <code>false</code> otherwise.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1657
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1658
    public native boolean isInterface();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1659
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1660
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1661
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1662
     * Determines if this <code>Class</code> object represents an array class.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1663
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1664
     * @return  <code>true</code> if this object represents an array class;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1665
     *          <code>false</code> otherwise.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1666
     * @since   JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1667
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1668
    public native boolean isArray();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1669
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1670
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1671
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1672
     * Determines if the specified <code>Class</code> object represents a
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1673
     * primitive type.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1674
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1675
     * <p> There are nine predefined <code>Class</code> objects to represent
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1676
     * the eight primitive types and void.  These are created by the Java
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1677
     * Virtual Machine, and have the same names as the primitive types that
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1678
     * they represent, namely <code>boolean</code>, <code>byte</code>,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1679
     * <code>char</code>, <code>short</code>, <code>int</code>,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1680
     * <code>long</code>, <code>float</code>, and <code>double</code>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1681
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1682
     * <p> These objects may only be accessed via the following public static
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1683
     * final variables, and are the only <code>Class</code> objects for which
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1684
     * this method returns <code>true</code>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1685
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1686
     * @return true if and only if this class represents a primitive type
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1687
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1688
     * @see     java.lang.Boolean#TYPE
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1689
     * @see     java.lang.Character#TYPE
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1690
     * @see     java.lang.Byte#TYPE
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1691
     * @see     java.lang.Short#TYPE
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1692
     * @see     java.lang.Integer#TYPE
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1693
     * @see     java.lang.Long#TYPE
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1694
     * @see     java.lang.Float#TYPE
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1695
     * @see     java.lang.Double#TYPE
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1696
     * @see     java.lang.Void#TYPE
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1697
     * @since JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1698
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1699
    public native boolean isPrimitive();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1700
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1701
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1702
     * Returns true if this <tt>Class</tt> object represents an annotation
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1703
     * type.  Note that if this method returns true, {@link #isInterface()}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1704
     * would also return true, as all annotation types are also interfaces.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1705
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1706
     * @return <tt>true</tt> if this class object represents an annotation
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1707
     *      type; <tt>false</tt> otherwise
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1708
     * @since 1.5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1709
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1710
    public boolean isAnnotation() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1711
        return (getModifiers() & ANNOTATION) !!= 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1712
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1713
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1714
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1715
     * Returns <tt>true</tt> if this class is a synthetic class;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1716
     * returns <tt>false</tt> otherwise.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1717
     * @return <tt>true</tt> if and only if this class is a synthetic class as
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1718
     *         defined by the Java Language Specification.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1719
     * @since 1.5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1720
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1721
    public boolean isSynthetic() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1722
        return (getModifiers() & SYNTHETIC) !!= 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1723
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1724
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1725
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1726
     * Returns the  name of the entity (class, interface, array class,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1727
     * primitive type, or void) represented by this <tt>Class</tt> object,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1728
     * as a <tt>String</tt>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1729
     * 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1730
     * <p> If this class object represents a reference type that is not an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1731
     * array type then the binary name of the class is returned, as specified
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1732
     * by the Java Language Specification, Second Edition.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1733
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1734
     * <p> If this class object represents a primitive type or void, then the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1735
     * name returned is a <tt>String</tt> equal to the Java language
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1736
     * keyword corresponding to the primitive type or void.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1737
     * 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1738
     * <p> If this class object represents a class of arrays, then the internal
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1739
     * form of the name consists of the name of the element type preceded by
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1740
     * one or more ''<tt>[</tt>'' characters representing the depth of the array
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1741
     * nesting.  The encoding of element type names is as follows:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1742
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1743
     * <blockquote><table summary="Element types and encodings">
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1744
     * <tr><th> Element Type <th> &nbsp;&nbsp;&nbsp; <th> Encoding
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1745
     * <tr><td> boolean      <td> &nbsp;&nbsp;&nbsp; <td align=center> Z
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1746
     * <tr><td> byte         <td> &nbsp;&nbsp;&nbsp; <td align=center> B
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1747
     * <tr><td> char         <td> &nbsp;&nbsp;&nbsp; <td align=center> C
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1748
     * <tr><td> class or interface  
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1749
     *                       <td> &nbsp;&nbsp;&nbsp; <td align=center> L<i>classname</i>;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1750
     * <tr><td> double       <td> &nbsp;&nbsp;&nbsp; <td align=center> D
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1751
     * <tr><td> float        <td> &nbsp;&nbsp;&nbsp; <td align=center> F
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1752
     * <tr><td> int          <td> &nbsp;&nbsp;&nbsp; <td align=center> I
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1753
     * <tr><td> long         <td> &nbsp;&nbsp;&nbsp; <td align=center> J
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1754
     * <tr><td> short        <td> &nbsp;&nbsp;&nbsp; <td align=center> S
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1755
     * </table></blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1756
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1757
     * <p> The class or interface name <i>classname</i> is the binary name of
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1758
     * the class specified above.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1759
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1760
     * <p> Examples:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1761
     * <blockquote><pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1762
     * String.class.getName()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1763
     *     returns "java.lang.String"
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1764
     * byte.class.getName()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1765
     *     returns "byte"
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1766
     * (new Object[3]).getClass().getName()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1767
     *     returns "[Ljava.lang.Object;"
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1768
     * (new int[3][4][5][6][7][8][9]).getClass().getName()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1769
     *     returns "[[[[[[[I"
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1770
     * </pre></blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1771
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1772
     * @return  the name of the class or interface
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1773
     *          represented by this object.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1774
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1775
    public String getName() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1776
        if (name == null)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1777
            name = getName0();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1778
        return name;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1779
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1780
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1781
    // cache the name to reduce the number of calls into the VM
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1782
    private transient String name;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1783
    private native String getName0();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1784
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1785
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1786
     * Returns the class loader for the class.  Some implementations may use
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1787
     * null to represent the bootstrap class loader. This method will return
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1788
     * null in such implementations if this class was loaded by the bootstrap
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1789
     * class loader.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1790
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1791
     * <p> If a security manager is present, and the caller''s class loader is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1792
     * not null and the caller''s class loader is not the same as or an ancestor of
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1793
     * the class loader for the class whose class loader is requested, then
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1794
     * this method calls the security manager''s <code>checkPermission</code> 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1795
     * method with a <code>RuntimePermission("getClassLoader")</code> 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1796
     * permission to ensure it''s ok to access the class loader for the class.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1797
     * 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1798
     * <p>If this object
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1799
     * represents a primitive type or void, null is returned.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1800
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1801
     * @return  the class loader that loaded the class or interface
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1802
     *          represented by this object.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1803
     * @throws SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1804
     *    if a security manager exists and its 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1805
     *    <code>checkPermission</code> method denies
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1806
     *    access to the class loader for the class.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1807
     * @see java.lang.ClassLoader
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1808
     * @see SecurityManager#checkPermission
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1809
     * @see java.lang.RuntimePermission
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1810
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1811
    public ClassLoader getClassLoader() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1812
        ClassLoader cl = getClassLoader0();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1813
        if (cl == null)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1814
            return null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1815
        SecurityManager sm = System.getSecurityManager();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1816
        if (sm !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1817
            ClassLoader ccl = ClassLoader.getCallerClassLoader();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1818
            if (ccl !!= null && ccl !!= cl && !!cl.isAncestor(ccl)) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1819
                sm.checkPermission(SecurityConstants.GET_CLASSLOADER_PERMISSION);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1820
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1821
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1822
        return cl;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1823
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1824
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1825
    // Package-private to allow ClassLoader access
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1826
    native ClassLoader getClassLoader0();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1827
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1828
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1829
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1830
     * Returns an array of <tt>TypeVariable</tt> objects that represent the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1831
     * type variables declared by the generic declaration represented by this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1832
     * <tt>GenericDeclaration</tt> object, in declaration order.  Returns an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1833
     * array of length 0 if the underlying generic declaration declares no type
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1834
     * variables.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1835
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1836
     * @return an array of <tt>TypeVariable</tt> objects that represent
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1837
     *     the type variables declared by this generic declaration
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1838
     * @throws GenericSignatureFormatError if the generic
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1839
     *     signature of this generic declaration does not conform to
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1840
     *     the format specified in the Java Virtual Machine Specification,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1841
     *     3rd edition
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1842
     * @since 1.5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1843
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1844
    public TypeVariable<Class<T>>[] getTypeParameters() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1845
        if (getGenericSignature() !!= null) 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1846
            return (TypeVariable<Class<T>>[])getGenericInfo().getTypeParameters();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1847
        else
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1848
            return (TypeVariable<Class<T>>[])new TypeVariable[0];
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1849
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1850
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1851
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1852
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1853
     * Returns the <code>Class</code> representing the superclass of the entity
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1854
     * (class, interface, primitive type or void) represented by this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1855
     * <code>Class</code>.  If this <code>Class</code> represents either the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1856
     * <code>Object</code> class, an interface, a primitive type, or void, then
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1857
     * null is returned.  If this object represents an array class then the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1858
     * <code>Class</code> object representing the <code>Object</code> class is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1859
     * returned.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1860
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1861
     * @return the superclass of the class represented by this object.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1862
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1863
    public native Class<? super T> getSuperclass();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1864
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1865
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1866
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1867
     * Returns the <tt>Type</tt> representing the direct superclass of
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1868
     * the entity (class, interface, primitive type or void) represented by
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1869
     * this <tt>Class</tt>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1870
     * 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1871
     * <p>If the superclass is a parameterized type, the <tt>Type</tt>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1872
     * object returned must accurately reflect the actual type
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1873
     * parameters used in the source code. The parameterized type
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1874
     * representing the superclass is created if it had not been
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1875
     * created before. See the declaration of {@link
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1876
     * java.lang.reflect.ParameterizedType ParameterizedType} for the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1877
     * semantics of the creation process for parameterized types.  If
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1878
     * this <tt>Class</tt> represents either the <tt>Object</tt>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1879
     * class, an interface, a primitive type, or void, then null is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1880
     * returned.  If this object represents an array class then the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1881
     * <tt>Class</tt> object representing the <tt>Object</tt> class is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1882
     * returned.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1883
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1884
     * @throws GenericSignatureFormatError if the generic
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1885
     *     class signature does not conform to the format specified in the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1886
     *     Java Virtual Machine Specification, 3rd edition
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1887
     * @throws TypeNotPresentException if the generic superclass
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1888
     *     refers to a non-existent type declaration
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1889
     * @throws MalformedParameterizedTypeException if the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1890
     *     generic superclass refers to a parameterized type that cannot be
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1891
     *     instantiated  for any reason
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1892
     * @return the superclass of the class represented by this object
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1893
     * @since 1.5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1894
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1895
    public Type getGenericSuperclass() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1896
        if (getGenericSignature() !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1897
            // Historical irregularity:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1898
            // Generic signature marks interfaces with superclass = Object
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1899
            // but this API returns null for interfaces
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1900
            if (isInterface())
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1901
                return null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1902
            return getGenericInfo().getSuperclass();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1903
        } else
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1904
            return getSuperclass();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1905
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1906
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1907
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1908
     * Gets the package for this class.  The class loader of this class is used
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1909
     * to find the package.  If the class was loaded by the bootstrap class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1910
     * loader the set of packages loaded from CLASSPATH is searched to find the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1911
     * package of the class. Null is returned if no package object was created
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1912
     * by the class loader of this class.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1913
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1914
     * <p> Packages have attributes for versions and specifications only if the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1915
     * information was defined in the manifests that accompany the classes, and
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1916
     * if the class loader created the package instance with the attributes
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1917
     * from the manifest.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1918
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1919
     * @return the package of the class, or null if no package
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1920
     *         information is available from the archive or codebase.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1921
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1922
    public Package getPackage() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1923
        return Package.getPackage(this);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1924
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1925
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1926
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1927
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1928
     * Determines the interfaces implemented by the class or interface
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1929
     * represented by this object.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1930
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1931
     * <p> If this object represents a class, the return value is an array
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1932
     * containing objects representing all interfaces implemented by the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1933
     * class. The order of the interface objects in the array corresponds to
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1934
     * the order of the interface names in the <code>implements</code> clause
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1935
     * of the declaration of the class represented by this object. For 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1936
     * example, given the declaration:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1937
     * <blockquote><pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1938
     * class Shimmer implements FloorWax, DessertTopping { ... }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1939
     * </pre></blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1940
     * suppose the value of <code>s</code> is an instance of 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1941
     * <code>Shimmer</code>; the value of the expression:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1942
     * <blockquote><pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1943
     * s.getClass().getInterfaces()[0]
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1944
     * </pre></blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1945
     * is the <code>Class</code> object that represents interface 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1946
     * <code>FloorWax</code>; and the value of:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1947
     * <blockquote><pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1948
     * s.getClass().getInterfaces()[1]
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1949
     * </pre></blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1950
     * is the <code>Class</code> object that represents interface 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1951
     * <code>DessertTopping</code>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1952
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1953
     * <p> If this object represents an interface, the array contains objects
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1954
     * representing all interfaces extended by the interface. The order of the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1955
     * interface objects in the array corresponds to the order of the interface
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1956
     * names in the <code>extends</code> clause of the declaration of the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1957
     * interface represented by this object.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1958
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1959
     * <p> If this object represents a class or interface that implements no
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1960
     * interfaces, the method returns an array of length 0.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1961
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1962
     * <p> If this object represents a primitive type or void, the method
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1963
     * returns an array of length 0.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1964
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1965
     * @return an array of interfaces implemented by this class.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1966
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1967
    public native Class<?>[] getInterfaces();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1968
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1969
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1970
     * Returns the <tt>Type</tt>s representing the interfaces 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1971
     * directly implemented by the class or interface represented by
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1972
     * this object.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1973
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1974
     * <p>If a superinterface is a parameterized type, the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1975
     * <tt>Type</tt> object returned for it must accurately reflect
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1976
     * the actual type parameters used in the source code. The
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1977
     * parameterized type representing each superinterface is created
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1978
     * if it had not been created before. See the declaration of
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1979
     * {@link java.lang.reflect.ParameterizedType ParameterizedType}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1980
     * for the semantics of the creation process for parameterized
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1981
     * types.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1982
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1983
     * <p> If this object represents a class, the return value is an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1984
     * array containing objects representing all interfaces
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1985
     * implemented by the class. The order of the interface objects in
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1986
     * the array corresponds to the order of the interface names in
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1987
     * the <tt>implements</tt> clause of the declaration of the class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1988
     * represented by this object.  In the case of an array class, the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1989
     * interfaces <tt>Cloneable</tt> and <tt>Serializable</tt> are
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1990
     * returned in that order.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1991
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1992
     * <p>If this object represents an interface, the array contains
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1993
     * objects representing all interfaces directly extended by the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1994
     * interface.  The order of the interface objects in the array
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1995
     * corresponds to the order of the interface names in the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1996
     * <tt>extends</tt> clause of the declaration of the interface
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1997
     * represented by this object.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1998
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  1999
     * <p>If this object represents a class or interface that
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2000
     * implements no interfaces, the method returns an array of length
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2001
     * 0.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2002
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2003
     * <p>If this object represents a primitive type or void, the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2004
     * method returns an array of length 0.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2005
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2006
     * @throws GenericSignatureFormatError
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2007
     *     if the generic class signature does not conform to the format
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2008
     *     specified in the Java Virtual Machine Specification, 3rd edition
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2009
     * @throws TypeNotPresentException if any of the generic
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2010
     *     superinterfaces refers to a non-existent type declaration
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2011
     * @throws MalformedParameterizedTypeException if any of the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2012
     *     generic superinterfaces refer to a parameterized type that cannot
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2013
     *     be instantiated  for any reason
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2014
     * @return an array of interfaces implemented by this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2015
     * @since 1.5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2016
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2017
    public Type[] getGenericInterfaces() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2018
        if (getGenericSignature() !!= null)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2019
            return getGenericInfo().getSuperInterfaces();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2020
        else
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2021
            return getInterfaces();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2022
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2023
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2024
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2025
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2026
     * Returns the <code>Class</code> representing the component type of an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2027
     * array.  If this class does not represent an array class this method
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2028
     * returns null.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2029
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2030
     * @return the <code>Class</code> representing the component type of this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2031
     * class if this class is an array
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2032
     * @see     java.lang.reflect.Array
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2033
     * @since JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2034
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2035
    public native Class<?> getComponentType();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2036
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2037
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2038
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2039
     * Returns the Java language modifiers for this class or interface, encoded
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2040
     * in an integer. The modifiers consist of the Java Virtual Machine''s
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2041
     * constants for <code>public</code>, <code>protected</code>,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2042
     * <code>private</code>, <code>final</code>, <code>static</code>,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2043
     * <code>abstract</code> and <code>interface</code>; they should be decoded
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2044
     * using the methods of class <code>Modifier</code>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2045
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2046
     * <p> If the underlying class is an array class, then its
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2047
     * <code>public</code>, <code>private</code> and <code>protected</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2048
     * modifiers are the same as those of its component type.  If this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2049
     * <code>Class</code> represents a primitive type or void, its
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2050
     * <code>public</code> modifier is always <code>true</code>, and its
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2051
     * <code>protected</code> and <code>private</code> modifiers are always
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2052
     * <code>false</code>. If this object represents an array class, a
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2053
     * primitive type or void, then its <code>final</code> modifier is always
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2054
     * <code>true</code> and its interface modifier is always
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2055
     * <code>false</code>. The values of its other modifiers are not determined
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2056
     * by this specification.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2057
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2058
     * <p> The modifier encodings are defined in <em>The Java Virtual Machine
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2059
     * Specification</em>, table 4.1.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2060
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2061
     * @return the <code>int</code> representing the modifiers for this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2062
     * @see     java.lang.reflect.Modifier
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2063
     * @since JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2064
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2065
    public native int getModifiers();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2066
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2067
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2068
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2069
     * Gets the signers of this class.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2070
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2071
     * @return  the signers of this class, or null if there are no signers.  In
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2072
     *          particular, this method returns null if this object represents
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2073
     *          a primitive type or void.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2074
     * @since   JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2075
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2076
    public native Object[] getSigners();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2077
        
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2078
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2079
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2080
     * Set the signers of this class.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2081
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2082
    native void setSigners(Object[] signers);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2083
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2084
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2085
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2086
     * If this <tt>Class</tt> object represents a local or anonymous
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2087
     * class within a method, returns a {@link
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2088
     * java.lang.reflect.Method Method} object representing the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2089
     * immediately enclosing method of the underlying class. Returns
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2090
     * <tt>null</tt> otherwise.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2091
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2092
     * In particular, this method returns <tt>null</tt> if the underlying
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2093
     * class is a local or anonymous class immediately enclosed by a type
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2094
     * declaration, instance initializer or static initializer.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2095
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2096
     * @return the immediately enclosing method of the underlying class, if
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2097
     *     that class is a local or anonymous class; otherwise <tt>null</tt>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2098
     * @since 1.5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2099
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2100
    public Method getEnclosingMethod() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2101
        EnclosingMethodInfo enclosingInfo = getEnclosingMethodInfo();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2102
        
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2103
        if (enclosingInfo == null)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2104
            return null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2105
        else {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2106
            if (!!enclosingInfo.isMethod())
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2107
                return null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2108
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2109
            MethodRepository typeInfo = MethodRepository.make(enclosingInfo.getDescriptor(), 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2110
                                                              getFactory());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2111
            Class      returnType       = toClass(typeInfo.getReturnType());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2112
            Type []    parameterTypes   = typeInfo.getParameterTypes();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2113
            Class<?>[] parameterClasses = new Class<?>[parameterTypes.length];
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2114
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2115
            // Convert Types to Classes; returned types *should*
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2116
            // be class objects since the methodDescriptor''s used
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2117
            // don''t have generics information
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2118
            for(int i = 0; i < parameterClasses.length; i++)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2119
                parameterClasses[i] = toClass(parameterTypes[i]);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2120
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2121
            /*
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2122
             * Loop over all declared methods; match method name,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2123
             * number of and type of parameters, *and* return
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2124
             * type.  Matching return type is also necessary
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2125
             * because of covariant returns, etc.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2126
             */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2127
            for(Method m: enclosingInfo.getEnclosingClass().getDeclaredMethods()) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2128
                if (m.getName().equals(enclosingInfo.getName()) ) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2129
                    Class<?>[] candidateParamClasses = m.getParameterTypes();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2130
                    if (candidateParamClasses.length == parameterClasses.length) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2131
                        boolean matches = true;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2132
                        for(int i = 0; i < candidateParamClasses.length; i++) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2133
                            if (!!candidateParamClasses[i].equals(parameterClasses[i])) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2134
                                matches = false;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2135
                                break;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2136
                            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2137
                        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2138
                            
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2139
                        if (matches) { // finally, check return type
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2140
                            if (m.getReturnType().equals(returnType) )
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2141
                                return m;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2142
                        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2143
                    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2144
                }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2145
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2146
                
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2147
            throw new InternalError("Enclosing method not found");
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2148
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2149
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2150
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2151
    private native Object[] getEnclosingMethod0();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2152
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2153
    private EnclosingMethodInfo getEnclosingMethodInfo() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2154
        Object[] enclosingInfo = getEnclosingMethod0();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2155
        if (enclosingInfo == null)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2156
            return null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2157
        else {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2158
            return new EnclosingMethodInfo(enclosingInfo);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2159
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2160
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2161
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2162
    private final static class EnclosingMethodInfo {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2163
        private Class<?> enclosingClass;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2164
        private String name;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2165
        private String descriptor;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2166
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2167
        private EnclosingMethodInfo(Object[] enclosingInfo) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2168
            if (enclosingInfo.length !!= 3)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2169
                throw new InternalError("Malformed enclosing method information");
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2170
            try {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2171
                // The array is expected to have three elements:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2172
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2173
                // the immediately enclosing class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2174
                enclosingClass = (Class<?>) enclosingInfo[0];
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2175
                assert(enclosingClass !!= null);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2176
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2177
                // the immediately enclosing method or constructor''s
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2178
                // name (can be null).
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2179
                name            = (String)   enclosingInfo[1]; 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2180
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2181
                // the immediately enclosing method or constructor''s
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2182
                // descriptor (null iff name is).
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2183
                descriptor      = (String)   enclosingInfo[2];
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2184
                assert((name !!= null && descriptor !!= null) || name == descriptor);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2185
            } catch (ClassCastException cce) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2186
                throw new InternalError("Invalid type in enclosing method information");
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2187
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2188
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2189
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2190
        boolean isPartial() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2191
            return enclosingClass == null || name == null || descriptor == null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2192
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2193
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2194
        boolean isConstructor() { return !!isPartial() && "<init>".equals(name); }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2195
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2196
        boolean isMethod() { return !!isPartial() && !!isConstructor() && !!"<clinit>".equals(name); }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2197
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2198
        Class<?> getEnclosingClass() { return enclosingClass; }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2199
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2200
        String getName() { return name; }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2201
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2202
        String getDescriptor() { return descriptor; }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2203
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2204
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2205
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2206
    private static Class toClass(Type o) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2207
        if (o instanceof GenericArrayType)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2208
            return Array.newInstance(toClass(((GenericArrayType)o).getGenericComponentType()),
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2209
                                     0)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2210
                .getClass();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2211
        return (Class)o;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2212
     }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2213
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2214
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2215
     * If this <tt>Class</tt> object represents a local or anonymous
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2216
     * class within a constructor, returns a {@link
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2217
     * java.lang.reflect.Constructor Constructor} object representing
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2218
     * the immediately enclosing constructor of the underlying
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2219
     * class. Returns <tt>null</tt> otherwise.  In particular, this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2220
     * method returns <tt>null</tt> if the underlying class is a local
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2221
     * or anonymous class immediately enclosed by a type declaration,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2222
     * instance initializer or static initializer.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2223
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2224
     * @return the immediately enclosing constructor of the underlying class, if
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2225
     *     that class is a local or anonymous class; otherwise <tt>null</tt>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2226
     * @since 1.5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2227
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2228
    public Constructor<?> getEnclosingConstructor() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2229
        EnclosingMethodInfo enclosingInfo = getEnclosingMethodInfo();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2230
        
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2231
        if (enclosingInfo == null)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2232
            return null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2233
        else {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2234
            if (!!enclosingInfo.isConstructor())
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2235
                return null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2236
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2237
            ConstructorRepository typeInfo = ConstructorRepository.make(enclosingInfo.getDescriptor(), 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2238
                                                                        getFactory());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2239
            Type []    parameterTypes   = typeInfo.getParameterTypes();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2240
            Class<?>[] parameterClasses = new Class<?>[parameterTypes.length];
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2241
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2242
            // Convert Types to Classes; returned types *should*
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2243
            // be class objects since the methodDescriptor''s used
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2244
            // don''t have generics information
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2245
            for(int i = 0; i < parameterClasses.length; i++)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2246
                parameterClasses[i] = toClass(parameterTypes[i]);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2247
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2248
            /*
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2249
             * Loop over all declared constructors; match number
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2250
             * of and type of parameters.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2251
             */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2252
            for(Constructor c: enclosingInfo.getEnclosingClass().getDeclaredConstructors()) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2253
                Class<?>[] candidateParamClasses = c.getParameterTypes();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2254
                if (candidateParamClasses.length == parameterClasses.length) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2255
                    boolean matches = true;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2256
                    for(int i = 0; i < candidateParamClasses.length; i++) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2257
                        if (!!candidateParamClasses[i].equals(parameterClasses[i])) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2258
                            matches = false;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2259
                            break;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2260
                        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2261
                    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2262
                        
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2263
                    if (matches)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2264
                        return c;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2265
                }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2266
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2267
                
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2268
            throw new InternalError("Enclosing constructor not found");
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2269
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2270
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2271
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2272
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2273
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2274
     * If the class or interface represented by this <code>Class</code> object
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2275
     * is a member of another class, returns the <code>Class</code> object
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2276
     * representing the class in which it was declared.  This method returns
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2277
     * null if this class or interface is not a member of any other class.  If
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2278
     * this <code>Class</code> object represents an array class, a primitive
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2279
     * type, or void,then this method returns null.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2280
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2281
     * @return the declaring class for this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2282
     * @since JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2283
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2284
    public native Class<?> getDeclaringClass();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2285
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2286
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2287
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2288
     * Returns the immediately enclosing class of the underlying
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2289
     * class.  If the underlying class is a top level class this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2290
     * method returns <tt>null</tt>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2291
     * @return the immediately enclosing class of the underlying class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2292
     * @since 1.5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2293
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2294
    public Class<?> getEnclosingClass() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2295
        // There are five kinds of classes (or interfaces):
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2296
        // a) Top level classes
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2297
        // b) Nested classes (static member classes)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2298
        // c) Inner classes (non-static member classes)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2299
        // d) Local classes (named classes declared within a method)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2300
        // e) Anonymous classes
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2301
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2302
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2303
        // JVM Spec 4.8.6: A class must have an EnclosingMethod
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2304
        // attribute if and only if it is a local class or an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2305
        // anonymous class.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2306
        EnclosingMethodInfo enclosingInfo = getEnclosingMethodInfo();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2307
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2308
        if (enclosingInfo == null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2309
            // This is a top level or a nested class or an inner class (a, b, or c)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2310
            return getDeclaringClass();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2311
        } else {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2312
            Class<?> enclosingClass = enclosingInfo.getEnclosingClass();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2313
            // This is a local class or an anonymous class (d or e)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2314
            if (enclosingClass == this || enclosingClass == null)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2315
                throw new InternalError("Malformed enclosing method information");
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2316
            else
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2317
                return enclosingClass;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2318
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2319
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2320
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2321
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2322
     * Returns the simple name of the underlying class as given in the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2323
     * source code. Returns an empty string if the underlying class is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2324
     * anonymous.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2325
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2326
     * <p>The simple name of an array is the simple name of the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2327
     * component type with "[]" appended.  In particular the simple
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2328
     * name of an array whose component type is anonymous is "[]".
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2329
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2330
     * @return the simple name of the underlying class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2331
     * @since 1.5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2332
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2333
    public String getSimpleName() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2334
        if (isArray())
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2335
            return getComponentType().getSimpleName()+"[]";
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2336
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2337
        String simpleName = getSimpleBinaryName();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2338
        if (simpleName == null) { // top level class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2339
            simpleName = getName();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2340
            return simpleName.substring(simpleName.lastIndexOf(".")+1); // strip the package name
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2341
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2342
        // According to JLS3 "Binary Compatibility" (13.1) the binary
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2343
        // name of non-package classes (not top level) is the binary
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2344
        // name of the immediately enclosing class followed by a ''$'' followed by:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2345
        // (for nested and inner classes): the simple name.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2346
        // (for local classes): 1 or more digits followed by the simple name.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2347
        // (for anonymous classes): 1 or more digits.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2348
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2349
        // Since getSimpleBinaryName() will strip the binary name of
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2350
        // the immediatly enclosing class, we are now looking at a
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2351
        // string that matches the regular expression "\$[0-9]*"
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2352
        // followed by a simple name (considering the simple of an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2353
        // anonymous class to be the empty string).
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2354
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2355
        // Remove leading "\$[0-9]*" from the name
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2356
        int length = simpleName.length();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2357
        if (length < 1 || simpleName.charAt(0) !!= ''$'')
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2358
            throw new InternalError("Malformed class name");
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2359
        int index = 1;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2360
        while (index < length && isAsciiDigit(simpleName.charAt(index)))
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2361
            index++;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2362
        // Eventually, this is the empty string iff this is an anonymous class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2363
        return simpleName.substring(index);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2364
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2365
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2366
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2367
     * Character.isDigit answers <tt>true</tt> to some non-ascii
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2368
     * digits.  This one does not.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2369
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2370
    private static boolean isAsciiDigit(char c) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2371
        return ''0'' <= c && c <= ''9'';
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2372
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2373
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2374
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2375
     * Returns the canonical name of the underlying class as
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2376
     * defined by the Java Language Specification.  Returns null if
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2377
     * the underlying class does not have a canonical name (i.e., if
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2378
     * it is a local or anonymous class or an array whose component
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2379
     * type does not have a canonical name).
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2380
     * @return the canonical name of the underlying class if it exists, and
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2381
     * <tt>null</tt> otherwise.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2382
     * @since 1.5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2383
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2384
    public String getCanonicalName() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2385
        if (isArray()) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2386
            String canonicalName = getComponentType().getCanonicalName();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2387
            if (canonicalName !!= null)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2388
                return canonicalName + "[]";
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2389
            else
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2390
                return null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2391
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2392
        if (isLocalOrAnonymousClass())
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2393
            return null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2394
        Class<?> enclosingClass = getEnclosingClass();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2395
        if (enclosingClass == null) { // top level class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2396
            return getName();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2397
        } else {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2398
            String enclosingName = enclosingClass.getCanonicalName();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2399
            if (enclosingName == null)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2400
                return null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2401
            return enclosingName + "." + getSimpleName();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2402
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2403
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2404
 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2405
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2406
     * Returns <tt>true</tt> if and only if the underlying class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2407
     * is an anonymous class.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2408
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2409
     * @return <tt>true</tt> if and only if this class is an anonymous class.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2410
     * @since 1.5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2411
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2412
    public boolean isAnonymousClass() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2413
        return "".equals(getSimpleName());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2414
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2415
 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2416
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2417
     * Returns <tt>true</tt> if and only if the underlying class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2418
     * is a local class.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2419
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2420
     * @return <tt>true</tt> if and only if this class is a local class.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2421
     * @since 1.5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2422
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2423
    public boolean isLocalClass() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2424
        return isLocalOrAnonymousClass() && !!isAnonymousClass();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2425
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2426
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2427
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2428
     * Returns <tt>true</tt> if and only if the underlying class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2429
     * is a member class.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2430
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2431
     * @return <tt>true</tt> if and only if this class is a member class.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2432
     * @since 1.5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2433
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2434
    public boolean isMemberClass() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2435
        return getSimpleBinaryName() !!= null && !!isLocalOrAnonymousClass();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2436
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2437
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2438
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2439
     * Returns the "simple binary name" of the underlying class, i.e.,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2440
     * the binary name without the leading enclosing class name.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2441
     * Returns <tt>null</tt> if the underlying class is a top level
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2442
     * class.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2443
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2444
    private String getSimpleBinaryName() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2445
        Class<?> enclosingClass = getEnclosingClass();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2446
        if (enclosingClass == null) // top level class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2447
            return null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2448
        // Otherwise, strip the enclosing class'' name
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2449
        try {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2450
            return getName().substring(enclosingClass.getName().length());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2451
        } catch (IndexOutOfBoundsException ex) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2452
            throw new InternalError("Malformed class name");
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2453
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2454
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2455
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2456
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2457
     * Returns <tt>true</tt> if this is a local class or an anonymous
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2458
     * class.  Returns <tt>false</tt> otherwise.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2459
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2460
    private boolean isLocalOrAnonymousClass() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2461
        // JVM Spec 4.8.6: A class must have an EnclosingMethod
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2462
        // attribute if and only if it is a local class or an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2463
        // anonymous class.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2464
        return getEnclosingMethodInfo() !!= null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2465
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2466
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2467
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2468
     * Returns an array containing <code>Class</code> objects representing all
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2469
     * the public classes and interfaces that are members of the class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2470
     * represented by this <code>Class</code> object.  This includes public
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2471
     * class and interface members inherited from superclasses and public class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2472
     * and interface members declared by the class.  This method returns an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2473
     * array of length 0 if this <code>Class</code> object has no public member
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2474
     * classes or interfaces.  This method also returns an array of length 0 if
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2475
     * this <code>Class</code> object represents a primitive type, an array
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2476
     * class, or void.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2477
     * 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2478
     * @return the array of <code>Class</code> objects representing the public
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2479
     * members of this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2480
     * @exception  SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2481
     *             If a security manager, <i>s</i>, is present and any of the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2482
     *             following conditions is met:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2483
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2484
     *             <ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2485
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2486
     *             <li> invocation of 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2487
     *             <tt>{@link SecurityManager#checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2488
     *             s.checkMemberAccess(this, Member.PUBLIC)}</tt> method
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2489
     *             denies access to the classes within this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2490
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2491
     *             <li> the caller''s class loader is not the same as or an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2492
     *             ancestor of the class loader for the current class and
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2493
     *             invocation of <tt>{@link SecurityManager#checkPackageAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2494
     *             s.checkPackageAccess()}</tt> denies access to the package 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2495
     *             of this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2496
     * 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2497
     *             </ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2498
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2499
     * @since JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2500
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2501
    public Class<?>[] getClasses() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2502
        // be very careful not to change the stack depth of this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2503
        // checkMemberAccess call for security reasons 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2504
        // see java.lang.SecurityManager.checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2505
        checkMemberAccess(Member.PUBLIC, ClassLoader.getCallerClassLoader());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2506
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2507
        // Privileged so this implementation can look at DECLARED classes,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2508
        // something the caller might not have privilege to do.  The code here
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2509
        // is allowed to look at DECLARED classes because (1) it does not hand
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2510
        // out anything other than public members and (2) public member access
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2511
        // has already been ok''d by the SecurityManager.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2512
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2513
        Class[] result = (Class[]) java.security.AccessController.doPrivileged
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2514
            (new java.security.PrivilegedAction() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2515
                public Object run() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2516
                    java.util.List<Class> list = new java.util.ArrayList();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2517
                    Class currentClass = Class.this;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2518
                    while (currentClass !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2519
                        Class[] members = currentClass.getDeclaredClasses();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2520
                        for (int i = 0; i < members.length; i++) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2521
                            if (Modifier.isPublic(members[i].getModifiers())) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2522
                                list.add(members[i]);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2523
                            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2524
                        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2525
                        currentClass = currentClass.getSuperclass();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2526
                    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2527
                    Class[] empty = {};
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2528
                    return list.toArray(empty);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2529
                }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2530
            });
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2531
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2532
        return result;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2533
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2534
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2535
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2536
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2537
     * Returns an array containing <code>Field</code> objects reflecting all
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2538
     * the accessible public fields of the class or interface represented by
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2539
     * this <code>Class</code> object.  The elements in the array returned are
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2540
     * not sorted and are not in any particular order.  This method returns an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2541
     * array of length 0 if the class or interface has no accessible public
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2542
     * fields, or if it represents an array class, a primitive type, or void.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2543
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2544
     * <p> Specifically, if this <code>Class</code> object represents a class,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2545
     * this method returns the public fields of this class and of all its
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2546
     * superclasses.  If this <code>Class</code> object represents an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2547
     * interface, this method returns the fields of this interface and of all
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2548
     * its superinterfaces.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2549
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2550
     * <p> The implicit length field for array class is not reflected by this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2551
     * method. User code should use the methods of class <code>Array</code> to
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2552
     * manipulate arrays.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2553
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2554
     * <p> See <em>The Java Language Specification</em>, sections 8.2 and 8.3.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2555
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2556
     * @return the array of <code>Field</code> objects representing the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2557
     * public fields
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2558
     * @exception  SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2559
     *             If a security manager, <i>s</i>, is present and any of the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2560
     *             following conditions is met:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2561
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2562
     *             <ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2563
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2564
     *             <li> invocation of 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2565
     *             <tt>{@link SecurityManager#checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2566
     *             s.checkMemberAccess(this, Member.PUBLIC)}</tt> denies
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2567
     *             access to the fields within this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2568
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2569
     *             <li> the caller''s class loader is not the same as or an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2570
     *             ancestor of the class loader for the current class and
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2571
     *             invocation of <tt>{@link SecurityManager#checkPackageAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2572
     *             s.checkPackageAccess()}</tt> denies access to the package
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2573
     *             of this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2574
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2575
     *             </ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2576
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2577
     * @since JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2578
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2579
    public Field[] getFields() throws SecurityException {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2580
        // be very careful not to change the stack depth of this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2581
        // checkMemberAccess call for security reasons 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2582
        // see java.lang.SecurityManager.checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2583
        checkMemberAccess(Member.PUBLIC, ClassLoader.getCallerClassLoader());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2584
        return copyFields(privateGetPublicFields(null));
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2585
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2586
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2587
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2588
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2589
     * Returns an array containing <code>Method</code> objects reflecting all
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2590
     * the public <em>member</em> methods of the class or interface represented
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2591
     * by this <code>Class</code> object, including those declared by the class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2592
     * or interface and those inherited from superclasses and
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2593
     * superinterfaces.  Array classes return all the (public) member methods 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2594
     * inherited from the <code>Object</code> class.  The elements in the array 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2595
     * returned are not sorted and are not in any particular order.  This 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2596
     * method returns an array of length 0 if this <code>Class</code> object
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2597
     * represents a class or interface that has no public member methods, or if
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2598
     * this <code>Class</code> object represents a primitive type or void.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2599
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2600
     * <p> The class initialization method <code>&lt;clinit&gt;</code> is not
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2601
     * included in the returned array. If the class declares multiple public
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2602
     * member methods with the same parameter types, they are all included in
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2603
     * the returned array.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2604
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2605
     * <p> See <em>The Java Language Specification</em>, sections 8.2 and 8.4.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2606
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2607
     * @return the array of <code>Method</code> objects representing the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2608
     * public methods of this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2609
     * @exception  SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2610
     *             If a security manager, <i>s</i>, is present and any of the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2611
     *             following conditions is met:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2612
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2613
     *             <ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2614
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2615
     *             <li> invocation of 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2616
     *             <tt>{@link SecurityManager#checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2617
     *             s.checkMemberAccess(this, Member.PUBLIC)}</tt> denies
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2618
     *             access to the methods within this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2619
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2620
     *             <li> the caller''s class loader is not the same as or an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2621
     *             ancestor of the class loader for the current class and
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2622
     *             invocation of <tt>{@link SecurityManager#checkPackageAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2623
     *             s.checkPackageAccess()}</tt> denies access to the package
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2624
     *             of this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2625
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2626
     *             </ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2627
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2628
     * @since JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2629
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2630
    public Method[] getMethods() throws SecurityException {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2631
        // be very careful not to change the stack depth of this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2632
        // checkMemberAccess call for security reasons 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2633
        // see java.lang.SecurityManager.checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2634
        checkMemberAccess(Member.PUBLIC, ClassLoader.getCallerClassLoader());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2635
        return copyMethods(privateGetPublicMethods());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2636
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2637
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2638
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2639
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2640
     * Returns an array containing <code>Constructor</code> objects reflecting
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2641
     * all the public constructors of the class represented by this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2642
     * <code>Class</code> object.  An array of length 0 is returned if the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2643
     * class has no public constructors, or if the class is an array class, or
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2644
     * if the class reflects a primitive type or void.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2645
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2646
     * Note that while this method returns an array of {@code
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2647
     * Constructor<T>} objects (that is an array of constructors from
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2648
     * this class), the return type of this method is {@code
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2649
     * Constructor<?>[]} and <em>not</em> {@code Constructor<T>[]} as
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2650
     * might be expected.  This less informative return type is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2651
     * necessary since after being returned from this method, the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2652
     * array could be modified to hold {@code Constructor} objects for
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2653
     * different classes, which would violate the type guarantees of
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2654
     * {@code Constructor<T>[]}.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2655
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2656
     * @return the array of <code>Constructor</code> objects representing the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2657
     *  public constructors of this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2658
     * @exception  SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2659
     *             If a security manager, <i>s</i>, is present and any of the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2660
     *             following conditions is met:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2661
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2662
     *             <ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2663
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2664
     *             <li> invocation of 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2665
     *             <tt>{@link SecurityManager#checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2666
     *             s.checkMemberAccess(this, Member.PUBLIC)}</tt> denies
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2667
     *             access to the constructors within this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2668
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2669
     *             <li> the caller''s class loader is not the same as or an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2670
     *             ancestor of the class loader for the current class and
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2671
     *             invocation of <tt>{@link SecurityManager#checkPackageAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2672
     *             s.checkPackageAccess()}</tt> denies access to the package
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2673
     *             of this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2674
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2675
     *             </ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2676
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2677
     * @since JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2678
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2679
    public Constructor<?>[] getConstructors() throws SecurityException {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2680
        // be very careful not to change the stack depth of this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2681
        // checkMemberAccess call for security reasons 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2682
        // see java.lang.SecurityManager.checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2683
        checkMemberAccess(Member.PUBLIC, ClassLoader.getCallerClassLoader());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2684
        return copyConstructors(privateGetDeclaredConstructors(true));
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2685
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2686
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2687
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2688
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2689
     * Returns a <code>Field</code> object that reflects the specified public
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2690
     * member field of the class or interface represented by this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2691
     * <code>Class</code> object. The <code>name</code> parameter is a
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2692
     * <code>String</code> specifying the simple name of the desired field.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2693
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2694
     * <p> The field to be reflected is determined by the algorithm that
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2695
     * follows.  Let C be the class represented by this object:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2696
     * <OL>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2697
     * <LI> If C declares a public field with the name specified, that is the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2698
     *      field to be reflected.</LI>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2699
     * <LI> If no field was found in step 1 above, this algorithm is applied
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2700
     *      recursively to each direct superinterface of C. The direct
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2701
     *      superinterfaces are searched in the order they were declared.</LI>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2702
     * <LI> If no field was found in steps 1 and 2 above, and C has a
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2703
     *      superclass S, then this algorithm is invoked recursively upon S.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2704
     *      If C has no superclass, then a <code>NoSuchFieldException</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2705
     *      is thrown.</LI>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2706
     * </OL>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2707
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2708
     * <p> See <em>The Java Language Specification</em>, sections 8.2 and 8.3.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2709
     * 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2710
     * @param name the field name
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2711
     * @return  the <code>Field</code> object of this class specified by 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2712
     * <code>name</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2713
     * @exception NoSuchFieldException if a field with the specified name is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2714
     *              not found.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2715
     * @exception NullPointerException if <code>name</code> is <code>null</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2716
     * @exception  SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2717
     *             If a security manager, <i>s</i>, is present and any of the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2718
     *             following conditions is met:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2719
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2720
     *             <ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2721
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2722
     *             <li> invocation of 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2723
     *             <tt>{@link SecurityManager#checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2724
     *             s.checkMemberAccess(this, Member.PUBLIC)}</tt> denies
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2725
     *             access to the field
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2726
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2727
     *             <li> the caller''s class loader is not the same as or an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2728
     *             ancestor of the class loader for the current class and
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2729
     *             invocation of <tt>{@link SecurityManager#checkPackageAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2730
     *             s.checkPackageAccess()}</tt> denies access to the package
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2731
     *             of this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2732
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2733
     *             </ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2734
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2735
     * @since JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2736
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2737
    public Field getField(String name)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2738
        throws NoSuchFieldException, SecurityException {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2739
        // be very careful not to change the stack depth of this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2740
        // checkMemberAccess call for security reasons 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2741
        // see java.lang.SecurityManager.checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2742
        checkMemberAccess(Member.PUBLIC, ClassLoader.getCallerClassLoader());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2743
        Field field = getField0(name);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2744
        if (field == null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2745
            throw new NoSuchFieldException(name);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2746
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2747
        return field;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2748
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2749
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2750
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2751
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2752
     * Returns a <code>Method</code> object that reflects the specified public
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2753
     * member method of the class or interface represented by this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2754
     * <code>Class</code> object. The <code>name</code> parameter is a
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2755
     * <code>String</code> specifying the simple name of the desired method. The
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2756
     * <code>parameterTypes</code> parameter is an array of <code>Class</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2757
     * objects that identify the method''s formal parameter types, in declared
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2758
     * order. If <code>parameterTypes</code> is <code>null</code>, it is 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2759
     * treated as if it were an empty array.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2760
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2761
     * <p> If the <code>name</code> is "{@code <init>};"or "{@code <clinit>}" a
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2762
     * <code>NoSuchMethodException</code> is raised. Otherwise, the method to
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2763
     * be reflected is determined by the algorithm that follows.  Let C be the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2764
     * class represented by this object:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2765
     * <OL>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2766
     * <LI> C is searched for any <I>matching methods</I>. If no matching
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2767
     *      method is found, the algorithm of step 1 is invoked recursively on
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2768
     *      the superclass of C.</LI>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2769
     * <LI> If no method was found in step 1 above, the superinterfaces of C
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2770
     *      are searched for a matching method. If any such method is found, it
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2771
     *      is reflected.</LI>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2772
     * </OL>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2773
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2774
     * To find a matching method in a class C:&nbsp; If C declares exactly one
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2775
     * public method with the specified name and exactly the same formal
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2776
     * parameter types, that is the method reflected. If more than one such
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2777
     * method is found in C, and one of these methods has a return type that is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2778
     * more specific than any of the others, that method is reflected;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2779
     * otherwise one of the methods is chosen arbitrarily.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2780
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2781
     * <p>Note that there may be more than one matching method in a
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2782
     * class because while the Java language forbids a class to
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2783
     * declare multiple methods with the same signature but different
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2784
     * return types, the Java virtual machine does not.  This
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2785
     * increased flexibility in the virtual machine can be used to
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2786
     * implement various language features.  For example, covariant
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2787
     * returns can be implemented with {@linkplain
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2788
     * java.lang.reflect.Method#isBridge bridge methods}; the bridge
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2789
     * method and the method being overridden would have the same
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2790
     * signature but different return types.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2791
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2792
     * <p> See <em>The Java Language Specification</em>, sections 8.2 and 8.4.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2793
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2794
     * @param name the name of the method
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2795
     * @param parameterTypes the list of parameters
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2796
     * @return the <code>Method</code> object that matches the specified
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2797
     * <code>name</code> and <code>parameterTypes</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2798
     * @exception NoSuchMethodException if a matching method is not found
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2799
     *            or if the name is "&lt;init&gt;"or "&lt;clinit&gt;".
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2800
     * @exception NullPointerException if <code>name</code> is <code>null</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2801
     * @exception  SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2802
     *             If a security manager, <i>s</i>, is present and any of the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2803
     *             following conditions is met:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2804
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2805
     *             <ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2806
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2807
     *             <li> invocation of 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2808
     *             <tt>{@link SecurityManager#checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2809
     *             s.checkMemberAccess(this, Member.PUBLIC)}</tt> denies
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2810
     *             access to the method
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2811
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2812
     *             <li> the caller''s class loader is not the same as or an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2813
     *             ancestor of the class loader for the current class and
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2814
     *             invocation of <tt>{@link SecurityManager#checkPackageAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2815
     *             s.checkPackageAccess()}</tt> denies access to the package
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2816
     *             of this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2817
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2818
     *             </ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2819
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2820
     * @since JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2821
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2822
    public Method getMethod(String name, Class<?>... parameterTypes)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2823
        throws NoSuchMethodException, SecurityException {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2824
        // be very careful not to change the stack depth of this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2825
        // checkMemberAccess call for security reasons 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2826
        // see java.lang.SecurityManager.checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2827
        checkMemberAccess(Member.PUBLIC, ClassLoader.getCallerClassLoader());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2828
        Method method = getMethod0(name, parameterTypes);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2829
        if (method == null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2830
            throw new NoSuchMethodException(getName() + "." + name + argumentTypesToString(parameterTypes));
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2831
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2832
        return method;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2833
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2834
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2835
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2836
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2837
     * Returns a <code>Constructor</code> object that reflects the specified
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2838
     * public constructor of the class represented by this <code>Class</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2839
     * object. The <code>parameterTypes</code> parameter is an array of
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2840
     * <code>Class</code> objects that identify the constructor''s formal
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2841
     * parameter types, in declared order.  
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2842
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2843
     * If this <code>Class</code> object represents an inner class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2844
     * declared in a non-static context, the formal parameter types
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2845
     * include the explicit enclosing instance as the first parameter.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2846
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2847
     * <p> The constructor to reflect is the public constructor of the class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2848
     * represented by this <code>Class</code> object whose formal parameter
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2849
     * types match those specified by <code>parameterTypes</code>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2850
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2851
     * @param parameterTypes the parameter array
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2852
     * @return the <code>Constructor</code> object of the public constructor that
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2853
     * matches the specified <code>parameterTypes</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2854
     * @exception NoSuchMethodException if a matching method is not found.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2855
     * @exception  SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2856
     *             If a security manager, <i>s</i>, is present and any of the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2857
     *             following conditions is met:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2858
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2859
     *             <ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2860
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2861
     *             <li> invocation of 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2862
     *             <tt>{@link SecurityManager#checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2863
     *             s.checkMemberAccess(this, Member.PUBLIC)}</tt> denies
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2864
     *             access to the constructor
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2865
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2866
     *             <li> the caller''s class loader is not the same as or an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2867
     *             ancestor of the class loader for the current class and
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2868
     *             invocation of <tt>{@link SecurityManager#checkPackageAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2869
     *             s.checkPackageAccess()}</tt> denies access to the package
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2870
     *             of this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2871
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2872
     *             </ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2873
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2874
     * @since JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2875
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2876
    public Constructor<T> getConstructor(Class<?>... parameterTypes)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2877
        throws NoSuchMethodException, SecurityException {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2878
        // be very careful not to change the stack depth of this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2879
        // checkMemberAccess call for security reasons 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2880
        // see java.lang.SecurityManager.checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2881
        checkMemberAccess(Member.PUBLIC, ClassLoader.getCallerClassLoader());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2882
        return getConstructor0(parameterTypes, Member.PUBLIC);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2883
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2884
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2885
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2886
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2887
     * Returns an array of <code>Class</code> objects reflecting all the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2888
     * classes and interfaces declared as members of the class represented by
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2889
     * this <code>Class</code> object. This includes public, protected, default
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2890
     * (package) access, and private classes and interfaces declared by the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2891
     * class, but excludes inherited classes and interfaces.  This method
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2892
     * returns an array of length 0 if the class declares no classes or
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2893
     * interfaces as members, or if this <code>Class</code> object represents a
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2894
     * primitive type, an array class, or void.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2895
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2896
     * @return the array of <code>Class</code> objects representing all the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2897
     * declared members of this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2898
     * @exception  SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2899
     *             If a security manager, <i>s</i>, is present and any of the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2900
     *             following conditions is met:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2901
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2902
     *             <ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2903
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2904
     *             <li> invocation of 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2905
     *             <tt>{@link SecurityManager#checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2906
     *             s.checkMemberAccess(this, Member.DECLARED)}</tt> denies
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2907
     *             access to the declared classes within this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2908
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2909
     *             <li> the caller''s class loader is not the same as or an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2910
     *             ancestor of the class loader for the current class and
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2911
     *             invocation of <tt>{@link SecurityManager#checkPackageAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2912
     *             s.checkPackageAccess()}</tt> denies access to the package
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2913
     *             of this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2914
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2915
     *             </ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2916
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2917
     * @since JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2918
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2919
    public Class<?>[] getDeclaredClasses() throws SecurityException {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2920
        // be very careful not to change the stack depth of this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2921
        // checkMemberAccess call for security reasons 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2922
        // see java.lang.SecurityManager.checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2923
        checkMemberAccess(Member.DECLARED, ClassLoader.getCallerClassLoader());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2924
        return getDeclaredClasses0();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2925
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2926
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2927
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2928
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2929
     * Returns an array of <code>Field</code> objects reflecting all the fields
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2930
     * declared by the class or interface represented by this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2931
     * <code>Class</code> object. This includes public, protected, default
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2932
     * (package) access, and private fields, but excludes inherited fields.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2933
     * The elements in the array returned are not sorted and are not in any
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2934
     * particular order.  This method returns an array of length 0 if the class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2935
     * or interface declares no fields, or if this <code>Class</code> object
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2936
     * represents a primitive type, an array class, or void.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2937
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2938
     * <p> See <em>The Java Language Specification</em>, sections 8.2 and 8.3.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2939
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2940
     * @return    the array of <code>Field</code> objects representing all the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2941
     * declared fields of this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2942
     * @exception  SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2943
     *             If a security manager, <i>s</i>, is present and any of the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2944
     *             following conditions is met:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2945
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2946
     *             <ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2947
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2948
     *             <li> invocation of 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2949
     *             <tt>{@link SecurityManager#checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2950
     *             s.checkMemberAccess(this, Member.DECLARED)}</tt> denies
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2951
     *             access to the declared fields within this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2952
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2953
     *             <li> the caller''s class loader is not the same as or an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2954
     *             ancestor of the class loader for the current class and
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2955
     *             invocation of <tt>{@link SecurityManager#checkPackageAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2956
     *             s.checkPackageAccess()}</tt> denies access to the package
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2957
     *             of this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2958
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2959
     *             </ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2960
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2961
     * @since JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2962
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2963
    public Field[] getDeclaredFields() throws SecurityException {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2964
        // be very careful not to change the stack depth of this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2965
        // checkMemberAccess call for security reasons 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2966
        // see java.lang.SecurityManager.checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2967
        checkMemberAccess(Member.DECLARED, ClassLoader.getCallerClassLoader());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2968
        return copyFields(privateGetDeclaredFields(false));
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2969
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2970
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2971
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2972
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2973
     * Returns an array of <code>Method</code> objects reflecting all the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2974
     * methods declared by the class or interface represented by this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2975
     * <code>Class</code> object. This includes public, protected, default
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2976
     * (package) access, and private methods, but excludes inherited methods.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2977
     * The elements in the array returned are not sorted and are not in any
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2978
     * particular order.  This method returns an array of length 0 if the class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2979
     * or interface declares no methods, or if this <code>Class</code> object
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2980
     * represents a primitive type, an array class, or void.  The class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2981
     * initialization method <code>&lt;clinit&gt;</code> is not included in the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2982
     * returned array. If the class declares multiple public member methods
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2983
     * with the same parameter types, they are all included in the returned
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2984
     * array.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2985
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2986
     * <p> See <em>The Java Language Specification</em>, section 8.2.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2987
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2988
     * @return    the array of <code>Method</code> objects representing all the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2989
     * declared methods of this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2990
     * @exception  SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2991
     *             If a security manager, <i>s</i>, is present and any of the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2992
     *             following conditions is met:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2993
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2994
     *             <ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2995
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2996
     *             <li> invocation of 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2997
     *             <tt>{@link SecurityManager#checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2998
     *             s.checkMemberAccess(this, Member.DECLARED)}</tt> denies
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  2999
     *             access to the declared methods within this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3000
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3001
     *             <li> the caller''s class loader is not the same as or an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3002
     *             ancestor of the class loader for the current class and
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3003
     *             invocation of <tt>{@link SecurityManager#checkPackageAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3004
     *             s.checkPackageAccess()}</tt> denies access to the package
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3005
     *             of this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3006
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3007
     *             </ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3008
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3009
     * @since JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3010
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3011
    public Method[] getDeclaredMethods() throws SecurityException {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3012
        // be very careful not to change the stack depth of this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3013
        // checkMemberAccess call for security reasons 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3014
        // see java.lang.SecurityManager.checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3015
        checkMemberAccess(Member.DECLARED, ClassLoader.getCallerClassLoader());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3016
        return copyMethods(privateGetDeclaredMethods(false));
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3017
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3018
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3019
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3020
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3021
     * Returns an array of <code>Constructor</code> objects reflecting all the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3022
     * constructors declared by the class represented by this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3023
     * <code>Class</code> object. These are public, protected, default
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3024
     * (package) access, and private constructors.  The elements in the array
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3025
     * returned are not sorted and are not in any particular order.  If the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3026
     * class has a default constructor, it is included in the returned array.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3027
     * This method returns an array of length 0 if this <code>Class</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3028
     * object represents an interface, a primitive type, an array class, or
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3029
     * void.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3030
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3031
     * <p> See <em>The Java Language Specification</em>, section 8.2.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3032
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3033
     * @return    the array of <code>Constructor</code> objects representing all the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3034
     * declared constructors of this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3035
     * @exception  SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3036
     *             If a security manager, <i>s</i>, is present and any of the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3037
     *             following conditions is met:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3038
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3039
     *             <ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3040
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3041
     *             <li> invocation of 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3042
     *             <tt>{@link SecurityManager#checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3043
     *             s.checkMemberAccess(this, Member.DECLARED)}</tt> denies
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3044
     *             access to the declared constructors within this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3045
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3046
     *             <li> the caller''s class loader is not the same as or an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3047
     *             ancestor of the class loader for the current class and
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3048
     *             invocation of <tt>{@link SecurityManager#checkPackageAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3049
     *             s.checkPackageAccess()}</tt> denies access to the package
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3050
     *             of this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3051
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3052
     *             </ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3053
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3054
     * @since JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3055
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3056
    public Constructor<?>[] getDeclaredConstructors() throws SecurityException {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3057
        // be very careful not to change the stack depth of this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3058
        // checkMemberAccess call for security reasons 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3059
        // see java.lang.SecurityManager.checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3060
        checkMemberAccess(Member.DECLARED, ClassLoader.getCallerClassLoader());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3061
        return copyConstructors(privateGetDeclaredConstructors(false));
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3062
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3063
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3064
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3065
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3066
     * Returns a <code>Field</code> object that reflects the specified declared
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3067
     * field of the class or interface represented by this <code>Class</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3068
     * object. The <code>name</code> parameter is a <code>String</code> that
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3069
     * specifies the simple name of the desired field.  Note that this method
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3070
     * will not reflect the <code>length</code> field of an array class.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3071
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3072
     * @param name the name of the field
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3073
     * @return the <code>Field</code> object for the specified field in this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3074
     * class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3075
     * @exception NoSuchFieldException if a field with the specified name is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3076
     *              not found.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3077
     * @exception NullPointerException if <code>name</code> is <code>null</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3078
     * @exception  SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3079
     *             If a security manager, <i>s</i>, is present and any of the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3080
     *             following conditions is met:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3081
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3082
     *             <ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3083
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3084
     *             <li> invocation of 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3085
     *             <tt>{@link SecurityManager#checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3086
     *             s.checkMemberAccess(this, Member.DECLARED)}</tt> denies
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3087
     *             access to the declared field
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3088
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3089
     *             <li> the caller''s class loader is not the same as or an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3090
     *             ancestor of the class loader for the current class and
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3091
     *             invocation of <tt>{@link SecurityManager#checkPackageAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3092
     *             s.checkPackageAccess()}</tt> denies access to the package
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3093
     *             of this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3094
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3095
     *             </ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3096
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3097
     * @since JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3098
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3099
    public Field getDeclaredField(String name)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3100
        throws NoSuchFieldException, SecurityException {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3101
        // be very careful not to change the stack depth of this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3102
        // checkMemberAccess call for security reasons 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3103
        // see java.lang.SecurityManager.checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3104
        checkMemberAccess(Member.DECLARED, ClassLoader.getCallerClassLoader());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3105
        Field field = searchFields(privateGetDeclaredFields(false), name);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3106
        if (field == null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3107
            throw new NoSuchFieldException(name);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3108
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3109
        return field;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3110
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3111
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3112
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3113
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3114
     * Returns a <code>Method</code> object that reflects the specified
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3115
     * declared method of the class or interface represented by this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3116
     * <code>Class</code> object. The <code>name</code> parameter is a
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3117
     * <code>String</code> that specifies the simple name of the desired
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3118
     * method, and the <code>parameterTypes</code> parameter is an array of
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3119
     * <code>Class</code> objects that identify the method''s formal parameter
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3120
     * types, in declared order.  If more than one method with the same
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3121
     * parameter types is declared in a class, and one of these methods has a
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3122
     * return type that is more specific than any of the others, that method is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3123
     * returned; otherwise one of the methods is chosen arbitrarily.  If the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3124
     * name is "&lt;init&gt;"or "&lt;clinit&gt;" a <code>NoSuchMethodException</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3125
     * is raised.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3126
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3127
     * @param name the name of the method
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3128
     * @param parameterTypes the parameter array
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3129
     * @return    the <code>Method</code> object for the method of this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3130
     * matching the specified name and parameters
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3131
     * @exception NoSuchMethodException if a matching method is not found.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3132
     * @exception NullPointerException if <code>name</code> is <code>null</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3133
     * @exception  SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3134
     *             If a security manager, <i>s</i>, is present and any of the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3135
     *             following conditions is met:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3136
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3137
     *             <ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3138
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3139
     *             <li> invocation of 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3140
     *             <tt>{@link SecurityManager#checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3141
     *             s.checkMemberAccess(this, Member.DECLARED)}</tt> denies
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3142
     *             access to the declared method
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3143
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3144
     *             <li> the caller''s class loader is not the same as or an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3145
     *             ancestor of the class loader for the current class and
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3146
     *             invocation of <tt>{@link SecurityManager#checkPackageAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3147
     *             s.checkPackageAccess()}</tt> denies access to the package
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3148
     *             of this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3149
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3150
     *             </ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3151
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3152
     * @since JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3153
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3154
    public Method getDeclaredMethod(String name, Class<?>... parameterTypes)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3155
        throws NoSuchMethodException, SecurityException {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3156
        // be very careful not to change the stack depth of this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3157
        // checkMemberAccess call for security reasons 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3158
        // see java.lang.SecurityManager.checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3159
        checkMemberAccess(Member.DECLARED, ClassLoader.getCallerClassLoader());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3160
        Method method = searchMethods(privateGetDeclaredMethods(false), name, parameterTypes);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3161
        if (method == null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3162
            throw new NoSuchMethodException(getName() + "." + name + argumentTypesToString(parameterTypes));
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3163
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3164
        return method;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3165
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3166
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3167
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3168
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3169
     * Returns a <code>Constructor</code> object that reflects the specified
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3170
     * constructor of the class or interface represented by this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3171
     * <code>Class</code> object.  The <code>parameterTypes</code> parameter is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3172
     * an array of <code>Class</code> objects that identify the constructor''s
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3173
     * formal parameter types, in declared order.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3174
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3175
     * If this <code>Class</code> object represents an inner class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3176
     * declared in a non-static context, the formal parameter types
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3177
     * include the explicit enclosing instance as the first parameter.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3178
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3179
     * @param parameterTypes the parameter array
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3180
     * @return    The <code>Constructor</code> object for the constructor with the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3181
     * specified parameter list
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3182
     * @exception NoSuchMethodException if a matching method is not found.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3183
     * @exception  SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3184
     *             If a security manager, <i>s</i>, is present and any of the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3185
     *             following conditions is met:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3186
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3187
     *             <ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3188
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3189
     *             <li> invocation of 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3190
     *             <tt>{@link SecurityManager#checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3191
     *             s.checkMemberAccess(this, Member.DECLARED)}</tt> denies
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3192
     *             access to the declared constructor
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3193
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3194
     *             <li> the caller''s class loader is not the same as or an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3195
     *             ancestor of the class loader for the current class and
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3196
     *             invocation of <tt>{@link SecurityManager#checkPackageAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3197
     *             s.checkPackageAccess()}</tt> denies access to the package
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3198
     *             of this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3199
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3200
     *             </ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3201
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3202
     * @since JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3203
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3204
    public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3205
        throws NoSuchMethodException, SecurityException {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3206
        // be very careful not to change the stack depth of this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3207
        // checkMemberAccess call for security reasons 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3208
        // see java.lang.SecurityManager.checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3209
        checkMemberAccess(Member.DECLARED, ClassLoader.getCallerClassLoader());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3210
        return getConstructor0(parameterTypes, Member.DECLARED);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3211
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3212
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3213
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3214
     * Finds a resource with a given name.  The rules for searching resources
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3215
     * associated with a given class are implemented by the defining
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3216
     * {@linkplain ClassLoader class loader} of the class.  This method
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3217
     * delegates to this object''s class loader.  If this object was loaded by
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3218
     * the bootstrap class loader, the method delegates to {@link
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3219
     * ClassLoader#getSystemResourceAsStream}.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3220
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3221
     * <p> Before delegation, an absolute resource name is constructed from the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3222
     * given resource name using this algorithm:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3223
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3224
     * <ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3225
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3226
     * <li> If the <tt>name</tt> begins with a <tt>''/''</tt>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3227
     * (<tt>''&#92;u002f''</tt>), then the absolute name of the resource is the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3228
     * portion of the <tt>name</tt> following the <tt>''/''</tt>. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3229
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3230
     * <li> Otherwise, the absolute name is of the following form:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3231
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3232
     * <blockquote><pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3233
     *   <tt>modified_package_name</tt>/<tt>name</tt>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3234
     * </pre></blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3235
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3236
     * <p> Where the <tt>modified_package_name</tt> is the package name of this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3237
     * object with <tt>''/''</tt> substituted for <tt>''.''</tt>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3238
     * (<tt>''&#92;u002e''</tt>).
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3239
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3240
     * </ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3241
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3242
     * @param  name name of the desired resource
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3243
     * @return      A {@link java.io.InputStream} object or <tt>null</tt> if
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3244
     *              no resource with this name is found
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3245
     * @throws  NullPointerException If <tt>name</tt> is <tt>null</tt>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3246
     * @since  JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3247
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3248
     public InputStream getResourceAsStream(String name) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3249
        name = resolveName(name);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3250
        ClassLoader cl = getClassLoader0();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3251
        if (cl==null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3252
            // A system class.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3253
            return ClassLoader.getSystemResourceAsStream(name);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3254
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3255
        return cl.getResourceAsStream(name);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3256
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3257
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3258
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3259
     * Finds a resource with a given name.  The rules for searching resources
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3260
     * associated with a given class are implemented by the defining
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3261
     * {@linkplain ClassLoader class loader} of the class.  This method
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3262
     * delegates to this object''s class loader.  If this object was loaded by
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3263
     * the bootstrap class loader, the method delegates to {@link
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3264
     * ClassLoader#getSystemResource}.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3265
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3266
     * <p> Before delegation, an absolute resource name is constructed from the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3267
     * given resource name using this algorithm:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3268
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3269
     * <ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3270
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3271
     * <li> If the <tt>name</tt> begins with a <tt>''/''</tt>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3272
     * (<tt>''&#92;u002f''</tt>), then the absolute name of the resource is the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3273
     * portion of the <tt>name</tt> following the <tt>''/''</tt>. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3274
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3275
     * <li> Otherwise, the absolute name is of the following form:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3276
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3277
     * <blockquote><pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3278
     *   <tt>modified_package_name</tt>/<tt>name</tt>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3279
     * </pre></blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3280
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3281
     * <p> Where the <tt>modified_package_name</tt> is the package name of this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3282
     * object with <tt>''/''</tt> substituted for <tt>''.''</tt>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3283
     * (<tt>''&#92;u002e''</tt>).
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3284
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3285
     * </ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3286
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3287
     * @param  name name of the desired resource
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3288
     * @return      A  {@link java.net.URL} object or <tt>null</tt> if no
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3289
     *              resource with this name is found
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3290
     * @since  JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3291
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3292
    public java.net.URL getResource(String name) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3293
        name = resolveName(name);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3294
        ClassLoader cl = getClassLoader0();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3295
        if (cl==null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3296
            // A system class.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3297
            return ClassLoader.getSystemResource(name);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3298
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3299
        return cl.getResource(name);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3300
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3301
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3302
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3303
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3304
    /** protection domain returned when the internal domain is null */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3305
    private static java.security.ProtectionDomain allPermDomain;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3306
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3307
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3308
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3309
     * Returns the <code>ProtectionDomain</code> of this class.  If there is a
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3310
     * security manager installed, this method first calls the security
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3311
     * manager''s <code>checkPermission</code> method with a
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3312
     * <code>RuntimePermission("getProtectionDomain")</code> permission to
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3313
     * ensure it''s ok to get the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3314
     * <code>ProtectionDomain</code>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3315
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3316
     * @return the ProtectionDomain of this class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3317
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3318
     * @throws SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3319
     *        if a security manager exists and its 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3320
     *        <code>checkPermission</code> method doesn''t allow 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3321
     *        getting the ProtectionDomain.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3322
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3323
     * @see java.security.ProtectionDomain
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3324
     * @see SecurityManager#checkPermission
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3325
     * @see java.lang.RuntimePermission
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3326
     * @since 1.2
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3327
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3328
    public java.security.ProtectionDomain getProtectionDomain() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3329
        SecurityManager sm = System.getSecurityManager();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3330
        if (sm !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3331
            sm.checkPermission(SecurityConstants.GET_PD_PERMISSION);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3332
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3333
        java.security.ProtectionDomain pd = getProtectionDomain0();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3334
        if (pd == null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3335
            if (allPermDomain == null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3336
                java.security.Permissions perms = 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3337
                    new java.security.Permissions();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3338
                perms.add(SecurityConstants.ALL_PERMISSION);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3339
                allPermDomain = 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3340
                    new java.security.ProtectionDomain(null, perms);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3341
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3342
            pd = allPermDomain;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3343
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3344
        return pd;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3345
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3346
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3347
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3348
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3349
     * Returns the ProtectionDomain of this class.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3350
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3351
    private native java.security.ProtectionDomain getProtectionDomain0();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3352
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3353
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3354
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3355
     * Set the ProtectionDomain for this class. Called by
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3356
     * ClassLoader.defineClass.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3357
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3358
    native void setProtectionDomain0(java.security.ProtectionDomain pd);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3359
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3360
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3361
    /*
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3362
     * Return the Virtual Machine''s Class object for the named
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3363
     * primitive type.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3364
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3365
    static native Class getPrimitiveClass(String name);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3366
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3367
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3368
    /*
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3369
     * Check if client is allowed to access members.  If access is denied,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3370
     * throw a SecurityException.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3371
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3372
     * Be very careful not to change the stack depth of this checkMemberAccess
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3373
     * call for security reasons.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3374
     * See java.lang.SecurityManager.checkMemberAccess.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3375
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3376
     * <p> Default policy: allow all clients access with normal Java access
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3377
     * control.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3378
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3379
    private void checkMemberAccess(int which, ClassLoader ccl) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3380
        SecurityManager s = System.getSecurityManager();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3381
        if (s !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3382
            s.checkMemberAccess(this, which);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3383
            ClassLoader cl = getClassLoader0();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3384
            if ((ccl !!= null) && (ccl !!= cl) && 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3385
                  ((cl == null) || !!cl.isAncestor(ccl))) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3386
                String name = this.getName();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3387
                int i = name.lastIndexOf(''.'');
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3388
                if (i !!= -1) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3389
                    s.checkPackageAccess(name.substring(0, i));
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3390
                }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3391
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3392
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3393
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3394
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3395
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3396
     * Add a package name prefix if the name is not absolute Remove leading "/"
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3397
     * if name is absolute
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3398
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3399
    private String resolveName(String name) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3400
        if (name == null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3401
            return name;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3402
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3403
        if (!!name.startsWith("/")) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3404
            Class c = this;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3405
            while (c.isArray()) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3406
                c = c.getComponentType();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3407
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3408
            String baseName = c.getName();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3409
            int index = baseName.lastIndexOf(''.'');
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3410
            if (index !!= -1) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3411
                name = baseName.substring(0, index).replace(''.'', ''/'')
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3412
                    +"/"+name;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3413
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3414
        } else {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3415
            name = name.substring(1);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3416
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3417
        return name;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3418
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3419
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3420
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3421
     * Reflection support.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3422
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3423
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3424
    // Caches for certain reflective results
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3425
    private static boolean useCaches = true;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3426
    private volatile transient SoftReference declaredFields;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3427
    private volatile transient SoftReference publicFields;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3428
    private volatile transient SoftReference declaredMethods;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3429
    private volatile transient SoftReference publicMethods;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3430
    private volatile transient SoftReference declaredConstructors;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3431
    private volatile transient SoftReference publicConstructors;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3432
    // Intermediate results for getFields and getMethods
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3433
    private volatile transient SoftReference declaredPublicFields;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3434
    private volatile transient SoftReference declaredPublicMethods;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3435
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3436
    // Incremented by the VM on each call to JVM TI RedefineClasses()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3437
    // that redefines this class or a superclass.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3438
    private volatile transient int classRedefinedCount = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3439
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3440
    // Value of classRedefinedCount when we last cleared the cached values
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3441
    // that are sensitive to class redefinition.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3442
    private volatile transient int lastRedefinedCount = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3443
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3444
    // Clears cached values that might possibly have been obsoleted by
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3445
    // a class redefinition.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3446
    private void clearCachesOnClassRedefinition() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3447
        if (lastRedefinedCount !!= classRedefinedCount) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3448
            declaredFields = publicFields = declaredPublicFields = null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3449
            declaredMethods = publicMethods = declaredPublicMethods = null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3450
            declaredConstructors = publicConstructors = null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3451
            annotations = declaredAnnotations = null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3452
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3453
            // Use of "volatile" (and synchronization by caller in the case
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3454
            // of annotations) ensures that no thread sees the update to
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3455
            // lastRedefinedCount before seeing the caches cleared.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3456
            // We do not guard against brief windows during which multiple
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3457
            // threads might redundantly work to fill an empty cache.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3458
            lastRedefinedCount = classRedefinedCount;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3459
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3460
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3461
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3462
    // Generic signature handling
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3463
    private native String getGenericSignature();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3464
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3465
    // Generic info repository; lazily initialized
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3466
    private transient ClassRepository genericInfo;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3467
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3468
    // accessor for factory
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3469
    private GenericsFactory getFactory() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3470
        // create scope and factory
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3471
        return CoreReflectionFactory.make(this, ClassScope.make(this)); 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3472
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3473
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3474
    // accessor for generic info repository
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3475
    private ClassRepository getGenericInfo() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3476
        // lazily initialize repository if necessary
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3477
        if (genericInfo == null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3478
            // create and cache generic info repository
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3479
            genericInfo = ClassRepository.make(getGenericSignature(), 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3480
                                               getFactory());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3481
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3482
        return genericInfo; //return cached repository
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3483
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3484
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3485
    // Annotations handling
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3486
    private native byte[] getRawAnnotations();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3487
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3488
    native ConstantPool getConstantPool();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3489
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3490
    //
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3491
    //
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3492
    // java.lang.reflect.Field handling
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3493
    //
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3494
    //
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3495
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3496
    // Returns an array of "root" fields. These Field objects must NOT
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3497
    // be propagated to the outside world, but must instead be copied
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3498
    // via ReflectionFactory.copyField.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3499
    private Field[] privateGetDeclaredFields(boolean publicOnly) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3500
        checkInitted();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3501
        Field[] res = null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3502
        if (useCaches) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3503
            clearCachesOnClassRedefinition();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3504
            if (publicOnly) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3505
                if (declaredPublicFields !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3506
                    res = (Field[]) declaredPublicFields.get();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3507
                }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3508
            } else {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3509
                if (declaredFields !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3510
                    res = (Field[]) declaredFields.get();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3511
                }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3512
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3513
            if (res !!= null) return res;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3514
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3515
        // No cached value available; request value from VM
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3516
        res = Reflection.filterFields(this, getDeclaredFields0(publicOnly));
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3517
        if (useCaches) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3518
            if (publicOnly) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3519
                declaredPublicFields = new SoftReference(res);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3520
            } else {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3521
                declaredFields = new SoftReference(res);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3522
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3523
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3524
        return res;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3525
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3526
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3527
    // Returns an array of "root" fields. These Field objects must NOT
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3528
    // be propagated to the outside world, but must instead be copied
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3529
    // via ReflectionFactory.copyField.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3530
    private Field[] privateGetPublicFields(Set traversedInterfaces) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3531
        checkInitted();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3532
        Field[] res = null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3533
        if (useCaches) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3534
            clearCachesOnClassRedefinition();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3535
            if (publicFields !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3536
                res = (Field[]) publicFields.get();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3537
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3538
            if (res !!= null) return res;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3539
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3540
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3541
        // No cached value available; compute value recursively.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3542
        // Traverse in correct order for getField().
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3543
        List fields = new ArrayList();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3544
        if (traversedInterfaces == null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3545
            traversedInterfaces = new HashSet();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3546
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3547
        
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3548
        // Local fields
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3549
        Field[] tmp = privateGetDeclaredFields(true);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3550
        addAll(fields, tmp);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3551
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3552
        // Direct superinterfaces, recursively
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3553
        Class[] interfaces = getInterfaces();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3554
        for (int i = 0; i < interfaces.length; i++) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3555
            Class c = interfaces[i];
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3556
            if (!!traversedInterfaces.contains(c)) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3557
                traversedInterfaces.add(c);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3558
                addAll(fields, c.privateGetPublicFields(traversedInterfaces));
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3559
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3560
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3561
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3562
        // Direct superclass, recursively
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3563
        if (!!isInterface()) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3564
            Class c = getSuperclass();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3565
            if (c !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3566
                addAll(fields, c.privateGetPublicFields(traversedInterfaces));
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3567
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3568
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3569
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3570
        res = new Field[fields.size()];
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3571
        fields.toArray(res);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3572
        if (useCaches) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3573
            publicFields = new SoftReference(res);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3574
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3575
        return res;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3576
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3577
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3578
    private static void addAll(Collection c, Field[] o) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3579
        for (int i = 0; i < o.length; i++) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3580
            c.add(o[i]);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3581
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3582
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3583
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3584
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3585
    //
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3586
    //
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3587
    // java.lang.reflect.Constructor handling
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3588
    //
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3589
    //
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3590
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3591
    // Returns an array of "root" constructors. These Constructor
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3592
    // objects must NOT be propagated to the outside world, but must
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3593
    // instead be copied via ReflectionFactory.copyConstructor.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3594
    private Constructor[] privateGetDeclaredConstructors(boolean publicOnly) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3595
        checkInitted();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3596
        Constructor[] res = null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3597
        if (useCaches) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3598
            clearCachesOnClassRedefinition();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3599
            if (publicOnly) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3600
                if (publicConstructors !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3601
                    res = (Constructor[]) publicConstructors.get();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3602
                }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3603
            } else {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3604
                if (declaredConstructors !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3605
                    res = (Constructor[]) declaredConstructors.get();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3606
                }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3607
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3608
            if (res !!= null) return res;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3609
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3610
        // No cached value available; request value from VM
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3611
        if (isInterface()) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3612
            res = new Constructor[0];
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3613
        } else {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3614
            res = getDeclaredConstructors0(publicOnly);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3615
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3616
        if (useCaches) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3617
            if (publicOnly) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3618
                publicConstructors = new SoftReference(res);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3619
            } else {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3620
                declaredConstructors = new SoftReference(res);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3621
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3622
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3623
        return res;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3624
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3625
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3626
    //
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3627
    //
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3628
    // java.lang.reflect.Method handling
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3629
    //
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3630
    //
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3631
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3632
    // Returns an array of "root" methods. These Method objects must NOT
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3633
    // be propagated to the outside world, but must instead be copied
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3634
    // via ReflectionFactory.copyMethod.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3635
    private Method[] privateGetDeclaredMethods(boolean publicOnly) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3636
        checkInitted();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3637
        Method[] res = null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3638
        if (useCaches) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3639
            clearCachesOnClassRedefinition();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3640
            if (publicOnly) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3641
                if (declaredPublicMethods !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3642
                    res = (Method[]) declaredPublicMethods.get();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3643
                }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3644
            } else {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3645
                if (declaredMethods !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3646
                    res = (Method[]) declaredMethods.get();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3647
                }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3648
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3649
            if (res !!= null) return res;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3650
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3651
        // No cached value available; request value from VM
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3652
        res = getDeclaredMethods0(publicOnly);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3653
        if (useCaches) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3654
            if (publicOnly) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3655
                declaredPublicMethods = new SoftReference(res);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3656
            } else {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3657
                declaredMethods = new SoftReference(res);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3658
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3659
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3660
        return res;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3661
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3662
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3663
    static class MethodArray {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3664
        private Method[] methods;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3665
        private int length;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3666
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3667
        MethodArray() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3668
            methods = new Method[20];
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3669
            length = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3670
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3671
        
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3672
        void add(Method m) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3673
            if (length == methods.length) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3674
                methods = Arrays.copyOf(methods, 2 * methods.length);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3675
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3676
            methods[length++] = m;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3677
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3678
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3679
        void addAll(Method[] ma) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3680
            for (int i = 0; i < ma.length; i++) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3681
                add(ma[i]);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3682
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3683
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3684
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3685
        void addAll(MethodArray ma) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3686
            for (int i = 0; i < ma.length(); i++) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3687
                add(ma.get(i));
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3688
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3689
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3690
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3691
        void addIfNotPresent(Method newMethod) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3692
            for (int i = 0; i < length; i++) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3693
                Method m = methods[i];
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3694
                if (m == newMethod || (m !!= null && m.equals(newMethod))) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3695
                    return;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3696
                }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3697
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3698
            add(newMethod);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3699
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3700
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3701
        void addAllIfNotPresent(MethodArray newMethods) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3702
            for (int i = 0; i < newMethods.length(); i++) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3703
                Method m = newMethods.get(i);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3704
                if (m !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3705
                    addIfNotPresent(m);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3706
                }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3707
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3708
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3709
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3710
        int length() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3711
            return length;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3712
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3713
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3714
        Method get(int i) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3715
            return methods[i];
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3716
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3717
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3718
        void removeByNameAndSignature(Method toRemove) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3719
            for (int i = 0; i < length; i++) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3720
                Method m = methods[i];
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3721
                if (m !!= null &&
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3722
                    m.getReturnType() == toRemove.getReturnType() &&
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3723
                    m.getName() == toRemove.getName() &&
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3724
                    arrayContentsEq(m.getParameterTypes(),
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3725
                                    toRemove.getParameterTypes())) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3726
                    methods[i] = null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3727
                }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3728
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3729
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3730
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3731
        void compactAndTrim() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3732
            int newPos = 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3733
            // Get rid of null slots
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3734
            for (int pos = 0; pos < length; pos++) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3735
                Method m = methods[pos];
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3736
                if (m !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3737
                    if (pos !!= newPos) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3738
                        methods[newPos] = m;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3739
                    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3740
                    newPos++;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3741
                }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3742
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3743
            if (newPos !!= methods.length) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3744
                methods = Arrays.copyOf(methods, newPos);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3745
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3746
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3747
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3748
        Method[] getArray() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3749
            return methods;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3750
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3751
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3752
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3753
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3754
    // Returns an array of "root" methods. These Method objects must NOT
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3755
    // be propagated to the outside world, but must instead be copied
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3756
    // via ReflectionFactory.copyMethod.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3757
    private Method[] privateGetPublicMethods() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3758
        checkInitted();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3759
        Method[] res = null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3760
        if (useCaches) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3761
            clearCachesOnClassRedefinition();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3762
            if (publicMethods !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3763
                res = (Method[]) publicMethods.get();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3764
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3765
            if (res !!= null) return res;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3766
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3767
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3768
        // No cached value available; compute value recursively.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3769
        // Start by fetching public declared methods
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3770
        MethodArray methods = new MethodArray();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3771
        {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3772
            Method[] tmp = privateGetDeclaredMethods(true);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3773
            methods.addAll(tmp);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3774
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3775
        // Now recur over superclass and direct superinterfaces.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3776
        // Go over superinterfaces first so we can more easily filter
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3777
        // out concrete implementations inherited from superclasses at
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3778
        // the end.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3779
        MethodArray inheritedMethods = new MethodArray();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3780
        Class[] interfaces = getInterfaces();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3781
        for (int i = 0; i < interfaces.length; i++) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3782
            inheritedMethods.addAll(interfaces[i].privateGetPublicMethods());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3783
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3784
        if (!!isInterface()) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3785
            Class c = getSuperclass();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3786
            if (c !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3787
                MethodArray supers = new MethodArray();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3788
                supers.addAll(c.privateGetPublicMethods());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3789
                // Filter out concrete implementations of any
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3790
                // interface methods
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3791
                for (int i = 0; i < supers.length(); i++) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3792
                    Method m = supers.get(i);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3793
                    if (m !!= null && !!Modifier.isAbstract(m.getModifiers())) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3794
                        inheritedMethods.removeByNameAndSignature(m);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3795
                    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3796
                }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3797
                // Insert superclass''s inherited methods before
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3798
                // superinterfaces'' to satisfy getMethod''s search
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3799
                // order
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3800
                supers.addAll(inheritedMethods);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3801
                inheritedMethods = supers;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3802
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3803
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3804
        // Filter out all local methods from inherited ones
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3805
        for (int i = 0; i < methods.length(); i++) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3806
            Method m = methods.get(i);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3807
            inheritedMethods.removeByNameAndSignature(m);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3808
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3809
        methods.addAllIfNotPresent(inheritedMethods);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3810
        methods.compactAndTrim();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3811
        res = methods.getArray();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3812
        if (useCaches) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3813
            publicMethods = new SoftReference(res);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3814
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3815
        return res;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3816
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3817
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3818
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3819
    //
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3820
    // Helpers for fetchers of one field, method, or constructor
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3821
    //
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3822
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3823
    private Field searchFields(Field[] fields, String name) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3824
        String internedName = name.intern();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3825
        for (int i = 0; i < fields.length; i++) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3826
            if (fields[i].getName() == internedName) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3827
                return getReflectionFactory().copyField(fields[i]);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3828
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3829
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3830
        return null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3831
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3832
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3833
    private Field getField0(String name) throws NoSuchFieldException {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3834
        // Note: the intent is that the search algorithm this routine
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3835
        // uses be equivalent to the ordering imposed by
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3836
        // privateGetPublicFields(). It fetches only the declared
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3837
        // public fields for each class, however, to reduce the number
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3838
        // of Field objects which have to be created for the common
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3839
        // case where the field being requested is declared in the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3840
        // class which is being queried.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3841
        Field res = null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3842
        // Search declared public fields
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3843
        if ((res = searchFields(privateGetDeclaredFields(true), name)) !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3844
            return res;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3845
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3846
        // Direct superinterfaces, recursively
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3847
        Class[] interfaces = getInterfaces();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3848
        for (int i = 0; i < interfaces.length; i++) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3849
            Class c = interfaces[i];
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3850
            if ((res = c.getField0(name)) !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3851
                return res;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3852
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3853
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3854
        // Direct superclass, recursively
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3855
        if (!!isInterface()) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3856
            Class c = getSuperclass();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3857
            if (c !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3858
                if ((res = c.getField0(name)) !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3859
                    return res;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3860
                }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3861
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3862
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3863
        return null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3864
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3865
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3866
    private static Method searchMethods(Method[] methods,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3867
                                        String name,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3868
                                        Class[] parameterTypes)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3869
    {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3870
        Method res = null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3871
        String internedName = name.intern();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3872
        for (int i = 0; i < methods.length; i++) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3873
            Method m = methods[i];
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3874
            if (m.getName() == internedName
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3875
                && arrayContentsEq(parameterTypes, m.getParameterTypes())
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3876
                && (res == null
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3877
                    || res.getReturnType().isAssignableFrom(m.getReturnType())))
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3878
                res = m;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3879
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3880
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3881
        return (res == null ? res : getReflectionFactory().copyMethod(res));
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3882
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3883
  
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3884
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3885
    private Method getMethod0(String name, Class[] parameterTypes) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3886
        // Note: the intent is that the search algorithm this routine
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3887
        // uses be equivalent to the ordering imposed by
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3888
        // privateGetPublicMethods(). It fetches only the declared
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3889
        // public methods for each class, however, to reduce the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3890
        // number of Method objects which have to be created for the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3891
        // common case where the method being requested is declared in
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3892
        // the class which is being queried.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3893
        Method res = null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3894
        // Search declared public methods
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3895
        if ((res = searchMethods(privateGetDeclaredMethods(true),
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3896
                                 name,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3897
                                 parameterTypes)) !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3898
            return res;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3899
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3900
        // Search superclass''s methods
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3901
        if (!!isInterface()) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3902
            Class c = getSuperclass();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3903
            if (c !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3904
                if ((res = c.getMethod0(name, parameterTypes)) !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3905
                    return res;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3906
                }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3907
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3908
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3909
        // Search superinterfaces'' methods
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3910
        Class[] interfaces = getInterfaces();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3911
        for (int i = 0; i < interfaces.length; i++) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3912
            Class c = interfaces[i];
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3913
            if ((res = c.getMethod0(name, parameterTypes)) !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3914
                return res;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3915
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3916
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3917
        // Not found
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3918
        return null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3919
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3920
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3921
    private Constructor<T> getConstructor0(Class[] parameterTypes,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3922
                                        int which) throws NoSuchMethodException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3923
    {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3924
        Constructor[] constructors = privateGetDeclaredConstructors((which == Member.PUBLIC));
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3925
        for (int i = 0; i < constructors.length; i++) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3926
            if (arrayContentsEq(parameterTypes,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3927
                                constructors[i].getParameterTypes())) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3928
                return getReflectionFactory().copyConstructor(constructors[i]);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3929
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3930
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3931
        throw new NoSuchMethodException(getName() + ".<init>" + argumentTypesToString(parameterTypes));
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3932
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3933
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3934
    //
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3935
    // Other helpers and base implementation
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3936
    //
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3937
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3938
    private static boolean arrayContentsEq(Object[] a1, Object[] a2) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3939
        if (a1 == null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3940
            return a2 == null || a2.length == 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3941
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3942
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3943
        if (a2 == null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3944
            return a1.length == 0;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3945
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3946
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3947
        if (a1.length !!= a2.length) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3948
            return false;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3949
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3950
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3951
        for (int i = 0; i < a1.length; i++) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3952
            if (a1[i] !!= a2[i]) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3953
                return false;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3954
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3955
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3956
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3957
        return true;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3958
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3959
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3960
    private static Field[] copyFields(Field[] arg) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3961
        Field[] out = new Field[arg.length];
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3962
        ReflectionFactory fact = getReflectionFactory();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3963
        for (int i = 0; i < arg.length; i++) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3964
            out[i] = fact.copyField(arg[i]);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3965
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3966
        return out;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3967
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3968
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3969
    private static Method[] copyMethods(Method[] arg) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3970
        Method[] out = new Method[arg.length];
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3971
        ReflectionFactory fact = getReflectionFactory();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3972
        for (int i = 0; i < arg.length; i++) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3973
            out[i] = fact.copyMethod(arg[i]);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3974
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3975
        return out;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3976
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3977
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3978
    private static Constructor[] copyConstructors(Constructor[] arg) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3979
        Constructor[] out = new Constructor[arg.length];
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3980
        ReflectionFactory fact = getReflectionFactory();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3981
        for (int i = 0; i < arg.length; i++) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3982
            out[i] = fact.copyConstructor(arg[i]);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3983
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3984
        return out;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3985
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3986
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3987
    private native Field[]       getDeclaredFields0(boolean publicOnly);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3988
    private native Method[]      getDeclaredMethods0(boolean publicOnly);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3989
    private native Constructor[] getDeclaredConstructors0(boolean publicOnly);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3990
    private native Class[]   getDeclaredClasses0();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3991
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3992
    private static String        argumentTypesToString(Class[] argTypes) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3993
        StringBuilder buf = new StringBuilder();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3994
        buf.append("(");
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3995
        if (argTypes !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3996
            for (int i = 0; i < argTypes.length; i++) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3997
                if (i > 0) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3998
                    buf.append(", ");
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  3999
                }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4000
                Class c = argTypes[i];
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4001
                buf.append((c == null) ? "null" : c.getName());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4002
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4003
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4004
        buf.append(")");
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4005
        return buf.toString();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4006
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4007
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4008
    /** use serialVersionUID from JDK 1.1 for interoperability */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4009
    private static final long serialVersionUID = 3206093459760846163L;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4010
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4011
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4012
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4013
     * Class Class is special cased within the Serialization Stream Protocol. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4014
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4015
     * A Class instance is written initially into an ObjectOutputStream in the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4016
     * following format:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4017
     * <pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4018
     *      <code>TC_CLASS</code> ClassDescriptor
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4019
     *      A ClassDescriptor is a special cased serialization of 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4020
     *      a <code>java.io.ObjectStreamClass</code> instance. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4021
     * </pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4022
     * A new handle is generated for the initial time the class descriptor
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4023
     * is written into the stream. Future references to the class descriptor
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4024
     * are written as references to the initial class descriptor instance.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4025
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4026
     * @see java.io.ObjectStreamClass
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4027
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4028
    private static final ObjectStreamField[] serialPersistentFields = 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4029
        new ObjectStreamField[0];
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4030
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4031
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4032
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4033
     * Returns the assertion status that would be assigned to this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4034
     * class if it were to be initialized at the time this method is invoked.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4035
     * If this class has had its assertion status set, the most recent
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4036
     * setting will be returned; otherwise, if any package default assertion
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4037
     * status pertains to this class, the most recent setting for the most
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4038
     * specific pertinent package default assertion status is returned;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4039
     * otherwise, if this class is not a system class (i.e., it has a
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4040
     * class loader) its class loader''s default assertion status is returned;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4041
     * otherwise, the system class default assertion status is returned.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4042
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4043
     * Few programmers will have any need for this method; it is provided
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4044
     * for the benefit of the JRE itself.  (It allows a class to determine at
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4045
     * the time that it is initialized whether assertions should be enabled.)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4046
     * Note that this method is not guaranteed to return the actual
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4047
     * assertion status that was (or will be) associated with the specified
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4048
     * class when it was (or will be) initialized.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4049
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4050
     * @return the desired assertion status of the specified class.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4051
     * @see    java.lang.ClassLoader#setClassAssertionStatus
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4052
     * @see    java.lang.ClassLoader#setPackageAssertionStatus
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4053
     * @see    java.lang.ClassLoader#setDefaultAssertionStatus
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4054
     * @since  1.4
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4055
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4056
    public boolean desiredAssertionStatus() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4057
        ClassLoader loader = getClassLoader();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4058
        // If the loader is null this is a system class, so ask the VM
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4059
        if (loader == null)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4060
            return desiredAssertionStatus0(this);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4061
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4062
        synchronized(loader) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4063
            // If the classloader has been initialized with
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4064
            // the assertion directives, ask it. Otherwise,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4065
            // ask the VM.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4066
            return (loader.classAssertionStatus == null ?
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4067
                    desiredAssertionStatus0(this) :
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4068
                    loader.desiredAssertionStatus(getName()));
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4069
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4070
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4071
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4072
    // Retrieves the desired assertion status of this class from the VM
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4073
    private static native boolean desiredAssertionStatus0(Class clazz);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4074
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4075
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4076
     * Returns true if and only if this class was declared as an enum in the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4077
     * source code.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4078
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4079
     * @return true if and only if this class was declared as an enum in the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4080
     *     source code
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4081
     * @since 1.5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4082
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4083
    public boolean isEnum() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4084
        // An enum must both directly extend java.lang.Enum and have
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4085
        // the ENUM bit set; classes for specialized enum constants
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4086
        // don''t do the former.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4087
        return (this.getModifiers() & ENUM) !!= 0 && 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4088
        this.getSuperclass() == java.lang.Enum.class;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4089
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4090
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4091
    // Fetches the factory for reflective objects
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4092
    private static ReflectionFactory getReflectionFactory() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4093
        if (reflectionFactory == null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4094
            reflectionFactory =  (ReflectionFactory)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4095
                java.security.AccessController.doPrivileged
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4096
                    (new sun.reflect.ReflectionFactory.GetReflectionFactoryAction());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4097
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4098
        return reflectionFactory;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4099
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4100
    private static ReflectionFactory reflectionFactory;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4101
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4102
    // To be able to query system properties as soon as they''re available
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4103
    private static boolean initted = false;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4104
    private static void checkInitted() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4105
        if (initted) return;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4106
        AccessController.doPrivileged(new PrivilegedAction() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4107
                public Object run() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4108
                    // Tests to ensure the system properties table is fully
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4109
                    // initialized. This is needed because reflection code is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4110
                    // called very early in the initialization process (before
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4111
                    // command-line arguments have been parsed and therefore
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4112
                    // these user-settable properties installed.) We assume that
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4113
                    // if System.out is non-null then the System class has been
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4114
                    // fully initialized and that the bulk of the startup code
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4115
                    // has been run.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4116
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4117
                    if (System.out == null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4118
                        // java.lang.System not yet fully initialized
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4119
                        return null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4120
                    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4121
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4122
                    String val =
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4123
                        System.getProperty("sun.reflect.noCaches");
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4124
                    if (val !!= null && val.equals("true")) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4125
                        useCaches = false;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4126
                    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4127
          
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4128
                    initted = true;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4129
                    return null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4130
                }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4131
            });
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4132
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4133
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4134
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4135
     * Returns the elements of this enum class or null if this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4136
     * Class object does not represent an enum type.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4137
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4138
     * @return an array containing the values comprising the enum class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4139
     *     represented by this Class object in the order they''re
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4140
     *     declared, or null if this Class object does not
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4141
     *     represent an enum type
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4142
     * @since 1.5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4143
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4144
    public T[] getEnumConstants() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4145
        T[] values = getEnumConstantsShared();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4146
        return (values !!= null) ? values.clone() : null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4147
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4148
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4149
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4150
     * Returns the elements of this enum class or null if this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4151
     * Class object does not represent an enum type;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4152
     * identical to getEnumConstantsShared except that
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4153
     * the result is uncloned, cached, and shared by all callers.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4154
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4155
    T[] getEnumConstantsShared() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4156
        if (enumConstants == null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4157
            if (!!isEnum()) return null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4158
            try {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4159
                final Method values = getMethod("values");
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4160
                java.security.AccessController.doPrivileged
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4161
                    (new java.security.PrivilegedAction() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4162
                            public Object run() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4163
                                values.setAccessible(true);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4164
                                return null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4165
                            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4166
                        });
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4167
                enumConstants = (T[])values.invoke(null);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4168
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4169
            // These can happen when users concoct enum-like classes
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4170
            // that don''t comply with the enum spec.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4171
            catch (InvocationTargetException ex) { return null; }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4172
            catch (NoSuchMethodException ex) { return null; }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4173
            catch (IllegalAccessException ex) { return null; }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4174
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4175
        return enumConstants;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4176
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4177
    private volatile transient T[] enumConstants = null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4178
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4179
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4180
     * Returns a map from simple name to enum constant.  This package-private
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4181
     * method is used internally by Enum to implement 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4182
     *     public static <T extends Enum<T>> T valueOf(Class<T>, String)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4183
     * efficiently.  Note that the map is returned by this method is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4184
     * created lazily on first use.  Typically it won''t ever get created.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4185
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4186
    Map<String, T> enumConstantDirectory() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4187
        if (enumConstantDirectory == null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4188
            T[] universe = getEnumConstantsShared();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4189
            if (universe == null)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4190
                throw new IllegalArgumentException(
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4191
                    getName() + " is not an enum type");
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4192
            Map<String, T> m = new HashMap<String, T>(2 * universe.length);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4193
            for (T constant : universe)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4194
                m.put(((Enum)constant).name(), constant);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4195
            enumConstantDirectory = m;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4196
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4197
        return enumConstantDirectory;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4198
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4199
    private volatile transient Map<String, T> enumConstantDirectory = null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4200
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4201
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4202
     * Casts an object to the class or interface represented
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4203
     * by this <tt>Class</tt> object.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4204
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4205
     * @param obj the object to be cast
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4206
     * @return the object after casting, or null if obj is null
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4207
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4208
     * @throws ClassCastException if the object is not
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4209
     * null and is not assignable to the type T.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4210
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4211
     * @since 1.5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4212
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4213
    public T cast(Object obj) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4214
        if (obj !!= null && !!isInstance(obj))
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4215
            throw new ClassCastException();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4216
        return (T) obj;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4217
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4218
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4219
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4220
     * Casts this <tt>Class</tt> object to represent a subclass of the class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4221
     * represented by the specified class object.  Checks that that the cast
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4222
     * is valid, and throws a <tt>ClassCastException</tt> if it is not.  If
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4223
     * this method succeeds, it always returns a reference to this class object.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4224
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4225
     * <p>This method is useful when a client needs to "narrow" the type of
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4226
     * a <tt>Class</tt> object to pass it to an API that restricts the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4227
     * <tt>Class</tt> objects that it is willing to accept.  A cast would
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4228
     * generate a compile-time warning, as the correctness of the cast
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4229
     * could not be checked at runtime (because generic types are implemented
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4230
     * by erasure).
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4231
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4232
     * @return this <tt>Class</tt> object, cast to represent a subclass of
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4233
     *    the specified class object.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4234
     * @throws ClassCastException if this <tt>Class</tt> object does not
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4235
     *    represent a subclass of the specified class (here "subclass" includes
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4236
     *    the class itself).
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4237
     * @since 1.5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4238
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4239
    public <U> Class<? extends U> asSubclass(Class<U> clazz) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4240
        if (clazz.isAssignableFrom(this))
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4241
            return (Class<? extends U>) this;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4242
        else
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4243
            throw new ClassCastException(this.toString());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4244
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4245
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4246
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4247
     * @throws NullPointerException {@inheritDoc}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4248
     * @since 1.5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4249
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4250
    public <A extends Annotation> A getAnnotation(Class<A> annotationClass) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4251
        if (annotationClass == null)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4252
            throw new NullPointerException();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4253
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4254
        initAnnotationsIfNecessary();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4255
        return (A) annotations.get(annotationClass);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4256
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4257
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4258
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4259
     * @throws NullPointerException {@inheritDoc}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4260
     * @since 1.5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4261
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4262
    public boolean isAnnotationPresent(
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4263
        Class<? extends Annotation> annotationClass) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4264
        if (annotationClass == null)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4265
            throw new NullPointerException();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4266
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4267
        return getAnnotation(annotationClass) !!= null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4268
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4269
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4270
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4271
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4272
     * @since 1.5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4273
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4274
    public Annotation[] getAnnotations() { 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4275
        initAnnotationsIfNecessary();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4276
        return AnnotationParser.toArray(annotations);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4277
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4278
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4279
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4280
     * @since 1.5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4281
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4282
    public Annotation[] getDeclaredAnnotations()  {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4283
        initAnnotationsIfNecessary();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4284
        return AnnotationParser.toArray(declaredAnnotations);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4285
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4286
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4287
    // Annotations cache
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4288
    private transient Map<Class, Annotation> annotations;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4289
    private transient Map<Class, Annotation> declaredAnnotations;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4290
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4291
    private synchronized void initAnnotationsIfNecessary() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4292
        clearCachesOnClassRedefinition();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4293
        if (annotations !!= null)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4294
            return;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4295
        declaredAnnotations = AnnotationParser.parseAnnotations(
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4296
            getRawAnnotations(), getConstantPool(), this);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4297
        Class<?> superClass = getSuperclass();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4298
        if (superClass == null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4299
            annotations = declaredAnnotations;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4300
        } else {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4301
            annotations = new HashMap<Class, Annotation>();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4302
            superClass.initAnnotationsIfNecessary();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4303
            for (Map.Entry<Class, Annotation> e : superClass.annotations.entrySet()) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4304
                Class annotationClass = e.getKey();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4305
                if (AnnotationType.getInstance(annotationClass).isInherited())
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4306
                    annotations.put(annotationClass, e.getValue());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4307
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4308
            annotations.putAll(declaredAnnotations);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4309
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4310
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4311
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4312
    // Annotation types cache their internal (AnnotationType) form
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4313
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4314
    private AnnotationType annotationType;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4315
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4316
    void setAnnotationType(AnnotationType type) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4317
        annotationType = type;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4318
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4319
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4320
    AnnotationType getAnnotationType() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4321
        return annotationType;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4322
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4323
}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4324
'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4325
].
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4326
    Transcript showCR: 'java.lang.Class parsed in ', time asString, ' miliseconds'.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4327
    ^ res.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4328
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4329
    "Modified: / 30-12-2010 / 11:39:50 / Jan Kurs <kurs.jan@post.cz>"
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4330
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4331
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4332
testJavaLangObject6
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4333
    | res time |
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4334
    time := Time millisecondsToRun: [
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4335
    res := self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4336
/*
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4337
 * %W% %E%
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4338
 *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4339
 * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4340
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4341
 */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4342
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4343
package java.lang;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4344
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4345
/**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4346
 * Class <code>Object</code> is the root of the class hierarchy. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4347
 * Every class has <code>Object</code> as a superclass. All objects, 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4348
 * including arrays, implement the methods of this class. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4349
 *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4350
 * @author  unascribed
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4351
 * @version %I%, %G%
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4352
 * @see     java.lang.Class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4353
 * @since   JDK1.0
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4354
 */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4355
public class Object {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4356
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4357
    private static native void registerNatives();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4358
    static {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4359
        registerNatives();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4360
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4361
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4362
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4363
     * Returns the runtime class of this {@code Object}. The returned
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4364
     * {@code Class} object is the object that is locked by {@code
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4365
     * static synchronized} methods of the represented class.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4366
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4367
     * <p><b>The actual result type is {@code Class<? extends |X|>}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4368
     * where {@code |X|} is the erasure of the static type of the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4369
     * expression on which {@code getClass} is called.</b> For
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4370
     * example, no cast is required in this code fragment:</p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4371
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4372
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4373
     * {@code Number n = 0;                             }<br>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4374
     * {@code Class<? extends Number> c = n.getClass(); }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4375
     * </p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4376
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4377
     * @return The {@code Class} object that represents the runtime
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4378
     *         class of this object.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4379
     * @see    <a href="http://java.sun.com/docs/books/jls/">The Java
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4380
     *         Language Specification, Third Edition (15.8.2 Class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4381
     *         Literals)</a>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4382
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4383
    public final native Class<?> getClass();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4384
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4385
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4386
     * Returns a hash code value for the object. This method is 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4387
     * supported for the benefit of hashtables such as those provided by 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4388
     * <code>java.util.Hashtable</code>. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4389
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4390
     * The general contract of <code>hashCode</code> is: 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4391
     * <ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4392
     * <li>Whenever it is invoked on the same object more than once during 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4393
     *     an execution of a Java application, the <tt>hashCode</tt> method 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4394
     *     must consistently return the same integer, provided no information 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4395
     *     used in <tt>equals</tt> comparisons on the object is modified.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4396
     *     This integer need not remain consistent from one execution of an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4397
     *     application to another execution of the same application. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4398
     * <li>If two objects are equal according to the <tt>equals(Object)</tt>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4399
     *     method, then calling the <code>hashCode</code> method on each of 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4400
     *     the two objects must produce the same integer result. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4401
     * <li>It is <em>not</em> required that if two objects are unequal 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4402
     *     according to the {@link java.lang.Object#equals(java.lang.Object)} 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4403
     *     method, then calling the <tt>hashCode</tt> method on each of the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4404
     *     two objects must produce distinct integer results.  However, the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4405
     *     programmer should be aware that producing distinct integer results 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4406
     *     for unequal objects may improve the performance of hashtables.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4407
     * </ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4408
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4409
     * As much as is reasonably practical, the hashCode method defined by 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4410
     * class <tt>Object</tt> does return distinct integers for distinct 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4411
     * objects. (This is typically implemented by converting the internal 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4412
     * address of the object into an integer, but this implementation 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4413
     * technique is not required by the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4414
     * Java<font size="-2"><sup>TM</sup></font> programming language.)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4415
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4416
     * @return  a hash code value for this object.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4417
     * @see     java.lang.Object#equals(java.lang.Object)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4418
     * @see     java.util.Hashtable
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4419
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4420
    public native int hashCode();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4421
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4422
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4423
     * Indicates whether some other object is "equal to" this one.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4424
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4425
     * The <code>equals</code> method implements an equivalence relation
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4426
     * on non-null object references:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4427
     * <ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4428
     * <li>It is <i>reflexive</i>: for any non-null reference value
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4429
     *     <code>x</code>, <code>x.equals(x)</code> should return
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4430
     *     <code>true</code>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4431
     * <li>It is <i>symmetric</i>: for any non-null reference values
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4432
     *     <code>x</code> and <code>y</code>, <code>x.equals(y)</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4433
     *     should return <code>true</code> if and only if
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4434
     *     <code>y.equals(x)</code> returns <code>true</code>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4435
     * <li>It is <i>transitive</i>: for any non-null reference values
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4436
     *     <code>x</code>, <code>y</code>, and <code>z</code>, if
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4437
     *     <code>x.equals(y)</code> returns <code>true</code> and
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4438
     *     <code>y.equals(z)</code> returns <code>true</code>, then
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4439
     *     <code>x.equals(z)</code> should return <code>true</code>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4440
     * <li>It is <i>consistent</i>: for any non-null reference values
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4441
     *     <code>x</code> and <code>y</code>, multiple invocations of
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4442
     *     <tt>x.equals(y)</tt> consistently return <code>true</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4443
     *     or consistently return <code>false</code>, provided no
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4444
     *     information used in <code>equals</code> comparisons on the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4445
     *     objects is modified.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4446
     * <li>For any non-null reference value <code>x</code>,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4447
     *     <code>x.equals(null)</code> should return <code>false</code>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4448
     * </ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4449
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4450
     * The <tt>equals</tt> method for class <code>Object</code> implements 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4451
     * the most discriminating possible equivalence relation on objects; 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4452
     * that is, for any non-null reference values <code>x</code> and
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4453
     * <code>y</code>, this method returns <code>true</code> if and only
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4454
     * if <code>x</code> and <code>y</code> refer to the same object
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4455
     * (<code>x == y</code> has the value <code>true</code>).
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4456
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4457
     * Note that it is generally necessary to override the <tt>hashCode</tt>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4458
     * method whenever this method is overridden, so as to maintain the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4459
     * general contract for the <tt>hashCode</tt> method, which states
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4460
     * that equal objects must have equal hash codes. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4461
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4462
     * @param   obj   the reference object with which to compare.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4463
     * @return  <code>true</code> if this object is the same as the obj
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4464
     *          argument; <code>false</code> otherwise.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4465
     * @see     #hashCode()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4466
     * @see     java.util.Hashtable
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4467
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4468
    public boolean equals(Object obj) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4469
        return (this == obj);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4470
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4471
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4472
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4473
     * Creates and returns a copy of this object.  The precise meaning 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4474
     * of "copy" may depend on the class of the object. The general 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4475
     * intent is that, for any object <tt>x</tt>, the expression:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4476
     * <blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4477
     * <pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4478
     * x.clone() !!= x</pre></blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4479
     * will be true, and that the expression:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4480
     * <blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4481
     * <pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4482
     * x.clone().getClass() == x.getClass()</pre></blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4483
     * will be <tt>true</tt>, but these are not absolute requirements. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4484
     * While it is typically the case that:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4485
     * <blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4486
     * <pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4487
     * x.clone().equals(x)</pre></blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4488
     * will be <tt>true</tt>, this is not an absolute requirement. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4489
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4490
     * By convention, the returned object should be obtained by calling
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4491
     * <tt>super.clone</tt>.  If a class and all of its superclasses (except
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4492
     * <tt>Object</tt>) obey this convention, it will be the case that
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4493
     * <tt>x.clone().getClass() == x.getClass()</tt>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4494
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4495
     * By convention, the object returned by this method should be independent
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4496
     * of this object (which is being cloned).  To achieve this independence,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4497
     * it may be necessary to modify one or more fields of the object returned
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4498
     * by <tt>super.clone</tt> before returning it.  Typically, this means
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4499
     * copying any mutable objects that comprise the internal "deep structure"
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4500
     * of the object being cloned and replacing the references to these
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4501
     * objects with references to the copies.  If a class contains only
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4502
     * primitive fields or references to immutable objects, then it is usually
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4503
     * the case that no fields in the object returned by <tt>super.clone</tt>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4504
     * need to be modified.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4505
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4506
     * The method <tt>clone</tt> for class <tt>Object</tt> performs a 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4507
     * specific cloning operation. First, if the class of this object does 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4508
     * not implement the interface <tt>Cloneable</tt>, then a 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4509
     * <tt>CloneNotSupportedException</tt> is thrown. Note that all arrays 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4510
     * are considered to implement the interface <tt>Cloneable</tt>. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4511
     * Otherwise, this method creates a new instance of the class of this 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4512
     * object and initializes all its fields with exactly the contents of 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4513
     * the corresponding fields of this object, as if by assignment; the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4514
     * contents of the fields are not themselves cloned. Thus, this method 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4515
     * performs a "shallow copy" of this object, not a "deep copy" operation.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4516
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4517
     * The class <tt>Object</tt> does not itself implement the interface 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4518
     * <tt>Cloneable</tt>, so calling the <tt>clone</tt> method on an object 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4519
     * whose class is <tt>Object</tt> will result in throwing an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4520
     * exception at run time.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4521
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4522
     * @return     a clone of this instance.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4523
     * @exception  CloneNotSupportedException  if the object''s class does not
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4524
     *               support the <code>Cloneable</code> interface. Subclasses
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4525
     *               that override the <code>clone</code> method can also
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4526
     *               throw this exception to indicate that an instance cannot
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4527
     *               be cloned.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4528
     * @see java.lang.Cloneable
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4529
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4530
    protected native Object clone() throws CloneNotSupportedException;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4531
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4532
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4533
     * Returns a string representation of the object. In general, the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4534
     * <code>toString</code> method returns a string that 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4535
     * "textually represents" this object. The result should 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4536
     * be a concise but informative representation that is easy for a 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4537
     * person to read.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4538
     * It is recommended that all subclasses override this method.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4539
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4540
     * The <code>toString</code> method for class <code>Object</code> 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4541
     * returns a string consisting of the name of the class of which the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4542
     * object is an instance, the at-sign character `<code>@</code>`, and 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4543
     * the unsigned hexadecimal representation of the hash code of the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4544
     * object. In other words, this method returns a string equal to the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4545
     * value of:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4546
     * <blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4547
     * <pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4548
     * getClass().getName() + `@` + Integer.toHexString(hashCode())
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4549
     * </pre></blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4550
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4551
     * @return  a string representation of the object.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4552
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4553
    public String toString() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4554
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4555
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4556
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4557
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4558
     * Wakes up a single thread that is waiting on this objects 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4559
     * monitor. If any threads are waiting on this object, one of them 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4560
     * is chosen to be awakened. The choice is arbitrary and occurs at 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4561
     * the discretion of the implementation. A thread waits on an objects 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4562
     * monitor by calling one of the <code>wait</code> methods.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4563
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4564
     * The awakened thread will not be able to proceed until the current 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4565
     * thread relinquishes the lock on this object. The awakened thread will 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4566
     * compete in the usual manner with any other threads that might be 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4567
     * actively competing to synchronize on this object; for example, the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4568
     * awakened thread enjoys no reliable privilege or disadvantage in being 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4569
     * the next thread to lock this object.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4570
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4571
     * This method should only be called by a thread that is the owner 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4572
     * of this object`s monitor. A thread becomes the owner of the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4573
     * object`s monitor in one of three ways: 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4574
     * <ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4575
     * <li>By executing a synchronized instance method of that object. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4576
     * <li>By executing the body of a <code>synchronized</code> statement 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4577
     *     that synchronizes on the object. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4578
     * <li>For objects of type <code>Class,</code> by executing a 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4579
     *     synchronized static method of that class. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4580
     * </ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4581
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4582
     * Only one thread at a time can own an object''s monitor. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4583
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4584
     * @exception  IllegalMonitorStateException  if the current thread is not
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4585
     *               the owner of this object''s monitor.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4586
     * @see        java.lang.Object#notifyAll()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4587
     * @see        java.lang.Object#wait()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4588
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4589
    public final native void notify();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4590
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4591
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4592
     * Wakes up all threads that are waiting on this object`s monitor. A 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4593
     * thread waits on an object`s monitor by calling one of the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4594
     * <code>wait</code> methods.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4595
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4596
     * The awakened threads will not be able to proceed until the current 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4597
     * thread relinquishes the lock on this object. The awakened threads 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4598
     * will compete in the usual manner with any other threads that might 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4599
     * be actively competing to synchronize on this object; for example, 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4600
     * the awakened threads enjoy no reliable privilege or disadvantage in 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4601
     * being the next thread to lock this object.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4602
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4603
     * This method should only be called by a thread that is the owner 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4604
     * of this object`s monitor. See the <code>notify</code> method for a 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4605
     * description of the ways in which a thread can become the owner of 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4606
     * a monitor. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4607
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4608
     * @exception  IllegalMonitorStateException  if the current thread is not
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4609
     *               the owner of this object`s monitor.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4610
     * @see        java.lang.Object#notify()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4611
     * @see        java.lang.Object#wait()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4612
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4613
    public final native void notifyAll();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4614
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4615
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4616
     * Causes the current thread to wait until either another thread invokes the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4617
     * {@link java.lang.Object#notify()} method or the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4618
     * {@link java.lang.Object#notifyAll()} method for this object, or a 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4619
     * specified amount of time has elapsed. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4620
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4621
     * The current thread must own this object`s monitor. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4622
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4623
     * This method causes the current thread (call it <var>T</var>) to 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4624
     * place itself in the wait set for this object and then to relinquish 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4625
     * any and all synchronization claims on this object. Thread <var>T</var> 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4626
     * becomes disabled for thread scheduling purposes and lies dormant 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4627
     * until one of four things happens:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4628
     * <ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4629
     * <li>Some other thread invokes the <tt>notify</tt> method for this 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4630
     * object and thread <var>T</var> happens to be arbitrarily chosen as 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4631
     * the thread to be awakened. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4632
     * <li>Some other thread invokes the <tt>notifyAll</tt> method for this 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4633
     * object. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4634
     * <li>Some other thread {@linkplain Thread#interrupt() interrupts} 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4635
     * thread <var>T</var>. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4636
     * <li>The specified amount of real time has elapsed, more or less.  If 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4637
     * <tt>timeout</tt> is zero, however, then real time is not taken into 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4638
     * consideration and the thread simply waits until notified. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4639
     * </ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4640
     * The thread <var>T</var> is then removed from the wait set for this 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4641
     * object and re-enabled for thread scheduling. It then competes in the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4642
     * usual manner with other threads for the right to synchronize on the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4643
     * object; once it has gained control of the object, all its 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4644
     * synchronization claims on the object are restored to the status quo 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4645
     * ante - that is, to the situation as of the time that the <tt>wait</tt> 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4646
     * method was invoked. Thread <var>T</var> then returns from the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4647
     * invocation of the <tt>wait</tt> method. Thus, on return from the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4648
     * <tt>wait</tt> method, the synchronization state of the object and of 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4649
     * thread <tt>T</tt> is exactly as it was when the <tt>wait</tt> method 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4650
     * was invoked. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4651
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4652
     * A thread can also wake up without being notified, interrupted, or
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4653
     * timing out, a so-called <i>spurious wakeup</i>.  While this will rarely
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4654
     * occur in practice, applications must guard against it by testing for
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4655
     * the condition that should have caused the thread to be awakened, and
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4656
     * continuing to wait if the condition is not satisfied.  In other words,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4657
     * waits should always occur in loops, like this one:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4658
     * <pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4659
     *     synchronized (obj) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4660
     *         while (&lt;condition does not hold&gt;)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4661
     *             obj.wait(timeout);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4662
     *         ... // Perform action appropriate to condition
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4663
     *     }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4664
     * </pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4665
     * (For more information on this topic, see Section 3.2.3 in Doug Lea`s
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4666
     * "Concurrent Programming in Java (Second Edition)" (Addison-Wesley,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4667
     * 2000), or Item 50 in Joshua Bloch`s "Effective Java Programming
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4668
     * Language Guide" (Addison-Wesley, 2001).
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4669
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4670
     * <p>If the current thread is {@linkplain java.lang.Thread#interrupt()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4671
     * interrupted} by any thread before or while it is waiting, then an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4672
     * <tt>InterruptedException</tt> is thrown.  This exception is not
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4673
     * thrown until the lock status of this object has been restored as
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4674
     * described above.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4675
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4676
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4677
     * Note that the <tt>wait</tt> method, as it places the current thread 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4678
     * into the wait set for this object, unlocks only this object; any 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4679
     * other objects on which the current thread may be synchronized remain 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4680
     * locked while the thread waits.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4681
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4682
     * This method should only be called by a thread that is the owner 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4683
     * of this object`s monitor. See the <code>notify</code> method for a 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4684
     * description of the ways in which a thread can become the owner of 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4685
     * a monitor. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4686
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4687
     * @param      timeout   the maximum time to wait in milliseconds.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4688
     * @exception  IllegalArgumentException      if the value of timeout is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4689
     *               negative.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4690
     * @exception  IllegalMonitorStateException  if the current thread is not
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4691
     *               the owner of the object`s monitor.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4692
     * @exception  InterruptedException if any thread interrupted the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4693
     *             current thread before or while the current thread
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4694
     *             was waiting for a notification.  The <i>interrupted
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4695
     *             status</i> of the current thread is cleared when
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4696
     *             this exception is thrown.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4697
     * @see        java.lang.Object#notify()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4698
     * @see        java.lang.Object#notifyAll()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4699
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4700
    public final native void wait(long timeout) throws InterruptedException;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4701
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4702
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4703
     * Causes the current thread to wait until another thread invokes the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4704
     * {@link java.lang.Object#notify()} method or the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4705
     * {@link java.lang.Object#notifyAll()} method for this object, or 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4706
     * some other thread interrupts the current thread, or a certain 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4707
     * amount of real time has elapsed. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4708
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4709
     * This method is similar to the <code>wait</code> method of one 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4710
     * argument, but it allows finer control over the amount of time to 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4711
     * wait for a notification before giving up. The amount of real time, 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4712
     * measured in nanoseconds, is given by:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4713
     * <blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4714
     * <pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4715
     * 1000000*timeout+nanos</pre></blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4716
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4717
     * In all other respects, this method does the same thing as the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4718
     * method {@link #wait(long)} of one argument. In particular, 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4719
     * <tt>wait(0, 0)</tt> means the same thing as <tt>wait(0)</tt>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4720
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4721
     * The current thread must own this object`s monitor. The thread 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4722
     * releases ownership of this monitor and waits until either of the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4723
     * following two conditions has occurred: 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4724
     * <ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4725
     * <li>Another thread notifies threads waiting on this object`s monitor 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4726
     *     to wake up either through a call to the <code>notify</code> method 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4727
     *     or the <code>notifyAll</code> method. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4728
     * <li>The timeout period, specified by <code>timeout</code> 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4729
     *     milliseconds plus <code>nanos</code> nanoseconds arguments, has 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4730
     *     elapsed. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4731
     * </ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4732
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4733
     * The thread then waits until it can re-obtain ownership of the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4734
     * monitor and resumes execution.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4735
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4736
     * As in the one argument version, interrupts and spurious wakeups are
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4737
     * possible, and this method should always be used in a loop:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4738
     * <pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4739
     *     synchronized (obj) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4740
     *         while (&lt;condition does not hold&gt;)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4741
     *             obj.wait(timeout, nanos);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4742
     *         ... // Perform action appropriate to condition
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4743
     *     }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4744
     * </pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4745
     * This method should only be called by a thread that is the owner 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4746
     * of this object`s monitor. See the <code>notify</code> method for a 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4747
     * description of the ways in which a thread can become the owner of 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4748
     * a monitor. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4749
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4750
     * @param      timeout   the maximum time to wait in milliseconds.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4751
     * @param      nanos      additional time, in nanoseconds range
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4752
     *                       0-999999.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4753
     * @exception  IllegalArgumentException      if the value of timeout is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4754
     *                      negative or the value of nanos is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4755
     *                      not in the range 0-999999.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4756
     * @exception  IllegalMonitorStateException  if the current thread is not
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4757
     *               the owner of this object`s monitor.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4758
     * @exception  InterruptedException if any thread interrupted the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4759
     *             current thread before or while the current thread
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4760
     *             was waiting for a notification.  The <i>interrupted
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4761
     *             status</i> of the current thread is cleared when
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4762
     *             this exception is thrown.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4763
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4764
    public final void wait(long timeout, int nanos) throws InterruptedException {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4765
        if (timeout < 0) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4766
            throw new IllegalArgumentException("timeout value is negative");
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4767
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4768
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4769
        if (nanos < 0 || nanos > 999999) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4770
            throw new IllegalArgumentException(
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4771
                                "nanosecond timeout value out of range");
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4772
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4773
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4774
        if (nanos >= 500000 || (nanos !!= 0 && timeout == 0)) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4775
            timeout++;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4776
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4777
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4778
        wait(timeout);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4779
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4780
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4781
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4782
     * Causes the current thread to wait until another thread invokes the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4783
     * {@link java.lang.Object#notify()} method or the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4784
     * {@link java.lang.Object#notifyAll()} method for this object. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4785
     * In other words, this method behaves exactly as if it simply 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4786
     * performs the call <tt>wait(0)</tt>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4787
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4788
     * The current thread must own this object`s monitor. The thread 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4789
     * releases ownership of this monitor and waits until another thread 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4790
     * notifies threads waiting on this object`s monitor to wake up 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4791
     * either through a call to the <code>notify</code> method or the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4792
     * <code>notifyAll</code> method. The thread then waits until it can 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4793
     * re-obtain ownership of the monitor and resumes execution. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4794
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4795
     * As in the one argument version, interrupts and spurious wakeups are
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4796
     * possible, and this method should always be used in a loop:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4797
     * <pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4798
     *     synchronized (obj) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4799
     *         while (&lt;condition does not hold&gt;)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4800
     *             obj.wait();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4801
     *         ... // Perform action appropriate to condition
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4802
     *     }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4803
     * </pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4804
     * This method should only be called by a thread that is the owner 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4805
     * of this object`s monitor. See the <code>notify</code> method for a 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4806
     * description of the ways in which a thread can become the owner of 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4807
     * a monitor. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4808
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4809
     * @exception  IllegalMonitorStateException  if the current thread is not
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4810
     *               the owner of the object`s monitor.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4811
     * @exception  InterruptedException if any thread interrupted the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4812
     *             current thread before or while the current thread
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4813
     *             was waiting for a notification.  The <i>interrupted
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4814
     *             status</i> of the current thread is cleared when
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4815
     *             this exception is thrown.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4816
     * @see        java.lang.Object#notify()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4817
     * @see        java.lang.Object#notifyAll()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4818
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4819
    public final void wait() throws InterruptedException {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4820
        wait(0);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4821
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4822
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4823
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4824
     * Called by the garbage collector on an object when garbage collection
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4825
     * determines that there are no more references to the object.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4826
     * A subclass overrides the <code>finalize</code> method to dispose of
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4827
     * system resources or to perform other cleanup. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4828
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4829
     * The general contract of <tt>finalize</tt> is that it is invoked 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4830
     * if and when the Java<font size="-2"><sup>TM</sup></font> virtual 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4831
     * machine has determined that there is no longer any
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4832
     * means by which this object can be accessed by any thread that has
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4833
     * not yet died, except as a result of an action taken by the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4834
     * finalization of some other object or class which is ready to be
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4835
     * finalized. The <tt>finalize</tt> method may take any action, including
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4836
     * making this object available again to other threads; the usual purpose
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4837
     * of <tt>finalize</tt>, however, is to perform cleanup actions before 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4838
     * the object is irrevocably discarded. For example, the finalize method 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4839
     * for an object that represents an input/output connection might perform
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4840
     * explicit I/O transactions to break the connection before the object is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4841
     * permanently discarded. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4842
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4843
     * The <tt>finalize</tt> method of class <tt>Object</tt> performs no 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4844
     * special action; it simply returns normally. Subclasses of 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4845
     * <tt>Object</tt> may override this definition.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4846
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4847
     * The Java programming language does not guarantee which thread will 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4848
     * invoke the <tt>finalize</tt> method for any given object. It is 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4849
     * guaranteed, however, that the thread that invokes finalize will not 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4850
     * be holding any user-visible synchronization locks when finalize is 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4851
     * invoked. If an uncaught exception is thrown by the finalize method, 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4852
     * the exception is ignored and finalization of that object terminates.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4853
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4854
     * After the <tt>finalize</tt> method has been invoked for an object, no 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4855
     * further action is taken until the Java virtual machine has again 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4856
     * determined that there is no longer any means by which this object can 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4857
     * be accessed by any thread that has not yet died, including possible
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4858
     * actions by other objects or classes which are ready to be finalized, 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4859
     * at which point the object may be discarded.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4860
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4861
     * The <tt>finalize</tt> method is never invoked more than once by a Java
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4862
     * virtual machine for any given object.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4863
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4864
     * Any exception thrown by the <code>finalize</code> method causes 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4865
     * the finalization of this object to be halted, but is otherwise 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4866
     * ignored. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4867
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4868
     * @throws Throwable the <code>Exception</code> raised by this method
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4869
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4870
    protected void finalize() throws Throwable { }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4871
}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4872
        '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4873
].
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4874
    Transcript showCR: 'java.lang.Object parsed in ', time asString, ' miliseconds'.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4875
    ^ res.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4876
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4877
    "Modified: / 30-12-2010 / 11:39:56 / Jan Kurs <kurs.jan@post.cz>"
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4878
!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4879
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4880
testJavaLangSystem6
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4881
    | res time |
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4882
    time := Time millisecondsToRun: [
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4883
    res := self assertParse: '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4884
/*
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4885
 * %W% %E%
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4886
 *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4887
 * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4888
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4889
 */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4890
package java.lang;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4891
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4892
import java.io.*;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4893
import java.util.Properties;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4894
import java.util.PropertyPermission;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4895
import java.util.StringTokenizer;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4896
import java.security.AccessController;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4897
import java.security.PrivilegedAction;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4898
import java.security.AllPermission;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4899
import java.nio.channels.Channel;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4900
import java.nio.channels.spi.SelectorProvider;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4901
import sun.nio.ch.Interruptible;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4902
import sun.reflect.Reflection;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4903
import sun.security.util.SecurityConstants;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4904
import sun.reflect.annotation.AnnotationType;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4905
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4906
/**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4907
 * The <code>System</code> class contains several useful class fields
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4908
 * and methods. It cannot be instantiated.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4909
 *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4910
 * <p>Among the facilities provided by the <code>System</code> class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4911
 * are standard input, standard output, and error output streams;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4912
 * access to externally defined properties and environment
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4913
 * variables; a means of loading files and libraries; and a utility
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4914
 * method for quickly copying a portion of an array.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4915
 *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4916
 * @author  unascribed
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4917
 * @version 1.162, 04/01/09
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4918
 * @since   JDK1.0
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4919
 */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4920
public final class System {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4921
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4922
    /* First thing---register the natives */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4923
    private static native void registerNatives();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4924
    static {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4925
        registerNatives();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4926
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4927
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4928
    /** Don''t let anyone instantiate this class */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4929
    private System() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4930
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4931
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4932
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4933
     * The "standard" input stream. This stream is already
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4934
     * open and ready to supply input data. Typically this stream
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4935
     * corresponds to keyboard input or another input source specified by
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4936
     * the host environment or user.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4937
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4938
    public final static InputStream in = nullInputStream();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4939
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4940
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4941
     * The "standard" output stream. This stream is already
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4942
     * open and ready to accept output data. Typically this stream
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4943
     * corresponds to display output or another output destination
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4944
     * specified by the host environment or user.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4945
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4946
     * For simple stand-alone Java applications, a typical way to write
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4947
     * a line of output data is:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4948
     * <blockquote><pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4949
     *     System.out.println(data)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4950
     * </pre></blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4951
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4952
     * See the <code>println</code> methods in class <code>PrintStream</code>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4953
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4954
     * @see     java.io.PrintStream#println()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4955
     * @see     java.io.PrintStream#println(boolean)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4956
     * @see     java.io.PrintStream#println(char)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4957
     * @see     java.io.PrintStream#println(char[])
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4958
     * @see     java.io.PrintStream#println(double)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4959
     * @see     java.io.PrintStream#println(float)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4960
     * @see     java.io.PrintStream#println(int)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4961
     * @see     java.io.PrintStream#println(long)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4962
     * @see     java.io.PrintStream#println(java.lang.Object)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4963
     * @see     java.io.PrintStream#println(java.lang.String)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4964
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4965
    public final static PrintStream out = nullPrintStream();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4966
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4967
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4968
     * The "standard" error output stream. This stream is already
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4969
     * open and ready to accept output data.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4970
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4971
     * Typically this stream corresponds to display output or another
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4972
     * output destination specified by the host environment or user. By
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4973
     * convention, this output stream is used to display error messages
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4974
     * or other information that should come to the immediate attention
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4975
     * of a user even if the principal output stream, the value of the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4976
     * variable <code>out</code>, has been redirected to a file or other
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4977
     * destination that is typically not continuously monitored.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4978
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4979
    public final static PrintStream err = nullPrintStream();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4980
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4981
    /* The security manager for the system.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4982
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4983
    private static volatile SecurityManager security = null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4984
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4985
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4986
     * Reassigns the "standard" input stream.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4987
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4988
     * <p>First, if there is a security manager, its <code>checkPermission</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4989
     * method is called with a <code>RuntimePermission("setIO")</code> permission
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4990
     *  to see if it''s ok to reassign the "standard" input stream.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4991
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4992
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4993
     * @param in the new standard input stream.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4994
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4995
     * @throws SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4996
     *        if a security manager exists and its
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4997
     *        <code>checkPermission</code> method doesn''t allow
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4998
     *        reassigning of the standard input stream.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  4999
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5000
     * @see SecurityManager#checkPermission
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5001
     * @see java.lang.RuntimePermission
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5002
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5003
     * @since   JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5004
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5005
    public static void setIn(InputStream in) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5006
        checkIO();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5007
        setIn0(in);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5008
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5009
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5010
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5011
     * Reassigns the "standard" output stream.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5012
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5013
     * <p>First, if there is a security manager, its <code>checkPermission</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5014
     * method is called with a <code>RuntimePermission("setIO")</code> permission
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5015
     *  to see if it''s ok to reassign the "standard" output stream.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5016
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5017
     * @param out the new standard output stream
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5018
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5019
     * @throws SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5020
     *        if a security manager exists and its
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5021
     *        <code>checkPermission</code> method doesn''t allow
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5022
     *        reassigning of the standard output stream.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5023
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5024
     * @see SecurityManager#checkPermission
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5025
     * @see java.lang.RuntimePermission
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5026
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5027
     * @since   JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5028
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5029
    public static void setOut(PrintStream out) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5030
        checkIO();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5031
        setOut0(out);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5032
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5033
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5034
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5035
     * Reassigns the "standard" error output stream.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5036
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5037
     * <p>First, if there is a security manager, its <code>checkPermission</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5038
     * method is called with a <code>RuntimePermission("setIO")</code> permission
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5039
     *  to see if it''s ok to reassign the "standard" error output stream.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5040
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5041
     * @param err the new standard error output stream.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5042
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5043
     * @throws SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5044
     *        if a security manager exists and its
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5045
     *        <code>checkPermission</code> method doesn''t allow
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5046
     *        reassigning of the standard error output stream.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5047
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5048
     * @see SecurityManager#checkPermission
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5049
     * @see java.lang.RuntimePermission
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5050
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5051
     * @since   JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5052
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5053
    public static void setErr(PrintStream err) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5054
        checkIO();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5055
        setErr0(err);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5056
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5057
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5058
    private static volatile Console cons = null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5059
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5060
     * Returns the unique {@link java.io.Console Console} object associated
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5061
     * with the current Java virtual machine, if any.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5062
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5063
     * @return  The system console, if any, otherwise <tt>null</tt>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5064
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5065
     * @since   1.6
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5066
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5067
     public static Console console() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5068
         if (cons == null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5069
             synchronized (System.class) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5070
                 cons = sun.misc.SharedSecrets.getJavaIOAccess().console();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5071
             }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5072
         }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5073
         return cons;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5074
     }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5075
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5076
    /** 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5077
     * Returns the channel inherited from the entity that created this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5078
     * Java virtual machine.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5079
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5080
     * <p> This method returns the channel obtained by invoking the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5081
     * {@link java.nio.channels.spi.SelectorProvider#inheritedChannel
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5082
     * inheritedChannel} method of the system-wide default
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5083
     * {@link java.nio.channels.spi.SelectorProvider} object. </p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5084
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5085
     * <p> In addition to the network-oriented channels described in
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5086
     * {@link java.nio.channels.spi.SelectorProvider#inheritedChannel
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5087
     * inheritedChannel}, this method may return other kinds of
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5088
     * channels in the future.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5089
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5090
     * @return  The inherited channel, if any, otherwise <tt>null</tt>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5091
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5092
     * @throws  IOException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5093
     *          If an I/O error occurs
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5094
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5095
     * @throws  SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5096
     *          If a security manager is present and it does not
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5097
     *          permit access to the channel.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5098
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5099
     * @since 1.5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5100
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5101
    public static Channel inheritedChannel() throws IOException {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5102
        return SelectorProvider.provider().inheritedChannel();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5103
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5104
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5105
    private static void checkIO() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5106
        SecurityManager sm = getSecurityManager();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5107
        if (sm !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5108
            sm.checkPermission(new RuntimePermission("setIO"));
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5109
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5110
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5111
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5112
    private static native void setIn0(InputStream in);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5113
    private static native void setOut0(PrintStream out);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5114
    private static native void setErr0(PrintStream err);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5115
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5116
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5117
     * Sets the System security.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5118
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5119
     * <p> If there is a security manager already installed, this method first
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5120
     * calls the security manager''s <code>checkPermission</code> method
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5121
     * with a <code>RuntimePermission("setSecurityManager")</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5122
     * permission to ensure it''s ok to replace the existing
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5123
     * security manager.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5124
     * This may result in throwing a <code>SecurityException</code>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5125
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5126
     * <p> Otherwise, the argument is established as the current
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5127
     * security manager. If the argument is <code>null</code> and no
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5128
     * security manager has been established, then no action is taken and
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5129
     * the method simply returns.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5130
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5131
     * @param      s   the security manager.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5132
     * @exception  SecurityException  if the security manager has already
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5133
     *             been set and its <code>checkPermission</code> method
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5134
     *             doesn''t allow it to be replaced.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5135
     * @see #getSecurityManager
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5136
     * @see SecurityManager#checkPermission
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5137
     * @see java.lang.RuntimePermission
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5138
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5139
    public static
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5140
    void setSecurityManager(final SecurityManager s) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5141
        try {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5142
            s.checkPackageAccess("java.lang");
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5143
        } catch (Exception e) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5144
            // no-op
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5145
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5146
        setSecurityManager0(s);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5147
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5148
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5149
    private static synchronized
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5150
    void setSecurityManager0(final SecurityManager s) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5151
        SecurityManager sm = getSecurityManager();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5152
        if (sm !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5153
            // ask the currently installed security manager if we
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5154
            // can replace it.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5155
            sm.checkPermission(new RuntimePermission
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5156
                                     ("setSecurityManager"));
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5157
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5158
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5159
        if ((s !!= null) && (s.getClass().getClassLoader() !!= null)) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5160
            // New security manager class is not on bootstrap classpath.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5161
            // Cause policy to get initialized before we install the new
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5162
            // security manager, in order to prevent infinite loops when
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5163
            // trying to initialize the policy (which usually involves
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5164
            // accessing some security and/or system properties, which in turn
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5165
            // calls the installed security manager''s checkPermission method
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5166
            // which will loop infinitely if there is a non-system class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5167
            // (in this case: the new security manager class) on the stack).
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5168
            AccessController.doPrivileged(new PrivilegedAction() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5169
                public Object run() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5170
                    s.getClass().getProtectionDomain().implies
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5171
                        (SecurityConstants.ALL_PERMISSION);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5172
                    return null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5173
                }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5174
            });
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5175
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5176
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5177
        security = s;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5178
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5179
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5180
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5181
     * Gets the system security interface.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5182
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5183
     * @return  if a security manager has already been established for the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5184
     *          current application, then that security manager is returned;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5185
     *          otherwise, <code>null</code> is returned.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5186
     * @see     #setSecurityManager
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5187
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5188
    public static SecurityManager getSecurityManager() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5189
        return security;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5190
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5191
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5192
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5193
     * Returns the current time in milliseconds.  Note that
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5194
     * while the unit of time of the return value is a millisecond,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5195
     * the granularity of the value depends on the underlying
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5196
     * operating system and may be larger.  For example, many
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5197
     * operating systems measure time in units of tens of
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5198
     * milliseconds.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5199
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5200
     * <p> See the description of the class <code>Date</code> for
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5201
     * a discussion of slight discrepancies that may arise between
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5202
     * "computer time" and coordinated universal time (UTC).
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5203
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5204
     * @return  the difference, measured in milliseconds, between
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5205
     *          the current time and midnight, January 1, 1970 UTC.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5206
     * @see     java.util.Date
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5207
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5208
    public static native long currentTimeMillis();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5209
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5210
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5211
     * Returns the current value of the most precise available system
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5212
     * timer, in nanoseconds.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5213
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5214
     * <p>This method can only be used to measure elapsed time and is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5215
     * not related to any other notion of system or wall-clock time.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5216
     * The value returned represents nanoseconds since some fixed but
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5217
     * arbitrary time (perhaps in the future, so values may be
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5218
     * negative).  This method provides nanosecond precision, but not
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5219
     * necessarily nanosecond accuracy. No guarantees are made about
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5220
     * how frequently values change. Differences in successive calls
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5221
     * that span greater than approximately 292 years (2<sup>63</sup>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5222
     * nanoseconds) will not accurately compute elapsed time due to
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5223
     * numerical overflow.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5224
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5225
     * <p> For example, to measure how long some code takes to execute:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5226
     * <pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5227
     *   long startTime = System.nanoTime();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5228
     *   // ... the code being measured ...
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5229
     *   long estimatedTime = System.nanoTime() - startTime;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5230
     * </pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5231
     * 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5232
     * @return The current value of the system timer, in nanoseconds.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5233
     * @since 1.5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5234
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5235
    public static native long nanoTime();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5236
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5237
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5238
     * Copies an array from the specified source array, beginning at the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5239
     * specified position, to the specified position of the destination array.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5240
     * A subsequence of array components are copied from the source
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5241
     * array referenced by <code>src</code> to the destination array
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5242
     * referenced by <code>dest</code>. The number of components copied is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5243
     * equal to the <code>length</code> argument. The components at
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5244
     * positions <code>srcPos</code> through
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5245
     * <code>srcPos+length-1</code> in the source array are copied into
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5246
     * positions <code>destPos</code> through
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5247
     * <code>destPos+length-1</code>, respectively, of the destination
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5248
     * array.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5249
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5250
     * If the <code>src</code> and <code>dest</code> arguments refer to the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5251
     * same array object, then the copying is performed as if the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5252
     * components at positions <code>srcPos</code> through
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5253
     * <code>srcPos+length-1</code> were first copied to a temporary
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5254
     * array with <code>length</code> components and then the contents of
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5255
     * the temporary array were copied into positions
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5256
     * <code>destPos</code> through <code>destPos+length-1</code> of the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5257
     * destination array.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5258
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5259
     * If <code>dest</code> is <code>null</code>, then a
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5260
     * <code>NullPointerException</code> is thrown.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5261
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5262
     * If <code>src</code> is <code>null</code>, then a
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5263
     * <code>NullPointerException</code> is thrown and the destination
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5264
     * array is not modified.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5265
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5266
     * Otherwise, if any of the following is true, an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5267
     * <code>ArrayStoreException</code> is thrown and the destination is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5268
     * not modified:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5269
     * <ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5270
     * <li>The <code>src</code> argument refers to an object that is not an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5271
     *     array.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5272
     * <li>The <code>dest</code> argument refers to an object that is not an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5273
     *     array.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5274
     * <li>The <code>src</code> argument and <code>dest</code> argument refer
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5275
     *     to arrays whose component types are different primitive types.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5276
     * <li>The <code>src</code> argument refers to an array with a primitive
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5277
     *    component type and the <code>dest</code> argument refers to an array
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5278
     *     with a reference component type.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5279
     * <li>The <code>src</code> argument refers to an array with a reference
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5280
     *    component type and the <code>dest</code> argument refers to an array
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5281
     *     with a primitive component type.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5282
     * </ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5283
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5284
     * Otherwise, if any of the following is true, an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5285
     * <code>IndexOutOfBoundsException</code> is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5286
     * thrown and the destination is not modified:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5287
     * <ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5288
     * <li>The <code>srcPos</code> argument is negative.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5289
     * <li>The <code>destPos</code> argument is negative.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5290
     * <li>The <code>length</code> argument is negative.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5291
     * <li><code>srcPos+length</code> is greater than
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5292
     *     <code>src.length</code>, the length of the source array.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5293
     * <li><code>destPos+length</code> is greater than
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5294
     *     <code>dest.length</code>, the length of the destination array.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5295
     * </ul>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5296
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5297
     * Otherwise, if any actual component of the source array from
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5298
     * position <code>srcPos</code> through
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5299
     * <code>srcPos+length-1</code> cannot be converted to the component
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5300
     * type of the destination array by assignment conversion, an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5301
     * <code>ArrayStoreException</code> is thrown. In this case, let
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5302
     * <b><i>k</i></b> be the smallest nonnegative integer less than
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5303
     * length such that <code>src[srcPos+</code><i>k</i><code>]</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5304
     * cannot be converted to the component type of the destination
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5305
     * array; when the exception is thrown, source array components from
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5306
     * positions <code>srcPos</code> through
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5307
     * <code>srcPos+</code><i>k</i><code>-1</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5308
     * will already have been copied to destination array positions
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5309
     * <code>destPos</code> through
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5310
     * <code>destPos+</code><i>k</I><code>-1</code> and no other
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5311
     * positions of the destination array will have been modified.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5312
     * (Because of the restrictions already itemized, this
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5313
     * paragraph effectively applies only to the situation where both
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5314
     * arrays have component types that are reference types.)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5315
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5316
     * @param      src      the source array.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5317
     * @param      srcPos   starting position in the source array.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5318
     * @param      dest     the destination array.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5319
     * @param      destPos  starting position in the destination data.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5320
     * @param      length   the number of array elements to be copied.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5321
     * @exception  IndexOutOfBoundsException  if copying would cause
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5322
     *               access of data outside array bounds.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5323
     * @exception  ArrayStoreException  if an element in the <code>src</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5324
     *               array could not be stored into the <code>dest</code> array
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5325
     *               because of a type mismatch.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5326
     * @exception  NullPointerException if either <code>src</code> or
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5327
     *               <code>dest</code> is <code>null</code>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5328
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5329
    public static native void arraycopy(Object src,  int  srcPos,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5330
                                        Object dest, int destPos,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5331
                                        int length);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5332
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5333
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5334
     * Returns the same hash code for the given object as
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5335
     * would be returned by the default method hashCode(),
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5336
     * whether or not the given object''s class overrides
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5337
     * hashCode().
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5338
     * The hash code for the null reference is zero.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5339
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5340
     * @param x object for which the hashCode is to be calculated
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5341
     * @return  the hashCode
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5342
     * @since   JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5343
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5344
    public static native int identityHashCode(Object x);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5345
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5346
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5347
     * System properties. The following properties are guaranteed to be defined:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5348
     * <dl>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5349
     * <dt>java.version         <dd>Java version number
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5350
     * <dt>java.vendor          <dd>Java vendor specific string
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5351
     * <dt>java.vendor.url      <dd>Java vendor URL
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5352
     * <dt>java.home            <dd>Java installation directory
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5353
     * <dt>java.class.version   <dd>Java class version number
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5354
     * <dt>java.class.path      <dd>Java classpath
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5355
     * <dt>os.name              <dd>Operating System Name
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5356
     * <dt>os.arch              <dd>Operating System Architecture
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5357
     * <dt>os.version           <dd>Operating System Version
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5358
     * <dt>file.separator       <dd>File separator ("/" on Unix)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5359
     * <dt>path.separator       <dd>Path separator (":" on Unix)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5360
     * <dt>line.separator       <dd>Line separator ("\n" on Unix)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5361
     * <dt>user.name            <dd>User account name
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5362
     * <dt>user.home            <dd>User home directory
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5363
     * <dt>user.dir             <dd>User''s current working directory
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5364
     * </dl>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5365
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5366
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5367
    private static Properties props;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5368
    private static native Properties initProperties(Properties props);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5369
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5370
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5371
     * Determines the current system properties.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5372
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5373
     * First, if there is a security manager, its
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5374
     * <code>checkPropertiesAccess</code> method is called with no
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5375
     * arguments. This may result in a security exception.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5376
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5377
     * The current set of system properties for use by the 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5378
     * {@link #getProperty(String)} method is returned as a 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5379
     * <code>Properties</code> object. If there is no current set of 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5380
     * system properties, a set of system properties is first created and 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5381
     * initialized. This set of system properties always includes values 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5382
     * for the following keys: 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5383
     * <table summary="Shows property keys and associated values">
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5384
     * <tr><th>Key</th>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5385
     *     <th>Description of Associated Value</th></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5386
     * <tr><td><code>java.version</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5387
     *     <td>Java Runtime Environment version</td></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5388
     * <tr><td><code>java.vendor</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5389
     *     <td>Java Runtime Environment vendor</td></tr
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5390
     * <tr><td><code>java.vendor.url</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5391
     *     <td>Java vendor URL</td></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5392
     * <tr><td><code>java.home</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5393
     *     <td>Java installation directory</td></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5394
     * <tr><td><code>java.vm.specification.version</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5395
     *     <td>Java Virtual Machine specification version</td></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5396
     * <tr><td><code>java.vm.specification.vendor</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5397
     *     <td>Java Virtual Machine specification vendor</td></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5398
     * <tr><td><code>java.vm.specification.name</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5399
     *     <td>Java Virtual Machine specification name</td></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5400
     * <tr><td><code>java.vm.version</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5401
     *     <td>Java Virtual Machine implementation version</td></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5402
     * <tr><td><code>java.vm.vendor</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5403
     *     <td>Java Virtual Machine implementation vendor</td></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5404
     * <tr><td><code>java.vm.name</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5405
     *     <td>Java Virtual Machine implementation name</td></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5406
     * <tr><td><code>java.specification.version</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5407
     *     <td>Java Runtime Environment specification  version</td></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5408
     * <tr><td><code>java.specification.vendor</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5409
     *     <td>Java Runtime Environment specification  vendor</td></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5410
     * <tr><td><code>java.specification.name</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5411
     *     <td>Java Runtime Environment specification  name</td></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5412
     * <tr><td><code>java.class.version</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5413
     *     <td>Java class format version number</td></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5414
     * <tr><td><code>java.class.path</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5415
     *     <td>Java class path</td></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5416
     * <tr><td><code>java.library.path</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5417
     *     <td>List of paths to search when loading libraries</td></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5418
     * <tr><td><code>java.io.tmpdir</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5419
     *     <td>Default temp file path</td></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5420
     * <tr><td><code>java.compiler</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5421
     *     <td>Name of JIT compiler to use</td></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5422
     * <tr><td><code>java.ext.dirs</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5423
     *     <td>Path of extension directory or directories</td></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5424
     * <tr><td><code>os.name</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5425
     *     <td>Operating system name</td></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5426
     * <tr><td><code>os.arch</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5427
     *     <td>Operating system architecture</td></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5428
     * <tr><td><code>os.version</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5429
     *     <td>Operating system version</td></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5430
     * <tr><td><code>file.separator</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5431
     *     <td>File separator ("/" on UNIX)</td></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5432
     * <tr><td><code>path.separator</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5433
     *     <td>Path separator (":" on UNIX)</td></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5434
     * <tr><td><code>line.separator</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5435
     *     <td>Line separator ("\n" on UNIX)</td></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5436
     * <tr><td><code>user.name</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5437
     *     <td>User''s account name</td></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5438
     * <tr><td><code>user.home</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5439
     *     <td>User''s home directory</td></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5440
     * <tr><td><code>user.dir</code></td>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5441
     *     <td>User''s current working directory</td></tr>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5442
     * </table>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5443
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5444
     * Multiple paths in a system property value are separated by the path
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5445
     * separator character of the platform.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5446
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5447
     * Note that even if the security manager does not permit the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5448
     * <code>getProperties</code> operation, it may choose to permit the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5449
     * {@link #getProperty(String)} operation.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5450
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5451
     * @return     the system properties
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5452
     * @exception  SecurityException  if a security manager exists and its
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5453
     *             <code>checkPropertiesAccess</code> method doesn''t allow access
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5454
     *              to the system properties.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5455
     * @see        #setProperties
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5456
     * @see        java.lang.SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5457
     * @see        java.lang.SecurityManager#checkPropertiesAccess()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5458
     * @see        java.util.Properties
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5459
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5460
    public static Properties getProperties() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5461
        SecurityManager sm = getSecurityManager();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5462
        if (sm !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5463
            sm.checkPropertiesAccess();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5464
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5465
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5466
        return props;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5467
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5468
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5469
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5470
     * Sets the system properties to the <code>Properties</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5471
     * argument.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5472
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5473
     * First, if there is a security manager, its
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5474
     * <code>checkPropertiesAccess</code> method is called with no
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5475
     * arguments. This may result in a security exception.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5476
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5477
     * The argument becomes the current set of system properties for use
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5478
     * by the {@link #getProperty(String)} method. If the argument is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5479
     * <code>null</code>, then the current set of system properties is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5480
     * forgotten.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5481
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5482
     * @param      props   the new system properties.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5483
     * @exception  SecurityException  if a security manager exists and its
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5484
     *             <code>checkPropertiesAccess</code> method doesn''t allow access
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5485
     *              to the system properties.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5486
     * @see        #getProperties
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5487
     * @see        java.util.Properties
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5488
     * @see        java.lang.SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5489
     * @see        java.lang.SecurityManager#checkPropertiesAccess()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5490
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5491
    public static void setProperties(Properties props) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5492
        SecurityManager sm = getSecurityManager();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5493
        if (sm !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5494
            sm.checkPropertiesAccess();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5495
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5496
        if (props == null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5497
            props = new Properties();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5498
            initProperties(props);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5499
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5500
        System.props = props;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5501
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5502
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5503
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5504
     * Gets the system property indicated by the specified key.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5505
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5506
     * First, if there is a security manager, its
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5507
     * <code>checkPropertyAccess</code> method is called with the key as
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5508
     * its argument. This may result in a SecurityException.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5509
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5510
     * If there is no current set of system properties, a set of system
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5511
     * properties is first created and initialized in the same manner as
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5512
     * for the <code>getProperties</code> method.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5513
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5514
     * @param      key   the name of the system property.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5515
     * @return     the string value of the system property,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5516
     *             or <code>null</code> if there is no property with that key.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5517
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5518
     * @exception  SecurityException  if a security manager exists and its
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5519
     *             <code>checkPropertyAccess</code> method doesn''t allow
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5520
     *              access to the specified system property.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5521
     * @exception  NullPointerException if <code>key</code> is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5522
     *             <code>null</code>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5523
     * @exception  IllegalArgumentException if <code>key</code> is empty.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5524
     * @see        #setProperty
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5525
     * @see        java.lang.SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5526
     * @see        java.lang.SecurityManager#checkPropertyAccess(java.lang.String)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5527
     * @see        java.lang.System#getProperties()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5528
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5529
    public static String getProperty(String key) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5530
        checkKey(key);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5531
        SecurityManager sm = getSecurityManager();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5532
        if (sm !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5533
            sm.checkPropertyAccess(key);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5534
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5535
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5536
        return props.getProperty(key);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5537
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5538
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5539
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5540
     * Gets the system property indicated by the specified key.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5541
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5542
     * First, if there is a security manager, its
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5543
     * <code>checkPropertyAccess</code> method is called with the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5544
     * <code>key</code> as its argument.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5545
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5546
     * If there is no current set of system properties, a set of system
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5547
     * properties is first created and initialized in the same manner as
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5548
     * for the <code>getProperties</code> method.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5549
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5550
     * @param      key   the name of the system property.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5551
     * @param      def   a default value.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5552
     * @return     the string value of the system property,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5553
     *             or the default value if there is no property with that key.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5554
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5555
     * @exception  SecurityException  if a security manager exists and its
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5556
     *             <code>checkPropertyAccess</code> method doesn''t allow
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5557
     *             access to the specified system property.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5558
     * @exception  NullPointerException if <code>key</code> is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5559
     *             <code>null</code>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5560
     * @exception  IllegalArgumentException if <code>key</code> is empty.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5561
     * @see        #setProperty
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5562
     * @see        java.lang.SecurityManager#checkPropertyAccess(java.lang.String)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5563
     * @see        java.lang.System#getProperties()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5564
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5565
    public static String getProperty(String key, String def) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5566
        checkKey(key);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5567
        SecurityManager sm = getSecurityManager();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5568
        if (sm !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5569
            sm.checkPropertyAccess(key);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5570
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5571
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5572
        return props.getProperty(key, def);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5573
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5574
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5575
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5576
     * Sets the system property indicated by the specified key.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5577
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5578
     * First, if a security manager exists, its
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5579
     * <code>SecurityManager.checkPermission</code> method
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5580
     * is called with a <code>PropertyPermission(key, "write")</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5581
     * permission. This may result in a SecurityException being thrown.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5582
     * If no exception is thrown, the specified property is set to the given
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5583
     * value.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5584
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5585
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5586
     * @param      key   the name of the system property.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5587
     * @param      value the value of the system property.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5588
     * @return     the previous value of the system property,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5589
     *             or <code>null</code> if it did not have one.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5590
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5591
     * @exception  SecurityException  if a security manager exists and its
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5592
     *             <code>checkPermission</code> method doesn''t allow
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5593
     *             setting of the specified property.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5594
     * @exception  NullPointerException if <code>key</code> or 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5595
     *             <code>value</code> is <code>null</code>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5596
     * @exception  IllegalArgumentException if <code>key</code> is empty.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5597
     * @see        #getProperty
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5598
     * @see        java.lang.System#getProperty(java.lang.String)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5599
     * @see        java.lang.System#getProperty(java.lang.String, java.lang.String)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5600
     * @see        java.util.PropertyPermission
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5601
     * @see        SecurityManager#checkPermission
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5602
     * @since      1.2
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5603
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5604
    public static String setProperty(String key, String value) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5605
        checkKey(key);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5606
        SecurityManager sm = getSecurityManager();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5607
        if (sm !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5608
            sm.checkPermission(new PropertyPermission(key,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5609
                SecurityConstants.PROPERTY_WRITE_ACTION));
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5610
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5611
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5612
        return (String) props.setProperty(key, value);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5613
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5614
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5615
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5616
     * Removes the system property indicated by the specified key. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5617
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5618
     * First, if a security manager exists, its 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5619
     * <code>SecurityManager.checkPermission</code> method
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5620
     * is called with a <code>PropertyPermission(key, "write")</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5621
     * permission. This may result in a SecurityException being thrown.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5622
     * If no exception is thrown, the specified property is removed.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5623
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5624
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5625
     * @param      key   the name of the system property to be removed. 
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5626
     * @return     the previous string value of the system property,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5627
     *             or <code>null</code> if there was no property with that key.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5628
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5629
     * @exception  SecurityException  if a security manager exists and its  
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5630
     *             <code>checkPropertyAccess</code> method doesn''t allow
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5631
     *              access to the specified system property.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5632
     * @exception  NullPointerException if <code>key</code> is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5633
     *             <code>null</code>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5634
     * @exception  IllegalArgumentException if <code>key</code> is empty.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5635
     * @see        #getProperty
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5636
     * @see        #setProperty
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5637
     * @see        java.util.Properties
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5638
     * @see        java.lang.SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5639
     * @see        java.lang.SecurityManager#checkPropertiesAccess()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5640
     * @since 1.5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5641
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5642
    public static String clearProperty(String key) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5643
        checkKey(key);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5644
        SecurityManager sm = getSecurityManager();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5645
        if (sm !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5646
            sm.checkPermission(new PropertyPermission(key, "write"));
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5647
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5648
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5649
        return (String) props.remove(key);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5650
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5651
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5652
    private static void checkKey(String key) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5653
        if (key == null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5654
            throw new NullPointerException("key can''t be null");
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5655
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5656
        if (key.equals("")) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5657
            throw new IllegalArgumentException("key can''t be empty");
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5658
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5659
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5660
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5661
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5662
     * Gets the value of the specified environment variable. An
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5663
     * environment variable is a system-dependent external named
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5664
     * value.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5665
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5666
     * <p>If a security manager exists, its
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5667
     * {@link SecurityManager#checkPermission checkPermission}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5668
     * method is called with a
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5669
     * <code>{@link RuntimePermission}("getenv."+name)</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5670
     * permission.  This may result in a {@link SecurityException}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5671
     * being thrown.  If no exception is thrown the value of the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5672
     * variable <code>name</code> is returned.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5673
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5674
     * <p><a name="EnvironmentVSSystemProperties"><i>System
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5675
     * properties</i> and <i>environment variables</i></a> are both
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5676
     * conceptually mappings between names and values.  Both
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5677
     * mechanisms can be used to pass user-defined information to a
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5678
     * Java process.  Environment variables have a more global effect,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5679
     * because they are visible to all descendants of the process
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5680
     * which defines them, not just the immediate Java subprocess.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5681
     * They can have subtly different semantics, such as case
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5682
     * insensitivity, on different operating systems.  For these
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5683
     * reasons, environment variables are more likely to have
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5684
     * unintended side effects.  It is best to use system properties
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5685
     * where possible.  Environment variables should be used when a
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5686
     * global effect is desired, or when an external system interface
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5687
     * requires an environment variable (such as <code>PATH</code>).
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5688
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5689
     * <p>On UNIX systems the alphabetic case of <code>name</code> is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5690
     * typically significant, while on Microsoft Windows systems it is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5691
     * typically not.  For example, the expression
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5692
     * <code>System.getenv("FOO").equals(System.getenv("foo"))</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5693
     * is likely to be true on Microsoft Windows.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5694
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5695
     * @param  name the name of the environment variable
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5696
     * @return the string value of the variable, or <code>null</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5697
     *         if the variable is not defined in the system environment
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5698
     * @throws NullPointerException if <code>name</code> is <code>null</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5699
     * @throws SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5700
     *         if a security manager exists and its
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5701
     *         {@link SecurityManager#checkPermission checkPermission}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5702
     *         method doesn''t allow access to the environment variable
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5703
     *         <code>name</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5704
     * @see    #getenv()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5705
     * @see    ProcessBuilder#environment()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5706
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5707
    public static String getenv(String name) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5708
        SecurityManager sm = getSecurityManager();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5709
        if (sm !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5710
            sm.checkPermission(new RuntimePermission("getenv."+name));
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5711
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5712
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5713
        return ProcessEnvironment.getenv(name);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5714
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5715
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5716
    
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5717
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5718
     * Returns an unmodifiable string map view of the current system environment.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5719
     * The environment is a system-dependent mapping from names to
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5720
     * values which is passed from parent to child processes.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5721
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5722
     * <p>If the system does not support environment variables, an
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5723
     * empty map is returned.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5724
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5725
     * <p>The returned map will never contain null keys or values.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5726
     * Attempting to query the presence of a null key or value will
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5727
     * throw a {@link NullPointerException}.  Attempting to query
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5728
     * the presence of a key or value which is not of type
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5729
     * {@link String} will throw a {@link ClassCastException}.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5730
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5731
     * <p>The returned map and its collection views may not obey the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5732
     * general contract of the {@link Object#equals} and
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5733
     * {@link Object#hashCode} methods.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5734
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5735
     * <p>The returned map is typically case-sensitive on all platforms.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5736
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5737
     * <p>If a security manager exists, its
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5738
     * {@link SecurityManager#checkPermission checkPermission}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5739
     * method is called with a
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5740
     * <code>{@link RuntimePermission}("getenv.*")</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5741
     * permission.  This may result in a {@link SecurityException} being
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5742
     * thrown.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5743
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5744
     * <p>When passing information to a Java subprocess,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5745
     * <a href=#EnvironmentVSSystemProperties>system properties</a>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5746
     * are generally preferred over environment variables.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5747
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5748
     * @return the environment as a map of variable names to values
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5749
     * @throws SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5750
     *         if a security manager exists and its
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5751
     *         {@link SecurityManager#checkPermission checkPermission}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5752
     *         method doesn''t allow access to the process environment
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5753
     * @see    #getenv(String)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5754
     * @see    ProcessBuilder#environment()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5755
     * @since  1.5
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5756
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5757
    public static java.util.Map<String,String> getenv() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5758
        SecurityManager sm = getSecurityManager();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5759
        if (sm !!= null) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5760
            sm.checkPermission(new RuntimePermission("getenv.*"));
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5761
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5762
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5763
        return ProcessEnvironment.getenv();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5764
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5765
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5766
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5767
     * Terminates the currently running Java Virtual Machine. The
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5768
     * argument serves as a status code; by convention, a nonzero status
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5769
     * code indicates abnormal termination.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5770
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5771
     * This method calls the <code>exit</code> method in class
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5772
     * <code>Runtime</code>. This method never returns normally.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5773
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5774
     * The call <code>System.exit(n)</code> is effectively equivalent to
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5775
     * the call:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5776
     * <blockquote><pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5777
     * Runtime.getRuntime().exit(n)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5778
     * </pre></blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5779
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5780
     * @param      status   exit status.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5781
     * @throws  SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5782
     *        if a security manager exists and its <code>checkExit</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5783
     *        method doesn''t allow exit with the specified status.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5784
     * @see        java.lang.Runtime#exit(int)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5785
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5786
    public static void exit(int status) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5787
        Runtime.getRuntime().exit(status);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5788
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5789
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5790
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5791
     * Runs the garbage collector.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5792
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5793
     * Calling the <code>gc</code> method suggests that the Java Virtual
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5794
     * Machine expend effort toward recycling unused objects in order to
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5795
     * make the memory they currently occupy available for quick reuse.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5796
     * When control returns from the method call, the Java Virtual
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5797
     * Machine has made a best effort to reclaim space from all discarded
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5798
     * objects.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5799
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5800
     * The call <code>System.gc()</code> is effectively equivalent to the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5801
     * call:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5802
     * <blockquote><pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5803
     * Runtime.getRuntime().gc()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5804
     * </pre></blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5805
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5806
     * @see     java.lang.Runtime#gc()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5807
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5808
    public static void gc() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5809
        Runtime.getRuntime().gc();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5810
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5811
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5812
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5813
     * Runs the finalization methods of any objects pending finalization.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5814
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5815
     * Calling this method suggests that the Java Virtual Machine expend
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5816
     * effort toward running the <code>finalize</code> methods of objects
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5817
     * that have been found to be discarded but whose <code>finalize</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5818
     * methods have not yet been run. When control returns from the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5819
     * method call, the Java Virtual Machine has made a best effort to
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5820
     * complete all outstanding finalizations.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5821
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5822
     * The call <code>System.runFinalization()</code> is effectively
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5823
     * equivalent to the call:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5824
     * <blockquote><pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5825
     * Runtime.getRuntime().runFinalization()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5826
     * </pre></blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5827
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5828
     * @see     java.lang.Runtime#runFinalization()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5829
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5830
    public static void runFinalization() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5831
        Runtime.getRuntime().runFinalization();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5832
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5833
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5834
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5835
     * Enable or disable finalization on exit; doing so specifies that the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5836
     * finalizers of all objects that have finalizers that have not yet been
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5837
     * automatically invoked are to be run before the Java runtime exits.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5838
     * By default, finalization on exit is disabled.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5839
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5840
     * <p>If there is a security manager,
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5841
     * its <code>checkExit</code> method is first called
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5842
     * with 0 as its argument to ensure the exit is allowed.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5843
     * This could result in a SecurityException.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5844
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5845
     * @deprecated  This method is inherently unsafe.  It may result in
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5846
     *      finalizers being called on live objects while other threads are
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5847
     *      concurrently manipulating those objects, resulting in erratic
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5848
     *      behavior or deadlock.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5849
     * @param value indicating enabling or disabling of finalization
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5850
     * @throws  SecurityException
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5851
     *        if a security manager exists and its <code>checkExit</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5852
     *        method doesn''t allow the exit.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5853
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5854
     * @see     java.lang.Runtime#exit(int)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5855
     * @see     java.lang.Runtime#gc()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5856
     * @see     java.lang.SecurityManager#checkExit(int)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5857
     * @since   JDK1.1
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5858
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5859
    @Deprecated
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5860
    public static void runFinalizersOnExit(boolean value) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5861
        Runtime.getRuntime().runFinalizersOnExit(value);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5862
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5863
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5864
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5865
     * Loads a code file with the specified filename from the local file
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5866
     * system as a dynamic library. The filename
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5867
     * argument must be a complete path name.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5868
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5869
     * The call <code>System.load(name)</code> is effectively equivalent
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5870
     * to the call:
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5871
     * <blockquote><pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5872
     * Runtime.getRuntime().load(name)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5873
     * </pre></blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5874
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5875
     * @param      filename   the file to load.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5876
     * @exception  SecurityException  if a security manager exists and its
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5877
     *             <code>checkLink</code> method doesn''t allow
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5878
     *             loading of the specified dynamic library
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5879
     * @exception  UnsatisfiedLinkError  if the file does not exist.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5880
     * @exception  NullPointerException if <code>filename</code> is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5881
     *             <code>null</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5882
     * @see        java.lang.Runtime#load(java.lang.String)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5883
     * @see        java.lang.SecurityManager#checkLink(java.lang.String)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5884
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5885
    public static void load(String filename) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5886
        Runtime.getRuntime().load0(getCallerClass(), filename);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5887
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5888
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5889
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5890
     * Loads the system library specified by the <code>libname</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5891
     * argument. The manner in which a library name is mapped to the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5892
     * actual system library is system dependent.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5893
     * <p>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5894
     * The call <code>System.loadLibrary(name)</code> is effectively
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5895
     * equivalent to the call
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5896
     * <blockquote><pre>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5897
     * Runtime.getRuntime().loadLibrary(name)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5898
     * </pre></blockquote>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5899
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5900
     * @param      libname   the name of the library.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5901
     * @exception  SecurityException  if a security manager exists and its
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5902
     *             <code>checkLink</code> method doesn''t allow
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5903
     *             loading of the specified dynamic library
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5904
     * @exception  UnsatisfiedLinkError  if the library does not exist.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5905
     * @exception  NullPointerException if <code>libname</code> is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5906
     *             <code>null</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5907
     * @see        java.lang.Runtime#loadLibrary(java.lang.String)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5908
     * @see        java.lang.SecurityManager#checkLink(java.lang.String)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5909
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5910
    public static void loadLibrary(String libname) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5911
        Runtime.getRuntime().loadLibrary0(getCallerClass(), libname);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5912
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5913
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5914
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5915
     * Maps a library name into a platform-specific string representing
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5916
     * a native library.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5917
     *
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5918
     * @param      libname the name of the library.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5919
     * @return     a platform-dependent native library name.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5920
     * @exception  NullPointerException if <code>libname</code> is
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5921
     *             <code>null</code>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5922
     * @see        java.lang.System#loadLibrary(java.lang.String)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5923
     * @see        java.lang.ClassLoader#findLibrary(java.lang.String)
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5924
     * @since      1.2
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5925
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5926
    public static native String mapLibraryName(String libname);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5927
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5928
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5929
     * The following two methods exist because in, out, and err must be
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5930
     * initialized to null.  The compiler, however, cannot be permitted to
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5931
     * inline access to them, since they are later set to more sensible values
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5932
     * by initializeSystemClass().
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5933
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5934
    private static InputStream nullInputStream() throws NullPointerException {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5935
        if (currentTimeMillis() > 0) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5936
            return null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5937
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5938
        throw new NullPointerException();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5939
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5940
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5941
    private static PrintStream nullPrintStream() throws NullPointerException {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5942
        if (currentTimeMillis() > 0) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5943
            return null;
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5944
        }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5945
        throw new NullPointerException();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5946
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5947
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5948
    /**
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5949
     * Initialize the system class.  Called after thread initialization.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5950
     */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5951
    private static void initializeSystemClass() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5952
        props = new Properties();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5953
        initProperties(props);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5954
        sun.misc.Version.init();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5955
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5956
        // Workaround until DownloadManager initialization is revisited.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5957
        // Make JavaLangAccess available early enough for internal
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5958
        // Shutdown hooks to be registered
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5959
        setJavaLangAccess();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5960
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5961
        // Gets and removes system properties that configure the Integer
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5962
        // cache used to support the object identity semantics of autoboxing.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5963
        // At this time, the size of the cache may be controlled by the
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5964
        // vm option -XX:AutoBoxCacheMax=<size>.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5965
        Integer.getAndRemoveCacheProperties();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5966
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5967
        // Load the zip library now in order to keep java.util.zip.ZipFile
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5968
        // from trying to use itself to load this library later.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5969
        loadLibrary("zip");
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5970
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5971
        FileInputStream fdIn = new FileInputStream(FileDescriptor.in);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5972
        FileOutputStream fdOut = new FileOutputStream(FileDescriptor.out);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5973
        FileOutputStream fdErr = new FileOutputStream(FileDescriptor.err);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5974
        setIn0(new BufferedInputStream(fdIn));
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5975
        setOut0(new PrintStream(new BufferedOutputStream(fdOut, 128), true));
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5976
        setErr0(new PrintStream(new BufferedOutputStream(fdErr, 128), true));
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5977
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5978
        // Setup Java signal handlers for HUP, TERM, and INT (where available).
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5979
        Terminator.setup();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5980
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5981
        // Initialize any miscellenous operating system settings that need to be
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5982
        // set for the class libraries. Currently this is no-op everywhere except
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5983
        // for Windows where the process-wide error mode is set before the java.io
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5984
        // classes are used.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5985
        sun.misc.VM.initializeOSEnvironment();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5986
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5987
        // Set the maximum amount of direct memory.  This value is controlled
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5988
        // by the vm option -XX:MaxDirectMemorySize=<size>.  This method acts
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5989
        // as an initializer only if it is called before sun.misc.VM.booted().
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5990
        sun.misc.VM.maxDirectMemory();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5991
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5992
        // Set a boolean to determine whether ClassLoader.loadClass accepts
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5993
        // array syntax.  This value is controlled by the system property
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5994
        // "sun.lang.ClassLoader.allowArraySyntax".  This method acts as
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5995
        // an initializer only if it is called before sun.misc.VM.booted().
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5996
        sun.misc.VM.allowArraySyntax();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5997
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5998
        // Subsystems that are invoked during initialization can invoke
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  5999
        // sun.misc.VM.isBooted() in order to avoid doing things that should
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6000
        // wait until the application class loader has been set up.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6001
        sun.misc.VM.booted();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6002
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6003
        // The main thread is not added to its thread group in the same
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6004
        // way as other threads; we must do it ourselves here.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6005
        Thread current = Thread.currentThread();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6006
        current.getThreadGroup().add(current);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6007
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6008
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6009
    private static void setJavaLangAccess() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6010
        // Allow privileged classes outside of java.lang
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6011
        sun.misc.SharedSecrets.setJavaLangAccess(new sun.misc.JavaLangAccess(){
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6012
            public sun.reflect.ConstantPool getConstantPool(Class klass) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6013
                return klass.getConstantPool();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6014
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6015
            public void setAnnotationType(Class klass, AnnotationType type) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6016
                klass.setAnnotationType(type);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6017
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6018
            public AnnotationType getAnnotationType(Class klass) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6019
                return klass.getAnnotationType();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6020
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6021
            public <E extends Enum<E>>
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6022
                    E[] getEnumConstantsShared(Class<E> klass) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6023
                return klass.getEnumConstantsShared();
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6024
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6025
            public void blockedOn(Thread t, Interruptible b) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6026
                t.blockedOn(b);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6027
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6028
            public void registerShutdownHook(int slot, Runnable r) {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6029
                Shutdown.add(slot, r);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6030
            }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6031
        });
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6032
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6033
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6034
    /* returns the class of the caller. */
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6035
    static Class getCallerClass() {
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6036
        // NOTE use of more generic Reflection.getCallerClass()
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6037
        return Reflection.getCallerClass(3);
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6038
    }
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6039
}
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6040
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6041
        '
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6042
].
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6043
    Transcript showCR: 'java.lang.System parsed in ', time asString, ' miliseconds'.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6044
    ^ res.
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6045
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6046
    "Modified: / 30-12-2010 / 11:40:03 / Jan Kurs <kurs.jan@post.cz>"
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6047
! !
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6048
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6049
!JavaParserTests class methodsFor:'documentation'!
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6050
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6051
version_SVN
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6052
    ^ '$Id$'
1740f7ba7015 Some refactoring in Java parser and highlighter - full Java parser based on PetitParser checked in
vranyj1
parents:
diff changeset
  6053
! !