1 package com.atlassian.plugin.osgi.factory.transform.stage;
2
3 import com.atlassian.plugin.PluginAccessor;
4 import com.atlassian.plugin.JarPluginArtifact;
5 import com.atlassian.plugin.osgi.factory.transform.TransformContext;
6 import com.atlassian.plugin.osgi.factory.transform.model.SystemExports;
7 import com.atlassian.plugin.osgi.hostcomponents.HostComponentRegistration;
8 import com.atlassian.plugin.test.PluginJarBuilder;
9
10 import java.io.File;
11 import java.util.Collections;
12
13 import junit.framework.TestCase;
14
15 public class TestScanDescriptorForHostClassesStage extends TestCase
16 {
17 public void testTransform() throws Exception
18 {
19 final File plugin = new PluginJarBuilder("plugin")
20 .addFormattedResource("atlassian-plugin.xml",
21 "<atlassian-plugin name='Test Bundle instruction plugin 2' key='test.plugin'>",
22 " <plugin-info>",
23 " <version>1.0</version>",
24 " </plugin-info>",
25 " <foo key='bar' class='com.atlassian.plugin.osgi.Foo' />",
26 "</atlassian-plugin>")
27 .build();
28
29 ScanDescriptorForHostClassesStage stage = new ScanDescriptorForHostClassesStage();
30 SystemExports exports = new SystemExports("com.atlassian.plugin.osgi");
31 final TransformContext context = new TransformContext(Collections.<HostComponentRegistration> emptyList(), exports, new JarPluginArtifact(plugin),
32 null, PluginAccessor.Descriptor.FILENAME);
33 stage.execute(context);
34 assertTrue(context.getExtraImports().contains("com.atlassian.plugin.osgi"));
35 }
36
37 public void testTransformButPackageInPlugin() throws Exception
38 {
39 final File plugin = new PluginJarBuilder("plugin")
40 .addFormattedResource("atlassian-plugin.xml",
41 "<atlassian-plugin name='Test Bundle instruction plugin 2' key='test.plugin'>",
42 " <plugin-info>",
43 " <version>1.0</version>",
44 " </plugin-info>",
45 " <foo key='bar' class='com.atlassian.plugin.osgi.Foo' />",
46 "</atlassian-plugin>")
47 .addResource("com/atlassian/plugin/osgi/", "")
48 .addResource("com/atlassian/plugin/osgi/Foo.class", "asd")
49 .build();
50
51 ScanDescriptorForHostClassesStage stage = new ScanDescriptorForHostClassesStage();
52 SystemExports exports = new SystemExports("com.atlassian.plugin.osgi");
53 final TransformContext context = new TransformContext(Collections.<HostComponentRegistration> emptyList(), exports, new JarPluginArtifact(plugin),
54 null, PluginAccessor.Descriptor.FILENAME);
55 stage.execute(context);
56 assertTrue(!context.getExtraImports().contains("com.atlassian.plugin.osgi"));
57 }
58
59 public void testTransformIgnoreUnknown() throws Exception
60 {
61 final File plugin = new PluginJarBuilder("plugin")
62 .addFormattedResource("atlassian-plugin.xml",
63 "<atlassian-plugin name='Test Bundle instruction plugin 2' key='test.plugin'>",
64 " <plugin-info>",
65 " <version>1.0</version>",
66 " </plugin-info>",
67 " <foo key='bar' class='blat.Foo' />",
68 "</atlassian-plugin>")
69 .build();
70
71 ScanDescriptorForHostClassesStage stage = new ScanDescriptorForHostClassesStage();
72 SystemExports exports = new SystemExports("com.atlassian.plugin.osgi");
73 final TransformContext context = new TransformContext(Collections.<HostComponentRegistration> emptyList(), exports, new JarPluginArtifact(plugin),
74 null, PluginAccessor.Descriptor.FILENAME);
75 stage.execute(context);
76 assertFalse(context.getExtraImports().contains("blat"));
77 }
78 }