|
From: <jbo...@li...> - 2006-06-29 19:29:58
|
Author: wrzep
Date: 2006-06-29 15:29:37 -0400 (Thu, 29 Jun 2006)
New Revision: 4873
Modified:
labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java
labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/ScoresManager.java
Log:
JBLAB-599
Async save when no scores are available.
Pawel
Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2006-06-29 17:25:39 UTC (rev 4872)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2006-06-29 19:29:37 UTC (rev 4873)
@@ -99,11 +99,11 @@
// Get latest available scores
try {
- ScoresManager.init(portalName, serviceConf);
pluginsValues = ScoresManager.getLatestScores();
updateDate = pluginsValues.getDate();
} catch (GetScoresException e) {
- log.error("Getting computed scores failed ", e);
+ log.warn("Getting computed scores failed ", e);
+ ScoresManager.saveAsync(projects, pluginsConf);
throw e;
}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/ScoresManager.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/ScoresManager.java 2006-06-29 17:25:39 UTC (rev 4872)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/ScoresManager.java 2006-06-29 19:29:37 UTC (rev 4873)
@@ -41,6 +41,7 @@
import org.jboss.forge.status.service.protocol.PluginsValues;
import org.jboss.forge.status.service.protocol.ServiceConf;
import org.jboss.forge.status.common.Constants;
+import org.jboss.logging.Logger;
/**
* @author Pawel Wrzeszcz (pawel.wrzeszcz [at] gmail.com)
@@ -51,6 +52,7 @@
private static String portalName;
private static Properties properties;
private static boolean isRemote;
+ private static Logger log;
public static void init(String portalName, ServiceConf serviceConf) {
@@ -58,8 +60,34 @@
properties = serviceConf.getProperties();
isRemote = serviceConf.isRemote();
+
+ log = Logger.getLogger(ScoresManager.class);
}
+ public static void saveAsync(final Projects projects,
+ final List<PluginConf> pluginsConf) {
+
+ new Thread() {
+
+ public void run() {
+ ScoresManager.saveAsyncOnce(projects, pluginsConf);
+ }
+
+ }.start();
+
+ }
+
+ private static synchronized void saveAsyncOnce(Projects projects,
+ List<PluginConf> pluginsConf) {
+ try {
+ log.info("Saving scores asynchronously...");
+ ScoresManager.save(projects, pluginsConf);
+ log.info("Finished async save.");
+ } catch (ScoresSaveException e) {
+ log.warn("Async saving scores failed.");
+ }
+ }
+
public static void save(Projects projects,
List<PluginConf> pluginsConf)
throws ScoresSaveException {
@@ -72,8 +100,10 @@
throw new ScoresSaveException(e);
}
- service.save(projects, pluginsConf, portalName);
-}
+ service.save(projects, pluginsConf, portalName);
+ }
+
+
public static boolean hasScores(Calendar cal) throws NamingException {
ScoresService service = getService();
|