Author: szimano Date: 2005-08-22 18:54:39 -0400 (Mon, 22 Aug 2005) New Revision: 917 Added: trunk/forge/portal-extensions/wiki-file-access/ trunk/forge/portal-extensions/wiki-file-access/maven.xml trunk/forge/portal-extensions/wiki-file-access/project.properties trunk/forge/portal-extensions/wiki-file-access/project.xml trunk/forge/portal-extensions/wiki-file-access/src/ trunk/forge/portal-extensions/wiki-file-access/src/etc/ trunk/forge/portal-extensions/wiki-file-access/src/etc/org/ trunk/forge/portal-extensions/wiki-file-access/src/etc/org/jboss/ trunk/forge/portal-extensions/wiki-file-access/src/etc/org/jboss/wiki/ trunk/forge/portal-extensions/wiki-file-access/src/etc/org/jboss/wiki/fileaccess/ trunk/forge/portal-extensions/wiki-file-access/src/etc/org/jboss/wiki/fileaccess/mime.types trunk/forge/portal-extensions/wiki-file-access/src/java/ trunk/forge/portal-extensions/wiki-file-access/src/java/org/ trunk/forge/portal-extensions/wiki-file-access/src/java/org/jboss/ trunk/forge/portal-extensions/wiki-file-access/src/java/org/jboss/wiki/ trunk/forge/portal-extensions/wiki-file-access/src/java/org/jboss/wiki/fileaccess/ trunk/forge/portal-extensions/wiki-file-access/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java trunk/forge/portal-extensions/wiki-file-access/src/web/ trunk/forge/portal-extensions/wiki-file-access/src/web/WEB-INF/ trunk/forge/portal-extensions/wiki-file-access/src/web/WEB-INF/tld/ trunk/forge/portal-extensions/wiki-file-access/src/web/WEB-INF/tld/forge.tld trunk/forge/portal-extensions/wiki-file-access/src/web/WEB-INF/web.xml Log: wiki file access servlet Added: trunk/forge/portal-extensions/wiki-file-access/maven.xml =================================================================== --- trunk/forge/portal-extensions/wiki-file-access/maven.xml 2005-08-22 17:24:39 UTC (rev 916) +++ trunk/forge/portal-extensions/wiki-file-access/maven.xml 2005-08-22 22:54:39 UTC (rev 917) @@ -0,0 +1,32 @@ +<!-- + JBoss, the OpenSource J2EE webOS + Distributable under LGPL license. + See terms of license at gnu.org. + --> +<project xmlns:j="jelly:core" xmlns:ant="jelly:ant" xmlns:u="jelly:util"> + <!-- Default war-project goals --> + + <goal name="all"> + <!--<attainGoal name="prj-all" />--> + <attainGoal name="build" /> + <attainGoal name="deploy" /> + </goal> + + <goal name="build"> + <!--<attainGoal name="prj-war-build" />--> + <attainGoal name="war" /> + </goal> + + <!--<goal name="deploy"> + <attainGoal name="prj-war-deploy" /> + </goal>--> + + <goal name="deploy"> + <ant:copy todir="${local.deploy.dir}" flatten="true"> + <ant:fileset dir="."> + <ant:filename name="target/*.war" /> + </ant:fileset> + </ant:copy> + </goal> + +</project> Added: trunk/forge/portal-extensions/wiki-file-access/project.properties =================================================================== --- trunk/forge/portal-extensions/wiki-file-access/project.properties 2005-08-22 17:24:39 UTC (rev 916) +++ trunk/forge/portal-extensions/wiki-file-access/project.properties 2005-08-22 22:54:39 UTC (rev 917) @@ -0,0 +1,3 @@ +maven.repo.remote=http://repository.atlassian.com,http://www.ibiblio.org/maven,http://dist.codehaus.org/ +maven.junit.fork=yes +maven.war.src=${basedir}/src/web Added: trunk/forge/portal-extensions/wiki-file-access/project.xml =================================================================== --- trunk/forge/portal-extensions/wiki-file-access/project.xml 2005-08-22 17:24:39 UTC (rev 916) +++ trunk/forge/portal-extensions/wiki-file-access/project.xml 2005-08-22 22:54:39 UTC (rev 917) @@ -0,0 +1,68 @@ +<?xml version='1.0' encoding='ISO-8859-1'?> +<!-- + JBoss, the OpenSource J2EE webOS + Distributable under LGPL license. + See terms of license at gnu.org. + --> +<project> + <pomVersion>3</pomVersion> + <extend>../common.xml</extend> + <id>wiki-file-access</id> + <name>Wiki file access</name> + <currentVersion>1.0</currentVersion> + <organization> + <name>Tomasz Szymanski</name> + <url>http://mamut.net.pl</url> + </organization> + <organization> + <name>Adam Warski</name> + <url>http://mamut.net.pl</url> + </organization> + <description></description> + + <dependencies> + <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-forge</groupId> + <artifactId>forge-common</artifactId> + <version>1.0</version> + </dependency> + + <dependency> + <groupId>aslibs</groupId> + <artifactId>javax.servlet</artifactId> + <version>1.0</version> + <jar>javax.servlet.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> + <resources> + <resource> + <directory>src/etc/</directory> + <include>**/*.types</include> + </resource> + </resources> + </build> +</project> Added: trunk/forge/portal-extensions/wiki-file-access/src/etc/org/jboss/wiki/fileaccess/mime.types =================================================================== --- trunk/forge/portal-extensions/wiki-file-access/src/etc/org/jboss/wiki/fileaccess/mime.types 2005-08-22 17:24:39 UTC (rev 916) +++ trunk/forge/portal-extensions/wiki-file-access/src/etc/org/jboss/wiki/fileaccess/mime.types 2005-08-22 22:54:39 UTC (rev 917) @@ -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 Added: trunk/forge/portal-extensions/wiki-file-access/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java =================================================================== --- trunk/forge/portal-extensions/wiki-file-access/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java 2005-08-22 17:24:39 UTC (rev 916) +++ trunk/forge/portal-extensions/wiki-file-access/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java 2005-08-22 22:54:39 UTC (rev 917) @@ -0,0 +1,114 @@ +/***************************************** + * * + * 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 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.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 final String attachementsPath = "/usr/local/forge/wiki"; + + /* + * private ForgeHelper forgeHelper; private ContentManager contentManager; + */ + private MimetypesFileTypeMap mimeTypes; + + + public void init(FilterConfig conf) { + /* + * forgeHelper = new ForgeHelper(); contentManager = + * forgeHelper.getContentManager(""); + */ + + mimeTypes = new MimetypesFileTypeMap(WikiFileAccessFilter.class.getResourceAsStream("mime.types")); + + } + + + 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() { + + } +} Added: trunk/forge/portal-extensions/wiki-file-access/src/web/WEB-INF/tld/forge.tld =================================================================== --- trunk/forge/portal-extensions/wiki-file-access/src/web/WEB-INF/tld/forge.tld 2005-08-22 17:24:39 UTC (rev 916) +++ trunk/forge/portal-extensions/wiki-file-access/src/web/WEB-INF/tld/forge.tld 2005-08-22 22:54:39 UTC (rev 917) @@ -0,0 +1,134 @@ +<taglib xmlns="http://java.sun.com/xml/ns/j2ee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd" + version="2.0"> + <!-- + JBoss, the OpenSource J2EE webOS + Distributable under LGPL license. + See terms of license at gnu.org. + --> + <tlib-version>1.1</tlib-version> + <jsp-version>2.0</jsp-version> + <shortname>forge</shortname> + <info>Forge tags</info> + + <tag> + <name>pageURL</name> + <tagclass>org.jboss.forge.common.taglib.PageURLTag</tagclass> + <attribute> + <name>page</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>form</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>param</name> + <tagclass>org.jboss.forge.common.taglib.ParamTag</tagclass> + <attribute> + <name>name</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>value</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>wikiparam</name> + <tagclass>org.jboss.forge.common.taglib.WikiParam</tagclass> + <attribute> + <name>name</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>value</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>projectURL</name> + <tagclass>org.jboss.forge.common.taglib.ProjectURLTag</tagclass> + <attribute> + <name>project</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>page</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>form</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>categoryURL</name> + <tagclass>org.jboss.forge.common.taglib.CategoryURLTag</tagclass> + <attribute> + <name>category</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>form</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>selectedProject</name> + <tagclass>org.jboss.forge.common.taglib.SelectedProjectTag</tagclass> + </tag> + + <tag> + <name>imagePath</name> + <tagclass>org.jboss.forge.common.taglib.ImagePathTag</tagclass> + <attribute> + <name>src</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>project</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>attrValue</name> + <tagclass>org.jboss.forge.common.taglib.AttrValueTag</tagclass> + <attribute> + <name>name</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>attrIf</name> + <tagclass>org.jboss.forge.common.taglib.AttrIfTag</tagclass> + <attribute> + <name>name</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> +</taglib> Added: trunk/forge/portal-extensions/wiki-file-access/src/web/WEB-INF/web.xml =================================================================== --- trunk/forge/portal-extensions/wiki-file-access/src/web/WEB-INF/web.xml 2005-08-22 17:24:39 UTC (rev 916) +++ trunk/forge/portal-extensions/wiki-file-access/src/web/WEB-INF/web.xml 2005-08-22 22:54:39 UTC (rev 917) @@ -0,0 +1,16 @@ +<?xml version="1.0"?> +<!DOCTYPE web-app PUBLIC + "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" + "http://java.sun.com/dtd/web-app_2_3.dtd"> +<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> \ No newline at end of file |