You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ap...@apache.org on 2006/11/22 13:14:04 UTC
svn commit: r478146 - in /harmony/enhanced/classlib/trunk/modules/rmi/src:
main/java/javax/rmi/ssl/ main/java/org/apache/harmony/rmi/internal/nls/
test/api/java/org/apache/harmony/rmi/tests/javax/
test/api/java/org/apache/harmony/rmi/tests/javax/rmi/ t...
Author: apetrenko
Date: Wed Nov 22 04:14:03 2006
New Revision: 478146
URL: http://svn.apache.org/viewvc?view=rev&rev=478146
Log:
Patch for HARMONY-2064 "[classlib][rmi] javax.rmi.ssl unit tests and improvements"
Added:
harmony/enhanced/classlib/trunk/modules/rmi/src/test/api/java/org/apache/harmony/rmi/tests/javax/
harmony/enhanced/classlib/trunk/modules/rmi/src/test/api/java/org/apache/harmony/rmi/tests/javax/rmi/
harmony/enhanced/classlib/trunk/modules/rmi/src/test/api/java/org/apache/harmony/rmi/tests/javax/rmi/ssl/
harmony/enhanced/classlib/trunk/modules/rmi/src/test/api/java/org/apache/harmony/rmi/tests/javax/rmi/ssl/SslRMIClientSocketFactoryTest.java
harmony/enhanced/classlib/trunk/modules/rmi/src/test/api/java/org/apache/harmony/rmi/tests/javax/rmi/ssl/SslRMIServerSocketFactoryTest.java
Modified:
harmony/enhanced/classlib/trunk/modules/rmi/src/main/java/javax/rmi/ssl/SslRMIClientSocketFactory.java
harmony/enhanced/classlib/trunk/modules/rmi/src/main/java/javax/rmi/ssl/SslRMIServerSocketFactory.java
harmony/enhanced/classlib/trunk/modules/rmi/src/main/java/org/apache/harmony/rmi/internal/nls/messages.properties
Modified: harmony/enhanced/classlib/trunk/modules/rmi/src/main/java/javax/rmi/ssl/SslRMIClientSocketFactory.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/rmi/src/main/java/javax/rmi/ssl/SslRMIClientSocketFactory.java?view=diff&rev=478146&r1=478145&r2=478146
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/rmi/src/main/java/javax/rmi/ssl/SslRMIClientSocketFactory.java (original)
+++ harmony/enhanced/classlib/trunk/modules/rmi/src/main/java/javax/rmi/ssl/SslRMIClientSocketFactory.java Wed Nov 22 04:14:03 2006
@@ -27,6 +27,8 @@
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
+import org.apache.harmony.rmi.internal.nls.Messages;
+
public class SslRMIClientSocketFactory implements RMIClientSocketFactory,
Serializable {
@@ -34,12 +36,6 @@
private static SSLSocketFactory factory;
- private static String enabledCipherSuites;
-
- private static String enabledProtocols;
-
- private static boolean isEnabledInitialized;
-
public SslRMIClientSocketFactory() {
if (factory == null) {
factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
@@ -49,25 +45,28 @@
public Socket createSocket(String host, int port) throws IOException {
SSLSocket soc = (SSLSocket) factory.createSocket(host, port);
- if (!isEnabledInitialized) {
- isEnabledInitialized = true;
- AccessController.doPrivileged(new java.security.PrivilegedAction() {
-
- public Object run() {
- enabledCipherSuites = System
- .getProperty("javax.rmi.ssl.client.enabledCipherSuites");
- enabledProtocols = System
- .getProperty("javax.rmi.ssl.client.enabledProtocols");
- return null;
+ String[] enabled =
+ AccessController.doPrivileged(new java.security.PrivilegedAction<String[]>() {
+ public String[] run() {
+ return new String[] {
+ System.getProperty("javax.rmi.ssl.client.enabledCipherSuites"), //$NON-NLS-1$
+ System.getProperty("javax.rmi.ssl.client.enabledProtocols")}; //$NON-NLS-1$
}
});
- }
- if (enabledCipherSuites != null) {
- soc.setEnabledCipherSuites(enabledCipherSuites.split(","));
- }
-
- if (enabledProtocols != null) {
- soc.setEnabledProtocols(enabledProtocols.split(","));
+ try {
+ if (enabled[0] != null) { //enabledCipherSuites
+ soc.setEnabledCipherSuites(enabled[0].split(",")); //$NON-NLS-1$
+ }
+
+ if (enabled[1]!= null) { //enabledProtocols
+ soc.setEnabledProtocols(enabled[1].split(",")); //$NON-NLS-1$
+ }
+ } catch (IllegalArgumentException e) {
+ // rmi.96=Error in socket creation
+ IOException ioe = new IOException(Messages.getString("rmi.96")); //$NON-NLS-1$
+ ioe.initCause(e);
+ soc.close();
+ throw ioe;
}
return soc;
@@ -78,7 +77,7 @@
}
public int hashCode() {
- return "javax.rmi.ssl.SslRMIClientSocketFactory".hashCode();
+ return "javax.rmi.ssl.SslRMIClientSocketFactory".hashCode(); //$NON-NLS-1$
}
}
Modified: harmony/enhanced/classlib/trunk/modules/rmi/src/main/java/javax/rmi/ssl/SslRMIServerSocketFactory.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/rmi/src/main/java/javax/rmi/ssl/SslRMIServerSocketFactory.java?view=diff&rev=478146&r1=478145&r2=478146
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/rmi/src/main/java/javax/rmi/ssl/SslRMIServerSocketFactory.java (original)
+++ harmony/enhanced/classlib/trunk/modules/rmi/src/main/java/javax/rmi/ssl/SslRMIServerSocketFactory.java Wed Nov 22 04:14:03 2006
@@ -68,7 +68,8 @@
} finally {
try {
soc.close();
- } catch (IOException e) {}
+ } catch (IOException e) {
+ }
}
}
@@ -88,7 +89,7 @@
public ServerSocket createServerSocket(int port) throws IOException {
SSLServerSocket soc;
- soc = (SSLServerSocket) factory.createServerSocket();
+ soc = (SSLServerSocket) factory.createServerSocket(port);
if (enabledProtocols != null) {
soc.setEnabledProtocols(enabledProtocols);
}
@@ -102,13 +103,14 @@
public boolean equals(Object obj) {
if (obj instanceof SslRMIServerSocketFactory
- || Arrays.equals(enabledCipherSuites,
+ && Arrays.equals(enabledCipherSuites,
((SslRMIServerSocketFactory) obj)
- .getEnabledCipherSuites())
- || Arrays
- .equals(enabledProtocols,
- ((SslRMIServerSocketFactory) obj)
- .getEnabledProtocols())) {
+ .getEnabledCipherSuites())
+ && Arrays.equals(enabledProtocols,
+ ((SslRMIServerSocketFactory) obj)
+ .getEnabledProtocols())
+ && (this.needClientAuth == ((SslRMIServerSocketFactory) obj)
+ .getNeedClientAuth())) {
return true;
}
return false;
@@ -116,7 +118,7 @@
public int hashCode() {
- String hashSting = "javax.rmi.ssl.SslRMIServerSocketFactory";
+ String hashSting = "javax.rmi.ssl.SslRMIServerSocketFactory"; //$NON-NLS-1$
if (enabledCipherSuites != null) {
for (int i = 0; i < enabledCipherSuites.length; i++) {
hashSting = hashSting + enabledCipherSuites[i];
Modified: harmony/enhanced/classlib/trunk/modules/rmi/src/main/java/org/apache/harmony/rmi/internal/nls/messages.properties
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/rmi/src/main/java/org/apache/harmony/rmi/internal/nls/messages.properties?view=diff&rev=478146&r1=478145&r2=478146
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/rmi/src/main/java/org/apache/harmony/rmi/internal/nls/messages.properties (original)
+++ harmony/enhanced/classlib/trunk/modules/rmi/src/main/java/org/apache/harmony/rmi/internal/nls/messages.properties Wed Nov 22 04:14:03 2006
@@ -166,6 +166,7 @@
rmi.93=Object was not registered or already deactivated.
rmi.94=Could not load class {0}(access to loader for codebase "{1}" denied).
rmi.95=Connection to [{0}:{1}] timed out
+rmi.96=Error in socket creation
# log messages
rmi.log.00=ActivationID.activate: activator = {0}
Added: harmony/enhanced/classlib/trunk/modules/rmi/src/test/api/java/org/apache/harmony/rmi/tests/javax/rmi/ssl/SslRMIClientSocketFactoryTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/rmi/src/test/api/java/org/apache/harmony/rmi/tests/javax/rmi/ssl/SslRMIClientSocketFactoryTest.java?view=auto&rev=478146
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/rmi/src/test/api/java/org/apache/harmony/rmi/tests/javax/rmi/ssl/SslRMIClientSocketFactoryTest.java (added)
+++ harmony/enhanced/classlib/trunk/modules/rmi/src/test/api/java/org/apache/harmony/rmi/tests/javax/rmi/ssl/SslRMIClientSocketFactoryTest.java Wed Nov 22 04:14:03 2006
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+package org.apache.harmony.rmi.tests.javax.rmi.ssl;
+
+import java.io.IOException;
+import java.net.ServerSocket;
+import javax.rmi.ssl.SslRMIClientSocketFactory;
+import javax.rmi.ssl.SslRMIServerSocketFactory;
+import javax.net.ssl.SSLSocket;
+
+import junit.framework.TestCase;
+
+public class SslRMIClientSocketFactoryTest extends TestCase {
+
+ public void testSslRMIClientSocketFactory() {
+
+ SslRMIClientSocketFactory factory = new SslRMIClientSocketFactory();
+ SslRMIClientSocketFactory factory1 = new SslRMIClientSocketFactory();
+ assertTrue(factory.equals(factory1));
+ assertTrue(factory1.equals(factory));
+ }
+
+ public void testCreateSocket() throws Exception {
+
+ SslRMIClientSocketFactory factoryCln = new SslRMIClientSocketFactory();
+ SslRMIServerSocketFactory factorySrv = new SslRMIServerSocketFactory();
+
+ ServerSocket ssocket = factorySrv.createServerSocket(0);
+ SSLSocket csocket = (SSLSocket) factoryCln.createSocket("localhost",
+ ssocket.getLocalPort());
+ csocket.close();
+ ssocket.close();
+
+ String old = System
+ .getProperty("javax.rmi.ssl.client.enabledCipherSuites");
+ try {
+ System.setProperty("javax.rmi.ssl.client.enabledCipherSuites",
+ "Incorrect");
+ ssocket = factorySrv.createServerSocket(0);
+ try {
+ factoryCln.createSocket("localhost", ssocket.getLocalPort());
+ fail("No expected IOException");
+ } catch (IOException e) {
+ }
+ ssocket.close();
+ } finally {
+ if (old == null) {
+ System.clearProperty("javax.rmi.ssl.client.enabledCipherSuites");
+ } else {
+ System.setProperty("javax.rmi.ssl.client.enabledCipherSuites", old);
+ }
+ }
+ }
+
+}
Added: harmony/enhanced/classlib/trunk/modules/rmi/src/test/api/java/org/apache/harmony/rmi/tests/javax/rmi/ssl/SslRMIServerSocketFactoryTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/rmi/src/test/api/java/org/apache/harmony/rmi/tests/javax/rmi/ssl/SslRMIServerSocketFactoryTest.java?view=auto&rev=478146
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/rmi/src/test/api/java/org/apache/harmony/rmi/tests/javax/rmi/ssl/SslRMIServerSocketFactoryTest.java (added)
+++ harmony/enhanced/classlib/trunk/modules/rmi/src/test/api/java/org/apache/harmony/rmi/tests/javax/rmi/ssl/SslRMIServerSocketFactoryTest.java Wed Nov 22 04:14:03 2006
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+package org.apache.harmony.rmi.tests.javax.rmi.ssl;
+
+import javax.rmi.ssl.SslRMIServerSocketFactory;
+import javax.net.ssl.SSLServerSocketFactory;
+
+import junit.framework.TestCase;
+
+public class SslRMIServerSocketFactoryTest extends TestCase {
+
+ public void testSslRMIServerSocketFactory() {
+ SslRMIServerSocketFactory factory = new SslRMIServerSocketFactory();
+ SslRMIServerSocketFactory factory1 = new SslRMIServerSocketFactory(
+ null, null, false);
+ assertTrue(factory.equals(factory1));
+ assertTrue(factory1.equals(factory));
+ assertNull(factory.getEnabledCipherSuites());
+ assertNull(factory.getEnabledProtocols());
+ assertFalse(factory.getNeedClientAuth());
+
+ factory1 = new SslRMIServerSocketFactory(null, null, true);
+ assertTrue(factory1.getNeedClientAuth());
+ assertFalse(factory.equals(factory1));
+ assertFalse(factory1.equals(factory));
+
+ factory1 = new SslRMIServerSocketFactory(null,
+ new String[] { "TLSv1" }, false);
+ assertFalse(factory.equals(factory1));
+ assertFalse(factory1.equals(factory));
+
+ SSLServerSocketFactory tmpfac = (SSLServerSocketFactory) SSLServerSocketFactory
+ .getDefault();
+ factory1 = new SslRMIServerSocketFactory(tmpfac.getDefaultCipherSuites(),
+ null, false);
+ assertFalse(factory.equals(factory1));
+ assertFalse(factory1.equals(factory));
+
+ try {
+ new SslRMIServerSocketFactory(new String[] { "Incorrect" }, null,
+ false);
+ fail("No expected IllegalArgumentException");
+ } catch (IllegalArgumentException e) {
+ }
+
+ try {
+ new SslRMIServerSocketFactory(null, new String[] { "Incorrect" },
+ false);
+ fail("No expected IllegalArgumentException");
+ } catch (IllegalArgumentException e) {
+ }
+
+ }
+
+ public void testCreateServerSocket() throws Exception {
+ SslRMIServerSocketFactory factory = new SslRMIServerSocketFactory();
+
+ factory.createServerSocket(0).close();
+
+ try {
+ factory.createServerSocket(-1);
+ fail("No expected IllegalArgumentException");
+ } catch (IllegalArgumentException e) {
+ }
+ }
+
+}