Index: lams_build/lib/lams/lams-contentrepository.jar =================================================================== RCS file: /usr/local/cvsroot/lams_build/lib/lams/lams-contentrepository.jar,v diff -u -r1.18 -r1.19 Binary files differ Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/IToolContentHandler.java =================================================================== RCS file: /usr/local/cvsroot/lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/IToolContentHandler.java,v diff -u -r1.3 -r1.4 --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/IToolContentHandler.java 7 Sep 2005 07:13:48 -0000 1.3 +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/IToolContentHandler.java 21 Nov 2005 06:55:18 -0000 1.4 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/ToolDownload.java,v diff -u -r1.3 -r1.4 --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/ToolDownload.java 27 Oct 2005 05:40:13 -0000 1.3 +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/ToolDownload.java 21 Nov 2005 06:55:18 -0000 1.4 @@ -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/testApplicationContext.xml =================================================================== RCS file: /usr/local/cvsroot/lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/Attic/testApplicationContext.xml,v diff -u -r1.1 -r1.2 --- lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/testApplicationContext.xml 20 Jul 2005 05:39:47 -0000 1.1 +++ lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/testApplicationContext.xml 21 Nov 2005 06:55:18 -0000 1.2 @@ -2,7 +2,7 @@ - + Index: lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/client/TestToolContentHandlerImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/client/Attic/TestToolContentHandlerImpl.java,v diff -u -r1.3 -r1.4 --- lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/client/TestToolContentHandlerImpl.java 6 Oct 2005 06:38:03 -0000 1.3 +++ lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/client/TestToolContentHandlerImpl.java 21 Nov 2005 06:55:18 -0000 1.4 @@ -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; /**