You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by le...@apache.org on 2007/06/18 10:00:18 UTC

svn commit: r548253 - in /harmony/enhanced/classlib/branches/java6/modules/security/src/main/java/common/java/security: Policy.java PolicySpi.java

Author: leoli
Date: Mon Jun 18 01:00:17 2007
New Revision: 548253

URL: http://svn.apache.org/viewvc?view=rev&rev=548253
Log:
Add Java6 API class PolicySpi.

Added:
    harmony/enhanced/classlib/branches/java6/modules/security/src/main/java/common/java/security/PolicySpi.java
Modified:
    harmony/enhanced/classlib/branches/java6/modules/security/src/main/java/common/java/security/Policy.java

Modified: harmony/enhanced/classlib/branches/java6/modules/security/src/main/java/common/java/security/Policy.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/security/src/main/java/common/java/security/Policy.java?view=diff&rev=548253&r1=548252&r2=548253
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/security/src/main/java/common/java/security/Policy.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/security/src/main/java/common/java/security/Policy.java Mon Jun 18 01:00:17 2007
@@ -26,6 +26,7 @@
 
 import org.apache.harmony.security.fortress.DefaultPolicy;
 import org.apache.harmony.security.fortress.PolicyUtils;
+import org.apache.harmony.security.internal.nls.Messages;
 
 
 /**
@@ -212,4 +213,39 @@
             activePolicy = policy;
         }
     }
+    
+    /**
+     * A read-only empty PermissionCollection instance.
+     * 
+     * @since 1.6
+     */
+    public static final PermissionCollection UNSUPPORTED_EMPTY_COLLECTION = new PermissionCollection() {
+
+        private static final long serialVersionUID = 1L;
+
+        @Override
+        public void add(Permission permission) {
+            throw new SecurityException(Messages.getString("security.1A5")); //$NON-NLS-1$
+        }
+
+        @Override
+        public Enumeration<Permission> elements() {
+            return new Permissions().elements();
+        }
+
+        @Override
+        public boolean implies(Permission permission) {
+            if (permission == null) {
+                throw new NullPointerException();
+            }
+            return false;
+        }
+
+        @Override
+        public boolean isReadOnly() {
+            // always returns true since it is a read-only instance.
+            // RI does not override this method.
+            return true;
+        }
+    };
 }

Added: harmony/enhanced/classlib/branches/java6/modules/security/src/main/java/common/java/security/PolicySpi.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/security/src/main/java/common/java/security/PolicySpi.java?view=auto&rev=548253
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/security/src/main/java/common/java/security/PolicySpi.java (added)
+++ harmony/enhanced/classlib/branches/java6/modules/security/src/main/java/common/java/security/PolicySpi.java Mon Jun 18 01:00:17 2007
@@ -0,0 +1,112 @@
+/*
+ *  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 java.security;
+
+/**
+ * Represents the Service Provider Interface (SPI) for java.security.Policy
+ * class.
+ * 
+ * If there is any class that wants to provide a Policy implementation, all
+ * abstract methods in this SPI should be implemented.
+ * 
+ * The detailed implementations should offer a public constructor, in which a
+ * Policy.Paramters implementation acts as an input parameter.If the
+ * Policy.Paramters input cannot by understood by the constructor, an
+ * IllegalArgumentException will be thrown.
+ * 
+ * @since 1.6
+ */
+public abstract class PolicySpi {
+
+	public PolicySpi() {
+		// default constructor
+	}
+
+	/**
+	 * Answers if the policy has granted a Permission to a
+	 * ProtectionDomain.
+	 * 
+	 * @param domain -
+	 *            the domain to check.
+	 * @param permission -
+	 *            check whether this permission is granted to the specified
+	 *            domain.
+	 * @return - true if the permission is granted to the domain.
+	 * 
+	 */
+	protected abstract boolean engineImplies(ProtectionDomain domain,
+			Permission permission);
+
+	/**
+	 * Refreshes/reloads the policy configuration. The behavior of this method
+	 * depends on the implementation. For example, calling refresh on a
+	 * file-based policy will cause the file to be re-read.
+	 * 
+	 * The default implementation of this method does nothing. This method
+	 * should be overridden if a refresh operation is supported by the policy
+	 * implementation.
+	 * 
+	 */
+	protected void engineRefresh() {
+		// do nothing in default implementation
+	}
+
+	/**
+	 * Answers a PermissionCollection object containing the set of permissions
+	 * granted to the specified CodeSource.
+	 * 
+	 * The default implementation of this method returns
+	 * Policy.UNSUPPORTED_EMPTY_COLLECTION object. This method can be overridden
+	 * if the policy implementation can return a set of permissions granted to a
+	 * CodeSource.
+	 * 
+	 * @param codesource -
+	 *            the CodeSource to which the returned PermissionCollection has
+	 *            been granted.
+	 * @return a set of permissions granted to the specified CodeSource. If this
+	 *         operation is supported, the returned set of permissions must be a
+	 *         new mutable instance and it must support heterogeneous Permission
+	 *         types. If this operation is not supported,
+	 *         Policy.UNSUPPORTED_EMPTY_COLLECTION is returned.
+	 */
+	protected PermissionCollection engineGetPermissions(CodeSource codesource) {
+		return Policy.UNSUPPORTED_EMPTY_COLLECTION;
+	}
+
+	/**
+	 * Answers a PermissionCollection object containing the set of permissions
+	 * granted to the specified ProtectionDomain.
+	 * 
+	 * The default implementation of this method returns
+	 * Policy.UNSUPPORTED_EMPTY_COLLECTION object. This method can be overridden
+	 * if the policy implementation can return a set of permissions granted to a
+	 * ProtectionDomain.
+	 * 
+	 * @param domain -
+	 *            the ProtectionDomain to which the returned
+	 *            PermissionCollection has been granted.
+	 * @return a set of permissions granted to the specified ProtectionDomain.
+	 *         If this operation is supported, the returned set of permissions
+	 *         must be a new mutable instance and it must support heterogeneous
+	 *         Permission types. If this operation is not supported,
+	 *         Policy.UNSUPPORTED_EMPTY_COLLECTION is returned.
+	 */
+	protected PermissionCollection engineGetPermissions(ProtectionDomain domain) {
+		return Policy.UNSUPPORTED_EMPTY_COLLECTION;
+	}
+}