Author: wrzep Date: 2006-05-23 11:46:10 -0400 (Tue, 23 May 2006) New Revision: 4380 Added: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/Tools.java Removed: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/common/Tools.java 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/StatusConfWatcher.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusPortlet.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/Last7DaysStatusPlugin.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/ScoresService.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresMDB.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresServiceImpl.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/protocol/GetScoresRequestImpl.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/protocol/GetScoresRequest.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/Columns.java 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/ScoresManagerSync.java Log: JBLAB-599 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-05-23 14:18:35 UTC (rev 4379) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2006-05-23 15:46:10 UTC (rev 4380) @@ -22,6 +22,7 @@ package org.jboss.forge.status; +import java.sql.Timestamp; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -71,6 +72,8 @@ /** Projects present in the Status Matrix */ private Projects projects; + private Timestamp timestamp; + private Logger log; /** @@ -92,13 +95,13 @@ PluginsValues pluginsValues; try { - // Get current scores + // Get latest available scores + ScoresManager.init(portalName, serviceConf); + pluginsValues = ScoresManager.getLatestScores(); - ScoresManager.init(portalName, serviceConf); + // Compute and save current scores ScoresManager.save(projects, pluginsConf); - - pluginsValues = ScoresManager.getCurrentScores(); - + timestamp = ScoresManager.requestCurrentScores(); } catch (ScoresSaveException e) { log.error("Saving scores failed ", e); return; @@ -203,4 +206,17 @@ return colMap; } + public boolean needsUpdate() { + + PluginsValues pluginsValues = ScoresManager.getScores(timestamp); + + if (pluginsValues == null) { + return false; + } + + //TODO refresh scores + + return true; + } + } \ No newline at end of file Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusConfWatcher.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusConfWatcher.java 2006-05-23 14:18:35 UTC (rev 4379) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusConfWatcher.java 2006-05-23 15:46:10 UTC (rev 4380) @@ -29,8 +29,11 @@ import org.jboss.shotoku.cache.ChangeType; import org.jboss.shotoku.cache.ShotokuResourceWatcher; -public class StatusConfWatcher extends ShotokuResourceWatcher<String, StatusDescriptor> { +public class StatusConfWatcher extends + ShotokuResourceWatcher<String, StatusDescriptor> { + public StatusConfWatcher(long interval) {} + private StatusDescriptor getDesc(String portalName) { return new StatusDescriptor(portalName, getContentManager(portalName)); } @@ -49,7 +52,8 @@ /* Watch all project.xml files. * We assume that they contain entries used by plugins */ - Set<String> projectXmlPathsSet = Locations.getProjectXmlPathsSet(portalName); + Set<String> projectXmlPathsSet = + Locations.getProjectXmlPathsSet(portalName); for (String projectXmlPath : projectXmlPathsSet) { addWatchedPath(key, projectXmlPath); @@ -59,7 +63,14 @@ } @Override - protected void update(String key, StatusDescriptor currentObject, Map<String, ChangeType> changes) { + /* Called only when some of the watched resources changes. */ + public void update(String key, StatusDescriptor currentObject, + Map<String, ChangeType> changes) { put(key, getDesc(key)); } + + @Override + public void update(String key, StatusDescriptor desc) { + desc.update(); + } } Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java 2006-05-23 14:18:35 UTC (rev 4379) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java 2006-05-23 15:46:10 UTC (rev 4380) @@ -83,6 +83,8 @@ } public DelegateContext getContext() { + + update(); return context; } @@ -102,5 +104,12 @@ Node root = parser.getDocument().getDocumentElement(); return root; } + + public void update() { + + if (status.needsUpdate()) { + fillContext(); + } + } } Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusPortlet.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusPortlet.java 2006-05-23 14:18:35 UTC (rev 4379) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusPortlet.java 2006-05-23 15:46:10 UTC (rev 4380) @@ -29,7 +29,7 @@ import org.jboss.forge.common.ForgeHelper; import org.jboss.forge.status.common.Locations; -import org.jboss.forge.status.common.Tools; +import org.jboss.forge.status.tools.Tools; import org.jboss.portal.common.context.DelegateContext; import org.jboss.portal.core.servlet.jsp.PortalJsp; Deleted: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/common/Tools.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/common/Tools.java 2006-05-23 14:18:35 UTC (rev 4379) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/common/Tools.java 2006-05-23 15:46:10 UTC (rev 4380) @@ -1,21 +0,0 @@ -package org.jboss.forge.status.common; - -import org.jboss.forge.status.StatusDescriptor; -import org.jboss.forge.status.StatusConfWatcher; - -import org.jboss.shotoku.aop.CacheItem; - -/** - * Common functions. - * @author Pawel Wrzeszcz - */ -public class Tools { - - @CacheItem - private static StatusConfWatcher conf; - - public static synchronized StatusDescriptor getDesc(final String portalName) { - return conf.get(portalName); - } - -} Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/Last7DaysStatusPlugin.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/Last7DaysStatusPlugin.java 2006-05-23 14:18:35 UTC (rev 4379) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/Last7DaysStatusPlugin.java 2006-05-23 15:46:10 UTC (rev 4380) @@ -23,7 +23,6 @@ package org.jboss.forge.status.plugins; import java.util.Calendar; -import java.util.Date; import java.util.Properties; import org.jboss.forge.common.projects.Projects; @@ -74,13 +73,11 @@ long prevValue; Calendar cal = Calendar.getInstance(); - Date now = cal.getTime(); cal.add(Calendar.DAY_OF_MONTH,-7); - Date prev = cal.getTime(); try { prevValue = ScoresManagerSync.getValue( - insidePlugin.getId(), projectId, prev,now); + insidePlugin.getId(), projectId, cal); } catch (GetScoresException e) { return 0; } Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/ScoresService.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/ScoresService.java 2006-05-23 14:18:35 UTC (rev 4379) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/ScoresService.java 2006-05-23 15:46:10 UTC (rev 4380) @@ -22,7 +22,7 @@ package org.jboss.forge.status.service; -import java.util.Date; +import java.util.Calendar; import java.util.List; import org.jboss.forge.common.projects.Projects; @@ -39,8 +39,8 @@ public void save(Projects projects, List<PluginConf> pluginsConf, String portalName) throws ScoresSaveException; - public PluginsValues getPluginsValues(String portalName, Date date) + public PluginsValues getPluginsValues(String portalName, Calendar cal) throws GetScoresException; - public boolean hasPluginsValues(String portalName, Date date); + public boolean hasPluginsValues(String portalName, Calendar cal); } \ No newline at end of file Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresMDB.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresMDB.java 2006-05-23 14:18:35 UTC (rev 4379) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresMDB.java 2006-05-23 15:46:10 UTC (rev 4380) @@ -23,7 +23,7 @@ package org.jboss.forge.status.service.impl; import java.sql.Timestamp; -import java.util.Date; +import java.util.Calendar; import java.util.List; import javax.ejb.ActivationConfigProperty; @@ -109,13 +109,12 @@ private static void handleRequest(GetScoresRequest getScoresRequest) { - Date date = getScoresRequest.getDate(); - Date toDate = getScoresRequest.getToDate(); + Calendar cal = getScoresRequest.getCalendar(); Timestamp timestamp = getScoresRequest.getTimestamp(); PluginsValues pluginsValues = null; try { - pluginsValues = ScoresManagerSync.getScores(date, toDate); + pluginsValues = ScoresManagerSync.getScores(cal); } catch (GetScoresException e) { log.error(e); //TODO return; //?? Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresServiceImpl.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresServiceImpl.java 2006-05-23 14:18:35 UTC (rev 4379) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresServiceImpl.java 2006-05-23 15:46:10 UTC (rev 4380) @@ -37,7 +37,6 @@ import javax.ejb.Remote; import org.jboss.annotation.ejb.LocalBinding; -import org.jboss.annotation.ejb.Management; import org.jboss.annotation.ejb.RemoteBinding; import org.jboss.annotation.ejb.Service; @@ -68,7 +67,6 @@ */ @Service(objectName=Tags.STATUS_SERVICE_NAME) -@Management(ScoresService.class) @Local(ScoresServiceLocal.class) @LocalBinding(jndiBinding=Constants.STATUS_LOCAL_SERVICE) @Remote(ScoresServiceRemote.class) @@ -161,18 +159,17 @@ * @return scores from the given date * @throws GetScoresException */ - public PluginsValuesImpl getPluginsValues(String portalName, Date date) + public PluginsValuesImpl getPluginsValues(String portalName, Calendar cal) throws GetScoresException { log.info("Returning plugins values..."); // null date means today - if (date == null) { - Calendar cal = Calendar.getInstance(); - date = cal.getTime(); + if (cal == null) { + cal = Calendar.getInstance(); } - String key = getNodeName(date); + String key = getNodeName(cal); PluginsValuesImpl v = values.get(key); if (v == null) { // Not in cache => get value and store it @@ -190,7 +187,7 @@ } if (dir != null) { - v = getPluginsValues(dir, date); + v = getPluginsValues(dir, cal); log.info("Finished."); values.put(key,v); } @@ -206,12 +203,12 @@ * @return * @throws GetScoresException */ - private PluginsValuesImpl getPluginsValues(Directory dir, Date date) + private PluginsValuesImpl getPluginsValues(Directory dir, Calendar cal) throws GetScoresException { // Get appropriate node Node node = null; - String nodeName = getNodeName(date); + String nodeName = getNodeName(cal); try { node = dir.getNode(nodeName); @@ -319,15 +316,16 @@ /** * Gets name of Node containing saved data from specified datestamp. - * Notice that only year, month and day matter in passed <code>date</code>. + * Notice that only year, month and day matter in passed <code>cal</code>. * - * @param date datestamp * @return Node name */ - private String getNodeName(Date date) { + private String getNodeName(Calendar cal) { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + Date date = cal.getTime(); + return df.format(date); } @@ -336,18 +334,17 @@ */ private String getCurrentNodeName() { - Calendar cal = Calendar.getInstance(); - Date today = cal.getTime(); + Calendar today = Calendar.getInstance(); return getNodeName(today); } - public boolean hasPluginsValues(String portalName, Date date) { + public boolean hasPluginsValues(String portalName, Calendar cal) { PluginsValuesImpl pluginsValues = null; try { - pluginsValues = getPluginsValues(portalName, date); + pluginsValues = getPluginsValues(portalName, cal); } catch (GetScoresException e) { return false; } Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/protocol/GetScoresRequestImpl.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/protocol/GetScoresRequestImpl.java 2006-05-23 14:18:35 UTC (rev 4379) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/protocol/GetScoresRequestImpl.java 2006-05-23 15:46:10 UTC (rev 4380) @@ -23,8 +23,7 @@ package org.jboss.forge.status.service.impl.protocol; import java.sql.Timestamp; -import java.util.Date; - +import java.util.Calendar; import org.jboss.forge.status.service.protocol.GetScoresRequest; /** @@ -34,26 +33,20 @@ private static final long serialVersionUID = 7844595317056960170L; - private Date date; - private Date toDate; + private Calendar cal; private Timestamp timestamp; - public GetScoresRequestImpl(Date date, Date toDate, + public GetScoresRequestImpl(Calendar cal, Timestamp timestamp) { - this.date = date; - this.toDate = toDate; + this.cal = cal; this.timestamp = timestamp; } - public Date getDate() { - return date; + public Calendar getCalendar() { + return cal; } - public Date getToDate() { - return toDate; - } - public Timestamp getTimestamp() { return timestamp; } Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/protocol/GetScoresRequest.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/protocol/GetScoresRequest.java 2006-05-23 14:18:35 UTC (rev 4379) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/protocol/GetScoresRequest.java 2006-05-23 15:46:10 UTC (rev 4380) @@ -24,16 +24,14 @@ import java.io.Serializable; import java.sql.Timestamp; -import java.util.Date; +import java.util.Calendar; /** * @author Pawel Wrzeszcz */ public interface GetScoresRequest extends Serializable { - public Date getDate(); - - public Date getToDate(); + public Calendar getCalendar(); public Timestamp getTimestamp(); Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/Columns.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/Columns.java 2006-05-23 14:18:35 UTC (rev 4379) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/Columns.java 2006-05-23 15:46:10 UTC (rev 4380) @@ -86,14 +86,6 @@ orderPluginId = XmlTools.getChildNodeValue(pageRoot, Tags.ORDER_PLUGIN_ELEMENT); } - - /** - * @param projects Projects present in the Status Matrix - */ - public Columns(Projects projects) { - this.projects = projects; - columns = new ArrayList<Column>(); - } /** * Adds to the columns list columns defined in columnsRoot. 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-05-23 14:18:35 UTC (rev 4379) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/ScoresManager.java 2006-05-23 15:46:10 UTC (rev 4380) @@ -24,7 +24,7 @@ import java.io.Serializable; import java.sql.Timestamp; -import java.util.Date; +import java.util.Calendar; import java.util.List; import java.util.Properties; @@ -62,7 +62,7 @@ public static void init(String portalName, ServiceConf serviceConf) { - ScoresManagerSync.init(portalName, serviceConf); //TODO inheritance + ScoresManagerSync.init(portalName, serviceConf); isRemote = serviceConf.isRemote(); System.out.println("remote: " + isRemote); @@ -85,23 +85,22 @@ } } - public static PluginsValues getScores(Date date, Date toDate) + public static Timestamp requestScores(Calendar cal) throws GetScoresException { - //TODO toDate Timestamp timestamp = new Timestamp(System.currentTimeMillis()); GetScoresRequest getScoresRequest = - new GetScoresRequestImpl(date, toDate, timestamp); - - // Send message + new GetScoresRequestImpl(cal, timestamp); + try { sendMessage(Constants.GET_SCORES_MESSAGE, getScoresRequest); } catch (Exception e) { throw new GetScoresException(e); } - PluginsValues pluginsValues = null; + return timestamp; + /* int attempts = 0; for (;;) { @@ -121,38 +120,47 @@ throw new GetScoresException(e); } } + */ + } + + public static Timestamp requestCurrentScores() + throws GetScoresException { - return pluginsValues; + Calendar cal = Calendar.getInstance(); + + return requestScores(cal); } - /** - * For the specified plugin returns historical project score - * from the given <code>date</code> in the past. - * If scores from specified day are not available, - * the next available scores saved at the day before or equal - * to <code>toDate</code> are returned. - * - * Notice that only year, month and day matter in passed dates. - * - * @return project score from the given date for specified plugin - * @throws GetScoresException - */ - public static long getValue(String pluginId, String projectId, - Date date, Date toDate) - throws GetScoresException { + public static PluginsValues getScores(Timestamp timestamp) { + - PluginsValues pluginsValues = getScores(date, toDate); - - return pluginsValues.getPluginValue(pluginId, projectId); + PluginsValues pluginsValues = RecordManager.get(timestamp); + + System.out.println("attempt"); + + return pluginsValues; } - - public static PluginsValues getCurrentScores() + + public static PluginsValues getLatestScores() throws GetScoresException { - Date now = new Date(); + Calendar cal = Calendar.getInstance(); + int attempts = 0; - return getScores(now, now); + for(;;) { + + if (ScoresManagerSync.hasScores(cal)) { + return ScoresManagerSync.getScores(cal); + } + + if ((attempts++) == Constants.MAX_ATTEMPTS) { + return null; + } + + cal.add(Calendar.DAY_OF_MONTH, -1); + } } + private static void sendMessage(String name, Serializable request) throws NamingException, JMSException { @@ -179,5 +187,4 @@ sender.send(message); session.close (); } - } Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/ScoresManagerSync.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/ScoresManagerSync.java 2006-05-23 14:18:35 UTC (rev 4379) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/ScoresManagerSync.java 2006-05-23 15:46:10 UTC (rev 4380) @@ -22,7 +22,7 @@ package org.jboss.forge.status.tools; -import java.util.Date; +import java.util.Calendar; import java.util.List; import java.util.Properties; @@ -76,14 +76,14 @@ service.save(projects, pluginsConf, portalName); } - public static PluginsValues getScores(Date date, Date toDate) + public static PluginsValues getScores(Calendar cal) throws GetScoresException { PluginsValues pluginsValues = null; try { ScoresService service = getService(); - pluginsValues = service.getPluginsValues(portalName, date); + pluginsValues = service.getPluginsValues(portalName, cal); } catch (Exception e) { throw new GetScoresException(e); } @@ -95,12 +95,21 @@ return pluginsValues; } + public static boolean hasScores(Calendar cal) { + + ScoresService service; + try { + service = getService(); + } catch (NamingException e) { + return false; + } + + return service.hasPluginsValues(portalName, cal); + } + /** * For the specified plugin returns historical project score * from the given <code>date</code> in the past. - * If scores from specified day are not available, - * the next available scores saved at the day before or equal - * to <code>toDate</code> are returned. * * Notice that only year, month and day matter in passed dates. * @@ -108,10 +117,10 @@ * @throws GetScoresException */ public static long getValue(String pluginId, String projectId, - Date date, Date toDate) + Calendar cal) throws GetScoresException { - PluginsValues pluginsValues = getScores(date, toDate); + PluginsValues pluginsValues = getScores(cal); return pluginsValues.getPluginValue(pluginId, projectId); } @@ -119,9 +128,9 @@ public static PluginsValues getCurrentScores() throws GetScoresException { - Date now = new Date(); + Calendar now = Calendar.getInstance(); - return getScores(now, now); + return getScores(now); } private static ScoresService getService() throws NamingException { Added: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/Tools.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/Tools.java 2006-05-23 14:18:35 UTC (rev 4379) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/Tools.java 2006-05-23 15:46:10 UTC (rev 4380) @@ -0,0 +1,21 @@ +package org.jboss.forge.status.tools; + +import org.jboss.forge.status.StatusDescriptor; +import org.jboss.forge.status.StatusConfWatcher; + +import org.jboss.shotoku.aop.CacheItem; + +/** + * Common functions. + * @author Pawel Wrzeszcz + */ +public class Tools { + + @CacheItem(interval=10000) + private static StatusConfWatcher conf; + + public static synchronized StatusDescriptor getDesc(final String portalName) { + return conf.get(portalName); + } + +} |