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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Feb 15 09:19:57 EST 2007


Author: unibrew
Date: 2007-02-15 09:19:56 -0500 (Thu, 15 Feb 2007)
New Revision: 9535

Added:
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/configuration/Configuration.java
Removed:
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/configuration/Projects.java
Modified:
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/ejb3/ConfigurationService.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/ProjectsHelper.java
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/configuration/ObjectFactory.java
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/configuration/Project.java
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/web/WEB-INF/projects.xsd
   labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/configuration/ConfigurationServiceImpl.java
Log:
[JBLAB-832] I added code for executing projects.xml parsers, I finished ConfigurationService and modified a bit parser classes together with XMLSchema file.

Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/ejb3/ConfigurationService.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/ejb3/ConfigurationService.java	2007-02-15 14:15:40 UTC (rev 9534)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/ejb3/ConfigurationService.java	2007-02-15 14:19:56 UTC (rev 9535)
@@ -1,20 +1,21 @@
 package org.jboss.forge.common.ejb3;
 
-import org.jboss.forge.common.projects.configuration.Projects;
+import org.jboss.forge.common.projects.configuration.Configuration;
+import org.jboss.forge.common.projects.configuration.Project;
 
+import java.util.List;
+
 public interface ConfigurationService
 {
     
     public static final String CONFIGURATION_SERVICE = "labs:service=configuration";
     
-    public Projects getConfiguredProjects ();
+    public Configuration getConfiguration();
     
+    public List<Project> getConfiguredProjects ();
+    
     public String getProjectPermission (String projectId) ;
     
-    public String getProjectInfoPage (String projectId) ;
-    
-    public String getProjectMainPage (String projectId) ;
-    
     public String getProjectLevel (String projectId) ;
     
     public String getProjectEditPermission (String projectId) ;

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-02-15 14:15:40 UTC (rev 9534)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsDescriptor.java	2007-02-15 14:19:56 UTC (rev 9535)
@@ -47,6 +47,7 @@
 import org.jboss.forge.common.projects.permissions.NullPermissionsChecker;
 import org.jboss.forge.common.projects.permissions.PermissionsChecker;
 import org.jboss.forge.common.projects.project.Project;
+import org.jboss.forge.common.projects.configuration.Configuration;
 import org.jboss.logging.Logger;
 import org.jboss.portal.core.servlet.jsp.taglib.context.DelegateContext;
 import org.w3c.dom.Document;
@@ -88,6 +89,11 @@
      * Project id --> Corresponding NEW project descriptor object
      */
     private Map<String, Project> newProjects;
+    
+    /**
+     * Configuration from projects.xml descriptor.
+     */
+    private Configuration configuration;
 
     /**
      * Permissions descriptor --> Corresponding global context
@@ -297,13 +303,31 @@
         Node n;
         NodeList nodes = root.getChildNodes();
 
-        JAXBContext jc=null;
+        JAXBContext projectJC=null;
+        JAXBContext projectsJC=null;
         
         try {
-            jc = JAXBContext.newInstance("org.jboss.forge.common.projects.project");
+            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();
+                this.configuration = (Configuration)un.unmarshal(
+                    isf.getInputSource(ProjectsHelper.PROJECTS_DESC));
+                log.info("Projects.xml configuration created.");
+            } catch (Exception e) {
+                log.warn("I could not create projects.xml configuration.");
+            }
+        }
+        
+        try {
+            projectJC = JAXBContext.newInstance("org.jboss.forge.common.projects.project");
+        } catch (JAXBException e) {
+            log.warn("I could not create JAXBContext."+e.getCause());
+        }
 
         for (int i = 0; i < nodes.getLength(); i++) {
             n = nodes.item(i);
@@ -321,13 +345,13 @@
                             portalName, adminProperties);
                     projects.put(projectId, pd);
                     
-                    if (jc!=null) {
+                    if (projectJC!=null) {
                         try {
-                            Unmarshaller un = jc.createUnmarshaller();
+                            Unmarshaller un = projectJC.createUnmarshaller();
                             Project newProject = (Project)un.unmarshal(
                                 isf.getInputSource(projectId+"/" + ProjectsHelper.PROJECT_DESC));
                             newProjects.put(projectId,newProject);
-                            log.info("I created Project "+projectId+".");
+                            log.info("Project "+projectId+" created.");
                         } catch (Exception e) {
                             log.warn("I could not create Project "+projectId+".");
                         }
@@ -791,4 +815,8 @@
         public Map<String,Project> getNewProjects() {
             return newProjects;
         }
+        
+    public Configuration getConfiguration () {
+        return this.configuration;
+    }
 }

Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsHelper.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsHelper.java	2007-02-15 14:15:40 UTC (rev 9534)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsHelper.java	2007-02-15 14:19:56 UTC (rev 9535)
@@ -117,11 +117,15 @@
 	 *            Name of the portal.
 	 * @return An appropriate instance of class Projects.
 	 */
-	public static synchronized Projects getProjects(String portalName) {
+	public static Projects getProjects(String portalName) {
 		Projects projects = projectsObjects.get(portalName);
 		if (projects == null) {
-			projects = new Projects(portalName);
-			projectsObjects.put(portalName, projects);
+            synchronized (ProjectsHelper.class) {
+                if (projects == null) {
+                    projects = new Projects(portalName);
+                    projectsObjects.put(portalName, projects);
+                }
+            }
 		}
 
 		return projects;

Added: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/configuration/Configuration.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/configuration/Configuration.java	                        (rev 0)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/configuration/Configuration.java	2007-02-15 14:19:56 UTC (rev 9535)
@@ -0,0 +1,87 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.forge.common.projects.configuration;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * 
+ *         Root class and a placeholder for all projects.
+ *         PLEASE, DO NOT MODIFY THIS CLASS UNLESS YOU KNOW JAXB.
+ *         @author Ryszard Kozmik
+ *                 
+ * 
+ * 
+ * 
+ */
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at XmlType(name = "", propOrder = {
+    "projects"
+})
+ at XmlRootElement(name = "projects")
+public class Configuration
+    implements Serializable
+{
+
+    private final static long serialVersionUID = 1L;
+    @XmlElement(name = "project")
+    protected List<Project> projects;
+
+    /**
+     * Gets the value of the projects property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the projects property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getProjects().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Project }
+     * 
+     * 
+     */
+    public List<Project> getProjects() {
+        if (projects == null) {
+            projects = new ArrayList<Project>();
+        }
+        return this.projects;
+    }
+
+}

Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/configuration/ObjectFactory.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/configuration/ObjectFactory.java	2007-02-15 14:15:40 UTC (rev 9534)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/configuration/ObjectFactory.java	2007-02-15 14:19:56 UTC (rev 9535)
@@ -51,11 +51,11 @@
     }
 
     /**
-     * Create an instance of {@link Projects }
+     * Create an instance of {@link Configuration }
      * 
      */
-    public Projects createProjects() {
-        return new Projects();
+    public Configuration createConfiguration() {
+        return new Configuration();
     }
 
     /**

Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/configuration/Project.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/configuration/Project.java	2007-02-15 14:15:40 UTC (rev 9534)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/configuration/Project.java	2007-02-15 14:19:56 UTC (rev 9535)
@@ -27,26 +27,31 @@
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
 
 
 /**
  * 
- *         This class describes main info about project availability, 
- *         permissions, level in navigation etc.
- *         PLEASE, DO NOT MODIFY THIS CLASS UNLESS YOU KNOW JAXB.
- *         @author Ryszard Kozmik
- *                 
+ * 	        This class describes main info about project availability, 
+ * 	        permissions, level in navigation etc.
+ * 	        PLEASE, DO NOT MODIFY THIS CLASS UNLESS YOU KNOW JAXB.
+ * 	        @author Ryszard Kozmik
+ * 	                
  * 
  * 
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
- at XmlType(name = "project")
+ at XmlType(name = "project", propOrder = {
+    "content"
+})
 public class Project
     implements Serializable
 {
 
     private final static long serialVersionUID = 1L;
+    @XmlValue
+    protected String content;
     @XmlAttribute(required = true)
     protected String level;
     @XmlAttribute(name = "edit-permission")
@@ -55,6 +60,30 @@
     protected String permission;
 
     /**
+     * Gets the value of the content property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getContent() {
+        return content;
+    }
+
+    /**
+     * Sets the value of the content property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setContent(String value) {
+        this.content = value;
+    }
+
+    /**
      * Gets the value of the level property.
      * 
      * @return

Deleted: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/configuration/Projects.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/configuration/Projects.java	2007-02-15 14:15:40 UTC (rev 9534)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/configuration/Projects.java	2007-02-15 14:19:56 UTC (rev 9535)
@@ -1,87 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-package org.jboss.forge.common.projects.configuration;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-
-/**
- * 
- *         Root class and a placeholder for all projects.
- *         PLEASE, DO NOT MODIFY THIS CLASS UNLESS YOU KNOW JAXB.
- *         @author Ryszard Kozmik
- *                 
- * 
- * 
- * 
- */
- at XmlAccessorType(XmlAccessType.FIELD)
- at XmlType(name = "", propOrder = {
-    "projects"
-})
- at XmlRootElement(name = "projects")
-public class Projects
-    implements Serializable
-{
-
-    private final static long serialVersionUID = 1L;
-    @XmlElement(name = "project")
-    protected List<Project> projects;
-
-    /**
-     * Gets the value of the projects property.
-     * 
-     * <p>
-     * This accessor method returns a reference to the live list,
-     * not a snapshot. Therefore any modification you make to the
-     * returned list will be present inside the JAXB object.
-     * This is why there is not a <CODE>set</CODE> method for the projects property.
-     * 
-     * <p>
-     * For example, to add a new item, do as follows:
-     * <pre>
-     *    getProjects().add(newItem);
-     * </pre>
-     * 
-     * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list
-     * {@link Project }
-     * 
-     * 
-     */
-    public List<Project> getProjects() {
-        if (projects == null) {
-            projects = new ArrayList<Project>();
-        }
-        return this.projects;
-    }
-
-}

Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/web/WEB-INF/projects.xsd
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/web/WEB-INF/projects.xsd	2007-02-15 14:15:40 UTC (rev 9534)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/web/WEB-INF/projects.xsd	2007-02-15 14:19:56 UTC (rev 9535)
@@ -40,7 +40,7 @@
 <xs:element name="projects" >
 	<xs:annotation>
         <xs:appinfo>
-            <jxb:class>
+            <jxb:class name="configuration" >
                 <jxb:javadoc>
         Root class and a placeholder for all projects.
         PLEASE, DO NOT MODIFY THIS CLASS UNLESS YOU KNOW JAXB.
@@ -62,22 +62,22 @@
     </xs:complexType>
 </xs:element>
 
-    <xs:complexType name="project" >
-    <xs:annotation>
-        <xs:appinfo>
-            <jxb:class>
-                <jxb:javadoc>
-        This class describes main info about project availability, 
-        permissions, level in navigation etc.
-        PLEASE, DO NOT MODIFY THIS CLASS UNLESS YOU KNOW JAXB.
-        @author Ryszard Kozmik
-                </jxb:javadoc>
-            </jxb:class>
-        </xs:appinfo>
-    </xs:annotation>
-        <xs:attribute name="level" type="xs:string" use="required" />
-        <xs:attribute name="edit-permission" type="xs:string" use="optional" />
-        <xs:attribute name="permission" type="xs:string" use="optional" />
+    <xs:complexType name="project" mixed="true" >
+	    <xs:annotation>
+	        <xs:appinfo>
+	            <jxb:class>
+	                <jxb:javadoc>
+	        This class describes main info about project availability, 
+	        permissions, level in navigation etc.
+	        PLEASE, DO NOT MODIFY THIS CLASS UNLESS YOU KNOW JAXB.
+	        @author Ryszard Kozmik
+	                </jxb:javadoc>
+	            </jxb:class>
+	        </xs:appinfo>
+	    </xs:annotation>
+	    <xs:attribute name="level" type="xs:string" use="required" />
+	    <xs:attribute name="edit-permission" type="xs:string" use="optional" />
+	    <xs:attribute name="permission" type="xs:string" use="optional" />
     </xs:complexType>
 
 

Modified: labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/configuration/ConfigurationServiceImpl.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/configuration/ConfigurationServiceImpl.java	2007-02-15 14:15:40 UTC (rev 9534)
+++ labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/configuration/ConfigurationServiceImpl.java	2007-02-15 14:19:56 UTC (rev 9535)
@@ -3,9 +3,16 @@
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 
+import java.util.List;
+import java.util.ArrayList;
+
 import org.jboss.annotation.ejb.Service;
 import org.jboss.forge.common.ejb3.ConfigurationService;
-import org.jboss.forge.common.projects.configuration.Projects;
+import org.jboss.forge.common.projects.configuration.Configuration;
+import org.jboss.forge.common.projects.configuration.Project;
+import org.jboss.forge.common.projects.ProjectsHelper;
+import org.jboss.forge.common.projects.Projects;
+import org.jboss.forge.common.Constants;
 import org.jboss.logging.Logger;
 import org.jboss.shotoku.ContentManager;
 import org.jboss.shotoku.aop.Inject;
@@ -33,28 +40,63 @@
     @Inject
     private ContentManager cm;
     
-    public Projects getConfiguredProjects () {
-        return null;
+    public Configuration getConfiguration () {
+        Projects projectsClass = ProjectsHelper.getProjects(Constants.LABS_PORTAL);
+        return projectsClass.getProjectsDescriptor().getConfiguration();
     }
     
-    public String getProjectPermission (String projectId) {
-        return null;
+    public List<Project> getConfiguredProjects() {
+        Configuration configuration = getConfiguration();
+        if (configuration==null) {
+            return new ArrayList<Project>();
+        }
+        return configuration.getProjects();
     }
     
-    public String getProjectInfoPage (String projectId) {
+    public Project getConfiguredProject(String projectId) {
+        if (projectId==null || projectId.trim().length()==0) {
+            return null;
+        }
+        List<Project> projects = getConfiguredProjects();
+        for (Project project : projects) {
+            if (project.getContent().compareTo(projectId)==0) {
+                return project;
+            }
+        }
         return null;
     }
     
-    public String getProjectMainPage (String projectId) {
-        return null;
+    public String getProjectPermission (String projectId) {
+        if (projectId==null || projectId.trim().length()==0) {
+            return null;
+        }
+        Project project = getConfiguredProject(projectId);
+        if (project==null) {
+            return null;
+        }
+        return project.getPermission();
     }
     
     public String getProjectLevel (String projectId) {
-        return null;
+        if (projectId==null || projectId.trim().length()==0) {
+            return null;
+        }
+        Project project = getConfiguredProject(projectId);
+        if (project==null) {
+            return null;
+        }
+        return project.getLevel();
     }
     
     public String getProjectEditPermission (String projectId) {
-        return null;
+        if (projectId==null || projectId.trim().length()==0) {
+            return null;
+        }
+        Project project = getConfiguredProject(projectId);
+        if (project==null) {
+            return null;
+        }
+        return project.getEditPermission();
     }
     
     




More information about the jboss-svn-commits mailing list