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          }
30          File classes = new File(base, "classes");
31          if (!classes.exists())
32          {
33              classes.mkdir();
34              new File(classes, "com").mkdir();
35          }
36          kid = new File(base, "kid.txt");
37          kid.createNewFile();
38      }
39  
40      @Override
41      protected void tearDown() throws Exception
42      {
43          if (!"target".equals(base.getName()))
44          {
45              FileUtils.deleteDirectory(base);
46          }
47          kid.delete();
48      }
49  
50      public void testGetResource() throws MalformedURLException
51      {
52          try
53          {
54              System.setProperty(AlternativeDirectoryResourceLoader.PLUGIN_RESOURCE_DIRECTORIES, base.getAbsolutePath());
55              AlternativeResourceLoader loader = new AlternativeDirectoryResourceLoader();
56              assertEquals(new File(base, "classes").toURL(), loader.getResource("classes"));
57              assertNull(loader.getResource("asdfasdfasf"));
58          }
59          finally
60          {
61              System.getProperties().remove(AlternativeDirectoryResourceLoader.PLUGIN_RESOURCE_DIRECTORIES);
62          }
63      }
64  
65      public void testGetResourceWithTwoDefined() throws MalformedURLException
66      {
67          try
68          {
69              File classesDir = new File(base, "classes");
70              System.setProperty(AlternativeDirectoryResourceLoader.PLUGIN_RESOURCE_DIRECTORIES,
71                      base.getAbsolutePath()+","+classesDir.getAbsolutePath());
72              AlternativeResourceLoader loader = new AlternativeDirectoryResourceLoader();
73              assertEquals(new File(base, "classes").toURL(), loader.getResource("classes"));
74              assertEquals(new File(classesDir, "com").toURL(), loader.getResource("com"));
75              assertNull(loader.getResource("asdfasdfasf"));
76          }
77          finally
78          {
79              System.getProperties().remove(AlternativeDirectoryResourceLoader.PLUGIN_RESOURCE_DIRECTORIES);
80          }
81      }
82  
83      public void testGetResourceWithWhitespace() throws MalformedURLException
84      {
85          try
86          {
87              File classesDir = new File(base, "classes");
88              System.setProperty(AlternativeDirectoryResourceLoader.PLUGIN_RESOURCE_DIRECTORIES,
89                      "\n" +
90                      "         " + base.getAbsolutePath() + ",\n" +
91                      "         " + classesDir.getAbsolutePath() + "\n" +
92                      "         ");
93              AlternativeResourceLoader loader = new AlternativeDirectoryResourceLoader();
94              assertEquals(new File(base, "classes").toURL(), loader.getResource("classes"));
95              assertEquals(new File(classesDir, "com").toURL(), loader.getResource("com"));
96              assertNull(loader.getResource("asdfasdfasf"));
97          }
98          finally
99          {
100             System.getProperties().remove(AlternativeDirectoryResourceLoader.PLUGIN_RESOURCE_DIRECTORIES);
101         }
102     }
103 
104     public void testGetResourceNoProperty() throws MalformedURLException
105     {
106         AlternativeResourceLoader loader = new AlternativeDirectoryResourceLoader();
107         assertNull(loader.getResource("classes"));
108         assertNull(loader.getResource("asdfasdfasf"));
109     }
110 
111     public void testGetResourceAsStream() throws MalformedURLException
112     {
113         InputStream in = null;
114         try
115         {
116             System.setProperty(AlternativeDirectoryResourceLoader.PLUGIN_RESOURCE_DIRECTORIES, base.getAbsolutePath());
117             AlternativeResourceLoader loader = new AlternativeDirectoryResourceLoader();
118             in  = loader.getResourceAsStream("kid.txt");
119             assertNotNull(in);
120             assertNull(loader.getResource("asdfasdfasf"));
121         }
122         finally
123         {
124             System.getProperties().remove(AlternativeDirectoryResourceLoader.PLUGIN_RESOURCE_DIRECTORIES);
125             IOUtils.closeQuietly(in);
126         }
127     }
128 }