Eric,

This is pretty interesting. Several years I wrote a
similar taglib that showed localized messages in jsps
using the language set in the session. I used
java.util.ResourceBundle and worried about
performance, but ResourceBundle provides a way to
cache the (key,message) pairs so performance was not
an issue.

Anyway, I am pretty much curious about that Property
Factory and if it is not confidential could you please
show it?

Regards
Ivan

--- "Ferrer, Eric" <[EMAIL PROTECTED]> wrote:

> Ivan,
> 
> I have a Properties Factory where I plan to add the
> contents of the
> manifest.  Its ruffed up code to prove it can be
> done using the
> previously mention ant tasks.  The tld will invoke
> the read once and
> then add it to the Factory.
> 
> -----Original Message-----
> From: Ivan Ivanov
> [mailto:[EMAIL PROTECTED] 
> Sent: Wednesday, December 28, 2005 6:00 PM
> To: Ant Users List
> Subject: RE: using buildnumber effectively
> 
> Hello Eric,
> 
> this is fine. However, don't you think that it might
> slow down your web app, since every page you hit
> should retrieve the version from the manifest file
> again?
> 
> Regards
> Ivan
> 
> --- "Ferrer, Eric" <[EMAIL PROTECTED]>
> wrote:
> 
> > Ivan,
> > 
> > I quickly created this tag provided bellow and it
> > reads the manifest
> > file.  I do deploy to numerous webapps and the
> > deployment directory
> > differs between tomcat and websphere, I omitted
> > where I handle that
> > difference.  
> > 
> > Using the ant tasks, my manifest looks like this
> > 
> >     Manifest-Version: 1.0
> >     Ant-Version: Apache Ant 1.6.5
> >     Created-By: 1.4.2_06-b03 (Sun Microsystems Inc.)
> >     Author: admin
> >     Bundle-Name: DemoApp
> >     Bundle-Vendor: ABC Inc
> >     Bundle-Build: 20051123-bp1608
> >     Bundle-Version: 20051123-bp1608.019
> >     Bundle-Date: December 28 2005
> > 
> > My jsp calls <l:manifest
> > attributeName="Bundle-Build"/> to retrieve the
> > build and <l:manifest attributeName=" Bundle-Date
> > "/> to retrieve the
> > date.
> > 
> > Still needs more work, but it works.
> > 
> >  public class ManifestReaderTag extends TagSupport
> {
> > 
> >   private String _attributeName;
> > 
> > 
> >   /**
> >    * 
> >    */
> >   public ManifestReaderTag() {
> >     super();
> >   }
> > 
> > 
> >   /**
> >    * @return Returns the _attributeName.
> >    */
> >   public String getAttributeName() {
> >     return _attributeName;
> >   }
> >   /**
> >    * @param name The _attributeName to set.
> >    */
> >   public void setAttributeName(String name) {
> >     _attributeName = name;
> >   }
> >   
> >   public int doStartTag() throws JspException {
> >   
> >             readManifest();
> >       return SKIP_BODY;
> >   }
> > 
> > 
> > 
> >   /**
> >    * @see javax.servlet.jsp.tagext.Tag#doEndTag()
> >    */
> >   public int doEndTag() throws JspException {
> >   
> >   
> >     return super.doEndTag();
> >   }
> >   
> >   private void readManifest() {
> >     /* read our manifest and display values */
> >     JarFile jarFile = null;
> >     Attributes jarAttribs = null;
> >     if(getAttributeName() != null) {
> >       try{  
> >          
> >         Package thePackage =
> > getClass().getPackage();
> >         String theClass =
> > "/"+thePackage.getName().replace('.','/') +
> > "/ManifestReaderTag.class";
> >         URL turl =
> getClass().getResource(theClass);
> >               
> >           
> >         if(turl != null) {
> >           
> >           String pathToThisClass =
> turl.toString();
> > 
> >        /* appserver differences exists 
> >             code omitted
> >         */
> >     
> >             String manifestPath = pathToThisClass +
> > "/META-INF/MANIFEST.MF";
> >             
> >             //check if jar:file: present (shows up in
> > eclipse)
> >             int pos =
> > manifestPath.indexOf("jar:file:/"); 
> >             if(pos > -1)
> >               manifestPath =
> > manifestPath.substring(pos+10,
> > manifestPath.length());
> >             File theFile = new File(manifestPath);
> >             
> >             if(theFile != null) {
> >              FileInputStream fis = new
> > FileInputStream(theFile);
> >              
> >                     //Manifest manifest = new Manifest(new
> > URL(manifestPath).openStream());
> >                     Manifest manifest = new Manifest(fis);
> >                 
> >                           if(manifest != null) {
> >                             jarAttribs =
> > manifest.getMainAttributes();
> >                             
> >                             if(jarAttribs !=null) {
> >     
> > if(jarAttribs.containsKey(getAttributeName()))
> >     
> >
>
pageContext.getOut().write(jarAttribs.getValue(getAttributeName()));
> >                                     else
> >     
> > pageContext.getOut().write("Missing Attribute in
> > Manifest.MF");
> >                             }
> >                            
> >                             fis.close();
> >                           }
> >         }
> >            
> > 
> >         }
> >       }catch (IOException ioe) {
> >             System.err.println("Error reading
> manifest
> > file for
> > properties lookup : " + ioe.toString());
> >       } finally {
> >         if(jarFile != null)
> >           try{
> >             jarFile.close();
> >           } catch(java.io.IOException ioe) {
> >             //nothing to do
> >           }
> >       }
> >     }
> >   }
> > }
> > 
> > 
> > -----Original Message-----
> > From: Ivan Ivanov
> > [mailto:[EMAIL PROTECTED] 
> > Sent: Wednesday, December 28, 2005 4:57 PM
> > To: Ant Users List
> > Subject: Re: using buildnumber effectively
> > 
> > Hello Eric,
> > 
> > Using Alexey's code (I was going to provide
> similar
> 
=== message truncated ===



        
                
__________________________________ 
Yahoo! for Good - Make a difference this year. 
http://brand.yahoo.com/cybergivingweek2005/

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to