From: Chad B. <cwb...@us...> - 2008-05-16 22:09:08
|
User: cwbrandon Date: 08/05/16 15:09:06 Modified: andromda-jsf2/src/main/resources/META-INF/andromda cartridge.xml andromda-jsf2/src/main/resources/templates/jsf2/flow/portlet PortletPhaseListener.java.vsl andromda-jsf2/src/main/resources/templates/jsf2/configuration web.xml.vsl Added: andromda-jsf2/src/main/resources/templates/jsf2/utils/download FileDownloadServlet.java.vsl contenttypes.properties.vsl Log: Add fileDownload servlet that works with both standalone and portlet apps Revision Changes Path 1.30 +12 -0 cartridges/andromda-jsf2/src/main/resources/META-INF/andromda/cartridge.xml Index: cartridge.xml =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-jsf2/src/main/resources/META-INF/andromda/cartridge.xml,v retrieving revision 1.29 retrieving revision 1.30 diff -u -w -r1.29 -r1.30 --- cartridge.xml 8 May 2008 23:03:06 -0000 1.29 +++ cartridge.xml 16 May 2008 22:09:04 -0000 1.30 @@ -527,6 +527,18 @@ outputCondition="standalone"/> <template + path="templates/jsf2/utils/download/FileDownloadServlet.java.vsl" + outputPattern="$stringUtils.replace($managedBeansPackage, '.', '/')/${className}.java" + outlet="managed-beans" + overwrite="true"/> + + <template + path="templates/jsf2/utils/download/contenttypes.properties.vsl" + outputPattern="$stringUtils.replace($managedBeansPackage, '.', '/')/${fileName}.properties" + outlet="managed-beans" + overwrite="true"/> + + <template path="templates/jsf2/utils/JsfUtils.java.vsl" outputPattern="$stringUtils.replace($managedBeansPackage, '.', '/')/${className}.java" outlet="managed-beans" 1.1 cartridges/andromda-jsf2/src/main/resources/templates/jsf2/utils/download/FileDownloadServlet.java.vsl Index: FileDownloadServlet.java.vsl =================================================================== #set ($className = "FileDownloadServlet") #if ($stringUtils.isNotEmpty($managedBeansPackage)) package $managedBeansPackage; #end import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Properties; import javax.faces.context.FacesContext; import javax.faces.el.MethodBinding; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.ObjectUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * This servlet is used to download files. It can be used by * including it an output link, like the following: * * <h:outputLink value="/my-jsf-app-context/fileDownload?action=myControllerBean.myControllerOperation&prompt=true&fileName=exportResultFileName&outputName=exportResult"> * <h:outputText value="#{messages['export']}"/> * </h:outputLink> * * The following parameters may be specified: * <ul> * <li>fileName:</li> the name of the property on the the action form that has the name of your download file. * <li>outputName:</li> the name of the property on the action form that has the output to download. * <li>contentType:</li> any explicit content type to be used for the download (if not specified, it will be guessed * from the extension of the specified file). * <li>action:</li> the optional action to execute before downloading is attempted. */ public class FileDownloadServlet extends HttpServlet { private static final Log logger = LogFactory.getLog(FileDownloadServlet.class); private static final long serialVersionUID = 1L; /** * The name of an action on a controller to execute before attempt to render the download. */ private static final String ACTION = "action"; /** * Whether or not to prompt with a "save as" dialog, or just render the download in the browser. */ private static final String PROMPT = "prompt"; /** * The name of the property on the action form that has the name of the file to use when downloading. */ private static final String FILE_NAME = "fileName"; /** * The name of the property on the action form that will contain the output. */ private static final String OUTPUT = "outputName"; /** * The contentType parameter specifies what content type to render the download as */ private static final String CONTENT_TYPE = "contentType"; private static final int BUFFER_SIZE = 4096; @Override public void doGet(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException { try { final String action = request.getParameter(ACTION); final FacesContext context = FacesContextUtils.getFacesContext(request, response); if (action != null && action.trim().length() > 0) { final MethodBinding methodBinding = context.getApplication().createMethodBinding("#{" + action + "}", null); methodBinding.invoke(context, null); } final Object form = context.getApplication().getVariableResolver().resolveVariable(context, "$actionFormKey"); final boolean prompt = Boolean.valueOf(request.getParameter(PROMPT)); final String fileNameProperty = request.getParameter(FILE_NAME); final String outputProperty = request.getParameter(OUTPUT); if (form != null && outputProperty != null && fileNameProperty.trim().length() > 0) { final HttpServletResponse httpResponse = (HttpServletResponse)response; final OutputStream stream = httpResponse.getOutputStream(); // - reset the reponse to clear out any any headers (i.e. so // the user doesn't get "unable to open..." when using IE.) httpResponse.reset(); Object output = org.apache.commons.beanutils.PropertyUtils.getProperty(form, outputProperty); final String fileName = ObjectUtils.toString(org.apache.commons.beanutils.PropertyUtils.getProperty(form, fileNameProperty)); final String contentType = this.getContentType(context, request.getParameter(CONTENT_TYPE), fileName); if (prompt && fileName != null && fileName.trim().length() > 0) { httpResponse.addHeader( "Content-disposition", "attachment; filename=\"" + fileName + '"'); } // - for IE we need to set the content type, content length and buffer size and // then the flush the response right away because it seems as if there is any lag time // IE just displays a blank page. With mozilla based clients reports display correctly regardless. if (contentType != null && contentType.length() > 0) { httpResponse.setContentType(contentType); } if (output instanceof String) { output = ((String)output).getBytes(); } if (output instanceof byte[]) { byte[] file = (byte[])output; if (file != null) { httpResponse.setBufferSize(file.length); httpResponse.setContentLength(file.length); httpResponse.flushBuffer(); stream.write(file); } } else if (output instanceof InputStream) { final InputStream report = (InputStream)output; final byte[] buffer = new byte[BUFFER_SIZE]; httpResponse.setBufferSize(BUFFER_SIZE); httpResponse.flushBuffer(); for (int ctr = 0; (ctr = report.read(buffer)) > 0;) { stream.write(buffer, 0, ctr); } stream.flush(); } } } catch (Throwable throwable) { throw new ServletException(throwable); } } @Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } /** * The name of the attribute that stores the content type. */ public static final String CONTENT_TYPE_ATTRIBUTE = "contentType"; /** * Gets the explicity content type to render the file in. * * @return Returns the contentType. */ private String getContentType(final FacesContext context, final String contentType, final String fileName) { String foundContentType = contentType; // - if the content type is still null, lets guess if (contentType == null || contentType.length() == 0) { if (fileName != null && fileName.trim().length() > 0) { int lastDotIndex = fileName.lastIndexOf('.'); if (lastDotIndex != -1) { final String extension = fileName.substring( lastDotIndex, fileName.length()); foundContentType = CONTENT_TYPES.getProperty(extension); } } } return foundContentType; } /** * Stores the default content types. */ final static Properties CONTENT_TYPES = new Properties(); /** * Load up the default content types */ static { final String fileName = "contenttypes.properties"; final InputStream stream = ${className}.class.getResourceAsStream(fileName); if (stream == null) { logger.error("Could not load file from '" + fileName + "'"); } try { CONTENT_TYPES.load(stream); } catch (final Throwable throwable) { logger.error(throwable); } try { stream.close(); } catch (final Throwable throwable) { // - ignore } } } 1.1 cartridges/andromda-jsf2/src/main/resources/templates/jsf2/utils/download/contenttypes.properties.vsl Index: contenttypes.properties.vsl =================================================================== #set ($fileName = "contenttypes") .csv=application/vnd.ms-excel .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 .aif=audio/x-aiff .aifc=audio/aiff .aifc=audio/x-aiff .aiff=audio/aiff .aiff=audio/x-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 .arj=application/octet-stream .art=image/x-jg .asf=video/x-ms-asf .asm=text/x-asm .asp=text/asp .asx=application/x-mplayer2 .asx=video/x-ms-asf .asx=video/x-ms-asf-plugin .au=audio/basic .au=audio/x-au .avi=application/x-troff-msvideo .avi=video/avi .avi=video/msvideo .avi=video/x-msvideo .avs=video/avs-video .bcpio=application/x-bcpio .bin=application/mac-binary .bin=application/macbinary .bin=application/octet-stream .bin=application/x-binary .bin=application/x-macbinary .bm=image/bmp .bmp=image/bmp .bmp=image/x-windows-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/x-c .c++=text/plain .cat=application/vnd.ms-pki.seccat .cc=text/plain .cc=text/x-c .ccad=application/clariscad .cco=application/x-cocoa .cdf=application/cdf .cdf=application/x-cdf .cdf=application/x-netcdf .cer=application/pkix-cert .cer=application/x-x509-ca-cert .cha=application/x-chat .chat=application/x-chat .class=application/java .class=application/java-byte-code .class=application/x-java-class .com=application/octet-stream .com=text/plain .conf=text/plain .cpio=application/x-cpio .cpp=text/x-c .cpt=application/mac-compactpro .cpt=application/x-compactpro .cpt=application/x-cpt .crl=application/pkcs-crl .crl=application/pkix-crl .crt=application/pkix-cert .crt=application/x-x509-ca-cert .crt=application/x-x509-user-cert .csh=application/x-csh .csh=text/x-script.csh .css=application/x-pointplus .css=text/css .cxx=text/plain .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 .dl=video/x-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=drawing/x-dwf (old) .dwf=model/vnd.dwf .dwg=application/acad .dwg=image/vnd.dwg .dwg=image/x-dwg .dxf=application/dxf .dxf=image/vnd.dwg .dxf=image/x-dwg .dxr=application/x-director .el=text/x-script.elisp .elc=application/x-bytecode.elisp (compiled elisp) .elc=application/x-elc .env=application/x-envoy .eps=application/postscript .es=application/x-esrehber .etx=text/x-setext .evy=application/envoy .evy=application/x-envoy .exe=application/octet-stream .f=text/plain .f=text/x-fortran .f77=text/x-fortran .f90=text/plain .f90=text/x-fortran .fdf=application/vnd.fdf .fif=application/fractals .fif=image/fif .fli=video/fli .fli=video/x-fli .flo=image/florian .flx=text/vnd.fmi.flexstor .fmf=video/x-atomic3d-feature .for=text/plain .for=text/x-fortran .fpx=image/vnd.fpx .fpx=image/vnd.net-fpx .frl=application/freeloader .funk=audio/make .g=text/plain .g3=image/g3fax .gif=image/gif .gl=video/gl .gl=video/x-gl .gsd=audio/x-gsm .gsm=audio/x-gsm .gsp=application/x-gsp .gss=application/x-gss .gtar=application/x-gtar .gz=application/x-compressed .gz=application/x-gzip .gzip=application/x-gzip .gzip=multipart/x-gzip .h=text/plain .h=text/x-h .hdf=application/x-hdf .help=application/x-helpfile .hgl=application/vnd.hp-hpgl .hh=text/plain .hh=text/x-h .hlb=text/x-script .hlp=application/hlp .hlp=application/x-helpfile .hlp=application/x-winhelp .hpg=application/vnd.hp-hpgl .hpgl=application/vnd.hp-hpgl .hqx=application/binhex .hqx=application/binhex4 .hqx=application/mac-binhex .hqx=application/mac-binhex40 .hqx=application/x-binhex40 .hqx=application/x-mac-binhex40 .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 .iges=model/iges .igs=application/iges .igs=model/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 .jav=text/x-java-source .java=text/plain .java=text/x-java-source .jcm=application/x-java-commerce .jfif=image/jpeg .jfif=image/pjpeg .jfif-tbnl=image/jpeg .jpe=image/jpeg .jpe=image/pjpeg .jpeg=image/jpeg .jpeg=image/pjpeg .jpg=image/jpeg .jpg=image/pjpeg .jps=image/x-jps .js=application/x-javascript .jut=image/jutvision .kar=audio/midi .kar=music/x-karaoke .ksh=application/x-ksh .ksh=text/x-script.ksh .la=audio/nspaudio .la=audio/x-nspaudio .lam=audio/x-liveaudio .latex=application/x-latex .lha=application/lha .lha=application/octet-stream .lha=application/x-lha .lhx=application/octet-stream .list=text/plain .lma=audio/nspaudio .lma=audio/x-nspaudio .log=text/plain .lsp=application/x-lisp .lsp=text/x-script.lisp .lst=text/plain .lsx=text/x-la-asf .ltx=application/x-latex .lzh=application/octet-stream .lzh=application/x-lzh .lzx=application/lzx .lzx=application/octet-stream .lzx=application/x-lzx .m=text/plain .m=text/x-m .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 .mcd=application/x-mathcad .mcf=image/vasa .mcf=text/mcf .mcp=application/netmc .me=application/x-troff-me .mht=message/rfc822 .mhtml=message/rfc822 .mid=application/x-midi .mid=audio/midi .mid=audio/x-mid .mid=audio/x-midi .mid=music/crescendo .mid=x-music/x-midi .midi=application/x-midi .midi=audio/midi .midi=audio/x-mid .midi=audio/x-midi .midi=music/crescendo .midi=x-music/x-midi .mif=application/x-frame .mif=application/x-mif .mime=message/rfc822 .mime=www/mime .mjf=audio/x-vnd.audioexplosion.mjuicemediafile .mjpg=video/x-motion-jpeg .mm=application/base64 .mm=application/x-meme .mme=application/base64 .mod=audio/mod .mod=audio/x-mod .moov=video/quicktime .mov=video/quicktime .movie=video/x-sgi-movie .mp2=audio/mpeg .mp2=audio/x-mpeg .mp2=video/mpeg .mp2=video/x-mpeg .mp2=video/x-mpeq2a .mp3=audio/mpeg3 .mp3=audio/x-mpeg-3 .mp3=video/mpeg .mp3=video/x-mpeg .mpa=audio/mpeg .mpa=video/mpeg .mpc=application/x-project .mpe=video/mpeg .mpeg=video/mpeg .mpg=audio/mpeg .mpg=video/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 .p10=application/x-pkcs10 .p12=application/pkcs-12 .p12=application/x-pkcs12 .p7a=application/x-pkcs7-signature .p7c=application/pkcs7-mime .p7c=application/x-pkcs7-mime .p7m=application/pkcs7-mime .p7m=application/x-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 .pcl=application/x-pcl .pct=image/x-pict .pcx=image/x-pcx .pdb=chemical/x-pdb .pdf=application/pdf .pfunk=audio/make .pfunk=audio/make.my.funk .pgm=image/x-portable-graymap .pgm=image/x-portable-greymap .pic=image/pict .pict=image/pict .pkg=application/x-newton-compatible-pkg .pko=application/vnd.ms-pki.pko .pl=text/plain .pl=text/x-script.perl .plx=application/x-pixclscript .pm=image/x-xpixmap .pm=text/x-script.perl-module .pm4=application/x-pagemaker .pm5=application/x-pagemaker .png=image/png .pnm=application/x-portable-anymap .pnm=image/x-portable-anymap .pot=application/mspowerpoint .pot=application/vnd.ms-powerpoint .pov=model/x-pov .ppa=application/vnd.ms-powerpoint .ppm=image/x-portable-pixmap .pps=application/mspowerpoint .pps=application/vnd.ms-powerpoint .ppt=application/mspowerpoint .ppt=application/powerpoint .ppt=application/vnd.ms-powerpoint .ppt=application/x-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-pn-realaudio .ra=audio/x-pn-realaudio-plugin .ra=audio/x-realaudio .ram=audio/x-pn-realaudio .ras=application/x-cmu-raster .ras=image/cmu-raster .ras=image/x-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 .rm=audio/x-pn-realaudio .rmi=audio/mid .rmm=audio/x-pn-realaudio .rmp=audio/x-pn-realaudio .rmp=audio/x-pn-realaudio-plugin .rng=application/ringing-tones .rng=application/vnd.nokia.ringing-tone .rnx=application/vnd.rn-realplayer .roff=application/x-troff .rp=image/vnd.rn-realpix .rpm=audio/x-pn-realaudio-plugin .rt=text/richtext .rt=text/vnd.rn-realtext .rtf=application/rtf .rtx=application/rtf .rv=video/vnd.rn-realvideo .s=text/x-asm .s3m=audio/s3m .saveme=application/octet-stream .sbk=application/x-tbook .scm=application/x-lotusscreencam .scm=text/x-script.guile .scm=text/x-script.scheme .scm=video/x-scm .sdml=text/plain .sdp=application/sdp .sdp=application/x-sdp .sdr=application/sounder .sea=application/sea .sea=application/x-sea .set=application/set .sgm=text/sgml .sgm=text/x-sgml .sgml=text/sgml .sgml=text/x-sgml .sh=application/x-bsh .sh=application/x-sh .sh=application/x-shar .sh=text/x-script.sh .shar=application/x-bsh .shar=application/x-shar .shtml=text/html .shtml=text/x-server-parsed-html .sid=audio/x-psid .sit=application/x-sit .sit=application/x-stuffit .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 .snd=audio/x-adpcm .sol=application/solids .spc=application/x-pkcs7-certificates .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 .stl=application/vnd.ms-pki.stl .stl=application/x-navistyle .stp=application/step .sv4cpio=application/x-sv4cpio .sv4crc=application/x-sv4crc .svf=image/vnd.dwg .svf=image/x-dwg .svr=application/x-world .svr=x-world/x-svr .swf=application/x-shockwave-flash .t=application/x-troff .talk=text/x-speech .tar=application/x-tar .tbk=application/toolbook .tbk=application/x-tbook .tcl=application/x-tcl .tcl=text/x-script.tcl .tcsh=text/x-script.tcsh .tex=application/x-tex .texi=application/x-texinfo .texinfo=application/x-texinfo .text=application/plain .text=text/plain .tgz=application/gnutar .tgz=application/x-compressed .tif=image/tiff .tif=image/x-tiff .tiff=image/tiff .tiff=image/x-tiff .tr=application/x-troff .tsi=audio/tsp-audio .tsp=application/dsptype .tsp=audio/tsplayer .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 .ustar=multipart/x-ustar .uu=application/octet-stream .uu=text/x-uuencode .uue=text/x-uuencode .vcd=application/x-cdlink .vcs=text/x-vcalendar .vda=application/vda .vdo=video/vdo .vew=application/groupwise .viv=video/vivo .viv=video/vnd.vivo .vivo=video/vivo .vivo=video/vnd.vivo .vmd=application/vocaltec-media-desc .vmf=application/vocaltec-media-file .voc=audio/voc .voc=audio/x-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 .vrml=model/vrml .vrml=x-world/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 .wav=audio/x-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 .wp5=application/wordperfect6.0 .wp6=application/wordperfect .wpd=application/wordperfect .wpd=application/x-wpwin .wq1=application/x-lotus .wri=application/mswrite .wri=application/x-wri .wrl=application/x-world .wrl=model/vrml .wrl=x-world/x-vrml .wrz=model/vrml .wrz=x-world/x-vrml .wsc=text/scriplet .wsrc=application/x-wais-source .wtk=application/x-wintalk .xbm=image/x-xbitmap .xbm=image/x-xbm .xbm=image/xbm .xdr=video/x-amt-demorun .xgz=xgl/drawing .xif=image/vnd.xiff .xl=application/excel .xla=application/excel .xla=application/x-excel .xla=application/x-msexcel .xlb=application/excel .xlb=application/vnd.ms-excel .xlb=application/x-excel .xlc=application/excel .xlc=application/vnd.ms-excel .xlc=application/x-excel .xld=application/excel .xld=application/x-excel .xlk=application/excel .xlk=application/x-excel .xll=application/excel .xll=application/vnd.ms-excel .xll=application/x-excel .xlm=application/excel .xlm=application/vnd.ms-excel .xlm=application/x-excel .xls=application/excel .xls=application/vnd.ms-excel .xls=application/x-excel .xls=application/x-msexcel .xlt=application/excel .xlt=application/x-excel .xlv=application/excel .xlv=application/x-excel .xlw=application/excel .xlw=application/vnd.ms-excel .xlw=application/x-excel .xlw=application/x-msexcel .xm=audio/xm .xml=text/xml .xmz=xgl/movie .xpix=application/x-vnd.ls-xpix .xpm=image/x-xpixmap .xpm=image/xpm .x-png=image/png .xsr=video/x-amt-showrun .xwd=image/x-xwd .xwd=image/x-xwindowdump .xyz=chemical/x-pdb .z=application/x-compress .z=application/x-compressed .zip=application/x-compressed .zip=application/x-zip-compressed .zip=application/zip .zip=multipart/x-zip .zoo=application/octet-stream .zsh=text/x-script.zsh 1.12 +5 -0 cartridges/andromda-jsf2/src/main/resources/templates/jsf2/flow/portlet/PortletPhaseListener.java.vsl Index: PortletPhaseListener.java.vsl =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-jsf2/src/main/resources/templates/jsf2/flow/portlet/PortletPhaseListener.java.vsl,v retrieving revision 1.11 retrieving revision 1.12 diff -u -w -r1.11 -r1.12 --- PortletPhaseListener.java.vsl 8 May 2008 23:03:06 -0000 1.11 +++ PortletPhaseListener.java.vsl 16 May 2008 22:09:05 -0000 1.12 @@ -14,12 +14,17 @@ { private static final long serialVersionUID = 1L; + private static final String FACES_CONTEXT = "facesContext"; + @Override protected void handleBeforePhase(javax.faces.event.PhaseEvent event) { final String viewId = this.getViewId(event); if (viewId != null && event.getFacesContext() != null) { + // - make the faces context available to all views + ((javax.portlet.PortletRequest)event.getFacesContext().getExternalContext().getRequest()).setAttribute(FACES_CONTEXT, event.getFacesContext()); + #foreach ($role in $useCases.iterator().next().getAllRoles()) #set ($userIsInRoleName = "userIs${stringUtils.upperCamelCaseName($role.name.toLowerCase())}") #set ($specializedRoles = $role.generalizedByActors) 1.17 +9 -0 cartridges/andromda-jsf2/src/main/resources/templates/jsf2/configuration/web.xml.vsl Index: web.xml.vsl =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-jsf2/src/main/resources/templates/jsf2/configuration/web.xml.vsl,v retrieving revision 1.16 retrieving revision 1.17 diff -u -w -r1.16 -r1.17 --- web.xml.vsl 9 May 2008 11:29:57 -0000 1.16 +++ web.xml.vsl 16 May 2008 22:09:05 -0000 1.17 @@ -295,6 +295,11 @@ <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> + <servlet> + <servlet-name>File Download Servlet</servlet-name> + <servlet-class>${managedBeansPackage}.FileDownloadServlet</servlet-class> + <load-on-startup>3</load-on-startup> + </servlet> #if ($standalone) <!-- resource loader servlet --> <servlet> @@ -330,6 +335,10 @@ <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.${facesServletExtension}</url-pattern> </servlet-mapping> + <servlet-mapping> + <servlet-name>File Download Servlet</servlet-name> + <url-pattern>/fileDownload/*</url-pattern> + </servlet-mapping> #if ($standalone) <servlet-mapping> <servlet-name>Trinidad Resources Servlet</servlet-name> |