[Osgi-messages] SF.net SVN: osgi:[261] papoose-cmpn/trunk/http/src/main
Status: Beta
Brought to you by:
maguro
|
From: <osg...@li...> - 2010-02-26 14:08:15
|
Revision: 261
http://osgi.svn.sourceforge.net/osgi/?rev=261&view=rev
Author: maguro
Date: 2010-02-26 14:08:08 +0000 (Fri, 26 Feb 2010)
Log Message:
-----------
Thoughts on using the access control context
Modified Paths:
--------------
papoose-cmpn/trunk/http/src/main/java/org/papoose/http/HttpServiceImpl.java
Added Paths:
-----------
papoose-cmpn/trunk/http/src/main/java/org/papoose/http/ResourceServletWrapper.java
papoose-cmpn/trunk/http/src/main/resources/mime.properties
Removed Paths:
-------------
papoose-cmpn/trunk/http/src/main/java/org/papoose/http/ServletWrapper.java
Modified: papoose-cmpn/trunk/http/src/main/java/org/papoose/http/HttpServiceImpl.java
===================================================================
--- papoose-cmpn/trunk/http/src/main/java/org/papoose/http/HttpServiceImpl.java 2010-02-25 23:56:06 UTC (rev 260)
+++ papoose-cmpn/trunk/http/src/main/java/org/papoose/http/HttpServiceImpl.java 2010-02-26 14:08:08 UTC (rev 261)
@@ -22,7 +22,6 @@
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URL;
-import java.security.AccessControlContext;
import java.security.AccessController;
import java.util.Dictionary;
import java.util.HashMap;
@@ -46,6 +45,7 @@
private final static Logger LOGGER = Logger.getLogger(CLASS_NAME);
private final static Properties EMPTY_PARAMS = new Properties();
private final Object lock = new Object();
+ private final Properties mime;
private final Map<HttpContext, ServletContextImpl> contexts = new HashMap<HttpContext, ServletContextImpl>();
private final Map<String, ServletRegistration> registrations = new HashMap<String, ServletRegistration>();
private final BundleContext context;
@@ -58,6 +58,16 @@
this.context = context;
this.dispatcher = dispatcher;
+ this.mime = new Properties();
+
+ try
+ {
+ this.mime.load(HttpServiceImpl.class.getClassLoader().getResourceAsStream("mime.properties"));
+ }
+ catch (IOException ioe)
+ {
+ LOGGER.log(Level.WARNING, "Unable to load default MIME mapping", ioe);
+ }
}
/**
@@ -120,7 +130,7 @@
try
{
- registerServlet(alias, new ServletWrapper(alias, name, httpContext, AccessController.getContext()), EMPTY_PARAMS, httpContext);
+ registerServlet(alias, new ResourceServletWrapper(alias, name, httpContext, AccessController.getContext(), mime), EMPTY_PARAMS, httpContext);
}
catch (ServletException se)
{
Copied: papoose-cmpn/trunk/http/src/main/java/org/papoose/http/ResourceServletWrapper.java (from rev 260, papoose-cmpn/trunk/http/src/main/java/org/papoose/http/ServletWrapper.java)
===================================================================
--- papoose-cmpn/trunk/http/src/main/java/org/papoose/http/ResourceServletWrapper.java (rev 0)
+++ papoose-cmpn/trunk/http/src/main/java/org/papoose/http/ResourceServletWrapper.java 2010-02-26 14:08:08 UTC (rev 261)
@@ -0,0 +1,171 @@
+/**
+ *
+ * Copyright 2010 (C) The original author or authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.papoose.http;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URL;
+import java.net.URLConnection;
+import java.security.AccessControlContext;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
+import java.util.Properties;
+import java.util.logging.Logger;
+
+import org.osgi.service.http.HttpContext;
+
+
+/**
+ * @version $Revision: $ $Date: $
+ */
+class ResourceServletWrapper extends HttpServlet
+{
+ private final static String CLASS_NAME = ResourceServletWrapper.class.getName();
+ private final static Logger LOGGER = Logger.getLogger(CLASS_NAME);
+ private final String alias;
+ private final String name;
+ private final HttpContext httpContext;
+ private final AccessControlContext acc;
+ private final Properties mime;
+
+ ResourceServletWrapper(String alias, String name, HttpContext httpContext, AccessControlContext acc, Properties mime)
+ {
+ this.alias = alias;
+ this.name = name;
+ this.httpContext = httpContext;
+ this.acc = acc;
+ this.mime = mime;
+ }
+
+ @Override
+ protected void service(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException
+ {
+ LOGGER.entering(CLASS_NAME, "service", new Object[]{ req, resp });
+
+ String path = req.getPathInfo();
+
+ path = path.substring(alias.length());
+ path = name + path;
+
+ final URL url = httpContext.getResource(path);
+
+ if (url == null) throw new ResourceNotFoundException();
+
+ String contentType = httpContext.getMimeType(path);
+ if (contentType == null)
+ {
+ int index = path.lastIndexOf(".");
+ if (index > 0) contentType = mime.getProperty(path.substring(index + 1));
+ }
+ if (contentType != null) resp.setContentType(contentType);
+
+ try
+ {
+ if (System.getSecurityManager() == null)
+ {
+ generateResponse(url, resp, req);
+ }
+ else
+ {
+ AccessController.doPrivileged(new PrivilegedExceptionAction<Void>()
+ {
+ public Void run() throws Exception
+ {
+ generateResponse(url, resp, req);
+
+ return null;
+ }
+ }, acc);
+ }
+ }
+ catch (PrivilegedActionException pae)
+ {
+ Exception exception = pae.getException();
+ if (exception instanceof ServletException) throw (ServletException) exception;
+ if (exception instanceof IOException) throw (IOException) exception;
+
+ resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ }
+ catch (IOException ioe)
+ {
+ throw ioe;
+ }
+ catch (Exception e)
+ {
+ resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ }
+
+ LOGGER.exiting(CLASS_NAME, "service");
+ }
+
+ private void generateResponse(URL url, HttpServletResponse resp, HttpServletRequest req) throws IOException
+ {
+ LOGGER.entering(CLASS_NAME, "generateResponse", new Object[]{ url, resp, req });
+
+ URLConnection conn = url.openConnection();
+
+ long lastModified = conn.getLastModified();
+ if (lastModified != 0) resp.setDateHeader("Last-Modified", lastModified);
+
+ long modifiedSince = req.getDateHeader("If-Modified-Since");
+ if (lastModified == 0 || modifiedSince == -1 || lastModified > modifiedSince)
+ {
+ resp.setContentLength(copyResource(conn.getInputStream(), resp.getOutputStream()));
+ resp.setStatus(HttpServletResponse.SC_FOUND);
+ }
+ else
+ {
+ resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
+ }
+
+ LOGGER.exiting(CLASS_NAME, "generateResponse");
+ }
+
+ private int copyResource(InputStream in, OutputStream out) throws IOException
+ {
+ LOGGER.entering(CLASS_NAME, "copyResource", new Object[]{ in, out });
+
+ byte[] buf = new byte[4096];
+ int length = 0;
+ int n;
+
+ try
+ {
+ while ((n = in.read(buf, 0, buf.length)) != -1)
+ {
+ out.write(buf, 0, n);
+ length += n;
+ }
+
+ LOGGER.exiting(CLASS_NAME, "copyResource", length);
+
+ return length;
+ }
+ finally
+ {
+ in.close();
+ out.close();
+ }
+ }
+
+}
Property changes on: papoose-cmpn/trunk/http/src/main/java/org/papoose/http/ResourceServletWrapper.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: svn:eol-style
+ native
Deleted: papoose-cmpn/trunk/http/src/main/java/org/papoose/http/ServletWrapper.java
===================================================================
--- papoose-cmpn/trunk/http/src/main/java/org/papoose/http/ServletWrapper.java 2010-02-25 23:56:06 UTC (rev 260)
+++ papoose-cmpn/trunk/http/src/main/java/org/papoose/http/ServletWrapper.java 2010-02-26 14:08:08 UTC (rev 261)
@@ -1,135 +0,0 @@
-/**
- *
- * Copyright 2010 (C) The original author or authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.papoose.http;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.URL;
-import java.net.URLConnection;
-import java.security.AccessControlContext;
-import java.security.AccessController;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
-import java.util.logging.Logger;
-
-import org.osgi.service.http.HttpContext;
-
-
-/**
- * @version $Revision: $ $Date: $
- */
-class ServletWrapper extends HttpServlet
-{
- private final static String CLASS_NAME = ServletWrapper.class.getName();
- private final static Logger LOGGER = Logger.getLogger(CLASS_NAME);
- private final String alias;
- private final String name;
- private final HttpContext httpContext;
- private final AccessControlContext acc;
-
- ServletWrapper(String alias, String name, HttpContext httpContext, AccessControlContext acc)
- {
- this.alias = alias;
- this.name = name;
- this.httpContext = httpContext;
- this.acc = acc;
- }
-
- @Override
- protected void service(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException
- {
-
- final URL url = httpContext.getResource(name);
-
- if (url == null) throw new ResourceNotFoundException();
-
- String contentType = getServletContext().getMimeType(name);
- if (contentType != null) resp.setContentType(contentType);
-
- try
- {
- AccessController.doPrivileged(new PrivilegedExceptionAction<Void>()
- {
- public Void run() throws Exception
- {
- URLConnection conn = url.openConnection();
-
- long lastModified = conn.getLastModified();
- if (lastModified != 0) resp.setDateHeader("Last-Modified", lastModified);
-
- long modifiedSince = req.getDateHeader("If-Modified-Since");
- if (lastModified == 0 || modifiedSince == -1 || lastModified > modifiedSince)
- {
- resp.setContentLength(copyResource(conn.getInputStream(), resp.getOutputStream()));
- resp.setStatus(HttpServletResponse.SC_FOUND);
- }
- else
- {
- resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
- }
-
- return null;
- }
- }, acc);
- }
- catch (PrivilegedActionException pae)
- {
- Exception exception = pae.getException();
- if (exception instanceof ServletException) throw (ServletException) exception;
- if (exception instanceof IOException) throw (IOException) exception;
-
- resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
- }
- catch (Exception e)
- {
- resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
- }
- }
-
- private int copyResource(InputStream in, OutputStream out) throws IOException
- {
- LOGGER.entering(CLASS_NAME, "copyResource", new Object[]{ in, out });
-
- byte[] buf = new byte[4096];
- int length = 0;
- int n;
-
- try
- {
- while ((n = in.read(buf, 0, buf.length)) != -1)
- {
- out.write(buf, 0, n);
- length += n;
- }
-
- LOGGER.exiting(CLASS_NAME, "copyResource", length);
-
- return length;
- }
- finally
- {
- in.close();
- out.close();
- }
- }
-
-}
Added: papoose-cmpn/trunk/http/src/main/resources/mime.properties
===================================================================
--- papoose-cmpn/trunk/http/src/main/resources/mime.properties (rev 0)
+++ papoose-cmpn/trunk/http/src/main/resources/mime.properties 2010-02-26 14:08:08 UTC (rev 261)
@@ -0,0 +1,444 @@
+3dm=x-world/x-3dmf
+3dmf=x-world/x-3dmf
+a=application/octet-stream
+aab=application/x-authorware-bin
+aam=application/x-authorware-map
+aas=application/x-authorware-seg
+abc=text/vnd.abc
+acgi=text/html
+afl=video/animaflex
+ai=application/postscript
+aif=audio/aiff
+aifc=audio/aiff
+aiff=audio/aiff
+aim=application/x-aim
+aip=text/x-audiosoft-intra
+ani=application/x-navi-animation
+aos=application/x-nokia-9000-communicator-add-on-software
+aps=application/mime
+arc=application/octet-stream
+arj=application/arj
+art=image/x-jg
+asf=video/x-ms-asf
+asm=text/x-asm
+asp=text/asp
+asx=application/x-mplayer2
+au=audio/basic
+avi=video/avi
+avs=video/avs-video
+bcpio=application/x-bcpio
+bin=application/octet-stream
+bm=image/bmp
+bmp=image/bmp
+boo=application/book
+book=application/book
+boz=application/x-bzip2
+bsh=application/x-bsh
+bz=application/x-bzip
+bz2=application/x-bzip2
+c=text/plain
+c++=text/plain
+cat=application/vnd.ms-pki.seccat
+cc=text/plain
+ccad=application/clariscad
+cco=application/x-cocoa
+cdf=application/cdf
+cer=application/pkix-cert
+cha=application/x-chat
+chat=application/x-chat
+class=application/java
+com=application/octet-stream
+conf=text/plain
+cpio=application/x-cpio
+cpp=text/x-c
+cpt=application/mac-compactpro
+crl=application/pkcs-crl
+crt=application/pkix-cert
+csh=application/x-csh
+css=text/css
+dcr=application/x-director
+deepv=application/x-deepv
+def=text/plain
+der=application/x-x509-ca-cert
+dif=video/x-dv
+dir=application/x-director
+dl=video/dl
+doc=application/msword
+dot=application/msword
+dp=application/commonground
+drw=application/drafting
+dump=application/octet-stream
+dv=video/x-dv
+dvi=application/x-dvi
+dwf=model/vnd.dwf
+dwg=application/acad
+dxf=application/dxf
+dxr=application/x-director
+el=text/x-script.elisp
+elc=application/x-elc
+env=application/x-envoy
+eps=application/postscript
+es=application/x-esrehber
+etx=text/x-setext
+evy=application/envoy
+exe=application/octet-stream
+f=text/plain
+f77=text/x-fortran
+f90=text/plain
+fdf=application/vnd.fdf
+fif=image/fif
+fli=video/fli
+flo=image/florian
+flx=text/vnd.fmi.flexstor
+fmf=video/x-atomic3d-feature
+for=text/plain
+fpx=image/vnd.fpx
+frl=application/freeloader
+funk=audio/make
+g=text/plain
+g3=image/g3fax
+gif=image/gif
+gl=video/gl
+gsd=audio/x-gsm
+gsm=audio/x-gsm
+gsp=application/x-gsp
+gss=application/x-gss
+gtar=application/x-gtar
+gz=application/x-gzip
+gzip=application/x-gzip
+h=text/plain
+hdf=application/x-hdf
+help=application/x-helpfile
+hgl=application/vnd.hp-hpgl
+hh=text/plain
+hlb=text/x-script
+hlp=application/hlp
+hpg=application/vnd.hp-hpgl
+hpgl=application/vnd.hp-hpgl
+hqx=application/binhex
+hta=application/hta
+htc=text/x-component
+htm=text/html
+html=text/html
+htmls=text/html
+htt=text/webviewhtml
+htx=text/html
+ice=x-conference/x-cooltalk
+ico=image/x-icon
+idc=text/plain
+ief=image/ief
+iefs=image/ief
+iges=application/iges
+igs=application/iges
+ima=application/x-ima
+imap=application/x-httpd-imap
+inf=application/inf
+ins=application/x-internett-signup
+ip=application/x-ip2
+isu=video/x-isvideo
+it=audio/it
+iv=application/x-inventor
+ivr=i-world/i-vrml
+ivy=application/x-livescreen
+jam=audio/x-jam
+jav=text/plain
+java=text/plain
+jcm=application/x-java-commerce
+jfif=image/jpeg
+jfif-tbnl=image/jpeg
+jpe=image/jpeg
+jpeg=image/jpeg
+jpg=image/jpeg
+jps=image/x-jps
+js=application/x-javascript
+jut=image/jutvision
+kar=audio/midi
+ksh=application/x-ksh
+la=audio/nspaudio
+lam=audio/x-liveaudio
+latex=application/x-latex
+lha=application/lha
+lhx=application/octet-stream
+list=text/plain
+lma=audio/nspaudio
+log=text/plain
+lsp=application/x-lisp
+lst=text/plain
+lsx=text/x-la-asf
+ltx=application/x-latex
+lzh=application/octet-stream
+lzx=application/lzx
+m=text/plain
+m1v=video/mpeg
+m2a=audio/mpeg
+m2v=video/mpeg
+m3u=audio/x-mpequrl
+man=application/x-troff-man
+map=application/x-navimap
+mar=text/plain
+mbd=application/mbedlet
+mc$=application/x-magic-cap-package-1.0
+mcd=application/mcad
+mcf=image/vasa
+mcp=application/netmc
+me=application/x-troff-me
+mht=message/rfc822
+mhtml=message/rfc822
+mid=audio/midi
+midi=audio/midi
+mif=application/x-mif
+mime=message/rfc822
+mjf=audio/x-vnd.audioexplosion.mjuicemediafile
+mjpg=video/x-motion-jpeg
+mm=application/base64
+mme=application/base64
+mod=audio/mod
+moov=video/quicktime
+mov=video/quicktime
+movie=video/x-sgi-movie
+mp2=audio/mpeg
+mp3=audio/mpeg3
+mpa=audio/mpeg
+mpc=application/x-project
+mpe=video/mpeg
+mpeg=video/mpeg
+mpg=audio/mpeg
+mpga=audio/mpeg
+mpp=application/vnd.ms-project
+mpt=application/x-project
+mpv=application/x-project
+mpx=application/x-project
+mrc=application/marc
+ms=application/x-troff-ms
+mv=video/x-sgi-movie
+my=audio/make
+mzz=application/x-vnd.audioexplosion.mzz
+nap=image/naplps
+naplps=image/naplps
+nc=application/x-netcdf
+ncm=application/vnd.nokia.configuration-message
+nif=image/x-niff
+niff=image/x-niff
+nix=application/x-mix-transfer
+nsc=application/x-conference
+nvd=application/x-navidoc
+o=application/octet-stream
+oda=application/oda
+omc=application/x-omc
+omcd=application/x-omcdatamaker
+omcr=application/x-omcregerator
+p=text/x-pascal
+p10=application/pkcs10
+p12=application/pkcs-12
+p7a=application/x-pkcs7-signature
+p7c=application/pkcs7-mime
+p7m=application/pkcs7-mime
+p7r=application/x-pkcs7-certreqresp
+p7s=application/pkcs7-signature
+part=application/pro_eng
+pas=text/pascal
+pbm=image/x-portable-bitmap
+pcl=application/vnd.hp-pcl
+pct=image/x-pict
+pcx=image/x-pcx
+pdb=chemical/x-pdb
+pdf=application/pdf
+pfunk=audio/make
+pgm=image/x-portable-graymap
+pic=image/pict
+pict=image/pict
+pkg=application/x-newton-compatible-pkg
+pko=application/vnd.ms-pki.pko
+pl=text/plain
+plx=application/x-pixclscript
+pm=image/x-xpixmap
+pm4=application/x-pagemaker
+pm5=application/x-pagemaker
+png=image/png
+pnm=application/x-portable-anymap
+pot=application/mspowerpoint
+pov=model/x-pov
+ppa=application/vnd.ms-powerpoint
+ppm=image/x-portable-pixmap
+pps=application/mspowerpoint
+ppt=application/mspowerpoint
+ppz=application/mspowerpoint
+pre=application/x-freelance
+prt=application/pro_eng
+ps=application/postscript
+psd=application/octet-stream
+pvu=paleovu/x-pv
+pwz=application/vnd.ms-powerpoint
+py=text/x-script.phyton
+pyc=applicaiton/x-bytecode.python
+qcp=audio/vnd.qcelp
+qd3=x-world/x-3dmf
+qd3d=x-world/x-3dmf
+qif=image/x-quicktime
+qt=video/quicktime
+qtc=video/x-qtc
+qti=image/x-quicktime
+qtif=image/x-quicktime
+ra=audio/x-realaudio
+ram=audio/x-pn-realaudio
+ras=image/cmu-raster
+rast=image/cmu-raster
+rexx=text/x-script.rexx
+rf=image/vnd.rn-realflash
+rgb=image/x-rgb
+rm=application/vnd.rn-realmedia
+rmi=audio/mid
+rmm=audio/x-pn-realaudio
+rmp=audio/x-pn-realaudio
+rng=application/ringing-tones
+rnx=application/vnd.rn-realplayer
+roff=application/x-troff
+rp=image/vnd.rn-realpix
+rpm=audio/x-pn-realaudio-plugin
+rt=text/richtext
+rtx=text/richtext
+rv=video/vnd.rn-realvideo
+s=text/x-asm
+s3m=audio/s3m
+saveme=application/octet-stream
+sbk=application/x-tbook
+scm=video/x-scm
+sdml=text/plain
+sdp=application/sdp
+sdr=application/sounder
+sea=application/sea
+set=application/set
+sgm=text/sgml
+sgml=text/sgml
+sh=application/x-sh
+shar=application/x-shar
+shtml=text/html
+sid=audio/x-psid
+sit=application/x-sit
+skd=application/x-koan
+skm=application/x-koan
+skp=application/x-koan
+skt=application/x-koan
+sl=application/x-seelogo
+smi=application/smil
+smil=application/smil
+snd=audio/basic
+sol=application/solids
+spc=text/x-speech
+spl=application/futuresplash
+spr=application/x-sprite
+sprite=application/x-sprite
+src=application/x-wais-source
+ssi=text/x-server-parsed-html
+ssm=application/streamingmedia
+sst=application/vnd.ms-pki.certstore
+step=application/step
+stl=application/sla
+stp=application/step
+sv4cpio=application/x-sv4cpio
+sv4crc=application/x-sv4crc
+svf=image/vnd.dwg
+svr=application/x-world
+swf=application/x-shockwave-flash
+t=application/x-troff
+talk=text/x-speech
+tar=application/x-tar
+tbk=application/toolbook
+tcl=application/x-tcl
+tcsh=text/x-script.tcsh
+tex=application/x-tex
+texi=application/x-texinfo
+texinfo=application/x-texinfo
+text=text/plain
+tgz=application/gnutar
+tif=image/tiff
+tr=application/x-troff
+tsi=audio/tsp-audio
+tsp=application/dsptype
+tsv=text/tab-separated-values
+turbot=image/florian
+txt=text/plain
+uil=text/x-uil
+uni=text/uri-list
+unis=text/uri-list
+unv=application/i-deas
+uri=text/uri-list
+uris=text/uri-list
+ustar=application/x-ustar
+uu=application/octet-stream
+uue=text/x-uuencode
+vcd=application/x-cdlink
+vcs=text/x-vcalendar
+vda=application/vda
+vdo=video/vdo
+vew=application/groupwise
+viv=video/vivo
+vivo=video/vivo
+vmd=application/vocaltec-media-desc
+vmf=application/vocaltec-media-file
+voc=audio/voc
+vos=video/vosaic
+vox=audio/voxware
+vqe=audio/x-twinvq-plugin
+vqf=audio/x-twinvq
+vql=audio/x-twinvq-plugin
+vrml=application/x-vrml
+vrt=x-world/x-vrt
+vsd=application/x-visio
+vst=application/x-visio
+vsw=application/x-visio
+w60=application/wordperfect6.0
+w61=application/wordperfect6.1
+w6w=application/msword
+wav=audio/wav
+wb1=application/x-qpro
+wbmp=image/vnd.wap.wbmp
+web=application/vnd.xara
+wiz=application/msword
+wk1=application/x-123
+wmf=windows/metafile
+wml=text/vnd.wap.wml
+wmlc=application/vnd.wap.wmlc
+wmls=text/vnd.wap.wmlscript
+wmlsc=application/vnd.wap.wmlscriptc
+word=application/msword
+wp=application/wordperfect
+wp5=application/wordperfect
+wp6=application/wordperfect
+wpd=application/wordperfect
+wq1=application/x-lotus
+wri=application/mswrite
+wrl=application/x-world
+wrz=model/vrml
+wsc=text/scriplet
+wsrc=application/x-wais-source
+wtk=application/x-wintalk
+xbm=image/xbm
+xdr=video/x-amt-demorun
+xgz=xgl/drawing
+xif=image/vnd.xiff
+xl=application/excel
+xla=application/excel
+xlb=application/excel
+xlc=application/excel
+xld=application/excel
+xlk=application/excel
+xll=application/excel
+xlm=application/excel
+xls=application/excel
+xlt=application/excel
+xlv=application/excel
+xlw=application/excel
+xm=audio/xm
+xml=text/xml
+xmz=xgl/movie
+xpix=application/x-vnd.ls-xpix
+xpm=image/xpm
+x-png=image/png
+xsr=video/x-amt-showrun
+xwd=image/x-xwd
+xyz=chemical/x-pdb
+z=application/x-compress
+zip=application/zip
+zoo=application/octet-stream
+zsh=text/x-script.zsh
\ No newline at end of file
Property changes on: papoose-cmpn/trunk/http/src/main/resources/mime.properties
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: svn:eol-style
+ native
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|