View Javadoc

1   package com.atlassian.plugin.osgi.factory.transform.stage;
2   
3   import com.atlassian.plugin.JarPluginArtifact;
4   import com.atlassian.plugin.PluginAccessor;
5   import com.atlassian.plugin.osgi.container.OsgiContainerManager;
6   import com.atlassian.plugin.osgi.factory.transform.TransformContext;
7   import com.atlassian.plugin.osgi.factory.transform.model.SystemExports;
8   import com.atlassian.plugin.osgi.hostcomponents.HostComponentRegistration;
9   import com.atlassian.plugin.test.PluginJarBuilder;
10  import junit.framework.TestCase;
11  import org.osgi.framework.ServiceReference;
12  
13  import java.io.File;
14  import java.util.Collections;
15  
16  import static org.mockito.Mockito.mock;
17  import static org.mockito.Mockito.when;
18  
19  public class TestScanInnerJarsStage extends TestCase
20  {
21      public void testTransform() throws Exception
22      {
23          // create a jar with embedded jars.
24          final File plugin = new PluginJarBuilder("plugin")
25                  .addFormattedResource("atlassian-plugin.xml",
26                      "<atlassian-plugin name='Test Bundle instruction plugin 2' key='test.plugin'>",
27                      "    <plugin-info>",
28                      "        <version>1.0</version>",
29                      "        <bundle-instructions>",
30                      "            <Export-Package>!*.internal.*,*</Export-Package>",
31                      "        </bundle-instructions>",
32                      "    </plugin-info>",
33                      "</atlassian-plugin>")
34                  .addFormattedJava("my.MyFooChild",
35                          "package my;",
36                          "public class MyFooChild extends com.atlassian.plugin.osgi.factory.transform.dummypackage2.DummyClass2 {",
37                          "}")
38                  .addResource(ScanInnerJarsStage.INNER_JARS_BASE_LOCATION + "myjar1.jar", "content1")
39                  .addResource(ScanInnerJarsStage.INNER_JARS_BASE_LOCATION + "myjar2.jar", "content2")
40                  .addResource("myjar3.jar", "content3")
41                  .build();
42  
43          // execute the stage.
44          final ScanInnerJarsStage stage = new ScanInnerJarsStage();
45          OsgiContainerManager osgiContainerManager = mock(OsgiContainerManager.class);
46          when(osgiContainerManager.getRegisteredServices()).thenReturn(new ServiceReference[0]);
47          final TransformContext context = new TransformContext(Collections.<HostComponentRegistration> emptyList(), SystemExports.NONE, new JarPluginArtifact(plugin),
48              null, PluginAccessor.Descriptor.FILENAME, osgiContainerManager);
49          stage.execute(context);
50  
51          // the inner jar in wrong location should not be found.
52          assertFalse(context.getBundleClassPathJars().contains("myjar3.jar"));
53  
54          // the inner jars in the right location should be found.
55          assertEquals(context.getBundleClassPathJars().size(), 2);
56          assertTrue(context.getBundleClassPathJars().contains(ScanInnerJarsStage.INNER_JARS_BASE_LOCATION + "myjar1.jar"));
57          assertTrue(context.getBundleClassPathJars().contains(ScanInnerJarsStage.INNER_JARS_BASE_LOCATION + "myjar2.jar"));
58      }
59  }