From: <jbo...@li...> - 2005-08-23 09:08:16
|
Author: szimano Date: 2005-08-23 05:08:00 -0400 (Tue, 23 Aug 2005) New Revision: 920 Added: trunk/forge/portal-extensions/forge-wiki/src/etc/org/jboss/wiki/fileaccess/ trunk/forge/portal-extensions/forge-wiki/src/etc/org/jboss/wiki/fileaccess/mime.types trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/fileaccess/ trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java Removed: trunk/forge/portal-extensions/wiki-file-access/ Modified: trunk/forge/portal-extensions/forge-jspwiki/maven.xml trunk/forge/portal-extensions/forge-wiki/project.xml trunk/forge/portal-extensions/forge-wiki/src/etc/org/jboss/wiki/filedatasource.properties trunk/forge/portal-extensions/forge-wiki/src/web/WEB-INF/web.xml trunk/forge/portal-extensions/jspwiki/maven.xml Log: wiki file access moved to wiki... use http:/domain/wiki/page/file Modified: trunk/forge/portal-extensions/forge-jspwiki/maven.xml =================================================================== --- trunk/forge/portal-extensions/forge-jspwiki/maven.xml 2005-08-22 22:57:02 UTC (rev 919) +++ trunk/forge/portal-extensions/forge-jspwiki/maven.xml 2005-08-23 09:08:00 UTC (rev 920) @@ -14,10 +14,10 @@ </goal> <goal name="deploy"> - <!--<ant:copy todir="${local.deploy.dir}" flatten="true"> + <ant:copy todir="${local.deploy.dir}" flatten="true"> <ant:fileset dir="."> <ant:filename name="target/*.war" /> </ant:fileset> - </ant:copy>--> + </ant:copy> </goal> -</project> \ No newline at end of file +</project> Modified: trunk/forge/portal-extensions/forge-wiki/project.xml =================================================================== --- trunk/forge/portal-extensions/forge-wiki/project.xml 2005-08-22 22:57:02 UTC (rev 919) +++ trunk/forge/portal-extensions/forge-wiki/project.xml 2005-08-23 09:08:00 UTC (rev 920) @@ -7,7 +7,7 @@ <project> <pomVersion>3</pomVersion> <extend>../common.xml</extend> - <id>wiki-portlet</id> + <id>wiki</id> <name>Wiki portlet</name> <currentVersion>1.0</currentVersion> <!--<build> @@ -24,24 +24,43 @@ <url>http://mamut.net.pl</url> </organization> - <dependency> - <groupId>aslibs</groupId> - <artifactId>javax.servlet</artifactId> - <version>1.0</version> - <jar>javax.servlet.jar</jar> - </dependency> - - <dependency> - <groupId>aslibs</groupId> - <artifactId>javax.servlet.jsp</artifactId> - <version>1.0</version> - <jar>javax.servlet.jsp.jar</jar> - </dependency> - <dependency> - <groupId>junit</groupId> - <version>3.8.1</version> - <jar>javax.servlet.jsp.jar</jar> - </dependency> + <dependencies> + + <dependency> + <groupId>aslibs</groupId> + <artifactId>javax.servlet</artifactId> + <version>1.0</version> + <jar>javax.servlet.jar</jar> + </dependency> + + <dependency> + <groupId>aslibs</groupId> + <artifactId>javax.servlet.jsp</artifactId> + <version>1.0</version> + <jar>javax.servlet.jsp.jar</jar> + </dependency> + + <dependency> + <groupId>tmate</groupId> + <artifactId>javasvn</artifactId> + <version>1.0</version> + <jar>javasvn.jar</jar> + </dependency> + + <dependency> + <groupId>tmate</groupId> + <artifactId>jsch</artifactId> + <version>1.0</version> + <jar>jsch.jar</jar> + </dependency> + + <dependency> + <groupId>jboss</groupId> + <artifactId>activation</artifactId> + <version>1.0</version> + <jar>activation.jar</jar> + </dependency> + </dependencies> <build> <sourceDirectory>src/java</sourceDirectory> @@ -54,6 +73,10 @@ <directory>src/etc/</directory> <include>**/*.xml</include> </resource> + <resource> + <directory>src/etc/</directory> + <include>**/*.types</include> + </resource> </resources> </build> </project> Added: trunk/forge/portal-extensions/forge-wiki/src/etc/org/jboss/wiki/fileaccess/mime.types =================================================================== --- trunk/forge/portal-extensions/forge-wiki/src/etc/org/jboss/wiki/fileaccess/mime.types 2005-08-22 22:57:02 UTC (rev 919) +++ trunk/forge/portal-extensions/forge-wiki/src/etc/org/jboss/wiki/fileaccess/mime.types 2005-08-23 09:08:00 UTC (rev 920) @@ -0,0 +1,21 @@ +application/postscript ai eps ps +application/rtf rtf +application/slate +application/x-tex tex +application/x-texinfo texinfo texi +application/x-troff t tr roff +audio/basic au snd +audio/x-aiff aif aiff aifc +audio/x-wav wav +image/gif gif +image/ief ief +image/png png +image/jpeg jpeg jpg jpe +image/tiff tiff tif +image/x-xwindowdump xwd +text/html html +text/plain txt +video/mpeg mpeg mpg mpe +video/quicktime qt mov +video/x-msvideo avi +video/x-sgi-movie movie Modified: trunk/forge/portal-extensions/forge-wiki/src/etc/org/jboss/wiki/filedatasource.properties =================================================================== --- trunk/forge/portal-extensions/forge-wiki/src/etc/org/jboss/wiki/filedatasource.properties 2005-08-22 22:57:02 UTC (rev 919) +++ trunk/forge/portal-extensions/forge-wiki/src/etc/org/jboss/wiki/filedatasource.properties 2005-08-23 09:08:00 UTC (rev 920) @@ -2,3 +2,6 @@ # pathToMedia - points, where JSPWiki file structure is situated pathToMedia = /usr/local/forge/wiki + +# pathToAttachements - points, where JSPWiki attachemets are situated +pathToAttachements = /usr/local/forge/wiki \ No newline at end of file Added: trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java =================================================================== --- trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java 2005-08-22 22:57:02 UTC (rev 919) +++ trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java 2005-08-23 09:08:00 UTC (rev 920) @@ -0,0 +1,129 @@ +/***************************************** + * * + * JBoss Portal: The OpenSource Portal * + * * + * Distributable under LGPL license. * + * See terms of license at gnu.org. * + * * + *****************************************/ +package org.jboss.wiki.fileaccess; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.Properties; + + +import javax.activation.MimetypesFileTypeMap; +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletOutputStream; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +import javax.servlet.http.HttpServletRequest; + +import org.jboss.wiki.FileDataSource; + +// import org.jboss.forge.common.content.ContentManager; +// import org.jboss.forge.common.ForgeHelper; + +/** + * A filter that enables to download files which are stored in a working copy of + * a content repository. + * + * @author adamw + */ +public class WikiFileAccessFilter implements Filter { + /** + * <code>BUF_SIZE</code> - size of a buffer, which is used while reading a + * file and sending it to the client. + */ + private final int BUF_SIZE = 32768; + + private String attachementsPath; + + /* + * private ForgeHelper forgeHelper; private ContentManager contentManager; + */ + private MimetypesFileTypeMap mimeTypes; + + + public void init(FilterConfig conf) { + // load mime types map + + mimeTypes = new MimetypesFileTypeMap(WikiFileAccessFilter.class.getResourceAsStream("mime.types")); + + // load path to attachements from filedatasource.properties + + Properties props = new Properties(); + + try { + props.load(FileDataSource.class.getResourceAsStream("filedatasource.properties")); + } + catch (IOException e) { + System.err.println(e); + } + + // get the apropriate property + attachementsPath = props.getProperty("pathToAttachements"); + + System.out.println("[WikiFileAccess]Loaded attachements path: "+attachementsPath); + } + + + public void doFilter(ServletRequest request, ServletResponse response, + FilterChain chain) throws IOException { + + if (request instanceof HttpServletRequest) { + HttpServletRequest httpRequest = (HttpServletRequest) request; + + String requestURI = httpRequest.getRequestURI(); + + // Parse URI to get filename and page name + String[] tokens = requestURI.split("[/]"); + + // get fileName of attachement and page which is connected to + String fileName = tokens[tokens.length - 1]; + String pageName = tokens[tokens.length - 2]; + + System.out.println("[WikiFileAccess]Getting file: "+fileName+" of page: "+pageName); + + tokens = fileName.split("\\."); + + System.out.println(attachementsPath+"/"+pageName+"-att/"+fileName+"-dir/1."+tokens[tokens.length - 1]); + + File file = new File(attachementsPath+"/"+pageName+"-att/"+fileName+"-dir/1."+tokens[tokens.length - 1]); + + FileInputStream fileIS = new FileInputStream(file); + + ServletOutputStream os = response.getOutputStream(); + + response.setContentType(mimeTypes.getContentType(file)); + response.setContentLength((int) file.length()); + + // Transferring the bytes + try { + byte[] buffer = new byte[BUF_SIZE]; + int read; + while ((read = fileIS.read(buffer)) != -1) + os.write(buffer, 0, read); + } catch (Exception e2) { + // Nothing that we can really do. Just send an incomplete + // file. + } finally { + os.close(); + fileIS.close(); + } + + } + else { + throw new IOException("This servlet should be called as HTTPServletRequest"); + } + } + + public void destroy() { + + } +} Modified: trunk/forge/portal-extensions/forge-wiki/src/web/WEB-INF/web.xml =================================================================== --- trunk/forge/portal-extensions/forge-wiki/src/web/WEB-INF/web.xml 2005-08-22 22:57:02 UTC (rev 919) +++ trunk/forge/portal-extensions/forge-wiki/src/web/WEB-INF/web.xml 2005-08-23 09:08:00 UTC (rev 920) @@ -7,4 +7,14 @@ <web-app> + <filter> + <filter-name>wikiFileAccessFilter</filter-name> + <filter-class>org.jboss.wiki.fileaccess.WikiFileAccessFilter</filter-class> + </filter> + + <filter-mapping> + <filter-name>wikiFileAccessFilter</filter-name> + <url-pattern>/*</url-pattern> + <dispatcher>REQUEST</dispatcher> + </filter-mapping> </web-app> Modified: trunk/forge/portal-extensions/jspwiki/maven.xml =================================================================== --- trunk/forge/portal-extensions/jspwiki/maven.xml 2005-08-22 22:57:02 UTC (rev 919) +++ trunk/forge/portal-extensions/jspwiki/maven.xml 2005-08-23 09:08:00 UTC (rev 920) @@ -9,11 +9,11 @@ </goal> <goal name="deploy"> - <!--<ant:copy todir="${local.deploy.dir}" flatten="true"> + <ant:copy todir="${local.deploy.dir}" flatten="true"> <ant:fileset dir="."> <ant:filename name="releases/*.war" /> </ant:fileset> - </ant:copy>--> + </ant:copy> </goal> <goal name="prj-install"> @@ -21,4 +21,4 @@ <ant:fileset dir="to-copy" /> </ant:copy> </goal> -</project> \ No newline at end of file +</project> |