[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