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
> one) you can easily build a taglib that will extract
> the desired version and show it in your JSPs.
> 
> Regards
> Ivan
> 
> --- "Alexey N. Solofnenko" <[EMAIL PROTECTED]>
> wrote:
> 
> > This is RTFM:
> > 
> >     Package pkg = clazz.getPackage(); // there are
> > classes without packages
> >     String version=(pkg==null ? null :
> > pkg.getImplementationVersion());
> > 
> > - Alexey.
> > 
> > Ferrer, Eric wrote:
> > > I had tried that with a version.html and that
> > works great.  Has anyone
> > > successfully tried using the manifest.mf as a
> > source for storing
> > > build/release/version information and
> successfully
> > reading it at
> > > run-time to display in a jsp?
> > >
> > > -----Original Message-----
> > > From: Ivan Ivanov
> > [mailto:[EMAIL PROTECTED] 
> > > Sent: Wednesday, December 28, 2005 4:14 PM
> > > To: Ant Users List
> > > Subject: RE: using buildnumber effectively
> > >
> > > Hello,
> 
=== 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