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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Oct 3 23:14:22 EDT 2010


Author: unibrew
Date: 2010-10-03 23:14:21 -0400 (Sun, 03 Oct 2010)
New Revision: 35394

Added:
   labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/ws/
   labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/ws/MagnoliaWebService.java
   labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/ws/MagnoliaWebServiceBean.java
Modified:
   labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/exceptions/ProjectNavigationException.java
   labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/exceptions/ServiceException.java
   labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/navigation/ProjectNavigation.java
   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/ProjectsServiceBean.java
   labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/utils/ContentGetterByUUID.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/utils/HasVisibleChildrenPages.java
   labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/utils/VisibleChildrenPages.java
   labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/test/java/org/jboss/community/projects/ProjectsServiceStandaloneTester.java
Log:
[ORG-564] Added MagnoliaWebService EJB3 bean that exposes all our EJB3 methods as WebService endpoints. Additionally a large bunch of fixes and addons to existing services.

Modified: labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/exceptions/ProjectNavigationException.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/exceptions/ProjectNavigationException.java	2010-10-04 02:36:54 UTC (rev 35393)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/exceptions/ProjectNavigationException.java	2010-10-04 03:14:21 UTC (rev 35394)
@@ -3,6 +3,9 @@
  */
 package org.jboss.community.magnolia.services.exceptions;
 
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.ws.WebFault;
+
 /**
  * @author Ryszard Kozmik <rkozmik at redhat.com>
  *
@@ -14,6 +17,10 @@
      */
     private static final long serialVersionUID = 1L;
     
+    ProjectNavigationException() {
+        super();
+    }
+    
     public ProjectNavigationException(Exception e) {
         super(e);
     }

Modified: labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/exceptions/ServiceException.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/exceptions/ServiceException.java	2010-10-04 02:36:54 UTC (rev 35393)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/exceptions/ServiceException.java	2010-10-04 03:14:21 UTC (rev 35394)
@@ -3,6 +3,7 @@
  */
 package org.jboss.community.magnolia.services.exceptions;
 
+
 /**
  * Basic exception implementation for magnolia services.
  * 
@@ -18,6 +19,10 @@
      */
     private static final long serialVersionUID = 1L;
     
+    ServiceException() {
+        super();
+    }
+    
     public ServiceException (Exception e) {
         message = e.getMessage();
     }
@@ -29,11 +34,8 @@
     /* (non-Javadoc)
      * @see java.lang.Throwable#getMessage()
      */
-    @Override
     public String getMessage() {
         return message;
     }
     
-    
-    
 }

Modified: labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/navigation/ProjectNavigation.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/navigation/ProjectNavigation.java	2010-10-04 02:36:54 UTC (rev 35393)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/navigation/ProjectNavigation.java	2010-10-04 03:14:21 UTC (rev 35394)
@@ -3,28 +3,24 @@
  */
 package org.jboss.community.magnolia.services.navigation;
 
-import javax.jws.WebMethod;
-import javax.jws.WebService;
-
 import org.jboss.community.magnolia.services.exceptions.ProjectNavigationException;
 
 /**
  * @author Ryszard Kozmik <rkozmik at redhat.com>
  *
  */
- at WebService
 public interface ProjectNavigation {
     
     public final static String HEADER_NAVIGATION = "proj_nav";
     public final static String FOOTER_NAVIGATION = "projsubnav_footer";
+    public final static String ABSOLUTE_URL_CONTEXT_PATH = "http://www.jboss.org";
     
-    @WebMethod
+    public String getProjectNavigationHTML(String projectIdName,String currentURI) throws ProjectNavigationException;
+    
     public String getProjectNavigationHTML(String projectIdName) throws ProjectNavigationException;
     
-    @WebMethod
     public String getFooterNavigationHTML(String projectIdName) throws ProjectNavigationException;
     
-    @WebMethod(exclude=true)
-    public String getProjectNavigationHTML(String projectIdName, boolean absoluteUrls, String contextPathPrefix , String navigationType ) throws ProjectNavigationException;
+    public String getProjectNavigationHTML(String projectIdName, boolean absoluteUrls, String contextPathPrefix , String navigationType , String currentURI) throws ProjectNavigationException;
     
 }

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-04 02:36:54 UTC (rev 35393)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/navigation/ProjectNavigationBean.java	2010-10-04 03:14:21 UTC (rev 35394)
@@ -15,15 +15,14 @@
 
 import javax.ejb.EJB;
 import javax.ejb.Stateless;
