You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2018/04/19 06:40:31 UTC
svn commit: r1829509 - in /felix/trunk/osgi-r7/configurator/src/main:
java/org/apache/felix/configurator/impl/json/JSONUtil.java
resources/OSGI-INF/permissions.perm
Author: cziegeler
Date: Thu Apr 19 06:40:31 2018
New Revision: 1829509
URL: http://svn.apache.org/viewvc?rev=1829509&view=rev
Log:
Change JSON classloading and fix permissions. Apply patch provided by Tim Verbelen
Modified:
felix/trunk/osgi-r7/configurator/src/main/java/org/apache/felix/configurator/impl/json/JSONUtil.java
felix/trunk/osgi-r7/configurator/src/main/resources/OSGI-INF/permissions.perm
Modified: felix/trunk/osgi-r7/configurator/src/main/java/org/apache/felix/configurator/impl/json/JSONUtil.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/configurator/src/main/java/org/apache/felix/configurator/impl/json/JSONUtil.java?rev=1829509&r1=1829508&r2=1829509&view=diff
==============================================================================
--- felix/trunk/osgi-r7/configurator/src/main/java/org/apache/felix/configurator/impl/json/JSONUtil.java (original)
+++ felix/trunk/osgi-r7/configurator/src/main/java/org/apache/felix/configurator/impl/json/JSONUtil.java Thu Apr 19 06:40:31 2018
@@ -53,6 +53,7 @@ import org.apache.felix.configurator.imp
import org.apache.felix.configurator.impl.model.Config;
import org.apache.felix.configurator.impl.model.ConfigPolicy;
import org.apache.felix.configurator.impl.model.ConfigurationFile;
+import org.apache.johnzon.core.JsonProviderImpl;
import org.osgi.service.configurator.ConfiguratorConstants;
public class JSONUtil {
@@ -327,19 +328,13 @@ public class JSONUtil {
report.errors.add("Invalid JSON from " + name);
return null;
}
- // Jonhzon uses TCCL
- final ClassLoader oldCL = Thread.currentThread().getContextClassLoader();
- try {
- Thread.currentThread().setContextClassLoader(JSONUtil.class.getClassLoader());
- try (final JsonReader reader = Json.createReader(new StringReader(contents)) ) {
- final JsonStructure obj = reader.read();
- if ( obj != null && obj.getValueType() == ValueType.OBJECT ) {
- return (JsonObject)obj;
- }
- report.errors.add("Invalid JSON from " + name);
+ // Jonhzon is packaged in, so we can just use the impl type to avoid ClassLoader mess
+ try (final JsonReader reader = new JsonProviderImpl().createReader(new StringReader(contents)) ) {
+ final JsonStructure obj = reader.read();
+ if ( obj != null && obj.getValueType() == ValueType.OBJECT ) {
+ return (JsonObject)obj;
}
- } finally {
- Thread.currentThread().setContextClassLoader(oldCL);
+ report.errors.add("Invalid JSON from " + name);
}
return null;
}
Modified: felix/trunk/osgi-r7/configurator/src/main/resources/OSGI-INF/permissions.perm
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/configurator/src/main/resources/OSGI-INF/permissions.perm?rev=1829509&r1=1829508&r2=1829509&view=diff
==============================================================================
--- felix/trunk/osgi-r7/configurator/src/main/resources/OSGI-INF/permissions.perm (original)
+++ felix/trunk/osgi-r7/configurator/src/main/resources/OSGI-INF/permissions.perm Thu Apr 19 06:40:31 2018
@@ -24,10 +24,29 @@
# General bundle permissions
(java.util.PropertyPermission "configurator.*" "read")
-(org.osgi.framework.ServicePermission "org.osgi.service.cm.Configuration" "get")
+(org.osgi.framework.ServicePermission "org.osgi.service.cm.ConfigurationAdmin" "get")
(org.osgi.framework.ServicePermission "org.osgi.service.coordinator.Coordinator" "get")
(org.osgi.framework.ServicePermission "org.osgi.service.log.LogService" "get")
+# Permission to provide osgi.extender capability
+(org.osgi.framework.CapabilityPermission "osgi.extender" "provide")
+
+# Permission to adapt Bundle to BundleWiring
+(org.osgi.framework.AdaptPermission "(adaptClass=org.osgi.framework.wiring.BundleWiring)" "adapt")
+
+# We need permissions for ourselves (e.g. to add a BundleListener)
+(org.osgi.framework.AdminPermission "(name=org.apache.felix.configurator)" "resource,metadata,class,context,listener")
+
+# We need access to the resources, context and metadata of other bundles
+# to process configuration files and apply the config on their behalve
+(org.osgi.framework.AdminPermission "(name=*)" "metadata,context,resource")
+
+# Johnzon needs this to read properties
+(java.util.PropertyPermission "org.apache.johnzon.*" "read")
+
+# Embedded Converter needs this to check whether something is a DTO
+(java.lang.RuntimePermission "accessDeclaredMembers")
+
# Manage configurations
(org.osgi.service.cm.ConfigurationPermission "*" "configure")