You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by da...@apache.org on 2020/11/24 08:29:05 UTC

[felix-dev] branch master updated: FELIX-6362 Utils ResourceBuilder does not allow java.* imports

This is an automated email from the ASF dual-hosted git repository.

davidb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/felix-dev.git


The following commit(s) were added to refs/heads/master by this push:
     new d2f25bf  FELIX-6362 Utils ResourceBuilder does not allow java.* imports
     new cf18cb6  Merge pull request #62 from bosschaert/FELIX-6362
d2f25bf is described below

commit d2f25bf4e714d3d16ae41fe70c092c277a1d850e
Author: David Bosschaert <da...@apache.org>
AuthorDate: Mon Nov 23 16:56:05 2020 +0000

    FELIX-6362 Utils ResourceBuilder does not allow java.* imports
---
 .../felix/utils/resource/ResourceBuilder.java      |  7 ++---
 .../felix/utils/resource/ResourceBuilderTest.java  | 33 ++++++++++++++++++++++
 2 files changed, 35 insertions(+), 5 deletions(-)

diff --git a/utils/src/main/java/org/apache/felix/utils/resource/ResourceBuilder.java b/utils/src/main/java/org/apache/felix/utils/resource/ResourceBuilder.java
index a2cec7f..a269300 100644
--- a/utils/src/main/java/org/apache/felix/utils/resource/ResourceBuilder.java
+++ b/utils/src/main/java/org/apache/felix/utils/resource/ResourceBuilder.java
@@ -309,17 +309,14 @@ public final class ResourceBuilder {
                 clause.attrs.put(Constants.BUNDLE_VERSION_ATTRIBUTE, VersionRange.parseVersionRange(v.toString()));
             }
 
-            // Verify java.* is not imported, nor any duplicate imports.
+            // Verify no duplicate imports, nor '.' or empty packages.
             for (String pkgName : clause.paths) {
                 if (!dupeSet.contains(pkgName)) {
-                    // Verify that java.* packages are not imported.
-                    if (pkgName.startsWith("java.")) {
-                        throw new BundleException("Importing java.* packages not allowed: " + pkgName);
                     // The character "." has no meaning in the OSGi spec except
                     // when placed on the bundle class path. Some people, however,
                     // mistakenly think it means the default package when imported
                     // or exported. This is not correct. It is invalid.
-                    } else if (pkgName.equals(".")) {
+                    if (pkgName.equals(".")) {
                         throw new BundleException("Importing '.' is invalid.");
                     // Make sure a package name was specified.
                     } else if (pkgName.length() == 0) {
diff --git a/utils/src/test/java/org/apache/felix/utils/resource/ResourceBuilderTest.java b/utils/src/test/java/org/apache/felix/utils/resource/ResourceBuilderTest.java
new file mode 100644
index 0000000..eb8bcfe
--- /dev/null
+++ b/utils/src/test/java/org/apache/felix/utils/resource/ResourceBuilderTest.java
@@ -0,0 +1,33 @@
+/*
+ * 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.felix.utils.resource;
+
+import org.junit.Test;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class ResourceBuilderTest {
+    @Test
+    public void testImportJavaPackage() throws Exception {
+        Map<String, String> headers = new HashMap<>();
+        headers.put("Bundle-ManifestVersion", "2");
+        headers.put("Bundle-SymbolicName", "foo");
+        headers.put("Import-Package", "java.util");
+        ResourceBuilder.build("http://foo", headers);
+    }
+}