1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/rt/emul/compact/src/test/java/org/apidesign/bck2brwsr/tck/NotifyWaitTest.java Tue Sep 17 14:25:30 2013 +0200
1.3 @@ -0,0 +1,62 @@
1.4 +/**
1.5 + * Back 2 Browser Bytecode Translator
1.6 + * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
1.7 + *
1.8 + * This program is free software: you can redistribute it and/or modify
1.9 + * it under the terms of the GNU General Public License as published by
1.10 + * the Free Software Foundation, version 2 of the License.
1.11 + *
1.12 + * This program is distributed in the hope that it will be useful,
1.13 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
1.14 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1.15 + * GNU General Public License for more details.
1.16 + *
1.17 + * You should have received a copy of the GNU General Public License
1.18 + * along with this program. Look for COPYING file in the top folder.
1.19 + * If not, see http://opensource.org/licenses/GPL-2.0.
1.20 + */
1.21 +package org.apidesign.bck2brwsr.tck;
1.22 +
1.23 +import org.apidesign.bck2brwsr.vmtest.BrwsrTest;
1.24 +import org.apidesign.bck2brwsr.vmtest.Compare;
1.25 +import org.apidesign.bck2brwsr.vmtest.VMTest;
1.26 +import org.testng.annotations.Factory;
1.27 +
1.28 +/**
1.29 + *
1.30 + * @author Jaroslav Tulach <jtulach@netbeans.org>
1.31 + */
1.32 +public class NotifyWaitTest {
1.33 +
1.34 + @Compare public synchronized String canCallNotify() throws Exception {
1.35 + notify();
1.36 + return "OK";
1.37 + }
1.38 +
1.39 + @Compare public synchronized String canCallNotifyAll() throws Exception {
1.40 + notifyAll();
1.41 + return "OK";
1.42 + }
1.43 +
1.44 + @BrwsrTest public synchronized String throwsInterruptedException() {
1.45 + try {
1.46 + wait();
1.47 + throw new IllegalStateException();
1.48 + } catch (InterruptedException ex) {
1.49 + return "OK";
1.50 + }
1.51 + }
1.52 +
1.53 + @BrwsrTest public synchronized String waitMsThrowsInterruptedException() {
1.54 + try {
1.55 + wait(32);
1.56 + throw new IllegalStateException();
1.57 + } catch (InterruptedException ex) {
1.58 + return "OK";
1.59 + }
1.60 + }
1.61 +
1.62 + @Factory public static Object[] create() {
1.63 + return VMTest.create(NotifyWaitTest.class);
1.64 + }
1.65 +}
2.1 --- a/rt/emul/mini/src/main/java/java/lang/Object.java Tue Sep 17 14:02:59 2013 +0200
2.2 +++ b/rt/emul/mini/src/main/java/java/lang/Object.java Tue Sep 17 14:25:30 2013 +0200
2.3 @@ -328,7 +328,8 @@
2.4 * @see java.lang.Object#notifyAll()
2.5 * @see java.lang.Object#wait()
2.6 */
2.7 - public final native void notify();
2.8 + public final void notify() {
2.9 + }
2.10
2.11 /**
2.12 * Wakes up all threads that are waiting on this object's monitor. A
2.13 @@ -352,7 +353,8 @@
2.14 * @see java.lang.Object#notify()
2.15 * @see java.lang.Object#wait()
2.16 */
2.17 - public final native void notifyAll();
2.18 + public final void notifyAll() {
2.19 + }
2.20
2.21 /**
2.22 * Causes the current thread to wait until either another thread invokes the
2.23 @@ -439,7 +441,9 @@
2.24 * @see java.lang.Object#notify()
2.25 * @see java.lang.Object#notifyAll()
2.26 */
2.27 - public final native void wait(long timeout) throws InterruptedException;
2.28 + public final void wait(long timeout) throws InterruptedException {
2.29 + throw new InterruptedException();
2.30 + }
2.31
2.32 /**
2.33 * Causes the current thread to wait until another thread invokes the
2.34 @@ -504,20 +508,7 @@
2.35 * this exception is thrown.
2.36 */
2.37 public final void wait(long timeout, int nanos) throws InterruptedException {
2.38 - if (timeout < 0) {
2.39 - throw new IllegalArgumentException("timeout value is negative");
2.40 - }
2.41 -
2.42 - if (nanos < 0 || nanos > 999999) {
2.43 - throw new IllegalArgumentException(
2.44 - "nanosecond timeout value out of range");
2.45 - }
2.46 -
2.47 - if (nanos >= 500000 || (nanos != 0 && timeout == 0)) {
2.48 - timeout++;
2.49 - }
2.50 -
2.51 - wait(timeout);
2.52 + throw new InterruptedException();
2.53 }
2.54
2.55 /**
2.56 @@ -559,7 +550,7 @@
2.57 * @see java.lang.Object#notifyAll()
2.58 */
2.59 public final void wait() throws InterruptedException {
2.60 - wait(0);
2.61 + throw new InterruptedException();
2.62 }
2.63
2.64 /**