[jboss-svn-commits] JBL Code SVN: r35462 - in labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community: magnolia/services/project and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Oct 8 08:13:15 EDT 2010


Author: unibrew
Date: 2010-10-08 08:13:15 -0400 (Fri, 08 Oct 2010)
New Revision: 35462

Modified:
   labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/navigation/ProjectNavigationBean.java
   labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/project/ProjectsService.java
   labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/project/ProjectsServiceBean.java
   labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/utils/EnumHashMapValueExtractor.java
   labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/ws/MagnoliaWebServiceBean.java
   labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/project/Project.java
Log:
[ORG-753] Small changes needed to deploy it fine in both ears.

Modified: labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/navigation/ProjectNavigationBean.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/navigation/ProjectNavigationBean.java	2010-10-08 10:52:57 UTC (rev 35461)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/navigation/ProjectNavigationBean.java	2010-10-08 12:13:15 UTC (rev 35462)
@@ -19,7 +19,7 @@
 import org.apache.log4j.Logger;
 import org.jboss.community.magnolia.services.exceptions.ProjectNavigationException;
 import org.jboss.community.magnolia.services.exceptions.ProjectServiceException;
-import org.jboss.community.magnolia.services.project.ProjectsService;
+import org.jboss.community.magnolia.services.project.ProjectsServiceLocal;
 import org.jboss.community.magnolia.services.utils.EnumHashMapValueExtractor;
 import org.jboss.community.magnolia.services.utils.HasVisibleChildrenPages;
 import org.jboss.community.magnolia.services.utils.VisibleChildrenPages;
