[jboss-svn-commits] JBL Code SVN: r9974 - in labs/jbosslabs/trunk/portal-extensions: forge-common/src/java/org/jboss/forge/common/ejb3 and 5 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Mar 5 09:52:24 EST 2007
Author: wrzep
Date: 2007-03-05 09:52:24 -0500 (Mon, 05 Mar 2007)
New Revision: 9974
Modified:
labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java
labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/ejb3/ProjectsService.java
labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/ejb3/ProjectsServiceRW.java
labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/exceptions/IllegalOperationException.java
labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsDescriptor.java
labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/ProxyUtils.java
labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/ReadOnlyListProxy.java
labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/ReadOnlyProxy.java
labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/SyncProxy.java
labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/projects/ProjectsServiceImpl.java
labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/projects/ProjectsServiceRWImpl.java
labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/java/org/jboss/forge/projects/info/ProjectInfoEditBean.java
labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/java/org/jboss/forge/projects/info/ProjectInfoTools.java
Log:
JBLAB-840
thread-safety
Pawel
Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java 2007-03-05 14:27:21 UTC (rev 9973)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java 2007-03-05 14:52:24 UTC (rev 9974)
@@ -42,6 +42,8 @@
import javax.portlet.PortalContext;
import javax.portlet.PortletRequest;
import javax.servlet.ServletRequest;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
import org.jboss.portlet.JBossRenderRequest;
import org.jboss.shotoku.ContentManager;
@@ -576,4 +578,5 @@
return result.toString();
}
+
}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/ejb3/ProjectsService.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/ejb3/ProjectsService.java 2007-03-05 14:27:21 UTC (rev 9973)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/ejb3/ProjectsService.java 2007-03-05 14:52:24 UTC (rev 9974)
@@ -40,7 +40,10 @@
* @author <a href="mailto:ryszard.kozmik at jboss.com">Ryszard Kozmik</a>
* @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
*
- * Please remember this service provides read-only info about projects.
+ * Please remember this service provides read-only info about projects.
+ * All mutable operations on returned beans throw IllegalOperationException.
+ *
+ * To get RW access, use ProjectsServiceRW.
*/
public interface ProjectsService {
@@ -86,44 +89,8 @@
public long getOverallDownloadsForProject(String projectId);
- public boolean getPackagedForDownload(String projectId);
-
- /**
- * This method will overwrite existing project definition in xml file
- * with a new one generated from data contained in given Project object.
- * Be aware, data is NOT merged but overwritten!
- */
- public void persistProject(Project project);
+ public boolean getPackagedForDownload(String projectId);
- /**
- * This method will overwrite existing project Polls definition in xml file
- * with a new one generated from data contained in given Polls object.
- * Be aware, data is NOT merged but overwritten!
- */
- public void persistPolls(Polls polls, String projectId);
-
- /**
- * This method will overwrite existing project Downloads definition in xml file
- * with a new one generated from data contained in given Downloads object.
- * Be aware, data is NOT merged but overwritten!
- */
- public void persistDownloads (Downloads downloads, String projectId);
-
- /**
- * This method will overwrite existing project Pages definition in xml file
- * with a new one generated from data contained in given Pages object.
- * Be aware, data is NOT merged but overwritten!
- */
- public void persistPages (Pages pages, String projectId);
-
- /**
- * This method will overwrite existing project Developers definition
- * in xml file with a new one generated from data contained in given Developers object.
- * Be aware, data is NOT merged but overwritten!
- */
- public void persistDevelopers (Developers developers, String projectId);
-
-
// Life cycle methods
public void start () throws Exception;
Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/ejb3/ProjectsServiceRW.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/ejb3/ProjectsServiceRW.java 2007-03-05 14:27:21 UTC (rev 9973)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/ejb3/ProjectsServiceRW.java 2007-03-05 14:52:24 UTC (rev 9974)
@@ -22,11 +22,11 @@
package org.jboss.forge.common.ejb3;
-import org.jboss.forge.common.projects.project.rw.DevelopersRW;
-import org.jboss.forge.common.projects.project.rw.DownloadsRW;
-import org.jboss.forge.common.projects.project.rw.PagesRW;
-import org.jboss.forge.common.projects.project.rw.PollsRW;
-import org.jboss.forge.common.projects.project.rw.ProjectRW;
+import org.jboss.forge.common.projects.project.Developers;
+import org.jboss.forge.common.projects.project.Downloads;
+import org.jboss.forge.common.projects.project.Pages;
+import org.jboss.forge.common.projects.project.Polls;
+import org.jboss.forge.common.projects.project.Project;
/**
* @author <a href="mailto:ryszard.kozmik at jboss.com">Ryszard Kozmik</a>
@@ -37,50 +37,50 @@
public static final String PROJECTS_RW_SERVICE = "labs:service=projectsRW";
- public ProjectRW getProjectByNameRW(String projectId);
+ public Project getProjectByNameRW(String projectId);
- public PollsRW getProjectPollsRW(String projectId);
+ public Polls getProjectPollsRW(String projectId);
- public DownloadsRW getProjectDownloadsRW(String projectId);
+ public Downloads getProjectDownloadsRW(String projectId);
- public PagesRW getProjectPagesRW(String projectId);
+ public Pages getProjectPagesRW(String projectId);
- public DevelopersRW getProjectDevelopersRW(String projectId);
+ public Developers getProjectDevelopersRW(String projectId);
/**
* This method will overwrite existing project definition in xml file
* with a new one generated from data contained in given Project object.
* Be aware, data is NOT merged but overwritten!
*/
- public void persistProject(ProjectRW project);
+ public void persistProject(Project project);
/**
* This method will overwrite existing project Polls definition in xml file
* with a new one generated from data contained in given Polls object.
* Be aware, data is NOT merged but overwritten!
*/
- public void persistPolls(PollsRW polls, String projectId);
+ public void persistPolls(Polls polls, String projectId);
/**
* This method will overwrite existing project Downloads definition in xml file
* with a new one generated from data contained in given Downloads object.
* Be aware, data is NOT merged but overwritten!
*/
- public void persistDownloads (DownloadsRW downloads, String projectId);
+ public void persistDownloads (Downloads downloads, String projectId);
/**
* This method will overwrite existing project Pages definition in xml file
* with a new one generated from data contained in given Pages object.
* Be aware, data is NOT merged but overwritten!
*/
- public void persistPages (PagesRW pages, String projectId);
+ public void persistPages (Pages pages, String projectId);
/**
* This method will overwrite existing project Developers definition
* in xml file with a new one generated from data contained in given Developers object.
* Be aware, data is NOT merged but overwritten!
*/
- public void persistDevelopers (DevelopersRW developers, String projectId);
+ public void persistDevelopers (Developers developers, String projectId);
// Life cycle methods
Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/exceptions/IllegalOperationException.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/exceptions/IllegalOperationException.java 2007-03-05 14:27:21 UTC (rev 9973)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/exceptions/IllegalOperationException.java 2007-03-05 14:52:24 UTC (rev 9974)
@@ -27,7 +27,7 @@
public class IllegalOperationException extends Exception {
public IllegalOperationException(Method m) {
- super(m.getClass().getName() + " " + m.getName());
+ super(m.getDeclaringClass().getName() + " " + m.getName());
}
/**
Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsDescriptor.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsDescriptor.java 2007-03-05 14:27:21 UTC (rev 9973)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsDescriptor.java 2007-03-05 14:52:24 UTC (rev 9974)
@@ -48,6 +48,7 @@
import org.jboss.forge.common.projects.project.Project;
import org.jboss.forge.common.projects.project.rw.ProjectRW;
import org.jboss.forge.common.projects.proxies.ReadOnlyProxy;
+import org.jboss.forge.common.projects.proxies.SyncProxy;
import org.jboss.forge.common.projects.configuration.Configuration;
import org.jboss.logging.Logger;
import org.jboss.portal.core.servlet.jsp.taglib.context.DelegateContext;
@@ -310,12 +311,14 @@
JAXBContext projectRWJC=null;
JAXBContext projectsJC=null;
+
try {
projectsJC = JAXBContext.newInstance("org.jboss.forge.common.projects.configuration");
} catch (JAXBException e) {
log.warn("I could not create JAXBContext."+e.getCause());
}
+
if (projectsJC!=null) {
try {
Unmarshaller un = projectsJC.createUnmarshaller();
@@ -361,17 +364,20 @@
try {
Unmarshaller un = projectRWJC.createUnmarshaller();
- ProjectRW newProjectObj = (ProjectRW)un.unmarshal(
+ ProjectRW newProject = (ProjectRW)un.unmarshal(
isf.getInputSource(projectId+"/" + ProjectsHelper.PROJECT_DESC));
- Project newProject = (Project) ReadOnlyProxy.newInstance(newProjectObj);
+ newProjects.put(projectId,
+ (Project) ReadOnlyProxy.newInstance(newProject));
- newProjects.put(projectId, newProject);
-
ProjectRW newProjectRW = (ProjectRW)un.unmarshal(
isf.getInputSource(projectId+"/" + ProjectsHelper.PROJECT_DESC));
- newProjectsRW.put(projectId, newProjectRW);
+ newProjectsRW.put(projectId,
+ //(Project) SyncProxy.newInstance(newProjectRW));
+ //TODO fix proxy/interfaces JAXB issue :/
+ newProjectRW);
+
log.info("Project "+projectId+" created.");
} catch (Exception e) {
log.warn("I could not create Project "+projectId+" (RW mode).",e);
@@ -844,7 +850,7 @@
* To obtain Project objects use ProjectsService(RW) instead.
*/
public Map<String, ? extends Project> getNewProjectsRW() {
- return newProjects;
+ return newProjectsRW;
}
public Configuration getConfiguration () {
Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/ProxyUtils.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/ProxyUtils.java 2007-03-05 14:27:21 UTC (rev 9973)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/ProxyUtils.java 2007-03-05 14:52:24 UTC (rev 9974)
@@ -22,6 +22,8 @@
package org.jboss.forge.common.projects.proxies;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
import java.util.List;
/**
@@ -60,7 +62,7 @@
return false;
}
- public static Object wrap(Object result) {
+ public static Object wrapReadOnly(Object result) {
if ((result == null) || (isSimpleType(result.getClass()))) {
@@ -69,7 +71,6 @@
if (result instanceof List) {
-
//System.out.println("WRAP as LIST");
return ReadOnlyListProxy.newInstance((List) result);
}
@@ -79,6 +80,36 @@
return ReadOnlyProxy.newInstance(result);
}
+ public static Object wrapSync(Object result) {
+
+ if ((result == null) || (isSimpleType(result.getClass()))) {
+
+ return result;
+ }
+
+ return SyncProxy.newInstance(result);
+ }
+
+ public static Object invoke(Object obj, Method m, Object[] args) throws Throwable {
+
+ Object result;
+
+ try {
+
+ result = m.invoke(obj, args);
+
+ } catch (InvocationTargetException e) {
+
+ throw e.getTargetException();
+
+ } catch (Exception e) {
+
+ throw new RuntimeException("Unexpected invocation exception: " + e.getMessage());
+ }
+
+ return result;
+ }
+
private ProxyUtils() {}
}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/ReadOnlyListProxy.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/ReadOnlyListProxy.java 2007-03-05 14:27:21 UTC (rev 9973)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/ReadOnlyListProxy.java 2007-03-05 14:52:24 UTC (rev 9974)
@@ -23,7 +23,6 @@
package org.jboss.forge.common.projects.proxies;
import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
@@ -52,7 +51,7 @@
for (Object element : l) {
- Object e = ProxyUtils.wrap(element);
+ Object e = ProxyUtils.wrapReadOnly(element);
list.add(e);
}
}
@@ -74,34 +73,13 @@
if (methodName.equals("get")) {
- result = invoke(m, args);
+ result = list.get((Integer) args[0]);
//System.out.println("LIST, GET " + result + " " + args[0] + list.get((Integer) args[0]));
} else {
- result = invoke(m, args);
+ result = ProxyUtils.invoke(list, m, args);
}
return result;
}
-
- private Object invoke(Method m, Object[] args) throws Throwable {
-
- Object result;
-
- try {
-
- result = m.invoke(list, args);
-
- } catch (InvocationTargetException e) {
-
- throw e.getTargetException();
-
- } catch (Exception e) {
-
- throw new RuntimeException("Unexpected invocation exception: " + e.getMessage());
- }
-
- return result;
- }
-
}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/ReadOnlyProxy.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/ReadOnlyProxy.java 2007-03-05 14:27:21 UTC (rev 9973)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/ReadOnlyProxy.java 2007-03-05 14:52:24 UTC (rev 9974)
@@ -23,10 +23,8 @@
package org.jboss.forge.common.projects.proxies;
import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
import org.jboss.forge.common.exceptions.IllegalOperationException;
@@ -34,6 +32,8 @@
/**
* @author Pawel Wrzeszcz (pawel . wrzeszcz [at] jboss . com)
+ *
+ * This proxy works for POJOs only. Getters must be no-argument methods.
*/
public class ReadOnlyProxy implements InvocationHandler {
@@ -81,12 +81,12 @@
}
// Obtain result
- Object result = invoke(m, args);
+ Object result = ProxyUtils.invoke(obj, m, args);
// For getters, store the result in "cache"
if (methodName.startsWith("get") || methodName.startsWith("is")) {
- result = ProxyUtils.wrap(result);
+ result = ProxyUtils.wrapReadOnly(result);
//System.out.print("CACHED ");
methodValues.put(methodName, result);
@@ -96,25 +96,5 @@
return result;
}
-
- private Object invoke(Method m, Object[] args) throws Throwable {
-
- Object result;
-
- try {
-
- result = m.invoke(obj, args);
-
- } catch (InvocationTargetException e) {
-
- throw e.getTargetException();
-
- } catch (Exception e) {
-
- throw new RuntimeException("Unexpected invocation exception: " + e.getMessage());
- }
-
- return result;
- }
}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/SyncProxy.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/SyncProxy.java 2007-03-05 14:27:21 UTC (rev 9973)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/SyncProxy.java 2007-03-05 14:52:24 UTC (rev 9974)
@@ -23,7 +23,6 @@
package org.jboss.forge.common.projects.proxies;
import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import org.jboss.forge.common.projects.project.Project;
@@ -65,30 +64,10 @@
synchronized (this) {
- result = ProxyUtils.wrap(invoke(m, args));
+ result = ProxyUtils.invoke(obj, m, args);
}
- return result;
+ return ProxyUtils.wrapSync(result);
}
-
- private Object invoke(Method m, Object[] args) throws Throwable {
-
- Object result;
-
- try {
-
- result = m.invoke(obj, args);
-
- } catch (InvocationTargetException e) {
-
- throw e.getTargetException();
-
- } catch (Exception e) {
-
- throw new RuntimeException("Unexpected invocation exception: " + e.getMessage());
- }
-
- return result;
- }
}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/projects/ProjectsServiceImpl.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/projects/ProjectsServiceImpl.java 2007-03-05 14:27:21 UTC (rev 9973)
+++ labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/projects/ProjectsServiceImpl.java 2007-03-05 14:52:24 UTC (rev 9974)
@@ -22,16 +22,12 @@
package org.jboss.forge.ejb3.projects;
-import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import javax.ejb.Remote;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Marshaller;
import org.jboss.annotation.ejb.Management;
import org.jboss.annotation.ejb.Service;
@@ -52,9 +48,6 @@
import org.jboss.forge.common.ejb3.ProjectsService;
import org.jboss.forge.common.Constants;
import org.jboss.logging.Logger;
-import org.jboss.shotoku.ContentManager;
-import org.jboss.shotoku.Node;
-import org.jboss.shotoku.aop.Inject;
/**
@@ -66,26 +59,10 @@
@Remote(ProjectsService.class)
@Depends(org.jboss.shotoku.tools.Constants.SHOTOKU_SERVICE_NAME)
public class ProjectsServiceImpl implements ProjectsService {
+
private static final Logger log = Logger.getLogger(ProjectsService.class);
+
- private static final JAXBContext jc;
-
- static {
-
- JAXBContext temp = null;
- try {
- temp = JAXBContext.newInstance("org.jboss.forge.common.projects.project");
- } catch (JAXBException e) {
- log.warn("I could not create JAXBContext."+e.getCause());
- } finally {
- jc = temp;
- }
-
- }
-
- @Inject
- private ContentManager cm;
-
public Collection<? extends Project> getProjects() {
Projects projectsClass = ProjectsHelper.getProjects(Constants.LABS_PORTAL);
Map<String,? extends Project> projects = projectsClass.getProjectsDescriptor().getNewProjects();
@@ -202,122 +179,9 @@
Project project = getProjectByName(projectId);
return project != null && project.isPackagedForDownload();
}
-
- /**
- * This method will overwrite existing project definition in xml file
- * with a new one generated from data contained in given Project object.
- * Be aware, data is NOT merged but overwritten!
- */
- public void persistProject(Project project) {
- if (project.getId()==null) return;
-
- if (jc==null) return ;
-
- try {
-
- Marshaller m = jc.createMarshaller();
- m.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
- m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
-
- Node node = cm.getRootDirectory().
- getDirectory(Constants.LABS_PORTAL).
- getDirectory(ProjectsHelper.MEMBERS_DIR).
- getDirectory(project.getId()).
- getNode(ProjectsHelper.PROJECT_DESC);
-
- OutputStream os = node.getOutputStream();
- m.marshal(project,os);
-
- node.save("[PROJECTSSERVICE] Persisting "+project.getId()+" project.");
- log.info("Project "+project.getId()+" has been updated.");
-
- } catch (Exception e) {
- log.warn("I could not update project "+project.getId()+".");
- }
- }
-
- /**
- * This method will overwrite existing project Polls definition in xml file
- * with a new one generated from data contained in given Polls object.
- * Be aware, data is NOT merged but overwritten!
- */
- public void persistPolls(Polls polls, String projectId) {
- if (polls==null || projectId==null || projectId.trim().length()==0) return;
-
- Project project = getProjectByName(projectId);
-
- if (project==null) return;
-
- project.setPolls(polls);
-
- persistProject(project);
- }
-
- /**
- * This method will overwrite existing project Downloads definition in xml file
- * with a new one generated from data contained in given Downloads object.
- * Be aware, data is NOT merged but overwritten!
- */
- public void persistDownloads (Downloads downloads, String projectId) {
- if (downloads==null || projectId==null || projectId.trim().length()==0) return;
-
- Project project = getProjectByName(projectId);
-
- if (project==null) return;
-
- project.setDownloads(downloads);
-
- persistProject(project);
- }
-
- /**
- * This method will overwrite existing project Menu definition in xml file
- * with a new one generated from data contained in given Menu object.
- * Be aware, data is NOT merged but overwritten!
- */
- public void persistPages (Pages pages, String projectId) {
- if (pages==null || projectId==null || projectId.trim().length()==0) return;
-
- Project project = getProjectByName(projectId);
-
- if (project==null) return;
-
- project.setPages(pages);
-
- persistProject(project);
- }
-
- /**
- * This method will overwrite existing project Developers definition
- * in xml file with a new one generated from data contained in given Developers object.
- * Be aware, data is NOT merged but overwritten!
- */
- public void persistDevelopers (Developers developers, String projectId) {
- if (developers==null || projectId==null || projectId.trim().length()==0) return;
-
- Project project = getProjectByName(projectId);
-
- if (project==null) return;
-
- project.setDevelopers(developers);
-
- persistProject(project);
-
- }
-
- public void start() throws Exception {
+ public Collection<String> getProjectsIds() {
- log.info("Projects service started");
- }
-
- public void stop() throws Exception {
-
- log.info("Projects service stopped");
- }
-
- public Collection<String> getProjectsIds() {
-
Collection<String> projectsIds = new ArrayList<String>();
Collection<? extends Project> projects = getProjects();
@@ -327,4 +191,14 @@
return projectsIds;
}
+
+ public void start() throws Exception {
+
+ log.info("Projects service started");
+ }
+
+ public void stop() throws Exception {
+
+ log.info("Projects service stopped");
+ }
}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/projects/ProjectsServiceRWImpl.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/projects/ProjectsServiceRWImpl.java 2007-03-05 14:27:21 UTC (rev 9973)
+++ labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/projects/ProjectsServiceRWImpl.java 2007-03-05 14:52:24 UTC (rev 9974)
@@ -36,6 +36,10 @@
import org.jboss.forge.common.projects.Projects;
import org.jboss.forge.common.projects.ProjectsHelper;
+import org.jboss.forge.common.projects.project.Developers;
+import org.jboss.forge.common.projects.project.Downloads;
+import org.jboss.forge.common.projects.project.Pages;
+import org.jboss.forge.common.projects.project.Polls;
import org.jboss.forge.common.projects.project.Project;
import org.jboss.forge.common.projects.project.rw.DevelopersRW;
import org.jboss.forge.common.projects.project.rw.DownloadsRW;
@@ -44,6 +48,7 @@
import org.jboss.forge.common.projects.project.rw.ProjectRW;
import org.jboss.forge.common.ejb3.ProjectsServiceRW;
import org.jboss.forge.common.Constants;
+import org.jboss.forge.common.ForgeHelper;
import org.jboss.logging.Logger;
@@ -65,51 +70,55 @@
private static final Logger log = Logger.getLogger(ProjectsServiceRW.class);
- private static final JAXBContext jc;
+ public static final JAXBContext jc;
static {
JAXBContext temp = null;
try {
temp = JAXBContext.newInstance("org.jboss.forge.common.projects.project.rw");
+
} catch (JAXBException e) {
log.warn("I could not create JAXBContext."+e.getCause());
} finally {
jc = temp;
}
-
+
}
@Inject
private ContentManager cm;
- public ProjectRW getProjectByNameRW(String projectId) {
+ public Project getProjectByNameRW(String projectId) {
Projects projectsClass = ProjectsHelper.getProjects(Constants.LABS_PORTAL);
Map<String,? extends Project> projects = projectsClass.getProjectsDescriptor().getNewProjectsRW();
- //return projects.get(projectId);
- return null;
+ return projects.get(projectId);
+
+ //TODO new, fresh(!) copy of ProjectRW
+
+ //return null;
}
- public PollsRW getProjectPollsRW(String projectId) {
- ProjectRW project = getProjectByNameRW(projectId);
+ public Polls getProjectPollsRW(String projectId) {
+ Project project = getProjectByNameRW(projectId);
if (project==null) return null;
return project.getPolls();
}
- public DownloadsRW getProjectDownloadsRW(String projectId) {
- ProjectRW project = getProjectByNameRW(projectId);
+ public Downloads getProjectDownloadsRW(String projectId) {
+ Project project = getProjectByNameRW(projectId);
if (project==null) return null;
return project.getDownloads();
}
- public PagesRW getProjectPagesRW(String projectId) {
- ProjectRW project = getProjectByNameRW(projectId);
+ public Pages getProjectPagesRW(String projectId) {
+ Project project = getProjectByNameRW(projectId);
if (project==null) return null;
return project.getPages();
}
- public DevelopersRW getProjectDevelopersRW(String projectId) {
- ProjectRW project = getProjectByNameRW(projectId);
+ public Developers getProjectDevelopersRW(String projectId) {
+ Project project = getProjectByNameRW(projectId);
if (project==null) return null;
return project.getDevelopers();
}
@@ -119,7 +128,7 @@
* with a new one generated from data contained in given ProjectRW object.
* Be aware, data is NOT merged but overwritten!
*/
- public void persistProject(ProjectRW project) {
+ public synchronized void persistProject(Project project) {
if (project.getId()==null) return;
if (jc==null) return ;
@@ -139,11 +148,11 @@
OutputStream os = node.getOutputStream();
m.marshal(project,os);
- node.save("[PROJECTSSERVICE] Persisting "+project.getId()+" project.");
- log.info("ProjectRW "+project.getId()+" has been updated.");
+ node.save("[PROJECTSSERVICERW] Persisting "+project.getId()+" project.");
+ log.info("Project "+project.getId()+" has been updated.");
} catch (Exception e) {
- log.warn("I could not update project "+project.getId()+".");
+ log.warn("I could not update project "+project.getId()+".", e);
}
}
@@ -153,10 +162,10 @@
* with a new one generated from data contained in given PollsRW object.
* Be aware, data is NOT merged but overwritten!
*/
- public void persistPolls(PollsRW polls, String projectId) {
+ public synchronized void persistPolls(Polls polls, String projectId) {
if (polls==null || projectId==null || projectId.trim().length()==0) return;
- ProjectRW project = getProjectByNameRW(projectId);
+ Project project = getProjectByNameRW(projectId);
if (project==null) return;
@@ -170,10 +179,10 @@
* with a new one generated from data contained in given DownloadsRW object.
* Be aware, data is NOT merged but overwritten!
*/
- public void persistDownloads(DownloadsRW downloads, String projectId) {
+ public synchronized void persistDownloads(Downloads downloads, String projectId) {
if (downloads==null || projectId==null || projectId.trim().length()==0) return;
- ProjectRW project = getProjectByNameRW(projectId);
+ Project project = getProjectByNameRW(projectId);
if (project==null) return;
@@ -187,10 +196,10 @@
* with a new one generated from data contained in given Menu object.
* Be aware, data is NOT merged but overwritten!
*/
- public void persistPages(PagesRW pages, String projectId) {
+ public synchronized void persistPages(Pages pages, String projectId) {
if (pages==null || projectId==null || projectId.trim().length()==0) return;
- ProjectRW project = getProjectByNameRW(projectId);
+ Project project = getProjectByNameRW(projectId);
if (project==null) return;
@@ -204,10 +213,10 @@
* in xml file with a new one generated from data contained in given DevelopersRW object.
* Be aware, data is NOT merged but overwritten!
*/
- public void persistDevelopers(DevelopersRW developers, String projectId) {
+ public synchronized void persistDevelopers(Developers developers, String projectId) {
if (developers==null || projectId==null || projectId.trim().length()==0) return;
- ProjectRW project = getProjectByNameRW(projectId);
+ Project project = getProjectByNameRW(projectId);
if (project==null) return;
@@ -219,11 +228,11 @@
public void start() throws Exception {
- log.info("Projects service started");
+ log.info("ProjectsRW service started");
}
public void stop() throws Exception {
- log.info("Projects service stopped");
+ log.info("ProjectsRW service stopped");
}
}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/java/org/jboss/forge/projects/info/ProjectInfoEditBean.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/java/org/jboss/forge/projects/info/ProjectInfoEditBean.java 2007-03-05 14:27:21 UTC (rev 9973)
+++ labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/java/org/jboss/forge/projects/info/ProjectInfoEditBean.java 2007-03-05 14:52:24 UTC (rev 9974)
@@ -71,7 +71,7 @@
jems = project.getJems();
//DEBUG
- ProjectRW projectRW = ProjectInfoTools.
+ Project projectRW = ProjectInfoTools.
getProjectRWByName(FacesTools.getSelectedProjectId());
System.out.println("Project: " + project + " ProjectRW: " + projectRW +
" (" + projectRW.getName() + ")");
Modified: labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/java/org/jboss/forge/projects/info/ProjectInfoTools.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/java/org/jboss/forge/projects/info/ProjectInfoTools.java 2007-03-05 14:27:21 UTC (rev 9973)
+++ labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/java/org/jboss/forge/projects/info/ProjectInfoTools.java 2007-03-05 14:52:24 UTC (rev 9974)
@@ -63,7 +63,7 @@
return projectsService.getProjectByName(projectId);
}
- public static ProjectRW getProjectRWByName(String projectId) {
+ public static Project getProjectRWByName(String projectId) {
return projectsServiceRW.getProjectByNameRW(projectId);
}
More information about the jboss-svn-commits
mailing list