Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
None
-
None
-
None
-
all
-
Patch Available
-
Novice
Description
Testcase org.apache.harmony.luni.tests.java.net.DatagramSocketImplTest fails to compile on Sun or IBM java, with the error messages:
[javac] 1. ERROR in ../modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/net/DatagramSocketImplTest.java
[javac] (at line 75)
[javac] public Object getOption(int optID) throws SocketException {
[javac] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[javac] The method getOption(int) of type MockDatagramSocketImpl must override a superclass method
[javac] ----------
[javac] 2. ERROR in ../modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/net/DatagramSocketImplTest.java
[javac] (at line 133)
[javac] public void setOption(int optID, Object val) throws SocketException {
[javac] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[javac] The method setOption(int, Object) of type MockDatagramSocketImpl must override a superclass method
[javac] ----------
[javac] 2 problems (2 errors)
The problem is that in the Harmony implementation the getOption and setOption method signatures are copied from the SocketOptions interface into the implementing DatagramSocketImpl class, which is abstract. MockDatagramSocketImpl in the testcase extends this abstract class and annotates the methods with "@Override". However, the method signatures must not be copied in the reference implementations, as the "@Override" annotation throws an error saying that the methods aren't being overridden.
Removing the override annotations fixes the problem, but I think the method signatures should be removed from java.net.DatagramSocketImpl