Author: rmannibucau
Date: Wed Jun 20 15:56:56 2012
New Revision: 1352175
URL: http://svn.apache.org/viewvc?rev=1352175&view=rev
Log:
better management of UpdateChecker vars (using a base repo instead of the
openejb subdirectory and detecting tomee installation), adding proxy management
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/UpdateChecker.java
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/UpdateChecker.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/UpdateChecker.java?rev=1352175&r1=1352174&r2=1352175&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/UpdateChecker.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/UpdateChecker.java
Wed Jun 20 15:56:56 2012
@@ -16,6 +16,9 @@
*/
package org.apache.openejb.util;
+import java.net.MalformedURLException;
+import java.util.HashMap;
+import java.util.Map;
import org.apache.openejb.loader.IO;
import org.apache.openejb.loader.SystemInstance;
@@ -23,8 +26,12 @@ import java.net.URL;
public class UpdateChecker implements Runnable {
private static final String SKIP_CHECK = "openejb.version.check";
- private static final String REPO_URL =
SystemInstance.get().getOptions().get("openejb.version.check.repo.url",
"http://repo1.maven.org/maven2/org/apache/openejb/");
- private static final String URL =
SystemInstance.get().getOptions().get("openejb.version.check.url", REPO_URL +
"openejb/maven-metadata.xml");
+ private static final String REPO_URL =
SystemInstance.get().getOptions().get("openejb.version.check.repo.url",
"http://repo1.maven.org/maven2/");
+ private static final String OPENEJB_GROUPID = "org/apache/openejb/";
+ private static final String METADATA = "/maven-metadata.xml";
+ private static String CHECKER_PROXY =
SystemInstance.get().getOptions().get("openejb.version.check.proxy", (String)
null);
+ private static final String AUTO = "auto";
+ private static final String URL =
SystemInstance.get().getOptions().get("openejb.version.check.url", AUTO);
private static final String TAG = "latest";
private static final String UNDEFINED = "undefined";
private static String LATEST = "undefined";
@@ -35,12 +42,76 @@ public class UpdateChecker implements Ru
return;
}
+ String originalProxyHost = null;
+ String originalProxyPort = null;
+ String originalProxyUser = null;
+ String originalProxyPwd = null;
+ String proxyProtocol = null;
+
+
+ if (CHECKER_PROXY != null) {
+ try {
+ final URL proxyUrl = new URL(CHECKER_PROXY);
+ proxyProtocol = proxyUrl.getProtocol();
+
+ originalProxyHost = System.getProperty(proxyProtocol +
".proxyHost");
+ originalProxyPort = System.getProperty(proxyProtocol +
".proxyPort");
+ originalProxyUser = System.getProperty(proxyProtocol +
".proxyUser");
+ originalProxyPwd = System.getProperty(proxyProtocol +
".proxyPassword");
+
+ System.setProperty(proxyProtocol + ".proxyHost",
proxyUrl.getHost());
+ System.setProperty(proxyProtocol + ".proxyPort",
Integer.toString(proxyUrl.getPort()));
+
+ final String userInfo = proxyUrl.getUserInfo();
+ if (userInfo != null) {
+ int sep = userInfo.indexOf(":");
+ if (sep >= 0) {
+ System.setProperty(proxyProtocol + ".proxyUser",
userInfo.substring(0, sep));
+ System.setProperty(proxyProtocol + ".proxyPassword",
userInfo.substring(sep + 1));
+ } else {
+ System.setProperty(proxyProtocol + ".proxyUser",
userInfo);
+ }
+ }
+ } catch (MalformedURLException e) {
+ CHECKER_PROXY = null;
+ }
+ }
+
+ String realUrl = URL;
+ if ("auto".equals(realUrl)) {
+ realUrl = REPO_URL + OPENEJB_GROUPID + artifact() + METADATA;
+ }
+
try {
- final URL url = new URL(URL);
+ final URL url = new URL(realUrl);
final String metaData = IO.readFileAsString(url.toURI());
LATEST = extractLatest(metaData);
} catch (Exception e) {
// ignored
+ } finally {
+ if (proxyProtocol != null) {
+ resetSystemProp(proxyProtocol + ".proxyHost",
originalProxyHost);
+ resetSystemProp(proxyProtocol + ".proxyPort",
originalProxyPort);
+ resetSystemProp(proxyProtocol + ".proxyUser",
originalProxyUser);
+ resetSystemProp(proxyProtocol + ".proxyPassword",
originalProxyPwd);
+ }
+ }
+ }
+
+ private static String artifact() {
+ try {
+
UpdateChecker.class.getClassLoader().loadClass("org.apache.tomee.catalina.TomcatWebAppBuilder");
+ return "apache-tomee";
+ } catch (ClassNotFoundException e) {
+ return "openejb";
+ }
+ }
+
+ private static void resetSystemProp(final String key, final String value) {
+ if (value == null) {
+ System.clearProperty(key);
+ } else {
+ System.setProperty(key, value);
}
}