[jboss-svn-commits] JBL Code SVN: r8782 - labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/soa/projects.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jan 9 15:31:34 EST 2007


Author: unibrew
Date: 2007-01-09 15:31:30 -0500 (Tue, 09 Jan 2007)
New Revision: 8782

Modified:
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/soa/projects/ProjectsService.java
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/soa/projects/ProjectsServiceImpl.java
Log:
[JBLAB-821] I created simple API in SOA for persisting new or modified data in project.xml descriptors.

Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/soa/projects/ProjectsService.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/soa/projects/ProjectsService.java	2007-01-09 19:36:07 UTC (rev 8781)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/soa/projects/ProjectsService.java	2007-01-09 20:31:30 UTC (rev 8782)
@@ -77,6 +77,42 @@
 
 	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);
+    
+    /**
+     * 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 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 persistMenu (Menu menu, 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/soa/projects/ProjectsServiceImpl.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/soa/projects/ProjectsServiceImpl.java	2007-01-09 19:36:07 UTC (rev 8781)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/soa/projects/ProjectsServiceImpl.java	2007-01-09 20:31:30 UTC (rev 8782)
@@ -22,12 +22,15 @@
 
 package org.jboss.forge.common.soa.projects;
 
+import java.io.OutputStream;
 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;
@@ -48,6 +51,8 @@
 import org.jboss.forge.common.projects.project.SupportService;
 import org.jboss.logging.Logger;
 import org.jboss.shotoku.ContentManager;
+import org.jboss.shotoku.Directory;
+import org.jboss.shotoku.Node;
 import org.jboss.shotoku.aop.Inject;
 
 
@@ -64,6 +69,21 @@
     
     private static final String PORTAL_NAME = "default";
     
+    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;
     
@@ -157,12 +177,114 @@
 	}
     
     public boolean getPackagedForDownload(String projectId) {
-    	 	
-    		Project project = getProjectByName(projectId);
+    	Project project = getProjectByName(projectId);
         if (project==null) return false;
         return 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(PORTAL_NAME).
+                           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 persistMenu (Menu menu, String projectId) {
+        if (menu==null || projectId==null || projectId.trim().length()==0) return;
+        
+        Project project = getProjectByName(projectId);
+        
+        if (project==null) return;
+        
+        project.setMenu(menu);
+        
+        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 {
 		
 		log.info("Projects service started");




More information about the jboss-svn-commits mailing list