-import javax.jws.WebService;
 
 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.utils.EnumHashMapValueExtractor;
 import org.jboss.community.magnolia.services.utils.HasVisibleChildrenPages;
 import org.jboss.community.magnolia.services.utils.VisibleChildrenPages;
-import org.jboss.community.magnolia.services.utils.EnumHashMapValueExtractor;
 import org.jboss.community.project.Project;
 
 import freemarker.ext.beans.BeansWrapper;
@@ -38,7 +37,6 @@
  *
  */
 @Stateless(name="ProjectNavigationService")
- at WebService(endpointInterface="org.jboss.community.magnolia.services.navigation.ProjectNavigation")
 public class ProjectNavigationBean implements ProjectNavigationRemote, ProjectNavigationLocal {
     
     @EJB(mappedName="magnoliaAuthor/ProjectsService/local")
@@ -61,16 +59,20 @@
         freemarkerCfg=cfg;
     }
     
+    public String getProjectNavigationHTML(String projectIdName, String currentURI) throws ProjectNavigationException {
+        return getProjectNavigationHTML(projectIdName,true,ABSOLUTE_URL_CONTEXT_PATH,HEADER_NAVIGATION,currentURI);
+    }
+    
     public String getProjectNavigationHTML(String projectIdName) throws ProjectNavigationException {
-        return getProjectNavigationHTML(projectIdName,true,"", ProjectNavigation.HEADER_NAVIGATION );
+        return getProjectNavigationHTML(projectIdName,true,ABSOLUTE_URL_CONTEXT_PATH,HEADER_NAVIGATION,null);
     }
     
