You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by py...@apache.org on 2006/08/02 06:55:06 UTC
svn commit: r427892 - in
/incubator/harmony/enhanced/classlib/trunk/modules/nio/src:
main/java/org/apache/harmony/nio/internal/DatagramChannelImpl.java
test/java/common/org/apache/harmony/tests/java/nio/channels/DatagramChannelTest.java
Author: pyang
Date: Tue Aug 1 21:55:06 2006
New Revision: 427892
URL: http://svn.apache.org/viewvc?rev=427892&view=rev
Log:
Fix for HARMONY-1036 ([classlib][nio] DatagramChannel.socket().receive/send should throw IllegalBlockingModeException when it is in non-blocking mode)
Modified:
incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/internal/DatagramChannelImpl.java
incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/common/org/apache/harmony/tests/java/nio/channels/DatagramChannelTest.java
Modified: incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/internal/DatagramChannelImpl.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/internal/DatagramChannelImpl.java?rev=427892&r1=427891&r2=427892&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/internal/DatagramChannelImpl.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/internal/DatagramChannelImpl.java Tue Aug 1 21:55:06 2006
@@ -29,6 +29,7 @@
import java.nio.channels.AlreadyConnectedException;
import java.nio.channels.ClosedChannelException;
import java.nio.channels.DatagramChannel;
+import java.nio.channels.IllegalBlockingModeException;
import java.nio.channels.NotYetConnectedException;
import java.nio.channels.spi.SelectorProvider;
@@ -690,6 +691,26 @@
channelImpl.isBound = true;
}
+ /*
+ * @see java.net.DatagramSocket#receive(java.net.DatagramPacket)
+ */
+ public void receive(DatagramPacket packet) throws IOException {
+ if (!channelImpl.isBlocking()) {
+ throw new IllegalBlockingModeException();
+ }
+ super.receive(packet);
+ }
+
+ /*
+ * @see java.net.DatagramSocket#send(java.net.DatagramPacket)
+ */
+ public void send(DatagramPacket packet) throws IOException {
+ if (!channelImpl.isBlocking()) {
+ throw new IllegalBlockingModeException();
+ }
+ super.send(packet);
+ }
+
/*
* @see java.net.DatagramSocket#close()
*/
Modified: incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/common/org/apache/harmony/tests/java/nio/channels/DatagramChannelTest.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/common/org/apache/harmony/tests/java/nio/channels/DatagramChannelTest.java?rev=427892&r1=427891&r2=427892&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/common/org/apache/harmony/tests/java/nio/channels/DatagramChannelTest.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/common/org/apache/harmony/tests/java/nio/channels/DatagramChannelTest.java Tue Aug 1 21:55:06 2006
@@ -25,6 +25,7 @@
import java.nio.channels.AsynchronousCloseException;
import java.nio.channels.ClosedChannelException;
import java.nio.channels.DatagramChannel;
+import java.nio.channels.IllegalBlockingModeException;
import java.nio.channels.NotYetConnectedException;
import java.nio.channels.UnresolvedAddressException;
import java.nio.channels.UnsupportedAddressTypeException;
@@ -2551,6 +2552,28 @@
fail("Should throw NullPointerException");
} catch (NullPointerException e) {
//pass
+ }
+ }
+
+ /**
+ * @tests DatagramChannel#socket()
+ */
+ public void test_socket_IllegalBlockingModeException() throws Exception {
+ // regression test for Harmony-1036
+ DatagramChannel channel = DatagramChannel.open();
+ channel.configureBlocking(false);
+ DatagramSocket socket = channel.socket();
+ try {
+ socket.send(null);
+ fail("should throw IllegalBlockingModeException");
+ } catch (IllegalBlockingModeException e) {
+ // expected
+ }
+ try {
+ socket.receive(null);
+ fail("should throw IllegalBlockingModeException");
+ } catch (IllegalBlockingModeException e) {
+ // expected
}
}