summaryrefslogtreecommitdiffstats
path: root/tests/044-proxy/src/WrappedThrow.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/044-proxy/src/WrappedThrow.java')
-rw-r--r--tests/044-proxy/src/WrappedThrow.java244
1 files changed, 0 insertions, 244 deletions
diff --git a/tests/044-proxy/src/WrappedThrow.java b/tests/044-proxy/src/WrappedThrow.java
deleted file mode 100644
index 27ae84e24..000000000
--- a/tests/044-proxy/src/WrappedThrow.java
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.io.IOException;
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
-import java.lang.reflect.UndeclaredThrowableException;
-
-/*
- * Create a Proxy class that blah.
- */
-public class WrappedThrow {
- public static void main(String[] args) {
- WTMix mix = new WTMix();
- InvocationHandler handler = new WTInvocationHandler(mix);
- Object proxy;
-
- try {
- proxy = Proxy.newProxyInstance(WrappedThrow.class.getClassLoader(),
- new Class[] { InterfaceW1.class, InterfaceW2.class },
- handler);
- } catch (IllegalArgumentException iae) {
- System.out.println("WT init failed");
- return;
- }
-
- InterfaceW1 if1 = (InterfaceW1) proxy;
- InterfaceW2 if2 = (InterfaceW2) proxy;
- try {
- if1.throwFunky();
- System.err.println("No exception thrown");
- } catch (UndeclaredThrowableException ute) {
- System.out.println("Got expected UTE");
- } catch (Throwable t) {
- System.err.println("Got unexpected exception: " + t);
- }
-
- try {
- if1.throwFunky2();
- System.err.println("No exception thrown");
- } catch (IOException ioe) {
- System.out.println("Got expected IOE");
- } catch (Throwable t) {
- System.err.println("Got unexpected exception: " + t);
- }
-
- try {
- if2.throwFunky2();
- System.err.println("No exception thrown");
- } catch (IOException ioe) {
- System.out.println("Got expected IOE");
- } catch (Throwable t) {
- System.err.println("Got unexpected exception: " + t);
- }
-
- /*
- * Throw exceptions, walking down the hierarchy.
- */
- try {
- if1.throwException();
- System.err.println("No exception thrown");
- } catch (UndeclaredThrowableException ute) {
- System.out.println("Got expected UTE");
- } catch (Throwable t) {
- System.err.println("Got unexpected exception: " + t);
- }
-
- try {
- if1.throwBase();
- System.err.println("No exception thrown");
- } catch (UndeclaredThrowableException ute) {
- System.out.println("Got expected UTE");
- } catch (Throwable t) {
- System.err.println("Got unexpected exception: " + t);
- }
-
- try {
- if2.throwSub();
- System.err.println("No exception thrown");
- } catch (SubException se) {
- System.out.println("Got expected exception");
- } catch (Throwable t) {
- System.err.println("Got unexpected exception: " + t);
- }
-
- try {
- if2.throwSubSub();
- System.err.println("No exception thrown");
- } catch (SubException se) {
- System.out.println("Got expected exception");
- } catch (Throwable t) {
- System.err.println("Got unexpected exception: " + t);
- }
-
- /*
- * Make sure that, if the class explicitly allows the base
- * class of an exception, that we still allow it.
- */
- try {
- if1.bothThrowBase();
- System.err.println("No exception thrown");
- } catch (BaseException se) {
- System.out.println("Got expected exception");
- } catch (Throwable t) {
- System.err.println("Got unexpected exception: " + t);
- }
- }
-}
-
-class BaseException extends Exception {}
-class SubException extends BaseException {}
-class SubSubException extends SubException {}
-
-interface InterfaceW1 {
- public void throwFunky();
-
- public void throwFunky2() throws BaseException,
- NoSuchMethodException, IOException;
-
- public void throwException() throws BaseException;
- public void throwBase() throws BaseException;
- public void throwSub() throws BaseException;
- public void throwSubSub() throws BaseException;
-
- public void bothThrowBase() throws BaseException, SubException, SubSubException;
-}
-
-interface InterfaceW2 {
- public void throwFunky2() throws InterruptedException,
- NoSuchMethodException, IOException;
-
- public void throwException() throws SubException;
- public void throwBase() throws SubException;
- public void throwSub() throws SubException;
- public void throwSubSub() throws SubException;
-
- public void bothThrowBase() throws SubException, BaseException, SubSubException;
-}
-
-/**
- * Implement all of the proxied interfaces.
- */
-class WTMix implements InterfaceW1, InterfaceW2 {
- public int dastardlyDeed() throws SubException {
- System.out.println("Throwing SubException");
- throw new SubException();
- }
-
- /* these don't actually get called; they just cause exceptions */
- public void throwFunky() {}
- public void throwFunky2() {}
- public void throwException() throws SubException {}
- public void throwBase() throws SubException {}
- public void throwSub() throws SubException {}
- public void throwSubSub() throws SubException {}
-
- public void bothThrowBase() throws BaseException, SubException {}
-}
-
-/**
- * Invocation handler for our proxy class.
- */
-class WTInvocationHandler implements InvocationHandler {
- private Object mObj;
-
- public WTInvocationHandler(Object obj) {
- mObj = obj;
- }
-
- /*
- * This is called when anything gets invoked in the proxy object.
- */
- public Object invoke(Object proxy, Method method, Object[] args)
- throws Throwable {
-
- Object result = null;
-
- // Trap Object calls. This is important here to avoid a recursive
- // invocation of toString() in the print statements below.
- if (method.getDeclaringClass() == java.lang.Object.class) {
- //System.out.println("!!! object " + method.getName());
- if (method.getName().equals("toString"))
- return super.toString();
- else if (method.getName().equals("hashCode"))
- return Integer.valueOf(super.hashCode());
- else if (method.getName().equals("equals"))
- return Boolean.valueOf(super.equals(args[0]));
- else
- throw new RuntimeException("huh?");
- }
-
- System.out.println("Invoke " + method);
- if (args == null || args.length == 0) {
- System.out.println(" (no args)");
- } else {
- for (int i = 0; i < args.length; i++)
- System.out.println(" " + i + ": " + args[i]);
- }
-
- try {
- if (method.getName().equals("throwFunky"))
- throw new InterruptedException("fake");
- if (method.getName().equals("throwFunky2"))
- throw new IOException("fake2");
- if (method.getName().equals("throwException"))
- throw new Exception();
- if (method.getName().equals("throwBase"))
- throw new BaseException();
- if (method.getName().equals("throwSub"))
- throw new SubException();
- if (method.getName().equals("throwSubSub"))
- throw new SubSubException();
- if (method.getName().equals("bothThrowBase"))
- throw new BaseException();
-
- if (true)
- result = method.invoke(mObj, args);
- else
- result = -1;
- System.out.println("Success: method " + method.getName()
- + " res=" + result);
- } catch (InvocationTargetException ite) {
- throw ite.getTargetException();
- } catch (IllegalAccessException iae) {
- throw new RuntimeException(iae);
- }
- return result;
- }
-}