[jboss-svn-commits] JBL Code SVN: r12612 - in labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src: web/WEB-INF and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Jun 15 07:13:46 EDT 2007
Author: wrzep
Date: 2007-06-15 07:13:46 -0400 (Fri, 15 Jun 2007)
New Revision: 12612
Added:
labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/LabsKosmosSvnDescriptor.java
labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/LabsKosmosSvnWatcher.java
Modified:
labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/LabsKosmosJiraDescriptor.java
labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/LabsKosmosJiraPortlet.java
labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/LabsKosmosPortlet.java
labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/LabsKosmosSvnPortlet.java
labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/web/WEB-INF/jboss-portlet.xml
labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/web/WEB-INF/tags/listExpander.tag
Log:
JBLAB-868
portlet level cache
Modified: labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/LabsKosmosJiraDescriptor.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/LabsKosmosJiraDescriptor.java 2007-06-15 09:55:24 UTC (rev 12611)
+++ labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/LabsKosmosJiraDescriptor.java 2007-06-15 11:13:46 UTC (rev 12612)
@@ -28,7 +28,7 @@
import hu.midori.kosmos.model.JiraProject;
import hu.midori.kosmos.protocol.JiraService;
-import javax.portlet.GenericPortlet;
+import javax.portlet.PortletContext;
import org.jboss.forge.common.ejb3.LabsServices;
import org.jboss.forge.common.exceptions.ServiceRetrievalException;
@@ -42,31 +42,17 @@
* @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
* @author <a href="mailto:aron.gombas at midori.hu">Aron Gombas</a>
*/
-public class LabsKosmosJiraDescriptor extends GenericPortlet {
+public class LabsKosmosJiraDescriptor {
protected final static Logger log = Logger.getLogger(LabsKosmosJiraDescriptor.class);
- private String projectId;
- private String serviceUrl;
+ private JiraProject jiraProject;
+ private Date timestamp;
public LabsKosmosJiraDescriptor(String projectId, String serviceUrl) {
- this.projectId = projectId;
- this.serviceUrl = serviceUrl;
- }
-
- public JiraProject getProject() {
+ JiraService service = getService(serviceUrl);
- // connect to the web-service
- JiraService service = null;
- HessianProxyFactory factory = new HessianProxyFactory();
- try {
- service = (JiraService)factory.create(JiraService.class, serviceUrl);
- } catch (MalformedURLException ex) {
- log.error("Unable to connect to the service", ex);
- }
-
- Date timestamp = null;
List<JiraProject> projects = null;
String monitoredUrl = getProjectJira(projectId);
@@ -75,23 +61,37 @@
if ((service != null) && (monitoredUrl != null)) {
projects = service.getProjects(monitoredUrl);
- log.info("JIRA project downloaded: " + monitoredUrl);
-
- timestamp = service.getTimestamp();
- log.debug("JIRA timestamp: " + timestamp);
}
if ((projects != null) && (projects.size() > 0)) {
- return projects.get(0);
+
+ timestamp = service.getTimestamp();
+ jiraProject = projects.get(0);
+
+ log.info("JIRA project downloaded: " + monitoredUrl + " timestamp: " + timestamp);
+ } else {
+ log.info("Failed to download JIRA project: " + monitoredUrl);
}
- return null;
}
- public Date getTimestamp() {
- // TODO Auto-generated method stub
- return null;
+ public void fillContext(PortletContext portletContext) {
+
+ portletContext.setAttribute("project", jiraProject);
+ portletContext.setAttribute("timestamp", timestamp);
}
+
+ private static JiraService getService(String serviceUrl) {
+
+ JiraService service = null;
+ HessianProxyFactory factory = new HessianProxyFactory();
+ try {
+ service = (JiraService)factory.create(JiraService.class, serviceUrl);
+ } catch (MalformedURLException ex) {
+ log.error("Unable to connect to the service", ex);
+ }
+ return service;
+ }
private static String getProjectJira(String projectId) {
Modified: labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/LabsKosmosJiraPortlet.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/LabsKosmosJiraPortlet.java 2007-06-15 09:55:24 UTC (rev 12611)
+++ labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/LabsKosmosJiraPortlet.java 2007-06-15 11:13:46 UTC (rev 12612)
@@ -21,8 +21,6 @@
*/
package org.jboss.forge.kosmos;
-import hu.midori.kosmos.model.JiraProject;
-import java.util.Date;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
@@ -35,8 +33,8 @@
* @author <a href="mailto:aron.gombas at midori.hu">Aron Gombas</a>
*/
public class LabsKosmosJiraPortlet extends LabsKosmosPortlet {
-
- @CacheItem(interval=1000*60*2)
+
+ @CacheItem(interval=KOSMOS_PORTLET_UPDATE_INTERVAL)
private static LabsKosmosJiraWatcher jiraWatcher;
@Override
@@ -46,14 +44,8 @@
LabsKosmosJiraDescriptor desc = jiraWatcher.get(new Pair<String, String>(projectId,serviceUrl));
- JiraProject project = desc.getProject();
- Date timestamp = desc.getTimestamp();
-
- // render response
- getPortletContext().setAttribute("timestamp", timestamp);
-
- getPortletContext().setAttribute("project", project);
-
- renderJsp(request, response, page, String.format("%s / %s", "JIRA", project.getName()));
+ desc.fillContext(getPortletContext());
+
+ renderJsp(request, response, page, String.format("%s / %s", "JIRA", projectId));
}
}
\ No newline at end of file
Modified: labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/LabsKosmosPortlet.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/LabsKosmosPortlet.java 2007-06-15 09:55:24 UTC (rev 12611)
+++ labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/LabsKosmosPortlet.java 2007-06-15 11:13:46 UTC (rev 12612)
@@ -43,6 +43,8 @@
private static final String SERVICE_URL_INIT_PARAM = "service.url";
private static final String JSP_PAGE_INIT_PARAM = "jsp.page";
+ protected static final long KOSMOS_PORTLET_UPDATE_INTERVAL = 1000*60*30; // ms
+
protected String serviceUrl;
protected String page;
Added: labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/LabsKosmosSvnDescriptor.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/LabsKosmosSvnDescriptor.java (rev 0)
+++ labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/LabsKosmosSvnDescriptor.java 2007-06-15 11:13:46 UTC (rev 12612)
@@ -0,0 +1,109 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.forge.kosmos;
+
+import hu.midori.kosmos.model.SvnRepository;
+import hu.midori.kosmos.protocol.SvnService;
+
+import java.net.MalformedURLException;
+import java.util.Date;
+import java.util.List;
+
+import javax.portlet.PortletContext;
+import org.jboss.forge.common.ejb3.LabsServices;
+import org.jboss.forge.common.exceptions.ServiceRetrievalException;
+import org.jboss.forge.common.projects.project.rw.RepoTypeRW;
+import org.jboss.logging.Logger;
+
+import com.caucho.hessian.client.HessianProxyFactory;
+
+/**
+ * @author <a href="mailto:aron.gombas at midori.hu">Aron Gombas</a>
+ * @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
+ */
+public class LabsKosmosSvnDescriptor {
+
+ protected final static Logger log = Logger.getLogger(LabsKosmosJiraDescriptor.class);
+
+ private SvnRepository repository;
+ private Date timestamp;
+
+ public LabsKosmosSvnDescriptor(String projectId, String serviceUrl) {
+
+ SvnService service = getService(serviceUrl);
+
+ List<SvnRepository> repositories = null;
+
+ String monitoredUrl = getProjectSvn(projectId);
+
+ // get project list if the service was successfully set-up
+ if ((service != null) && (monitoredUrl != null)) {
+
+ repositories = service.getRepositories(monitoredUrl);
+ }
+
+ if ((repositories != null) && (repositories.size() > 0)) {
+
+ repository = repositories.get(0);
+ timestamp = service.getTimestamp();
+
+ log.info("SVN repository downloaded: " + monitoredUrl + " timestamp: " + timestamp);
+ } else {
+ log.info("Failed to download SVN repository: " + monitoredUrl);
+ }
+ }
+
+ public void fillContext(PortletContext portletContext) {
+
+ portletContext.setAttribute("repository", repository);
+ portletContext.setAttribute("timestamp", timestamp);
+ }
+
+ private static SvnService getService(String serviceUrl) {
+
+ SvnService service = null;
+ HessianProxyFactory factory = new HessianProxyFactory();
+ try {
+ service = (SvnService)factory.create(SvnService.class, serviceUrl);
+ } catch (MalformedURLException ex) {
+ log.error("Unable to connect to the service", ex);
+ }
+ return service;
+ }
+
+ private static String getProjectSvn(String projectId) {
+
+ try {
+
+ if (RepoTypeRW.SVN.equals(
+ LabsServices.getProjectsService().getProjectRepoType(projectId))) {
+
+ return LabsServices.getProjectsService().getProjectAnonRepo(projectId);
+ }
+
+ } catch (ServiceRetrievalException e) {
+ log.warn("Unable to get project " + projectId, e);
+ }
+
+ return null;
+ }
+}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/LabsKosmosSvnPortlet.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/LabsKosmosSvnPortlet.java 2007-06-15 09:55:24 UTC (rev 12611)
+++ labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/LabsKosmosSvnPortlet.java 2007-06-15 11:13:46 UTC (rev 12612)
@@ -21,89 +21,31 @@
*/
package org.jboss.forge.kosmos;
-import hu.midori.kosmos.model.SvnRepository;
-import hu.midori.kosmos.protocol.SvnService;
-
-import java.net.MalformedURLException;
-import java.util.Date;
-import java.util.List;
-
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
-import org.jboss.forge.common.ejb3.LabsServices;
-import org.jboss.forge.common.exceptions.ServiceRetrievalException;
import org.jboss.forge.common.projects.ProjectsHelper;
-import org.jboss.forge.common.projects.project.rw.RepoTypeRW;
+import org.jboss.shotoku.aop.CacheItem;
+import org.jboss.shotoku.tools.Pair;
-import com.caucho.hessian.client.HessianProxyFactory;
-
/**
* @author <a href="mailto:aron.gombas at midori.hu">Aron Gombas</a>
* @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
*/
public class LabsKosmosSvnPortlet extends LabsKosmosPortlet {
- private static final String ERROR_PAGE = "kosmos/error.jsp";
+ @CacheItem(interval=KOSMOS_PORTLET_UPDATE_INTERVAL)
+ private static LabsKosmosSvnWatcher svnWatcher;
@Override
public void doView(RenderRequest request, RenderResponse response) {
- log.info("Viewing...");
-
- // connect to web-service
- SvnService service = null;
- HessianProxyFactory factory = new HessianProxyFactory();
- try {
- service = (SvnService)factory.create(SvnService.class, serviceUrl);
- } catch (MalformedURLException ex) {
- log.error("Unable to connect to the service", ex);
- }
-
- Date timestamp = null;
- List<SvnRepository> repositories = null;
-
+
String projectId = ProjectsHelper.getSelectedProjectId(request);
- String monitoredUrl = getProjectSvn(projectId);
-
- // get project list if the service was successfully set-up
- if ((service != null) && (monitoredUrl != null)) {
-
- repositories = service.getRepositories(monitoredUrl);
- log.info("SVN repository downloaded: " + monitoredUrl);
- timestamp = service.getTimestamp();
- log.debug("SVN timestamp: " + timestamp);
- }
-
- // render response
- getPortletContext().setAttribute("timestamp", timestamp);
-
- if ((repositories != null) && (repositories.size() > 0)) {
-
- SvnRepository repository = repositories.get(0);
-
- getPortletContext().setAttribute("repository", repository);
-
- renderJsp(request, response, page, String.format("%s / %s", "SVN", repository.getLocation()));
- } else {
- renderJsp(request, response, ERROR_PAGE, "ERROR");
- }
- }
-
- private static String getProjectSvn(String projectId) {
-
- try {
-
- if (RepoTypeRW.SVN.equals(
- LabsServices.getProjectsService().getProjectRepoType(projectId))) {
-
- return LabsServices.getProjectsService().getProjectAnonRepo(projectId);
- }
-
- } catch (ServiceRetrievalException e) {
- log.warn("Unable to get project " + projectId, e);
- }
+ LabsKosmosSvnDescriptor desc = svnWatcher.get(new Pair<String, String>(projectId,serviceUrl));
- return null;
+ desc.fillContext(getPortletContext());
+
+ renderJsp(request, response, page, String.format("%s / %s", "SVN", projectId));
}
}
Added: labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/LabsKosmosSvnWatcher.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/LabsKosmosSvnWatcher.java (rev 0)
+++ labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/LabsKosmosSvnWatcher.java 2007-06-15 11:13:46 UTC (rev 12612)
@@ -0,0 +1,57 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, Red Hat Middleware LLC and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.forge.kosmos;
+
+import java.util.Map;
+
+import org.jboss.shotoku.cache.ChangeType;
+import org.jboss.shotoku.cache.ShotokuResourceWatcher;
+import org.jboss.shotoku.tools.Pair;
+
+/**
+ * @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
+ */
+public class LabsKosmosSvnWatcher extends ShotokuResourceWatcher<Pair<String,String>,LabsKosmosSvnDescriptor> {
+
+ public LabsKosmosSvnWatcher(long interval) {
+ super(interval);
+ }
+
+ @Override
+ public LabsKosmosSvnDescriptor init(Pair<String,String> key) {
+ return getDesc(key);
+ }
+
+ @Override
+ protected void update(Pair<String,String> key, LabsKosmosSvnDescriptor currentObject,
+ Map<String, ChangeType> changes) {
+ put(key, getDesc(key));
+ }
+
+ private LabsKosmosSvnDescriptor getDesc(Pair<String,String> key) {
+
+ String projectId = key.getFirst();
+ String serviceUrl = key.getSecond();
+
+ return new LabsKosmosSvnDescriptor(projectId, serviceUrl);
+ }
+}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/web/WEB-INF/jboss-portlet.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/web/WEB-INF/jboss-portlet.xml 2007-06-15 09:55:24 UTC (rev 12611)
+++ labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/web/WEB-INF/jboss-portlet.xml 2007-06-15 11:13:46 UTC (rev 12612)
@@ -18,5 +18,30 @@
<trans-attribute>Required</trans-attribute>
</transaction>
</portlet>
+
+ <portlet>
+ <portlet-name>KosmosSvnActivityPortlet</portlet-name>
+ <transaction>
+ <trans-attribute>Required</trans-attribute>
+ </transaction>
+ </portlet>
+ <portlet>
+ <portlet-name>KosmosSvnCommitersPortlet</portlet-name>
+ <transaction>
+ <trans-attribute>Required</trans-attribute>
+ </transaction>
+ </portlet>
+ <portlet>
+ <portlet-name>KosmosSvnRepositoryPortlet</portlet-name>
+ <transaction>
+ <trans-attribute>Required</trans-attribute>
+ </transaction>
+ </portlet>
+ <portlet>
+ <portlet-name>KosmosSvnRevisionPortlet</portlet-name>
+ <transaction>
+ <trans-attribute>Required</trans-attribute>
+ </transaction>
+ </portlet>
</portlet-app>
\ No newline at end of file
Modified: labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/web/WEB-INF/tags/listExpander.tag
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/web/WEB-INF/tags/listExpander.tag 2007-06-15 09:55:24 UTC (rev 12611)
+++ labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/web/WEB-INF/tags/listExpander.tag 2007-06-15 11:13:46 UTC (rev 12612)
@@ -12,7 +12,7 @@
<script src="/file-access/default/kosmos/js/scriptaculous/scriptaculous.js?load=effects" language="javascript"></script>
<script src="/file-access/default/kosmos/js/kosmos.js" language="javascript"></script>
- <img src="/file-access/default/kosmos/images/table.gif"/>
+ <!-- <img src="/file-access/default/kosmos/images/table.gif"/> -->
<a href="javascript:void(0);" onclick="javascript:showTableRows('row-<portlet:namespace/>-${id}-', ${size}, 10);">
<fmt:message key="action.show"/> 10
More information about the jboss-svn-commits
mailing list