You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by pa...@apache.org on 2020/01/30 22:58:57 UTC

svn commit: r1873390 - in /felix/sandbox/pauls/connect/src: main/java/org/apache/felix/framework/ExtensionManager.java test/java/org/apache/felix/framework/ConnectTest.java

Author: pauls
Date: Thu Jan 30 22:58:56 2020
New Revision: 1873390

URL: http://svn.apache.org/viewvc?rev=1873390&view=rev
Log:
Add a test for connect modules as extension bundles

Modified:
    felix/sandbox/pauls/connect/src/main/java/org/apache/felix/framework/ExtensionManager.java
    felix/sandbox/pauls/connect/src/test/java/org/apache/felix/framework/ConnectTest.java

Modified: felix/sandbox/pauls/connect/src/main/java/org/apache/felix/framework/ExtensionManager.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pauls/connect/src/main/java/org/apache/felix/framework/ExtensionManager.java?rev=1873390&r1=1873389&r2=1873390&view=diff
==============================================================================
--- felix/sandbox/pauls/connect/src/main/java/org/apache/felix/framework/ExtensionManager.java (original)
+++ felix/sandbox/pauls/connect/src/main/java/org/apache/felix/framework/ExtensionManager.java Thu Jan 30 22:58:56 2020
@@ -571,10 +571,13 @@ class ExtensionManager implements Conten
             {
                 f = ((JarContent) revisionContent).getFile();
             }
-            else
+            else if (revisionContent instanceof DirectoryContent)
             {
                 f = ((DirectoryContent) revisionContent).getFile();
             }
+            else {
+                f = null;
+            }
             if (f != null)
             {
                 try

Modified: felix/sandbox/pauls/connect/src/test/java/org/apache/felix/framework/ConnectTest.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pauls/connect/src/test/java/org/apache/felix/framework/ConnectTest.java?rev=1873390&r1=1873389&r2=1873390&view=diff
==============================================================================
--- felix/sandbox/pauls/connect/src/test/java/org/apache/felix/framework/ConnectTest.java (original)
+++ felix/sandbox/pauls/connect/src/test/java/org/apache/felix/framework/ConnectTest.java Thu Jan 30 22:58:56 2020
@@ -161,7 +161,87 @@ public class ConnectTest extends TestCas
                         }
 
 
-                    }) : Optional.empty();
+                    }) : location.startsWith("connect:extension") ? Optional.of(new ConnectModule()
+                    {
+                        @Override
+                        public ConnectContent getContent() throws IOException
+                        {
+                            return new ConnectContent()
+                            {
+                                @Override
+                                public Optional<ConnectEntry> getEntry(String name)
+                                {
+
+                                    return "foo.txt".equals(name) ? Optional.of(
+                                        new ConnectEntry()
+                                        {
+                                            @Override
+                                            public String getName()
+                                            {
+                                                return name;
+                                            }
+
+                                            @Override
+                                            public long getContentLength()
+                                            {
+                                                return 0;
+                                            }
+
+                                            @Override
+                                            public long getLastModified()
+                                            {
+                                                return 0;
+                                            }
+
+                                            @Override
+                                            public InputStream getInputStream() throws IOException
+                                            {
+                                                return null;
+                                            }
+                                        }
+                                    ) : Optional.empty();
+                                }
+
+                                @Override
+                                public Iterable<String> getEntries()
+                                {
+                                    return Arrays.asList("foo.txt");
+                                }
+
+                                @Override
+                                public Optional<ClassLoader> getClassLoader()
+                                {
+                                    return Optional.of(getClass().getClassLoader());
+                                }
+
+                                @Override
+                                public ConnectContent open() throws IOException
+                                {
+                                    return this;
+                                }
+
+                                @Override
+                                public ConnectContent close() throws IOException
+                                {
+                                    return this;
+                                }
+
+                                @Override
+                                public Optional<Map<String, String>> getHeaders()
+                                {
+                                    Map<String, String> headers = new HashMap<String, String>();
+                                    headers.put(Constants.BUNDLE_MANIFESTVERSION, "2");
+                                    headers.put(Constants.BUNDLE_SYMBOLICNAME, "connect.extension");
+                                    headers.put(Constants.BUNDLE_VERSION, "1.0.0");
+                                    headers.put(Constants.FRAGMENT_HOST, "system.bundle;extension:=framework");
+                                    return Optional.of(headers);
+                                }
+                            };
+                        }
+
+
+                    })
+                        : Optional.empty();
                 }
 
                 @Override
@@ -183,6 +263,10 @@ public class ConnectTest extends TestCas
             TestCase.assertNotNull(b.getEntry("foo.txt"));
             TestCase.assertNull(b.getEntry("bar.txt"));
 
+            Bundle extension = framework.getBundleContext().installBundle("connect:extension");
+
+            TestCase.assertEquals(Bundle.RESOLVED, extension.getState());
+
             framework.stop();
             framework.waitForStop(1000);
             framework = factory.newFramework(params, connectFactory);