1 package com.atlassian.plugin.main;
2
3 import static com.atlassian.plugin.main.PackageScannerConfigurationBuilder.packageScannerConfiguration;
4 import static com.atlassian.plugin.main.PluginsConfigurationBuilder.pluginsConfiguration;
5
6 import org.apache.log4j.Logger;
7 import org.apache.log4j.PropertyConfigurator;
8 import org.apache.commons.io.IOUtils;
9
10 import java.io.File;
11 import java.io.IOException;
12 import java.io.InputStream;
13 import java.util.Collections;
14 import java.util.Properties;
15
16
17
18
19
20
21
22 public class Main
23 {
24
25 public static void main(final String[] args)
26 {
27 initialiseLogger();
28 final File pluginDir = new File("plugins");
29 pluginDir.mkdir();
30 System.out.println("Created plugins directory " + pluginDir.getAbsolutePath());
31
32 final PluginsConfiguration config = pluginsConfiguration().pluginDirectory(pluginDir).packageScannerConfiguration(
33 packageScannerConfiguration().packagesToInclude("org.apache.*", "com.atlassian.*", "org.dom4j*").packagesVersions(
34 Collections.singletonMap("org.apache.log4j", "1.2.15")).build()).build();
35 final AtlassianPlugins plugins = new AtlassianPlugins(config);
36
37 Runtime.getRuntime().addShutdownHook(new Thread()
38 {
39 @Override
40 public void run()
41 {
42 System.out.println("Cleaning up...");
43 plugins.stop();
44 }
45 });
46
47 plugins.start();
48
49 final Thread hotDeploy = new Thread("Hot Deploy")
50 {
51 @Override
52 public void run()
53 {
54 while (true)
55 {
56
57 plugins.getPluginController().scanForNewPlugins();
58 try
59 {
60 Thread.sleep(5000);
61 }
62 catch (final InterruptedException e)
63 {
64
65 break;
66 }
67 }
68 }
69 };
70 hotDeploy.start();
71 }
72
73 private static void initialiseLogger()
74 {
75 final Properties logProperties = new Properties();
76
77 InputStream in = null;
78 try
79 {
80 in = Main.class.getResourceAsStream("/log4j-standalone.properties");
81 logProperties.load(in);
82 PropertyConfigurator.configure(logProperties);
83 Logger.getLogger(Main.class).info("Logging initialized.");
84 }
85 catch (final IOException e)
86 {
87 throw new RuntimeException("Unable to load logging");
88 }
89 finally
90 {
91 IOUtils.closeQuietly(in);
92 }
93 }
94
95 }