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(); |