You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by hi...@apache.org on 2006/07/07 23:15:52 UTC
svn commit: r419989 -
/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/api/java/org/apache/harmony/luni/tests/java/lang/ClassLoaderTest.java
Author: hindessm
Date: Fri Jul 7 14:15:52 2006
New Revision: 419989
URL: http://svn.apache.org/viewvc?rev=419989&view=rev
Log:
Adding test from "[#HARMONY-765] [drlvm] incorrect initialization of default
domain in j.l.ClassLoader".
Added:
incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/api/java/org/apache/harmony/luni/tests/java/lang/ClassLoaderTest.java (with props)
Added: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/api/java/org/apache/harmony/luni/tests/java/lang/ClassLoaderTest.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/api/java/org/apache/harmony/luni/tests/java/lang/ClassLoaderTest.java?rev=419989&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/api/java/org/apache/harmony/luni/tests/java/lang/ClassLoaderTest.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/api/java/org/apache/harmony/luni/tests/java/lang/ClassLoaderTest.java Fri Jul 7 14:15:52 2006
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2006 The Apache Software Foundation or its licensors, as
+ * applicable
+ *
+ * Licensed 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.luni.tests.java.lang;
+
+import java.io.File;
+import java.io.InputStream;
+import java.security.CodeSource;
+import java.security.Permission;
+import java.security.PermissionCollection;
+import java.security.Policy;
+import java.security.ProtectionDomain;
+import java.security.SecurityPermission;
+import junit.framework.TestCase;
+
+
+public class ClassLoaderTest extends TestCase {
+
+ /**
+ * Tests that Classloader.defineClass() assignes appropriate
+ * default domains to the defined classes.
+ */
+ public void test_defineClass_defaultDomain() throws Exception {
+ // Regression for HARMONY-765
+ DynamicPolicy plc = new DynamicPolicy();
+ Policy back = Policy.getPolicy();
+ try{
+ Policy.setPolicy(plc);
+
+ Class a = new Ldr().define();
+
+ Permission p = new SecurityPermission("abc");
+ assertFalse("impossible! misconfiguration?",
+ a.getProtectionDomain().implies(p));
+
+ plc.pc = p.newPermissionCollection();
+ plc.pc.add(p);
+ assertTrue("default domain is not dynamic",
+ a.getProtectionDomain().implies(p));
+ } finally {
+ Policy.setPolicy(back);
+ }
+ }
+
+}
+
+class DynamicPolicy extends Policy {
+
+ public PermissionCollection pc;
+
+ public PermissionCollection getPermissions(ProtectionDomain pd) {
+ return pc;
+ }
+
+ public PermissionCollection getPermissions(CodeSource codesource) {
+ return pc;
+ }
+
+ public void refresh() {}
+}
+
+class A{}
+
+class Ldr extends ClassLoader {
+ public Class define() throws Exception{
+ Package p = getClass().getPackage();
+ String path =
+ p == null ? "" : p.getName().replace('.', File.separatorChar) + File.separator;
+ InputStream is = getResourceAsStream(path+"A.class");
+ byte[] buf = new byte[512];
+ int len = is.read(buf);
+ return defineClass(buf, 0, len);
+ }
+}
Propchange: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/api/java/org/apache/harmony/luni/tests/java/lang/ClassLoaderTest.java
------------------------------------------------------------------------------
svn:eol-style = native