[jboss-svn-commits] JBL Code SVN: r18190 - in labs/jbosslabs/labs-3.0-build: core/core-api/src/main/java/org/jboss/labs/exception/admin and 6 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jan 29 10:33:37 EST 2008


Author: wrzep
Date: 2008-01-29 10:33:37 -0500 (Tue, 29 Jan 2008)
New Revision: 18190

Added:
   labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/exception/admin/ProjectNotFoundException.java
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/ViewProject.java
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/project.xhtml
Modified:
   labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/core/service/ProjectService.java
   labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/Project.java
   labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/Username.java
   labs/jbosslabs/labs-3.0-build/services/project-service/src/main/java/org/jboss/labs/core/service/impl/ProjectServiceBean.java
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/ReviewProjectRequest.java
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/WEB-INF/components.xml
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/WEB-INF/pages.xml
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/error.xhtml
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/hibernate.cfg.xml
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/home.xhtml
   labs/jbosslabs/labs-3.0-build/views/project-test-view/src/main/java/org/jboss/labs/view/ProjectTestServlet.java
Log:
JBLAB-904


Modified: labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/core/service/ProjectService.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/core/service/ProjectService.java	2008-01-29 15:32:09 UTC (rev 18189)
+++ labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/core/service/ProjectService.java	2008-01-29 15:33:37 UTC (rev 18190)
@@ -3,6 +3,7 @@
 import org.jboss.labs.core.model.Project;
 import org.jboss.labs.core.model.admin.ProjectRequest;
 import org.jboss.labs.exception.admin.CreateProjectException;
+import org.jboss.labs.exception.admin.ProjectNotFoundException;
 
 import javax.ejb.Local;
 import java.util.List;
@@ -14,7 +15,7 @@
 
     public List<Project> getProjects();
 
-    public Project getProject(String projectId);
+    public Project getProject(String projectId) throws ProjectNotFoundException;
 
     void createProject(ProjectRequest projectRequest) throws CreateProjectException;
 }

Added: labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/exception/admin/ProjectNotFoundException.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/exception/admin/ProjectNotFoundException.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/exception/admin/ProjectNotFoundException.java	2008-01-29 15:33:37 UTC (rev 18190)
@@ -0,0 +1,15 @@
+package org.jboss.labs.exception.admin;
+
+import org.jboss.labs.exception.LabsException;
+
+/**
+ * @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
+ */
+public class ProjectNotFoundException extends LabsException {
+    
+    private static final long serialVersionUID = 4183531789003701360L;
+
+    public ProjectNotFoundException(String msg) {
+        super(msg);
+    }
+}
\ No newline at end of file

Modified: labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/Project.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/Project.java	2008-01-29 15:32:09 UTC (rev 18189)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/Project.java	2008-01-29 15:33:37 UTC (rev 18190)
@@ -4,7 +4,6 @@
 import java.io.Serializable;
 import java.util.List;
 
