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/10/31 19:15:51 UTC

svn commit: r469592 - in /incubator/harmony/enhanced/classlib/trunk/modules/security/src: main/java/common/java/security/ test/api/java/org/apache/harmony/security/tests/java/security/

Author: pyang
Date: Tue Oct 31 10:15:49 2006
New Revision: 469592

URL: http://svn.apache.org/viewvc?view=rev&rev=469592
Log:
Fix two compability issues:
1. CodeSource.getCodeSigner() should not throw NPE but return null when certs field is null
2. IdentityScope.getSystemScope() should read security property "system.scope" to find the implementation class

Modified:
    incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/CodeSource.java
    incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/IdentityScope.java
    incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/CodeSourceTest.java
    incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/IdentityScopeTest.java

Modified: incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/CodeSource.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/CodeSource.java?view=diff&rev=469592&r1=469591&r2=469592
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/CodeSource.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/CodeSource.java Tue Oct 31 10:15:49 2006
@@ -177,14 +177,12 @@
     }
 
     public final CodeSigner[] getCodeSigners() {
-
         if (signers != null) {
             CodeSigner[] tmp = new CodeSigner[signers.length];
             System.arraycopy(signers, 0, tmp, 0, tmp.length);
             return tmp;
         }
-
-        if (factory != null) {
+        if(certs == null || factory != null){
             // factory != null means we've done this exercise already.
             return null;
         }

Modified: incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/IdentityScope.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/IdentityScope.java?view=diff&rev=469592&r1=469591&r2=469592
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/IdentityScope.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/IdentityScope.java Tue Oct 31 10:15:49 2006
@@ -67,9 +67,24 @@
      * @com.intel.drl.spec_ref 
      */
     public static IdentityScope getSystemScope() {
-
+        /* 
+         * Test shows that the implementation class name is read from security property
+         * "system.scope", and the class is only loaded from boot classpath. No default
+         * implementation as fallback, i.e., return null if fails to init an instance. 
+         */
         if (systemScope == null) {
-            systemScope = new SystemScope("System Scope"); //$NON-NLS-1$
+            String className = AccessController.doPrivileged(new PrivilegedAction<String>(){
+                public String run() {
+                    return Security.getProperty("system.scope"); //$NON-NLS-1$
+                }
+            });
+            if(className != null){
+                try {
+                    systemScope = (IdentityScope) Class.forName(className).newInstance();
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
         }
         return systemScope;
     }

Modified: incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/CodeSourceTest.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/CodeSourceTest.java?view=diff&rev=469592&r1=469591&r2=469592
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/CodeSourceTest.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/CodeSourceTest.java Tue Oct 31 10:15:49 2006
@@ -340,6 +340,10 @@
             assertTrue(found);
         }
     }
+    
+    public void testGetCoderSignersNull() throws Exception{
+        assertNull(new CodeSource(new URL("http://url"), (Certificate[])null).getCodeSigners()); //$NON-NLS-1$
+    }
 
     /**
      * Tests CodeSource.getLocation()

Modified: incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/IdentityScopeTest.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/IdentityScopeTest.java?view=diff&rev=469592&r1=469591&r2=469592
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/IdentityScopeTest.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/IdentityScopeTest.java Tue Oct 31 10:15:49 2006
@@ -93,7 +93,11 @@
      * just call IdentityScope.getSystemScope()
      */
     public final void testGetSystemScope() {
-        assertNotNull(IdentityScope.getSystemScope());
+        String name = Security.getProperty("system.scope");
+        assertNotNull(name);
+        IdentityScope scope = IdentityScope.getSystemScope(); 
+        assertNotNull(scope);
+        assertEquals(name, scope.getClass().getName());
     }
 
     /**
@@ -103,7 +107,9 @@
      */
     
     public final void testSetSystemScope() {
+//      default implementation is specified by security property system.scope
         IdentityScope systemScope = IdentityScope.getSystemScope();
+        
         try {
             // all permissions are granted - sm is not installed
             is = new IdentityScopeStub("Aleksei Semenov");
@@ -133,6 +139,7 @@
             IdentityScopeStub.mySetSystemScope(systemScope);
         }
     }
+    
 
     /**
      * Class under test for Identity getIdentity(Principal)