1
22
23 package com.liferay.portal.util;
24
25 import com.liferay.portal.kernel.util.Validator;
26
27 import java.net.HttpURLConnection;
28 import java.net.URL;
29
30
36 public class BrowserLauncher implements Runnable {
37
38 public void run() {
39 if (Validator.isNull(PropsValues.BROWSER_LAUNCHER_URL)) {
40 return;
41 }
42
43 for (int i = 0; i < 5; i++) {
44 try {
45 Thread.sleep(3000);
46 }
47 catch (InterruptedException ie) {
48 }
49
50 try {
51 URL url = new URL(PropsValues.BROWSER_LAUNCHER_URL);
52
53 HttpURLConnection urlc =
54 (HttpURLConnection)url.openConnection();
55
56 int responseCode = urlc.getResponseCode();
57
58 if (responseCode == HttpURLConnection.HTTP_OK) {
59 try {
60 launchBrowser();
61 }
62 catch (Exception e2) {
63 }
64
65 break;
66 }
67 }
68 catch (Exception e1) {
69 }
70 }
71 }
72
73 protected void launchBrowser() throws Exception {
74 String os = System.getProperty("os.name").toLowerCase();
75
76 Runtime runtime = Runtime.getRuntime();
77
78 if (os.indexOf("mac") >= 0) {
79 launchBrowserApple(runtime);
80 }
81 else if (os.indexOf("win") >= 0) {
82 launchBrowserWindows(runtime);
83 }
84 else {
85 launchBrowserUnix(runtime);
86 }
87 }
88
89 protected void launchBrowserApple(Runtime runtime) throws Exception {
90 runtime.exec("open " + PropsValues.BROWSER_LAUNCHER_URL);
91 }
92
93 protected void launchBrowserUnix(Runtime runtime) throws Exception {
94 StringBuilder sb = new StringBuilder();
95
96 for (int i = 0; i < _BROWSERS.length; i++) {
97 if (i != 0) {
98 sb.append(" || ");
99 }
100
101 sb.append(_BROWSERS[i]);
102 sb.append(" \"");
103 sb.append(PropsValues.BROWSER_LAUNCHER_URL);
104 sb.append("\" ");
105 }
106
107 runtime.exec(new String[] {"sh", "-c", sb.toString()});
108 }
109
110 protected void launchBrowserWindows(Runtime runtime) throws Exception {
111 runtime.exec("cmd.exe /c start " + PropsValues.BROWSER_LAUNCHER_URL);
112 }
113
114 private static final String[] _BROWSERS = {
115 "firefox", "mozilla", "konqueror", "opera"
116 };
117
118 }