-    public String getFooterNavigationHTML(String projectIdName) throws ProjectNavigationException {
-        return getProjectNavigationHTML(projectIdName,true,"", ProjectNavigation.FOOTER_NAVIGATION );
+    public String getFooterNavigationHTML(String projectIdName ) throws ProjectNavigationException {
+        return getProjectNavigationHTML(projectIdName,true,ABSOLUTE_URL_CONTEXT_PATH,FOOTER_NAVIGATION,null);
     }
 
     public String getProjectNavigationHTML(String projectIdName,
-            boolean absoluteUrls, String contextPathPrefix, String navigationType ) throws ProjectNavigationException {
+            boolean absoluteUrls, String contextPathPrefix, String navigationType , String currentURI ) throws ProjectNavigationException {
         
         Writer html = new StringWriter();
         
@@ -97,6 +99,7 @@
             root.put("integerValue",new Integer(0));
             root.put("navigationType", navigationType);
             root.put("contextPath", contextPathPrefix);
+            root.put("currentURI", currentURI==null?"":currentURI );
             template.process(root, html);
             html.flush();
         } catch (IOException e) {

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-04 02:36:54 UTC (rev 35393)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/project/ProjectsServiceBean.java	2010-10-04 03:14:21 UTC (rev 35394)
@@ -6,6 +6,9 @@
 import info.magnolia.cms.core.search.Query;
 import info.magnolia.cms.core.search.QueryManager;
 import info.magnolia.cms.core.search.QueryResult;
+import info.magnolia.cms.link.LinkHelper;
+import info.magnolia.cms.link.LinkResolver;
+import info.magnolia.cms.util.LinkUtil;
 import info.magnolia.context.Context;
 import info.magnolia.context.MgnlContext;
 
@@ -13,6 +16,7 @@
 import java.util.HashMap;
 
 import javax.ejb.Stateless;
+import javax.jcr.ItemNotFoundException;
 import javax.jcr.RepositoryException;
 import javax.jcr.query.InvalidQueryException;
 
@@ -54,7 +58,7 @@
                 for (DefaultNodeData projectProperty : properties) {
                     System.out.println("NodeType: "+projectProperty.getType()+"NodeCOntent: "+" NodeDataHandle: "+projectProperty.getHandle()+"  NodeDataStringValue: "+projectProperty.getValue().getString());
                     String handle = projectProperty.getHandle();
-                    String projectPropertyName = handle.substring(handle.lastIndexOf("/")+1);
+                    String projectPropertyName = projectProperty.getName();
                     System.out.println("projectPropertyName: "+projectPropertyName);
                     ProjectProperty propertyEnum = ProjectProperty.BUILD_LINK.getPropertyByKey(projectPropertyName);
                     if (propertyEnum==null) {
@@ -82,11 +86,16 @@
                             log.warn("Encountered project property UUID link that is not yet defined.");
                         }
                         
-                        System.out.println("UUID_PROJECTPROPERTY_LINK_UUID: "+ projectPropertyValue);
-                        System.out.println("UUID_PROJECTPROPERTY_LINK_HANDLE: "+websiteHM.getContentByUUID(projectPropertyValue).getHandle());
-                        
+                        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, websiteHM.getContentByUUID(projectPropertyValue).getHandle());
+                        projectProperties.put(propertyEnum, handleFromProjectProperty);
                         
                     } else {
                         System.out.println("INSIDE ELSE OF UUID");

Modified: labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/utils/ContentGetterByUUID.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/utils/ContentGetterByUUID.java	2010-10-04 02:36:54 UTC (rev 35393)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/utils/ContentGetterByUUID.java	2010-10-04 03:14:21 UTC (rev 35394)
@@ -15,7 +15,7 @@
 import freemarker.template.TemplateModelException;
 
 /**
- * @author rysiek
+ * @author Ryszard Kozmik <rkozmik at redhat.com>
  *
  */
 public class ContentGetterByUUID implements TemplateMethodModelEx {

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-04 02:36:54 UTC (rev 35393)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/utils/EnumHashMapValueExtractor.java	2010-10-04 03:14:21 UTC (rev 35394)
@@ -13,7 +13,7 @@
 import freemarker.template.TemplateModelException;
 
 /**
- * @author rysiek
+ * @author Ryszard Kozmik <rkozmik at redhat.com>
  * 
  */
 public class EnumHashMapValueExtractor implements TemplateMethodModelEx {

Modified: labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/utils/HasVisibleChildrenPages.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/utils/HasVisibleChildrenPages.java	2010-10-04 02:36:54 UTC (rev 35393)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/utils/HasVisibleChildrenPages.java	2010-10-04 03:14:21 UTC (rev 35394)
@@ -9,6 +9,7 @@
 import java.util.Collection;
 import java.util.List;
 
+import javax.jcr.ItemNotFoundException;
 import javax.jcr.RepositoryException;
 
 import org.apache.log4j.Logger;
@@ -19,7 +20,7 @@
 
 /**
  * 
- * @author rysiek
+ * @author Ryszard Kozmik <rkozmik at redhat.com>
  *
  */
 public class HasVisibleChildrenPages  implements TemplateMethodModelEx {
@@ -30,7 +31,13 @@
         if (arguments.size() != 2) {
             throw new TemplateModelException("Wrong number of arguments.");
         }
+        
         String parentPageUUID = arguments.get(0).toString();
+        
+        if (parentPageUUID==null || parentPageUUID.trim().length()==0 || parentPageUUID.equals("null")) {
+            return false;
+        }
+        
         HierarchyManager websiteHM = (HierarchyManager)((StringModel)arguments.get(1)).getWrappedObject();
         try {
             Content parentPage = websiteHM.getContentByUUID(parentPageUUID);
@@ -42,10 +49,14 @@
                 }
             }
             return false;
+        } catch (ItemNotFoundException e2) {
+            // This exception is being thrown if somebody deletes a page to which link is saved in the navigation
+            String message="A page with UUID "+parentPageUUID+" was deleted but link still exists in navigation.";
+            log.debug(message,e2);
         } catch (RepositoryException e) {
             String message = "Could not find page in website repository or something else unexpected happened.";
             log.warn(message,e);
-        }
+        } 
         return false;
     }
 

Modified: labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/utils/VisibleChildrenPages.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/utils/VisibleChildrenPages.java	2010-10-04 02:36:54 UTC (rev 35393)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/utils/VisibleChildrenPages.java	2010-10-04 03:14:21 UTC (rev 35394)
@@ -22,7 +22,7 @@
 import freemarker.template.TemplateModelException;
 
 /**
- * @author rysiek
+ * @author Ryszard Kozmik <rkozmik at redhat.com>
  *
  */
 public class VisibleChildrenPages implements TemplateMethodModelEx {

Added: labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/ws/MagnoliaWebService.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/ws/MagnoliaWebService.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/ws/MagnoliaWebService.java	2010-10-04 03:14:21 UTC (rev 35394)
@@ -0,0 +1,27 @@
+/**
+ * 
+ */
+package org.jboss.community.magnolia.services.ws;
+
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import javax.jws.WebService;
+
+
+/**
+ * @author Ryszard Kozmik <rkozmik at redhat.com>
+ *
+ */
+ at WebService
+public interface MagnoliaWebService {
+    
+    @WebMethod(operationName="ProjectNavigationWithHighLighting")
+    public String getProjectNavigationHTML( @WebParam(name="projectId") String projectIdName,String currentURI);
+    
+    @WebMethod(operationName="ProjectNavigation")
+    public String getProjectNavigationHTML( @WebParam(name="projectId") String projectIdName);
+    
+    @WebMethod(operationName="ProjectFooterNavigation")
+    public String getFooterNavigationHTML( @WebParam(name="projectId") String projectIdName);
+
+}

Added: 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	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/main/java/org/jboss/community/magnolia/services/ws/MagnoliaWebServiceBean.java	2010-10-04 03:14:21 UTC (rev 35394)
@@ -0,0 +1,45 @@
+/**
+ * 
+ */
+package org.jboss.community.magnolia.services.ws;
+
+import javax.ejb.EJB;
+import javax.ejb.Stateless;
+import javax.jws.WebService;
+
+import org.jboss.community.magnolia.services.navigation.ProjectNavigation;
+
+/**
+ * @author Ryszard Kozmik <rkozmik at redhat.com>
+ *
+ */
+ at Stateless(name="MagnoliaWebService")
+ at WebService(endpointInterface="org.jboss.community.magnolia.services.ws.MagnoliaWebService")
+public class MagnoliaWebServiceBean implements MagnoliaWebService {
+    
+    @EJB(mappedName="magnoliaAuthor/ProjectNavigationService/local")
+    ProjectNavigation pn;
+    
+    public String getFooterNavigationHTML(String  projectIdName) {
+        try {
+            return pn.getFooterNavigationHTML(projectIdName);
+        } catch (Exception e) {
+            // Nothing to do, the exception was for sure already logged but WS+JAXB cannot handle it.
+        }
+        return "";
+    }
+    
+    public String getProjectNavigationHTML(String projectIdName) {
+        return getProjectNavigationHTML(projectIdName,null);
+    }
+    
+    public String getProjectNavigationHTML(String projectIdName,String currentURI) {
+        try {
+            return pn.getProjectNavigationHTML(projectIdName,currentURI);
+        } catch (Exception e) {
+            // Nothing to do, the exception was for sure already logged but WS+JAXB cannot handle it.
+        }
+        return "";
+    }
+
+}

Modified: labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/test/java/org/jboss/community/projects/ProjectsServiceStandaloneTester.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/test/java/org/jboss/community/projects/ProjectsServiceStandaloneTester.java	2010-10-04 02:36:54 UTC (rev 35393)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-services/projects/src/test/java/org/jboss/community/projects/ProjectsServiceStandaloneTester.java	2010-10-04 03:14:21 UTC (rev 35394)
@@ -30,7 +30,7 @@
             ProjectsService projectsBean = (ProjectsService) ref;
             System.out.println(projectsBean.getProject("hibernate"));
             ProjectNavigation pn = (ProjectNavigation)jndiContext.lookup("magnoliaAuthor/ProjectNavigationService/remote");
-            System.out.println(pn.getProjectNavigationHTML("hibernate"));
+            System.out.println(pn.getProjectNavigationHTML("hibernate",null));
         } catch (javax.naming.NamingException ne) {
             ne.printStackTrace();
         } catch (ProjectServiceException e ){



More information about the jboss-svn-commits mailing list