View Javadoc

1   package com.atlassian.plugin.util.resource;
2   
3   import junit.framework.TestCase;
4   
5   import java.net.MalformedURLException;
6   import java.io.File;
7   import java.io.IOException;
8   import java.io.InputStream;
9   
10  import org.apache.commons.io.IOUtils;
11  import org.apache.commons.io.FileUtils;
12  import com.atlassian.plugin.util.resource.AlternativeDirectoryResourceLoader;
13  import com.atlassian.plugin.util.resource.AlternativeResourceLoader;
14  
15  public class TestAlternativeDirectoryResourceLoader extends TestCase
16  {
17      File base;
18      File kid;
19  
20      @Override
21      public void setUp() throws IOException
22      {
23          base = new File("target");
24          if (!base.exists())
25          {
26              base = File.createTempFile("tests", ".tmp");
27              base.delete();
28              base.mkdir();
29              File classes = new File(base, "classes");
30              classes.mkdir();
31              new File(classes, "com").mkdir();
32          }
33          kid = new File(base, "kid.txt");
34          kid.createNewFile();
35      }
36  
37      @Override
38      protected void tearDown() throws Exception
39      {
40          if (!"target".equals(base.getName()))
41          {
42              FileUtils.deleteDirectory(base);
43          }
44          kid.delete();
45      }
46  
47      public void testGetResource() throws MalformedURLException
48      {
49          try
50          {
51              System.setProperty(AlternativeDirectoryResourceLoader.PLUGIN_RESOURCE_DIRECTORIES, base.getAbsolutePath());
52              AlternativeResourceLoader loader = new AlternativeDirectoryResourceLoader();
53              assertEquals(new File(base, "classes").toURL(), loader.getResource("classes"));
54              assertNull(loader.getResource("asdfasdfasf"));
55          }
56          finally
57          {
58              System.getProperties().remove(AlternativeDirectoryResourceLoader.PLUGIN_RESOURCE_DIRECTORIES);
59          }
60      }
61  
62      public void testGetResourceWithTwoDefined() throws MalformedURLException
63      {
64          try
65          {
66              File classesDir = new File(base, "classes");
67              System.setProperty(AlternativeDirectoryResourceLoader.PLUGIN_RESOURCE_DIRECTORIES,
68                      base.getAbsolutePath()+","+classesDir.getAbsolutePath());
69              AlternativeResourceLoader loader = new AlternativeDirectoryResourceLoader();
70              assertEquals(new File(base, "classes").toURL(), loader.getResource("classes"));
71              assertEquals(new File(classesDir, "com").toURL(), loader.getResource("com"));
72              assertNull(loader.getResource("asdfasdfasf"));
73          }
74          finally
75          {
76              System.getProperties().remove(AlternativeDirectoryResourceLoader.PLUGIN_RESOURCE_DIRECTORIES);
77          }
78      }
79  
80      public void testGetResourceNoProperty() throws MalformedURLException
81      {
82          AlternativeResourceLoader loader = new AlternativeDirectoryResourceLoader();
83          assertNull(loader.getResource("classes"));
84          assertNull(loader.getResource("asdfasdfasf"));
85      }
86  
87      public void testGetResourceAsStream() throws MalformedURLException
88      {
89          InputStream in = null;
90          try
91          {
92              System.setProperty(AlternativeDirectoryResourceLoader.PLUGIN_RESOURCE_DIRECTORIES, base.getAbsolutePath());
93              AlternativeResourceLoader loader = new AlternativeDirectoryResourceLoader();
94              in  = loader.getResourceAsStream("kid.txt");
95              assertNotNull(in);
96              assertNull(loader.getResource("asdfasdfasf"));
97          }
98          finally
99          {
100             System.getProperties().remove(AlternativeDirectoryResourceLoader.PLUGIN_RESOURCE_DIRECTORIES);
101             IOUtils.closeQuietly(in);
102         }
103     }
104 }