Hi,

I've made a custom subtask which extends <<TemplateSubTask>>, I've put the
xdoclet.xml in META-INF directory and this CustomSubTask in / directpry of my
jar file and put the jar file in the classpath of the application in which I
need to use this SubTask. However, when I'm launching the build process, I've got :

<<
 Can't create a example element under doclet. Make sure the jar file containing
the corresponding subtask class is on the classpath specified in the <taskdef>
that defined {2}.
        at xdoclet.DocletTask.createDynamicElement(DocletTask.java:341)
        at
org.apache.tools.ant.IntrospectionHelper.createElement(IntrospectionHelper.java:510)
>>

The xdoclet.xml :
<<
<?xml version="1.0" encoding="UTF-8"?>

<!--
<!DOCTYPE xdoclet-module PUBLIC "-//XDoclet Team//DTD XDoclet Module 1.0//EN"
"http://xdoclet.sourceforge.net/dtd/xdoclet-module_1_0.dtd";>
-->

<xdoclet-module>
    <subtask
        name="example"
        implementation-class="ExampleSubTask"
        parent-task-class="xdoclet.modules.ejb.EjbDocletTask"
    />
</xdoclet-module>
>>

The class ExampleSubTask.java :
<<
import java.util.*;
import java.net.URL;

import xjavadoc.XClass;
import xjavadoc.XCollections;
import xjavadoc.XTag;
import xjavadoc.TagIterator;

import xdoclet.TemplateSubTask;
import xdoclet.XDocletException;
import xdoclet.util.Translator;

/**
 * Example subtask that generates a .txt file for each class, with
 * a simple list of methods in each class.  Generates one output 
 * file per class.
 *
 * @author        Denis Boutin
 * @version       $Revision: 1.0 $
 * @ant.element   name="example" 
 *                display-name="Example Subtask" 
 *                parent="xdoclet.DocletTask"
 */
public class ExampleSubTask extends TemplateSubTask {
  
  // the {0} will be replaced with the name of the class
  private final static String OUTPUT = "{0}.txt";
  
  private final static String TEMPLATE = "resources/test2.xdt";

  // setting from subtask in build.xml
  private String m_setting;

  /**
   * Default constructor
   */
  public ExampleSubTask() { 
    setDestinationFile(OUTPUT);
    setTemplateURL(getClass().getResource(TEMPLATE));
  }

  /**
   * Called by Ant by reflection with "setting" attribute.  
   */
  public void setSetting(String s) {
    m_setting = s;
  }

  /**
   * This method is invoked once for each class.  If we wanted to
   * do anything different, do it here.
   */
  protected void generateForClass(XClass clazz) throws XDocletException
  {
    System.out.println("Setting is: " + m_setting);
    // call template engine
    super.generateForClass(clazz);
  }
}
>>

build.xml :
<<
<project name="testXDoclet" basedir="." default="test-template">


  <target name="prepare.classpath">
    <path id="classpath">
      <fileset dir="lib/">
        <include name="**/*.jar"/>
      </fileset>
    </path>
  </target>


  <target name="test-template" depends="prepare.classpath">
    <delete dir="test-template"/>
    <taskdef name="doclet"
             classname="xdoclet.DocletTask"
                 classpathref="classpath"/>
     
    <doclet destdir="test-template">
       <fileset dir="test" includes="**/*.java"/>
       <!-- demonstrate one output file for whole source tree 
            typically this template would contain
            XDtClass:forAllClasses here. 
       -->
       <!-- <template templateFile="test.xdt" destinationFile="output.txt"/> -->
       <example setting="tagada"/>
     </doclet>
  </target>

  <target name="compile-xdoclet" depends="prepare.classpath">
    <javac srcdir="newTask/" classpathref="classpath" />
  </target>


</project>
>>


Do you see something wrong here ? 

Regards,
Denis Boutin.


-------------------------------------------------------
This SF.Net email is sponsored by: Oracle 10g
Get certified on the hottest thing ever to hit the market... Oracle 10g.
Take an Oracle 10g class now, and we'll give you the exam FREE.
http://ads.osdn.com/?ad_id149&alloc_id66&op=click
_______________________________________________
xdoclet-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/xdoclet-user

Reply via email to