-
 @Entity
 public class Project implements Serializable {
     
@@ -43,9 +42,9 @@
     private Forum userForum;
     @OneToOne(cascade = CascadeType.PERSIST)
     private Blog mainBlog;
-    @ManyToMany(cascade = CascadeType.PERSIST)
+    @ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
     private List<Username> contributors;
-    @ManyToMany(cascade = CascadeType.PERSIST)
+    @ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
     private List<Username> projectLeads;
 
     public Project() {

Modified: labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/Username.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/Username.java	2008-01-29 15:32:09 UTC (rev 18189)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/Username.java	2008-01-29 15:33:37 UTC (rev 18190)
@@ -29,6 +29,10 @@
     public Username() {
     }
 
+    public Username(String username) {
+        this.username = username;
+    }
+
     public Integer getId() {
         return id;
     }

Modified: labs/jbosslabs/labs-3.0-build/services/project-service/src/main/java/org/jboss/labs/core/service/impl/ProjectServiceBean.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/project-service/src/main/java/org/jboss/labs/core/service/impl/ProjectServiceBean.java	2008-01-29 15:32:09 UTC (rev 18189)
+++ labs/jbosslabs/labs-3.0-build/services/project-service/src/main/java/org/jboss/labs/core/service/impl/ProjectServiceBean.java	2008-01-29 15:33:37 UTC (rev 18190)
@@ -1,14 +1,18 @@
 package org.jboss.labs.core.service.impl;
 
 import org.jboss.labs.core.model.Project;
+import org.jboss.labs.core.model.Username;
 import org.jboss.labs.core.model.admin.ProjectRequest;
 import org.jboss.labs.core.service.ProjectService;
 import org.jboss.labs.exception.admin.CreateProjectException;
+import org.jboss.labs.exception.admin.ProjectNotFoundException;
 
 import javax.ejb.Stateless;
 import javax.jws.WebService;
 import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
 import javax.persistence.PersistenceContext;
+import java.util.Arrays;
 import java.util.List;
 
 @Stateless(name="ProjectService")
@@ -34,6 +38,22 @@
         p.setProjectId(projectId);
         p.setName(projectRequest.getName());
 
+        Username leadUsername = null;
+        try {
+            leadUsername = (Username) em.createQuery("SELECT u FROM Username u WHERE u.username = :username")
+                                                .setParameter("username", projectRequest.getLeadUsername())
+                                                .getResultList();
+        } catch (NoResultException e) {
+            // do nothing
+        }
+
+        if (leadUsername == null) {
+            leadUsername = new Username(projectRequest.getLeadUsername());
+            em.persist(leadUsername);
+        }
+
+        p.setProjectLeads(Arrays.asList(leadUsername));
+
        /* if (repository) {
             Repository r = new Repository(RepositoryType.SVN);
             p.setAnonymusRepository(r);
@@ -60,9 +80,18 @@
         return em.createQuery("SELECT p FROM Project p").getResultList();
     }
 
-    public Project getProject(String projectId) {
+    public Project getProject(String projectId) throws ProjectNotFoundException {
 
-        return (Project) em.createQuery("SELECT p FROM Project p WHERE p.projectId = :projectId").setParameter("projectId", projectId).getSingleResult();
+        Object o;
+
+        try {
+            o = em.createQuery("SELECT p FROM Project p WHERE p.projectId = :projectId").setParameter("projectId", projectId).getSingleResult();
+        } catch (NoResultException e) {
+            throw new ProjectNotFoundException("Project not found: '" + projectId + "'");
+        }
+
+        return (Project) o;
+
     }
 
 

Modified: labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/ReviewProjectRequest.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/ReviewProjectRequest.java	2008-01-29 15:32:09 UTC (rev 18189)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/ReviewProjectRequest.java	2008-01-29 15:33:37 UTC (rev 18190)
@@ -2,7 +2,6 @@
 
 import com.google.inject.Inject;
 import org.jboss.labs.core.service.ProjectService;
-import org.jboss.labs.foo.FooService;
 import org.jboss.labs.injection.seam.Guice;
 import org.jboss.seam.ScopeType;
 import org.jboss.seam.annotations.Logger;
@@ -23,16 +22,12 @@
     @Out(required = false, scope= ScopeType.CONVERSATION) private long tId;
     @Out(required = false, scope= ScopeType.CONVERSATION) private AdminProjectRequest prjRequest;
 
-    @Inject private FooService fooService;
-
     @Inject private ProjectService projectService;
 
     @Logger private Log log;
 
     public String select(Long taskId, AdminProjectRequest prjRequest) {
 
-        log.info("ProjectService: " + projectService + " fooService: " + fooService);
-
         this.tId = taskId;
         this.prjRequest = prjRequest;
 

Added: labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/ViewProject.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/ViewProject.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/ViewProject.java	2008-01-29 15:33:37 UTC (rev 18190)
@@ -0,0 +1,31 @@
+package org.jboss.labs.admin;
+
+import com.google.inject.Inject;
+import org.jboss.labs.core.model.Project;
+import org.jboss.labs.core.service.ProjectService;
+import org.jboss.labs.injection.seam.Guice;
+import org.jboss.labs.exception.admin.ProjectNotFoundException;
+import org.jboss.seam.annotations.Logger;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.web.RequestParameter;
+import org.jboss.seam.log.Log;
+
+
+ at Name("viewProject")
+ at Guice
+public class ViewProject {
+
+    @RequestParameter private String projectId;
+    
+    @Inject private ProjectService projectService;
+
+    @Logger private Log log;
+
+    public Project getProject() throws ProjectNotFoundException {
+
+        log.info("Project Id: " + projectId);
+
+        return projectService.getProject(projectId);
+    }
+
+}
\ No newline at end of file

Modified: labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/WEB-INF/components.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/WEB-INF/components.xml	2008-01-29 15:32:09 UTC (rev 18189)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/WEB-INF/components.xml	2008-01-29 15:33:37 UTC (rev 18190)
@@ -21,7 +21,7 @@
    <core:manager concurrent-request-timeout="500" 
                  conversation-timeout="120000" 
                  conversation-id-parameter="cid"/>
-    
+
    <event type="org.jboss.seam.security.notLoggedIn">
        <action execute="#{redirect.captureCurrentView}"/>
    </event>

Modified: labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/WEB-INF/pages.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/WEB-INF/pages.xml	2008-01-29 15:32:09 UTC (rev 18189)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/WEB-INF/pages.xml	2008-01-29 15:33:37 UTC (rev 18190)
@@ -4,14 +4,14 @@
        xsi:schemaLocation="http://jboss.com/products/seam/pages http://jboss.com/products/seam/pages-2.0.xsd"
        no-conversation-view-id="/home.xhtml">
 
-    <page view-id="*">
-        <navigation>
-            <rule if-outcome="home">
-                <redirect view-id="/home.xhtml"/>
-            </rule>
-        </navigation>
-    </page>
+    <exception class="org.jboss.labs.exception.admin.ProjectNotFoundException">
+        <redirect view-id="/error.xhtml">
+            <message>Project not found</message>
+        </redirect>
+    </exception>
 
+    <!-- default configuration -->
+
     <exception class="org.jboss.seam.framework.EntityNotFoundException">
         <redirect view-id="/error.xhtml">
             <message>Not found</message>

Modified: labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/error.xhtml
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/error.xhtml	2008-01-29 15:32:09 UTC (rev 18189)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/error.xhtml	2008-01-29 15:33:37 UTC (rev 18190)
@@ -11,7 +11,7 @@
 <ui:define name="body">
 
     <rich:panel>
-        Error.
+        Error
         
         <h:messages styleClass="message"/>
     </rich:panel>

Modified: labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/hibernate.cfg.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/hibernate.cfg.xml	2008-01-29 15:32:09 UTC (rev 18189)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/hibernate.cfg.xml	2008-01-29 15:33:37 UTC (rev 18190)
@@ -8,7 +8,7 @@
   <session-factory>
 
     <property name="show_sql">false</property>
-    <property name="connection.datasource">java:/LabsDS</property>
+    <property name="connection.datasource">java:/DefaultDS</property>
     <property name="transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
     <property name="transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
     <property name="cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>

Modified: labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/home.xhtml
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/home.xhtml	2008-01-29 15:32:09 UTC (rev 18189)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/home.xhtml	2008-01-29 15:33:37 UTC (rev 18190)
@@ -31,6 +31,7 @@
                                   action="#{reviewProjectRequest.select(task.id, task.variables['projectRequest'])}" />
               </h:column>
           </h:dataTable>
+            <ui:remove>
           <h:dataTable value="#{projectManager.projects}"
                                    rendered="#{! empty projectManager.projects}"
                                    var="project">
@@ -41,11 +42,13 @@
                </h:column>
                <h:column>
                    <f:facet name="header">Name</f:facet>
-                   #{project.name}
+                   <h:outputLink value="project.seam">
+                       #{project.name}
+                       <f:param name="projectId" value="#{project.projectId}" />
+                   </h:outputLink>
                </h:column>
            </h:dataTable>
-
-         
+              </ui:remove>
         </h:form>
     </rich:panel>
 

Added: labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/project.xhtml
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/project.xhtml	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/project.xhtml	2008-01-29 15:33:37 UTC (rev 18190)
@@ -0,0 +1,44 @@
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:s="http://jboss.com/products/seam/taglib"
+                xmlns:ui="http://java.sun.com/jsf/facelets"
+                xmlns:f="http://java.sun.com/jsf/core"
+                xmlns:h="http://java.sun.com/jsf/html"
+                xmlns:rich="http://richfaces.org/rich"
+                template="layout/template.xhtml">
+
+<ui:define name="body">
+
+    <h:messages globalOnly="true" styleClass="message"/>
+
+    <rich:panel>
+        <f:facet name="header">Project Details</f:facet>
+        <h:form id="mainForm">
+            <table>
+                <tr>
+                    <th>Project Name:</th>
+                    <td>#{viewProject.project.name}</td>
+                </tr>
+                <tr>
+                    <th>Leads:</th>
+                    <td>
+                        <ui:repeat var="lead" value="#{viewProject.project.projectLeads}">
+                            #{lead.username}
+                        </ui:repeat>
+                    </td>
+                </tr>
+                <tr>
+                    <th>Contributors:</th>
+                    <td>
+                        <ui:repeat var="contributor" value="#{viewProject.project.contributors}">
+                            #{contributor.username}
+                        </ui:repeat>
+                    </td>
+                </tr>
+            </table>
+        </h:form>
+    </rich:panel>
+
+</ui:define> 
+</ui:composition>

Modified: labs/jbosslabs/labs-3.0-build/views/project-test-view/src/main/java/org/jboss/labs/view/ProjectTestServlet.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/project-test-view/src/main/java/org/jboss/labs/view/ProjectTestServlet.java	2008-01-29 15:32:09 UTC (rev 18189)
+++ labs/jbosslabs/labs-3.0-build/views/project-test-view/src/main/java/org/jboss/labs/view/ProjectTestServlet.java	2008-01-29 15:33:37 UTC (rev 18190)
@@ -3,7 +3,6 @@
 import org.jboss.labs.core.service.ProjectService;
 
 import javax.naming.InitialContext;
-import javax.naming.NamingException;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
@@ -31,7 +30,7 @@
 			.println(
 					"<html><head><title>hello world</title></head><body><h1>Hello World !</h1>Project service says: "
 							+ projectService.getProject("jbosslabs").getName() + "<br/></body></html>");
-		} catch (NamingException e) {
+		} catch (Exception e) {
 			log(e.getMessage(), e);
 			resp
 			.getWriter()




More information about the jboss-svn-commits mailing list