You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/02/01 18:48:32 UTC
svn commit: r1239233 - in
/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb:
config/ConfigurationFactory.java util/UpdateChecker.java
Author: rmannibucau
Date: Wed Feb 1 17:48:32 2012
New Revision: 1239233
URL: http://svn.apache.org/viewvc?rev=1239233&view=rev
Log:
OPENEJB-1762 check latest version and compare it to current version
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
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/config/ConfigurationFactory.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java?rev=1239233&r1=1239232&r2=1239233&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java Wed Feb 1 17:48:32 2012
@@ -18,8 +18,47 @@ package org.apache.openejb.config;
import org.apache.openejb.OpenEJBException;
import org.apache.openejb.Vendor;
-import org.apache.openejb.assembler.classic.*;
-import org.apache.openejb.config.sys.*;
+import org.apache.openejb.assembler.classic.AppInfo;
+import org.apache.openejb.assembler.classic.Assembler;
+import org.apache.openejb.assembler.classic.BmpEntityContainerInfo;
+import org.apache.openejb.assembler.classic.ClientInfo;
+import org.apache.openejb.assembler.classic.CmpEntityContainerInfo;
+import org.apache.openejb.assembler.classic.ConnectionManagerInfo;
+import org.apache.openejb.assembler.classic.ConnectorInfo;
+import org.apache.openejb.assembler.classic.ContainerInfo;
+import org.apache.openejb.assembler.classic.ContainerSystemInfo;
+import org.apache.openejb.assembler.classic.DeploymentExceptionManager;
+import org.apache.openejb.assembler.classic.EjbJarInfo;
+import org.apache.openejb.assembler.classic.FacilitiesInfo;
+import org.apache.openejb.assembler.classic.HandlerChainInfo;
+import org.apache.openejb.assembler.classic.HandlerInfo;
+import org.apache.openejb.assembler.classic.JndiContextInfo;
+import org.apache.openejb.assembler.classic.ManagedContainerInfo;
+import org.apache.openejb.assembler.classic.MdbContainerInfo;
+import org.apache.openejb.assembler.classic.OpenEjbConfiguration;
+import org.apache.openejb.assembler.classic.OpenEjbConfigurationFactory;
+import org.apache.openejb.assembler.classic.ProxyFactoryInfo;
+import org.apache.openejb.assembler.classic.ResourceInfo;
+import org.apache.openejb.assembler.classic.SecurityServiceInfo;
+import org.apache.openejb.assembler.classic.ServiceInfo;
+import org.apache.openejb.assembler.classic.SingletonSessionContainerInfo;
+import org.apache.openejb.assembler.classic.StatefulSessionContainerInfo;
+import org.apache.openejb.assembler.classic.StatelessSessionContainerInfo;
+import org.apache.openejb.assembler.classic.TransactionServiceInfo;
+import org.apache.openejb.assembler.classic.WebAppInfo;
+import org.apache.openejb.config.sys.AbstractService;
+import org.apache.openejb.config.sys.AdditionalDeployments;
+import org.apache.openejb.config.sys.ConnectionManager;
+import org.apache.openejb.config.sys.Container;
+import org.apache.openejb.config.sys.Deployments;
+import org.apache.openejb.config.sys.JaxbOpenejb;
+import org.apache.openejb.config.sys.JndiProvider;
+import org.apache.openejb.config.sys.Openejb;
+import org.apache.openejb.config.sys.ProxyFactory;
+import org.apache.openejb.config.sys.Resource;
+import org.apache.openejb.config.sys.SecurityService;
+import org.apache.openejb.config.sys.ServiceProvider;
+import org.apache.openejb.config.sys.TransactionManager;
import org.apache.openejb.jee.Application;
import org.apache.openejb.jee.EjbJar;
import org.apache.openejb.jee.Handler;
@@ -35,6 +74,7 @@ import org.apache.openejb.util.Messages;
import org.apache.openejb.util.SuperProperties;
import org.apache.openejb.util.URISupport;
import org.apache.openejb.util.URLs;
+import org.apache.openejb.util.UpdateChecker;
import javax.ejb.embeddable.EJBContainer;
import java.io.File;
@@ -44,7 +84,16 @@ import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLClassLoader;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
import static org.apache.openejb.config.DeploymentsResolver.DEPLOYMENTS_CLASSPATH_PROPERTY;
import static org.apache.openejb.config.ServiceUtils.implies;
@@ -64,6 +113,7 @@ public class ConfigurationFactory implem
private DynamicDeployer deployer;
private final DeploymentLoader deploymentLoader;
private final boolean offline;
+ private Thread updateCheckerThreader = null;
private static final String CLASSPATH_AS_EAR = "openejb.deployments.classpath.ear";
static final String WEBSERVICES_ENABLED = "openejb.webservices.enabled";
@@ -267,6 +317,11 @@ public class ConfigurationFactory implem
return sys;
}
+ if (!offline && updateCheckerThreader == null) {
+ updateCheckerThreader = new Thread(new UpdateChecker());
+ updateCheckerThreader.start();
+ }
+
if (configLocation != null) {
openejb = JaxbOpenejb.readConfig(configLocation);
} else {
@@ -365,6 +420,17 @@ public class ConfigurationFactory implem
}
}
+ if (!offline) {
+ try {
+ updateCheckerThreader.join(10000); // 10s is already a lot
+ } catch (InterruptedException ignored) {
+ // no-op
+ }
+ if (!UpdateChecker.usesLatest()) {
+ logger.warning(UpdateChecker.message());
+ }
+ }
+
final OpenEjbConfiguration finished = sys;
sys = null;
openejb = null;
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=1239233&r1=1239232&r2=1239233&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 Feb 1 17:48:32 2012
@@ -1,49 +1,28 @@
package org.apache.openejb.util;
import java.net.URL;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicReference;
public class UpdateChecker implements Runnable {
private static final String SKIP_CHECK = "openen.version.check.skip";
private static final String REPO_URL = System.getProperty("openejb.version.check.repo.url", "http://repo1.maven.org/maven2/org/apache/openejb/");
private static final String URL = System.getProperty("openejb.version.check.url", REPO_URL + "openejb/maven-metadata.xml");
private static final String TAG = "latest";
- private static final AtomicBoolean DONE = new AtomicBoolean(false);
- private static final AtomicReference<String> RESULT = new AtomicReference<String>("");
- private static final CountDownLatch LATCH = new CountDownLatch(1);
- private static final String ERROR_MESSAGE = "can't check last version";
- public static final String UNDEFINED = "undefined";
+ private static final String UNDEFINED = "undefined";
+ private static String LATEST = "undefined";
@Override
public void run() {
- if (DONE.get() || isSkipped()) {
+ if (isSkipped()) {
return;
}
try {
final URL url = new URL(URL);
final String metaData = IO.readFileAsString(url.toURI());
- final String latest = extractLatest(metaData);
- RESULT.set(message(latest, OpenEjbVersion.get().getVersion()));
+ LATEST = extractLatest(metaData);
} catch (Exception e) {
- DONE.set(true);
- RESULT.set(ERROR_MESSAGE);
- }
- LATCH.countDown();
- }
-
- private static String message(final String latest, final String version) {
- if (UNDEFINED.equals(latest)) {
- return "can't determine latest version";
+ // ignored
}
- if (version.equals(latest)) {
- return "running on the latest version";
- }
- return new StringBuilder("current version => ").append(version)
- .append(", latest stable version ").append(latest)
- .append(" is available on ").append(REPO_URL).toString();
}
private static String extractLatest(final String metaData) {
@@ -65,17 +44,26 @@ public class UpdateChecker implements Ru
return s.replace("\t", "").replace(" ", "");
}
+ public static boolean usesLatest() {
+ return OpenEjbVersion.get().getVersion().equals(LATEST);
+ }
+
public static String message() {
if (isSkipped()) {
- return "version check is skipped";
+ return "version checking is skipped";
}
- try {
- LATCH.await();
- } catch (InterruptedException e) {
- return ERROR_MESSAGE;
+ if (UNDEFINED.equals(LATEST)) {
+ return "can't determine the latest version";
}
- return RESULT.get();
+
+ final String version = OpenEjbVersion.get().getVersion();
+ if (version.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();
}
public static boolean isSkipped() {