You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2011/11/09 12:35:25 UTC

svn commit: r1199700 - /directory/apacheds/trunk/kerberos-test/src/test/java/org/apache/directory/server/kerberos/kdc/AbstractKerberosITest.java

Author: elecharny
Date: Wed Nov  9 11:35:24 2011
New Revision: 1199700

URL: http://svn.apache.org/viewvc?rev=1199700&view=rev
Log:
Fix a failing test with the latest JVM version on mac (1.6.0_29).

This is absolutely ugly : the name of a private field for the sun.security.krb5.KrbKdcReq class has changed from udpPrefLimit to defaultUdpPrefLimit, leading to a NoSuchFieldException when we try to fetch this field to change its value. I don't know why we try to modify this value, but in any case, the resulting failure is just expected.

I don't know if it's possible to avoid such usage of reflection o get the same result, but if so, we must absolutely avoid accessing inner fields of classes we don't own ...

Modified:
    directory/apacheds/trunk/kerberos-test/src/test/java/org/apache/directory/server/kerberos/kdc/AbstractKerberosITest.java

Modified: directory/apacheds/trunk/kerberos-test/src/test/java/org/apache/directory/server/kerberos/kdc/AbstractKerberosITest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/kerberos-test/src/test/java/org/apache/directory/server/kerberos/kdc/AbstractKerberosITest.java?rev=1199700&r1=1199699&r2=1199700&view=diff
==============================================================================
--- directory/apacheds/trunk/kerberos-test/src/test/java/org/apache/directory/server/kerberos/kdc/AbstractKerberosITest.java (original)
+++ directory/apacheds/trunk/kerberos-test/src/test/java/org/apache/directory/server/kerberos/kdc/AbstractKerberosITest.java Wed Nov  9 11:35:24 2011
@@ -25,6 +25,7 @@ import static org.junit.Assert.assertEqu
 import java.io.File;
 import java.io.IOException;
 import java.lang.reflect.Field;
+import java.lang.reflect.Method;
 import java.util.Collections;
 
 import javax.security.auth.Subject;
@@ -210,7 +211,19 @@ public class AbstractKerberosITest exten
     {
         String clazz = "sun.security.krb5.KrbKdcReq";
         Class<?> krbKdcReqClass = Class.forName( clazz );
-        Field udpPrefLimitField = krbKdcReqClass.getDeclaredField( "udpPrefLimit" );
+        
+        // Absolutely ugly fix to get this method working with the latest JVM on Mac (1.6.0_29)
+        Field udpPrefLimitField = null;
+        
+        try
+        { 
+        	udpPrefLimitField = krbKdcReqClass.getDeclaredField( "udpPrefLimit" );
+        }
+        catch ( NoSuchFieldException nsfe )
+        {
+        	udpPrefLimitField = krbKdcReqClass.getDeclaredField( "defaultUdpPrefLimit" );
+        }
+        
         udpPrefLimitField.setAccessible( true );
         return udpPrefLimitField;
     }