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")