You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by gn...@apache.org on 2012/07/25 09:32:48 UTC
svn commit: r1365480 - in
/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container:
BlueprintContainerImpl.java BlueprintDomainCombiner.java
BlueprintProtectionDomain.java
Author: gnodet
Date: Wed Jul 25 07:32:47 2012
New Revision: 1365480
URL: http://svn.apache.org/viewvc?rev=1365480&view=rev
Log:
[ARIES-838] ClassCircularityError in BlueprintContainerImpl when using a security manager
Added:
aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintDomainCombiner.java
aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintProtectionDomain.java
Modified:
aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java
Modified: aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java?rev=1365480&r1=1365479&r2=1365480&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java (original)
+++ aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java Wed Jul 25 07:32:47 2012
@@ -23,12 +23,9 @@ import java.net.URI;
import java.net.URL;
import java.security.AccessControlContext;
import java.security.AccessController;
-import java.security.DomainCombiner;
-import java.security.Permission;
import java.security.PrivilegedAction;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
-import java.security.ProtectionDomain;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -110,6 +107,11 @@ public class BlueprintContainerImpl
private static final Logger LOGGER = LoggerFactory.getLogger(BlueprintContainerImpl.class);
+ private static final Class[] SECURITY_BUGFIX = {
+ BlueprintDomainCombiner.class,
+ BlueprintProtectionDomain.class,
+ };
+
private enum State {
Unknown,
WaitForNamespaceHandlers,
@@ -164,7 +166,7 @@ public class BlueprintContainerImpl
this.executors = executors;
this.processors = new ArrayList<Processor>();
if (System.getSecurityManager() != null) {
- this.accessControlContext = createAccessControlContext();
+ this.accessControlContext = BlueprintDomainCombiner.createAccessControlContext(bundleContext);
}
this.proxyManager = proxyManager;
}
@@ -432,21 +434,6 @@ public class BlueprintContainerImpl
}
}
- private AccessControlContext createAccessControlContext() {
- return new AccessControlContext(AccessController.getContext(),
- new DomainCombiner() {
- public ProtectionDomain[] combine(ProtectionDomain[] arg0,
- ProtectionDomain[] arg1) {
- return new ProtectionDomain[] { new ProtectionDomain(null, null) {
- public boolean implies(Permission permission) {
- return bundleContext.getBundle().hasPermission(permission);
- }
- }
- };
- }
- });
- }
-
public AccessControlContext getAccessControlContext() {
return accessControlContext;
}
Added: aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintDomainCombiner.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintDomainCombiner.java?rev=1365480&view=auto
==============================================================================
--- aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintDomainCombiner.java (added)
+++ aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintDomainCombiner.java Wed Jul 25 07:32:47 2012
@@ -0,0 +1,44 @@
+/*
+ * 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.aries.blueprint.container;
+
+import java.security.AccessControlContext;
+import java.security.AccessController;
+import java.security.DomainCombiner;
+import java.security.ProtectionDomain;
+
+import org.osgi.framework.BundleContext;
+
+public class BlueprintDomainCombiner implements DomainCombiner {
+ private final BundleContext bundleContext;
+
+ public static AccessControlContext createAccessControlContext(BundleContext bundleContext) {
+ return new AccessControlContext(AccessController.getContext(), new BlueprintDomainCombiner(bundleContext));
+ }
+
+ BlueprintDomainCombiner(BundleContext bundleContext) {
+ this.bundleContext = bundleContext;
+ }
+
+ public ProtectionDomain[] combine(ProtectionDomain[] arg0,
+ ProtectionDomain[] arg1) {
+ return new ProtectionDomain[] { new BlueprintProtectionDomain(bundleContext) };
+ }
+
+}
Added: aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintProtectionDomain.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintProtectionDomain.java?rev=1365480&view=auto
==============================================================================
--- aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintProtectionDomain.java (added)
+++ aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintProtectionDomain.java Wed Jul 25 07:32:47 2012
@@ -0,0 +1,42 @@
+/*
+ * 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.aries.blueprint.container;
+
+import java.security.Permission;
+import java.security.ProtectionDomain;
+
+import org.osgi.framework.BundleContext;
+
+public class BlueprintProtectionDomain extends ProtectionDomain {
+
+ private final BundleContext bundleContext;
+
+ public BlueprintProtectionDomain(BundleContext bundleContext) {
+ super(null, null);
+ this.bundleContext = bundleContext;
+ }
+
+ public boolean implies(Permission permission) {
+ try {
+ return bundleContext.getBundle().hasPermission(permission);
+ } catch (IllegalStateException e) {
+ return false;
+ }
+ }
+}