Author: rmannibucau
Date: Fri Jun 22 10:52:57 2012
New Revision: 1352839

URL: http://svn.apache.org/viewvc?rev=1352839&view=rev
Log:
TOMEE-253 managing tomee version in update checker

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=1352839&r1=1352838&r2=1352839&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
 Fri Jun 22 10:52:57 2012
@@ -16,11 +16,12 @@
  */
 package org.apache.openejb.util;
 
+import java.io.IOException;
+import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.net.URL;
 
-import org.apache.openejb.assembler.classic.event.AssemblerCreated;
-import org.apache.openejb.assembler.classic.event.ConfigurationLoaded;
+import java.util.Properties;
 import org.apache.openejb.loader.IO;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.observer.Observes;
@@ -29,15 +30,21 @@ import org.apache.openejb.observer.event
 public class UpdateChecker {
     private static final Logger LOGGER = 
Logger.getInstance(LogCategory.OPENEJB_STARTUP, UpdateChecker.class);
 
-    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";
+    private static final String TOMEE_ARTIFACT = "apache-tomee";
+
+    // config
+    private String repoUrl = 
SystemInstance.get().getOptions().get("openejb.version.check.repo.url", 
"http://repo1.maven.org/maven2/";);
+    private String groupId = "org/apache/openejb/";
+    private String metadata = "/maven-metadata.xml";
+    private String checkerProxy = 
SystemInstance.get().getOptions().get("openejb.version.check.proxy", (String) 
null);
+    private String auto = "auto";
+    private String url = 
SystemInstance.get().getOptions().get("openejb.version.check.url", auto);
+    private String tag = "latest";
+    private String undefined = "undefined";
+    private String latest = "undefined";
+
+    // internal
+    private String current = null;
 
     public void check(@Observes ObserverAdded event) {
         if (event.getObserver() != this) {
@@ -51,9 +58,9 @@ public class UpdateChecker {
         String proxyProtocol = null;
 
 
-        if (CHECKER_PROXY != null) {
+        if (checkerProxy != null) {
             try {
-                final URL proxyUrl = new URL(CHECKER_PROXY);
+                final URL proxyUrl = new URL(checkerProxy);
                 proxyProtocol = proxyUrl.getProtocol();
 
                 originalProxyHost = System.getProperty(proxyProtocol + 
".proxyHost");
@@ -75,19 +82,19 @@ public class UpdateChecker {
                     }
                 }
             } catch (MalformedURLException e) {
-                CHECKER_PROXY = null;
+                checkerProxy = null;
             }
         }
 
-        String realUrl = URL;
+        String realUrl = url;
         if ("auto".equals(realUrl)) {
-            realUrl = REPO_URL + OPENEJB_GROUPID + artifact() + METADATA;
+            realUrl = repoUrl + groupId + artifact() + metadata;
         }
 
         try {
             final URL url = new URL(realUrl);
             final String metaData = IO.readFileAsString(url.toURI());
-            LATEST = extractLatest(metaData);
+            latest = extractLatest(metaData);
             if (!usesLatest()) {
                 LOGGER.warning(message());
             }
@@ -106,7 +113,7 @@ public class UpdateChecker {
     private static String artifact() {
         try {
             
UpdateChecker.class.getClassLoader().loadClass("org.apache.tomee.catalina.TomcatWebAppBuilder");
-            return "apache-tomee";
+            return TOMEE_ARTIFACT;
         } catch (ClassNotFoundException e) {
             return "openejb";
         }
@@ -120,40 +127,93 @@ public class UpdateChecker {
         }
     }
 
-    private static String extractLatest(final String metaData) {
+    private String extractLatest(final String metaData) {
         if (metaData != null) {
             boolean found = false;
             for (String s : metaData.replace(">", ">\n").split("\n")) {
                 if (found) {
-                    return trim(s).replace("</" + TAG + ">", "");
+                    return trim(s).replace("</" + tag + ">", "");
                 }
-                if (!s.isEmpty() && trim(s).endsWith("<" + TAG + ">")) {
+                if (!s.isEmpty() && trim(s).endsWith("<" + tag + ">")) {
                     found = true;
                 }
             }
         }
-        return UNDEFINED;
+        return undefined;
     }
 
-    private static String trim(final String s) {
+    private String trim(final String s) {
         return s.replace("\t", "").replace(" ", "");
     }
 
-    public static boolean usesLatest() {
-        return OpenEjbVersion.get().getVersion().equals(LATEST);
+    public boolean usesLatest() {
+        if (artifact().contains(TOMEE_ARTIFACT)) {
+            final InputStream is = 
getClass().getClassLoader().getResourceAsStream("META-INF/maven/org.apache.openejb/tomee-catalina/pom.properties");
+            if (is != null) {
+                final Properties prop = new Properties();
+                try {
+                    prop.load(is);
+                    current = prop.getProperty("version");
+                } catch (IOException e) {
+                    LOGGER.error("can't get tomee version, will use openejb 
one");
+                }
+            }
+        }
+
+        if (current == null) {
+            current  = OpenEjbVersion.get().getVersion();
+        }
+
+
+        return current.equals(latest);
     }
 
-    public static String message() {
-        if (UNDEFINED.equals(LATEST)) {
+    public String message() {
+        if (undefined.equals(latest)) {
             return "can't determine the latest version";
         }
 
-        final String version = OpenEjbVersion.get().getVersion();
-        if (version.equals(LATEST)) {
+        if (current.equals(latest)) {
             return "running on the latest version";
         }
-        return new StringBuilder("you are using the version ").append(version)
-                .append(", our latest stable version ").append(LATEST)
-                .append(" is available on ").append(REPO_URL).toString();
+        return new StringBuilder("you are using the version ").append(current)
+                .append(", our latest stable version ").append(latest)
+                .append(" is available on ").append(repoUrl).toString();
+    }
+
+    public void setRepoUrl(final String repoUrl) {
+        this.repoUrl = repoUrl;
+    }
+
+    public void setGroupId(final String groupId) {
+        this.groupId = groupId;
+    }
+
+    public void setMetadata(final String metadata) {
+        this.metadata = metadata;
+    }
+
+    public void setCheckerProxy(final String checkerProxy) {
+        this.checkerProxy = checkerProxy;
+    }
+
+    public void setAuto(final String auto) {
+        this.auto = auto;
+    }
+
+    public void setUrl(final String url) {
+        this.url = url;
+    }
+
+    public void setTag(final String tag) {
+        this.tag = tag;
+    }
+
+    public void setUndefined(final String undefined) {
+        this.undefined = undefined;
+    }
+
+    public void setLatest(final String latest) {
+        this.latest = latest;
     }
 }


Reply via email to