[jboss-svn-commits] JBL Code SVN: r9990 - in labs/jbosslabs/trunk/portal-extensions: forge-common/src/java/org/jboss/forge/common/projects and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Mar 5 16:34:48 EST 2007


Author: wrzep
Date: 2007-03-05 16:34:47 -0500 (Mon, 05 Mar 2007)
New Revision: 9990

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/projects/ProjectsDescriptor.java
   labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/projects/ProjectsServiceRWImpl.java
Log:
JBLAB-840
cleanup
-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 21:08:16 UTC (rev 9989)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java	2007-03-05 21:34:47 UTC (rev 9990)
@@ -39,11 +39,8 @@
 import javax.mail.Transport;
 import javax.mail.internet.InternetAddress;
 import javax.mail.internet.MimeMessage;
-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;

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 21:08:16 UTC (rev 9989)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsDescriptor.java	2007-03-05 21:34:47 UTC (rev 9990)
@@ -92,14 +92,9 @@
      * Project id --> Corresponding NEW project descriptor object
      */
     private Map<String, Project> newProjects;
+
     
     /**
-     * Copy of map above. We put separately parsed objects here
-     * to use them in RW mode.
-     */
-    private Map<String, Project> newProjectsRW;
-    
-    /**
      * Configuration from projects.xml descriptor.
      */
     private Configuration configuration;
@@ -133,6 +128,8 @@
     private Map<String, DelegateContext> levelsContexts;
 
     private String portalName;
+    private XmlInputFactory isf;
+    private JAXBContext projectRWJC = null;
 
     /**
      * Parses project xml descriptors and stores information about the projects.
@@ -143,10 +140,12 @@
      *            Name of the portal to which projects belongs to.
      */
     public ProjectsDescriptor(XmlInputFactory isf, String portalName) {
+    	
         this.portalName = portalName;
+        this.isf = isf;
+        
         projects = new LinkedHashMap<String, ProjectDescriptor>();
         newProjects = new LinkedHashMap<String,Project>();
-        newProjectsRW = new LinkedHashMap<String,Project>();
         projectWithErrorsDescriptors = new HashSet<String>();
 
         projectsContexts = Collections
@@ -154,6 +153,12 @@
         contexts = Collections
                 .synchronizedMap(new HashMap<String, DelegateContext>());
 
+        try {           
+            projectRWJC = JAXBContext.newInstance("org.jboss.forge.common.projects.project.rw");
+        } catch (JAXBException e) {
+            log.warn("I could not create JAXBContext.", e);
+        }
+        
         try {
             DomToXmlTransformer xht = new DomToXmlTransformer();
 
@@ -174,7 +179,7 @@
         }
 
         try {
-            LabsServices.getProjectPagesService().updatePages(getNewProjects().values());//TODO!!!
+            LabsServices.getProjectPagesService().updatePages(getNewProjects().values());
         } catch (ServiceRetrievalException e) {
             log.error("Error getting labs project pages service.", e);
         }
@@ -308,10 +313,8 @@
         Node n;
         NodeList nodes = root.getChildNodes();
 
-        JAXBContext projectRWJC=null;
-        JAXBContext projectsJC=null;
+        JAXBContext projectsJC=null;        
         
-        
         try {
             projectsJC = JAXBContext.newInstance("org.jboss.forge.common.projects.configuration");
         } catch (JAXBException e) {
@@ -329,12 +332,6 @@
                 log.warn("I could not create projects.xml configuration.",e);
             }
         }
-        
-        try {           
-            projectRWJC = JAXBContext.newInstance("org.jboss.forge.common.projects.project.rw");
-        } catch (JAXBException e) {
-            log.warn("I could not create JAXBContext.", e);
-        }
 
         for (int i = 0; i < nodes.getLength(); i++) {
             n = nodes.item(i);
@@ -370,16 +367,11 @@
                    newProjects.put(projectId, 
                 		   (Project) ReadOnlyProxy.newInstance(newProject));
                    
-                   ProjectRW newProjectRW = (ProjectRW)un.unmarshal(
-                           isf.getInputSource(projectId+"/" + ProjectsHelper.PROJECT_DESC));
-                   
-                   newProjectsRW.put(projectId,
-                		   (Project) SyncProxy.newInstance(newProjectRW));
-                   
                    log.info("Project "+projectId+" created.");
                    
                } catch (Exception e) {
-                   log.warn("I could not create Project "+projectId+" (RW mode).",e);
+            	   
+                   log.warn("I could not create Project "+projectId+".",e);
                }
            }
            
@@ -837,19 +829,33 @@
 	}
         
 	/**
-	 * Be aware that Project objects returned are NOT thread safe.
-	 * To obtain Project objects use ProjectsService(RW) instead.
+	 * Be aware that Project beans returned are in read-only mode.
+	 * Mutable operations will throw IllegalOperationException.
 	 */
     public Map<String, ? extends Project> getNewProjects() {
     		return newProjects;
     }
 
 	/**
-	 * Be aware that Project objects returned are NOT thread safe.
-	 * To obtain Project objects use ProjectsService(RW) instead.
+	 * @return new Project bean in Read-Write mode.
+	 * Do NOT use in immutable operations as it will affect performance.
 	 */
-    public Map<String, ? extends Project> getNewProjectsRW() {
-    		return newProjectsRW;
+    public Project getNewProjectRW(String projectId) {
+    
+    		ProjectRW newProjectRW;
+    	
+		try {
+			Unmarshaller un = projectRWJC.createUnmarshaller();
+			newProjectRW = (ProjectRW) un.unmarshal(
+		          isf.getInputSource(projectId+"/" + ProjectsHelper.PROJECT_DESC));
+				
+		} catch (Exception e) {
+
+		    log.warn("I could not create Project "+projectId+" (RW mode).", e);
+		    return null;
+		}
+    			
+    		return (Project) SyncProxy.newInstance(newProjectRW);
     }
     
     public Configuration getConfiguration () {

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 21:08:16 UTC (rev 9989)
+++ labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/projects/ProjectsServiceRWImpl.java	2007-03-05 21:34:47 UTC (rev 9990)
@@ -85,13 +85,10 @@
     private ContentManager cm;
     
     public Project getProjectByNameRW(String projectId) {
-    	 Projects projectsClass = ProjectsHelper.getProjects(Constants.LABS_PORTAL);
-         Map<String,? extends Project> projects = projectsClass.getProjectsDescriptor().getNewProjectsRW();
-         return projects.get(projectId);
-         
-         //TODO new, fresh(!) copy of ProjectRW
-         
-         //return null;
+    	
+    		Projects projectsClass = ProjectsHelper.getProjects(Constants.LABS_PORTAL);
+ 
+        return projectsClass.getProjectsDescriptor().getNewProjectRW(projectId);        
     }
     
     public Polls getProjectPollsRW(String projectId) {	




More information about the jboss-svn-commits mailing list