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


Reply via email to