Hi,

I have created a custom ant task that executes an XSL which has extensions. The XSL is attached below. I placed the latest xalan ( xalan-j 2.7.0 ), xercesImpl, xml-api and serializer jars in ANT_HOME/lib. I am using JDK 1.5. It works fine using command line. But when I execute the task from ant, I get the following error. Any help is greatly appreciated.



generateModel:
[modelGen] Generate Model
[modelGen] hibernateFile is model.xml
[modelGen] ************* Transformering  *************
[modelGen] hibernateFile model.xml
[modelGen] destFile ufs-hibernate-mapping.hbm.xml
[modelGen] file:///C:/cygwin/home/suresh/dev/javatest/xsl/generateModel.xsl; Line #35; Column #35; javax.xml.transform.TransformerException: java.lan
g.ClassNotFoundException: com.gandeev.transformer.ModelExtensions
[modelGen] file:///C:/cygwin/home/suresh/dev/javatest/xsl/generateModel.xsl; Line #47; Column #67; java.lang.NoSuchMethodException: For extension fun ction, could not find method org.apache.xml.utils.NodeVector.getBaseClass([ExpressionContext,] ). [modelGen] file:///C:/cygwin/home/suresh/dev/javatest/xsl/generateModel.xsl; Line #47; Column #67; java.lang.NullPointerException
[modelGen] ************* Result *************




<?xml version="1.0" encoding="UTF-8"?>


<xsl:stylesheet version="1.0"
       xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
       xmlns:xalan="http://xml.apache.org/xalan";
       xmlns:gd="xalan://com.gandeev.transformer.ModelExtensions"
       exclude-result-prefixes="gd xalan"
       extension-element-prefixes="gd">


<!-- Set output -->

<xsl:output method="xml" indent="yes" />

<!-- Initialize params -->

 <xsl:template
   match="*|@*|comment()|processing-instruction()|text()">
   <xsl:copy>
     <xsl:apply-templates
      select="*|@*|comment()|processing-instruction()|text()"/>
   </xsl:copy>
 </xsl:template>

 <xsl:param name="src.dir"/>

<!-- hibernate-mapping -->
 <xsl:template match="hibernate-mapping">
   <gd:init srcDir="{$src.dir}"/>
   <hibernate-mapping>
     <xsl:apply-templates select="class" mode="base"/>
     <xsl:apply-templates select="class" mode="sub"/>
   </hibernate-mapping>
 </xsl:template>
<!-- end hibernate-mapping -->

<!-- Get base class -->

 <xsl:template match="class" mode="base" >
   <class>
     <xsl:variable name="fqcn" select="gd:getBaseClass(@name)" />
     <xsl:attribute name="name">
   <xsl:value-of select="$fqcn" />
     </xsl:attribute>
           <xsl:copy-of select="descendant::*" />
   </class>
 </xsl:template>
<!-- end get base class -->
 <xsl:template match="class" mode="sub" >
   <class>
   <xsl:variable name="fqcn" select="gd:getSubClass(@name)" />
     <xsl:attribute name="name">
   <xsl:value-of select="$fqcn" />
     </xsl:attribute>
   </class>
 </xsl:template>


</xsl:stylesheet>

---- The Ant Task file

public class ModelGen extends Task
{
 private final static String styleName = "generateModel.xsl";
 private String hibernateFile = null;
 private String destFile = null;
 private String srcDir = null;

 public ModelGen()
 {  }

 public void setHibernateFile(String hibernateFile)
 {
    this.hibernateFile = hibernateFile;
 }

 public String getHibernateFile()
 {
   return this.hibernateFile;
 }

 public void setDestFile(String destFile)
 {
   this.destFile = destFile;
  }

 public String getDestFile()
 {
   return this.destFile;
 }

 public void setSrcDir ( String srcDir)
 {
   this.srcDir = srcDir;
 }

 public String getSrcDir ()
 {
   return this.srcDir;
 }

public void execute() throws BuildException
 {
   if (hibernateFile == null)
     throw new BuildException(" Hibernate file not specified");

if (destFile == null) throw new BuildException(" Dest Dir not specified");

if (srcDir == null) throw new BuildException(" src Dir not specified");

   System.out.println("Generate Model");

   String filename = null;
   try{
TransformerFactory tFactory = TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer(new StreamSource(styleName)); transformer.setParameter("src.dir", "c:/cygwin/home/suresh/dev/gandeev/ufs");

   System.out.println("************* Transformering  *************");
   System.out.println ("hibernateFile "+ hibernateFile);
   System.out.println ("destFile "+ destFile);
transformer.transform(new StreamSource(hibernateFile), new StreamResult(new FileOutputStream(destFile))); System.out.println("************* Result *************");
   }
   catch (Exception e)
     {
   e.printStackTrace();
     }
 }


 public static void main (String[] args)
 {
   try
     {
   ModelGen modelGen = new ModelGen();
   modelGen.setDestFile("main.xml");
   modelGen.setSrcDir("c:/cygwin/home/suresh/dev/gandeev/ufs");
   modelGen.setHibernateFile("model.xml");
   modelGen.execute();
     }
   catch (Exception e)
     {
   e.printStackTrace();
     }
 }

}

Thanks
Suresh

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

Reply via email to