[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