01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: */
17:
18: package java.lang.reflect;
19:
20: import junit.framework.TestCase;
21: import java.lang.reflect.InvocationTargetException;
22:
23: public class LocalClassAccessCheckTest extends TestCase {
24:
25: private class PrivateInnerClass {
26: public void publicMethod() {
27: }
28: }
29:
30: public class InnerClass {
31: public void invokeLocalClassMethod()
32: throws NoSuchMethodException, IllegalAccessException,
33: InvocationTargetException {
34: class LocalClass {
35: public void localMethod() {
36: }
37: }
38: ;
39: LocalClass localClass = new LocalClass();
40: localClass.localMethod();
41: localClass.getClass().getMethod("localMethod",
42: (Class[]) null).invoke(localClass, (Object[]) null);
43: }
44:
45: public void invokePrivateInnerClassPublicMethod() {
46: class LocalClass {
47: public void localMethod() throws NoSuchMethodException,
48: IllegalAccessException,
49: InvocationTargetException {
50: PrivateInnerClass pic = new PrivateInnerClass();
51: pic.publicMethod();
52: pic.getClass().getMethod("publicMethod",
53: (Class[]) null)
54: .invoke(pic, (Object[]) null);
55: ;
56: }
57: }
58: ;
59: LocalClass localClass = new LocalClass();
60: try {
61: localClass.localMethod();
62: localClass.getClass().getMethod("localMethod",
63: (Class[]) null).invoke(localClass,
64: (Object[]) null);
65: } catch (Exception e) {
66: fail(e + " has been thrown");
67: }
68: }
69: }
70:
71: public void testAccessLocalClassMethod() {
72: InnerClass ic = new InnerClass();
73: try {
74: ic.invokeLocalClassMethod();
75: } catch (Exception e) {
76: fail(e + " has been thrown");
77: }
78: }
79:
80: public void testAccessInnerClassFromLocalClass() {
81: InnerClass ic = new InnerClass();
82: try {
83: ic.invokePrivateInnerClassPublicMethod();
84: } catch (Exception e) {
85: fail(e + " has been thrown");
86: }
87: }
88: }
|