[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