Index: lams_build/lib/lams/lams-contentrepository.jar =================================================================== diff -u -rf4d10b50aef266fee6e1de42659ee330c1bc5d4f -r16f8b72963d9569f0e67f5de8bf64d9aa6e4660a Binary files differ Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/IToolContentHandler.java =================================================================== diff -u -r8fe03be36398979de21121946d3ce1139dd39680 -r16f8b72963d9569f0e67f5de8bf64d9aa6e4660a --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/IToolContentHandler.java (.../IToolContentHandler.java) (revision 8fe03be36398979de21121946d3ce1139dd39680) +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/IToolContentHandler.java (.../IToolContentHandler.java) (revision 16f8b72963d9569f0e67f5de8bf64d9aa6e4660a) @@ -36,8 +36,7 @@ * IToolContentHandler defines the ContentHandler interface used by the tools. * This interface exists so that the ToolDownload servlet can get to the * Repository via ToolContentHandler. It needs to call the tool's - * concrete class, which must be defined in the Spring context as "toolContentHandler" - * (see SPRING_BEAN_NAME). + * concrete class, which must be defined in the servlet's init parameters. * * @see org.lamsfoundation.lams.contentrepository.client.ToolContentHandler * @see org.lamsfoundation.lams.contentrepository.client.Download @@ -53,10 +52,6 @@ /** The "name" used to store the online/offline property in the repository */ public final static String FILE_TYPE_PROPERTY_NAME = "TYPE"; - /** The concrete implementation must be configured as a bean in Spring, using - * this value as the name. */ - public final static String SPRING_BEAN_NAME = "toolContentHandler"; - /** * @return Returns the repositoryWorkspaceName. */ Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/ToolDownload.java =================================================================== diff -u -rc40e8f31ae107cb15f99d49dc9d0fe58a048cad9 -r16f8b72963d9569f0e67f5de8bf64d9aa6e4660a --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/ToolDownload.java (.../ToolDownload.java) (revision c40e8f31ae107cb15f99d49dc9d0fe58a048cad9) +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/ToolDownload.java (.../ToolDownload.java) (revision 16f8b72963d9569f0e67f5de8bf64d9aa6e4660a) @@ -20,6 +20,8 @@ */ package org.lamsfoundation.lams.contentrepository.client; +import javax.servlet.ServletConfig; + import org.lamsfoundation.lams.contentrepository.ITicket; import org.lamsfoundation.lams.contentrepository.RepositoryCheckedException; import org.lamsfoundation.lams.contentrepository.service.IRepositoryService; @@ -34,18 +36,25 @@ * previously saved in the content repository. *
* The servlet accesses the content repository via a tool's ToolContentHandler - * implementation. It looks for the bean IToolContentHandler.SPRING_BEAN_NAME - * in the web based Spring context. If you do not have a ToolContentHandler - * implementation then this servlet will not work, or if you use a different - * name for the bean in the Spring context, then you should derive a new - * concrete class from the Download servlet. + * implementation. It looks for the bean that implements IToolContentHandler + * in the web based Spring context. The name of the bean is specified + * using the "toolContentHandlerBeanName" parameter in the servlet definition + * in web.xml. + * + * If you do not have a ToolContentHandler implementation then this servlet will not work. + * If you need to set up the content repository access differently to the implementation + * in the Tool Content Handler, then derive a new concrete class from the Download servlet. *
* Sample servlet definition:
* <servlet> - * <description>Instructions Download</description> - * <display-name>Instructions Download</display-name> + * <description>Noticeboard Instructions Download</description> + * <display-name>Noticeboard Instructions Download</display-name> * <servlet-name>download</servlet-name> * <servlet-class>org.lamsfoundation.lams.contentrepository.client.ToolDownload</servlet-class> + * <init-param> + * <param-name>toolContentHandlerBeanName</param-name> + * param-value>nbToolContentHandler</param-value> + * </init-param> * <load-on-startup>3</load-on-startup> * </servlet> *@@ -86,30 +95,39 @@ */ public class ToolDownload extends Download { - protected IToolContentHandler toolContentHandler = null; + /** The name of the servlet parameter used to define the implementation bean name */ + public final static String TOOL_CONTENT_HANDLER_BEAN_NAME = "toolContentHandlerBeanName"; + /* (non-Javadoc) * @see org.lamsfoundation.lams.contentrepository.client.Download#getTicket() */ public ITicket getTicket() throws RepositoryCheckedException { - getToolContentHandler(); // make sure it is set up + IToolContentHandler toolContentHandler = getToolContentHandler(); // make sure it is set up return toolContentHandler != null ? toolContentHandler.getTicket(false):null; } /* (non-Javadoc) * @see org.lamsfoundation.lams.contentrepository.client.Download#getRepositoryService() */ public IRepositoryService getRepositoryService() throws RepositoryCheckedException { - getToolContentHandler(); // make sure it is set up + IToolContentHandler toolContentHandler = getToolContentHandler(); // make sure it is set up return toolContentHandler != null? toolContentHandler.getRepositoryService() : null; } - + protected IToolContentHandler getToolContentHandler() { + log.debug("ToolDownload servlet calling context and getting repository singleton."); + + String toolContentHandlerBeanName = getInitParameter(TOOL_CONTENT_HANDLER_BEAN_NAME); + if ( toolContentHandlerBeanName == null ) { + log.error("Accessing Download servlet but tool content handler bean has not been defined. Please define init parameter" + +TOOL_CONTENT_HANDLER_BEAN_NAME+"."); + return null; + } + WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext()); - toolContentHandler = (IToolContentHandler)wac.getBean(IToolContentHandler.SPRING_BEAN_NAME); - - return toolContentHandler; + return (IToolContentHandler)wac.getBean(toolContentHandlerBeanName); } Index: lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/client/TestToolContentHandlerImpl.java =================================================================== diff -u -r6e5832d17263bc6c6f7683733e91e22f97eab569 -r16f8b72963d9569f0e67f5de8bf64d9aa6e4660a --- lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/client/TestToolContentHandlerImpl.java (.../TestToolContentHandlerImpl.java) (revision 6e5832d17263bc6c6f7683733e91e22f97eab569) +++ lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/client/TestToolContentHandlerImpl.java (.../TestToolContentHandlerImpl.java) (revision 16f8b72963d9569f0e67f5de8bf64d9aa6e4660a) @@ -36,7 +36,7 @@ */ public class TestToolContentHandlerImpl extends BaseTestCase { - public static final String HANDLER_BEAN="toolContentHandler"; + public static final String HANDLER_BEAN="testToolContentHandler"; ToolContentHandlerImpl handler = null; /** Index: lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/testApplicationContext.xml =================================================================== diff -u -rbc4e245681b8b561868ab513544d0900eccb7aba -r16f8b72963d9569f0e67f5de8bf64d9aa6e4660a --- lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/testApplicationContext.xml (.../testApplicationContext.xml) (revision bc4e245681b8b561868ab513544d0900eccb7aba) +++ lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/testApplicationContext.xml (.../testApplicationContext.xml) (revision 16f8b72963d9569f0e67f5de8bf64d9aa6e4660a) @@ -2,7 +2,7 @@