@@ -39,8 +39,8 @@
 @Stateless(name="ProjectNavigationService")
 public class ProjectNavigationBean implements ProjectNavigationRemote, ProjectNavigationLocal {
     
-    @EJB(mappedName="magnoliaAuthor/ProjectsService/local")
-    ProjectsService projectsService;
+    @EJB
+    ProjectsServiceLocal projectsService;
     
     private static Logger log = Logger.getLogger(ProjectNavigationBean.class);
     
@@ -93,7 +93,7 @@
         
         Template template;
         try {
-            Project project = projectsService.getProject(projectIdName);
+            Project project = projectsService.getProject(projectIdName,parentIdName);
             template = freemarkerCfg.getTemplate("projectNavigation.ftl");
             root.put("project", project);
             System.out.println("PROJECT: "+project.toString());

Modified: labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/project/ProjectsService.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/project/ProjectsService.java	2010-10-08 10:52:57 UTC (rev 35461)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/project/ProjectsService.java	2010-10-08 12:13:15 UTC (rev 35462)
@@ -25,5 +25,17 @@
      *         the specified id doesn't exist.
      */
     public Project getProject(String idName) throws ProjectServiceException;
+    
+    /**
+     * Provides all info about a particular project.
+     * 
+     * @param Idname
+     *            of a project.
+     * @param parentIdName
+     *            of a parent project.
+     * @return POJO with all project related information or null if project with
+     *         the specified id doesn't exist.
+     */
+    public Project getProject(String idName,String parentIdName) throws ProjectServiceException;
 
 }

Modified: labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/project/ProjectsServiceBean.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/project/ProjectsServiceBean.java	2010-10-08 10:52:57 UTC (rev 35461)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/project/ProjectsServiceBean.java	2010-10-08 12:13:15 UTC (rev 35462)
@@ -18,6 +18,7 @@
 import javax.ejb.Stateless;
 import javax.jcr.ItemNotFoundException;
 import javax.jcr.RepositoryException;
+import javax.jcr.ValueFormatException;
 import javax.jcr.query.InvalidQueryException;
 
 import org.apache.jackrabbit.uuid.UUID;
@@ -37,73 +38,39 @@
 public class ProjectsServiceBean implements ProjectsServiceRemote, ProjectsServiceLocal {
     
     private Logger log = Logger.getLogger(ProjectsServiceBean.class);
+    
+    public Project getProject(String idName) throws ProjectServiceException {
+        return getProject(idName,null);
+    }
 
     /* (non-Javadoc)
      * @see org.jboss.community.magnolia.services.project.ProjectsService#getProject(java.lang.String)
      */
-    public Project getProject(String idName) throws ProjectServiceException {
+    public Project getProject(String idName,String parentIdName) throws ProjectServiceException {
         Context ctx = MgnlContext.getSystemContext();
         HierarchyManager websiteHM = ctx.getHierarchyManager("website");
         QueryManager websiteQM = websiteHM.getQueryManager();
         try {
-            Query projectQuery = websiteQM.createQuery(getQueryStatement(idName), info.magnolia.cms.core.search.Query.SQL);
+            
+            Query projectQuery = websiteQM.createQuery(getQueryStatementVer1(idName,parentIdName), info.magnolia.cms.core.search.Query.SQL);
             QueryResult queryResult = projectQuery.execute();
             System.out.println("JESTEM TU");
             Collection<DefaultContent> projectNodes = queryResult.getContent("mgnl:contentNode");
             HashMap<ProjectProperty,String> projectProperties = new HashMap<ProjectProperty,String>();
             if (!projectNodes.isEmpty()) {
-                DefaultContent projectNode = projectNodes.iterator().next();
-                System.out.println("OBJECT: "+projectNode.toString()+" HANDLE: "+projectNode.getHandle());
-                Collection<DefaultNodeData> properties = projectNode.getNodeDataCollection();
-                for (DefaultNodeData projectProperty : properties) {
-                    System.out.println("NodeType: "+projectProperty.getType()+"NodeCOntent: "+" NodeDataHandle: "+projectProperty.getHandle()+"  NodeDataStringValue: "+projectProperty.getValue().getString());
-                    String handle = projectProperty.getHandle();
-                    String projectPropertyName = projectProperty.getName();
-                    System.out.println("projectPropertyName: "+projectPropertyName);
-                    ProjectProperty propertyEnum = ProjectProperty.BUILD_LINK.getPropertyByKey(projectPropertyName);
-                    if (propertyEnum==null) {
-                        log.warn("Encountered project property name that is not yet defined.");
-                        continue;
-                    }
-                    
-                    String projectPropertyValue = projectProperty.getValue().getString();
-                    System.out.println("PROJECTPROPERTYVALUE: "+projectPropertyValue);
-                    
-                    //TODO: This is a bit wrong that exception is being thrown during standard UUID link checking.
-                    boolean isUUID=false;
-                    try {
-                        UUID.fromString(projectPropertyValue);
-                        isUUID=true;
-                    } catch (IllegalArgumentException exception) {
-                        //IT JUST MEANS THAT THIS STRING IS NOT AN UUID.
-                        isUUID=false;
-                    }
-                    
-                    if (isUUID) {
-                        System.out.println("INSIDE UUID MATCHED");
-                        ProjectProperty propertyUUIDEnum = ProjectProperty.BUILD_LINK.getPropertyByKey(projectPropertyName+"_UUID");
-                        if (propertyUUIDEnum==null) {
-                            log.warn("Encountered project property UUID link that is not yet defined.");
-                        }
-                        
-                        String handleFromProjectProperty = null;
-                        try {
-                            handleFromProjectProperty = websiteHM.getContentByUUID(projectPropertyValue).getHandle();
-                        } catch (ItemNotFoundException e) {
-                            // This exception is being thrown if somebody deletes a page to which link is saved in the navigation
-                            String message="A page with UUID "+projectPropertyValue+" was deleted but link still exists in navigation.";
-                            log.debug(message,e);
-                        }
-                        projectProperties.put(propertyUUIDEnum, projectPropertyValue);
-                        projectProperties.put(propertyEnum, handleFromProjectProperty);
-                        
-                    } else {
-                        System.out.println("INSIDE ELSE OF UUID");
-                        projectProperties.put(propertyEnum, projectPropertyValue);
-                    }
-                }
+                extractQueryResults(projectNodes, projectProperties, websiteHM);
             }
+            
+            projectQuery = websiteQM.createQuery(getQueryStatementVer2(idName,parentIdName), info.magnolia.cms.core.search.Query.SQL);
+            queryResult = projectQuery.execute();
+            System.out.println("JESTEM TU");
+            projectNodes = queryResult.getContent("mgnl:contentNode");
+            if (!projectNodes.isEmpty()) {
+                extractQueryResults(projectNodes, projectProperties, websiteHM);
+            }
+            
             return new Project(projectProperties);
+            
         } catch (InvalidQueryException e1) {
             e1.printStackTrace();
             String message = "Project search query failed due to mistake in the query.";
@@ -121,12 +88,79 @@
         return null;
     }
     
-    private String getQueryStatement (String projectId) {
+    private void extractQueryResults (Collection<DefaultContent> projectNodes,HashMap<ProjectProperty,String> projectProperties,HierarchyManager websiteHM) throws ValueFormatException, IllegalStateException, RepositoryException {
+        DefaultContent projectNode = projectNodes.iterator().next();
+        System.out.println("OBJECT: "+projectNode.toString()+" HANDLE: "+projectNode.getHandle());
+        Collection<DefaultNodeData> properties = projectNode.getNodeDataCollection();
+        for (DefaultNodeData projectProperty : properties) {
+            System.out.println("NodeType: "+projectProperty.getType()+"NodeCOntent: "+" NodeDataHandle: "+projectProperty.getHandle()+"  NodeDataStringValue: "+projectProperty.getValue().getString());
+            String handle = projectProperty.getHandle();
+            String projectPropertyName = projectProperty.getName();
+            System.out.println("projectPropertyName: "+projectPropertyName);
+            ProjectProperty propertyEnum = ProjectProperty.BUILD_LINK.getPropertyByKey(projectPropertyName);
+            if (propertyEnum==null) {
+                log.warn("Encountered project property name that is not yet defined.");
+                continue;
+            }
+            
+            String projectPropertyValue = projectProperty.getValue().getString();
+            System.out.println("PROJECTPROPERTYVALUE: "+projectPropertyValue);
+            
+            //TODO: This is a bit wrong that exception is being thrown during standard UUID link checking.
+            boolean isUUID=false;
+            try {
+                UUID.fromString(projectPropertyValue);
+                isUUID=true;
+            } catch (IllegalArgumentException exception) {
+                //IT JUST MEANS THAT THIS STRING IS NOT AN UUID.
+                isUUID=false;
+            }
+            
+            if (isUUID) {
+                System.out.println("INSIDE UUID MATCHED");
+                ProjectProperty propertyUUIDEnum = ProjectProperty.BUILD_LINK.getPropertyByKey(projectPropertyName+"_UUID");
+                if (propertyUUIDEnum==null) {
+                    log.warn("Encountered project property UUID link that is not yet defined.");
+                }
+                
+                String handleFromProjectProperty = null;
+                try {
+                    handleFromProjectProperty = websiteHM.getContentByUUID(projectPropertyValue).getHandle();
+                } catch (ItemNotFoundException e) {
+                    // This exception is being thrown if somebody deletes a page to which link is saved in the navigation
+                    String message="A page with UUID "+projectPropertyValue+" was deleted but link still exists in navigation.";
+                    log.debug(message,e);
+                }
+                projectProperties.put(propertyUUIDEnum, projectPropertyValue);
+                projectProperties.put(propertyEnum, handleFromProjectProperty);
+                
+            } else {
+                System.out.println("INSIDE ELSE OF UUID");
+                projectProperties.put(propertyEnum, projectPropertyValue);
+            }
+        }
+    }
+    
+    private String getQueryStatementVer1 (String projectId,String parentProjectId) {
+        System.out.println("QUERY VER1 PROJECTID: "+projectId+"   PARENTID: "+parentProjectId);
         String query = "SELECT * FROM nt:base " +
         "WHERE mgnl:template = 'projectNavigation' " +
-        "AND jcr:path LIKE '%/";
+        "AND jcr:path LIKE '/";
+        query+=parentProjectId!=null && parentProjectId.trim().length()>0?parentProjectId+"/":"";
         query+=projectId+"/headerParagraphs/%'";
+        System.out.println("QUERY1: "+query);
         return query;
     }
+    
+    private String getQueryStatementVer2 (String projectId,String parentProjectId) {
+        System.out.println("QUERY VER2 PROJECTID: "+projectId+"   PARENTID: "+parentProjectId);
+        String query = "SELECT * FROM nt:base " +
+        "WHERE mgnl:template = 'projectNavigation' " +
+        "AND jcr:path LIKE '/";
+        query+=parentProjectId!=null && parentProjectId.trim().length()>0?parentProjectId+"/%/":"";
+        query+=projectId+"/headerParagraphs/%'";
+        System.out.println("QUERY2: "+query);
+        return query;
+    }
 
 }

Modified: labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/utils/EnumHashMapValueExtractor.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/utils/EnumHashMapValueExtractor.java	2010-10-08 10:52:57 UTC (rev 35461)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/utils/EnumHashMapValueExtractor.java	2010-10-08 12:13:15 UTC (rev 35462)
@@ -22,19 +22,11 @@
         if (arguments.size() != 2) {
             throw new TemplateModelException("Wrong number of arguments.");
         }
-        System.out.println("PROP1: " + arguments.get(0));
-        System.out.println("PROP2: " + arguments.get(1));
         ProjectProperty projectPropKey = ProjectProperty.valueOf(arguments.get(
                 0).toString());
-        System.out.println("OBJECT: "
-                + ((StringModel) arguments.get(1)).getWrappedObject()
-                        .toString());
         Object object = ((StringModel) arguments.get(1)).getWrappedObject();
-        System.out.println("BREAKPOINT");
         Project project = (Project) object;
-        System.out.println("BREAKPOINT2");
         String returnValue = project.getProperty(projectPropKey);
-        System.out.println("RETURN VALUE: " + returnValue);
         return returnValue == null ? "" : returnValue;
     }
 

Modified: labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/ws/MagnoliaWebServiceBean.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/ws/MagnoliaWebServiceBean.java	2010-10-08 10:52:57 UTC (rev 35461)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/ws/MagnoliaWebServiceBean.java	2010-10-08 12:13:15 UTC (rev 35462)
@@ -9,8 +9,8 @@
 
 import org.jboss.community.magnolia.services.exceptions.ProjectNavigationException;
 import org.jboss.community.magnolia.services.exceptions.ProjectServiceException;
-import org.jboss.community.magnolia.services.navigation.ProjectNavigation;
-import org.jboss.community.magnolia.services.project.ProjectsService;
+import org.jboss.community.magnolia.services.navigation.ProjectNavigationLocal;
+import org.jboss.community.magnolia.services.project.ProjectsServiceLocal;
 import org.jboss.community.project.Project;
 
 /**
@@ -21,11 +21,11 @@
 @WebService(endpointInterface="org.jboss.community.magnolia.services.ws.MagnoliaWebService")
 public class MagnoliaWebServiceBean implements MagnoliaWebService {
     
-    @EJB(mappedName="magnoliaAuthor/ProjectNavigationService/local")
-    ProjectNavigation pn;
+    @EJB
+    ProjectNavigationLocal pn;
     
-    @EJB(mappedName="magnoliaAuthor/ProjectsService/local")
-    ProjectsService ps;
+    @EJB
+    ProjectsServiceLocal ps;
     
     public String getFooterNavigationHTMLWithParent(String  projectIdName,String parentProjectId) {
         try {
@@ -58,12 +58,17 @@
     }
     
     public Project getProjectById(String projectId) {
-        return getProjectByIdAndParentId(projectId, null);
+        try {
+            return ps.getProject(projectId);
+        } catch (ProjectServiceException e) {
+           // Nothing to do, the exception was for sure already logged but WS+JAXB cannot handle it.
+        }
+        return null;
     }
     
     public Project getProjectByIdAndParentId(String projectId,String parentProjectId) {
         try {
-            return ps.getProject(projectId);
+            return ps.getProject(projectId,parentProjectId);
         } catch (ProjectServiceException e) {
            // Nothing to do, the exception was for sure already logged but WS+JAXB cannot handle it.
         }

Modified: labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/project/Project.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/project/Project.java	2010-10-08 10:52:57 UTC (rev 35461)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/project/Project.java	2010-10-08 12:13:15 UTC (rev 35462)
@@ -6,7 +6,8 @@
 import java.io.Serializable;
 import java.util.HashMap;
 
-import lombok.Data;
+import javax.xml.bind.annotation.XmlType;
+
 import lombok.ToString;
 
 /**
@@ -15,6 +16,7 @@
  *
  */
 @ToString
+ at XmlType
 public class Project implements Serializable {
     
     private static final long serialVersionUID = 1L;



More information about the jboss-svn-commits mailing list