Hi, I'm using XDoclet 1.2.3 and I'm writing my own template. I want to write to a resulting file a comment if the session bean is local.

This is my HelloWorld Session Bean:

[code]
package uk.co.xdoclet.session;

import java.rmi.RemoteException;

import javax.ejb.EJBException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;

/**
* @ejb.bean
*  name = "HelloWorldSession"
*  jndi-name="uk_co_jemos_xdoclet_test_HelloWorldSession"
*  local-jndi-name="uk_co_jemos_xdoclet_test_HelloWorldSessionLocal"
*  view-type="both"
*  type="Stateless"
*  transaction-type="Container"
*
* @ejb.transaction type = "Required"
*
* @jemos.delegate
*
*/
public class HelloWorldSessionBean implements SessionBean {

/**
 *
 */
private static final long serialVersionUID = 3590996393443114391L;

public HelloWorldSessionBean() {
 super();
 // TODO Auto-generated constructor stub
}

public void setSessionContext(SessionContext arg0) throws EJBException, RemoteException {
 // TODO Auto-generated method stub

}

public void ejbRemove() throws EJBException, RemoteException {
 // TODO Auto-generated method stub

}

public void ejbActivate() throws EJBException, RemoteException {
 // TODO Auto-generated method stub

}

public void ejbPassivate() throws EJBException, RemoteException {
 // TODO Auto-generated method stub

}

/**
 * @ejb.interface-method view-type="both"
 * @jemos.delegate-method
 *
 */
public void helloWorld() {
 System.out.println("Hello World");
}

}

[/code]


This is my template:

[code]
<XDtClass:ifHasClassTag tagName="jemos.delegate">
/*
* <XDtI18n:getString resource="do_not_edit"/>
*/
package <XDtPackage:packageName />;
/**
* A delegate class for <XDtClass:className />
<XDtClass:classCommentTags indent="0" /> */
public class <XDtClass:classTagValue tagName="jemos.delegate" paramName="name" default="<XDtClass:className />Delegate"/> {
<XDtEjb:ifLocalEjb>
Hello, this is local
</XDtEjb:ifLocalEjb>
<XDtMethod:forAllMethods>
<XDtComment:comment>
Considers only public methods with both:
@ejb.interface-method and @jemos.delegate-method
</XDtComment:comment>
<XDtMethod:ifIsPublic>
<XDtMethod:ifHasMethodTag tagName="ejb.interface-method">
<XDtMethod:ifHasMethodTag tagName="jemos.delegate-method">
Method name: <XDtMethod:methodName />
</XDtMethod:ifHasMethodTag >
</XDtMethod:ifHasMethodTag>
</XDtMethod:ifIsPublic>
</XDtMethod:forAllMethods>
</XDtClass:ifHasClassTag>
}
[/code]

This is the error stack trace:

[error]
[xdoclet] xdoclet.XDocletException: Running XDoclet failed.: xdoclet.template.TemplateException: Invoking method in class xdoclet.modules.ejb.EjbTagsHandler failed: ifLocalEjb, line=16 of template file: file:/D:/OPENSOURCES/eclipse_projects/jemos-xdoclet/src/conf/jemos-delegate.xdt, exception: null
[xdoclet] at xdoclet.XDocletTagSupport.generate(XDocletTagSupport.java:750)
[xdoclet] at xdoclet.tagshandler.ClassTagsHandler.ifHasClassTag(ClassTagsHandler.java:440)
[xdoclet] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[xdoclet] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [xdoclet] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[xdoclet] at java.lang.reflect.Method.invoke(Method.java:585)
[xdoclet] at xdoclet.template.TemplateEngine.invoke(TemplateEngine.java:641)
[xdoclet] at xdoclet.template.TemplateEngine.invokeMethod(TemplateEngine.java:540) [xdoclet] at xdoclet.template.TemplateEngine.invokeBlockMethod(TemplateEngine.java:965) [xdoclet] at xdoclet.template.TemplateEngine.handleBlockTag(TemplateEngine.java:932) [xdoclet] at xdoclet.template.TemplateEngine.handleTag(TemplateEngine.java:472) [xdoclet] at xdoclet.template.TemplateEngine.generate(TemplateEngine.java:348)
[xdoclet] at xdoclet.template.TemplateEngine.start(TemplateEngine.java:415)
[xdoclet] at xdoclet.TemplateSubTask.startEngine(TemplateSubTask.java:562)
[xdoclet] at xdoclet.TemplateSubTask.generateForClass(TemplateSubTask.java:779) [xdoclet] at xdoclet.TemplateSubTask.startProcessPerClass(TemplateSubTask.java:679)
[xdoclet] at xdoclet.TemplateSubTask.startProcess(TemplateSubTask.java:596)
[xdoclet] at xdoclet.TemplateSubTask.execute(TemplateSubTask.java:487)
[xdoclet] at xdoclet.XDocletMain.start(XDocletMain.java:48)
[xdoclet] at xdoclet.DocletTask.start(DocletTask.java:468)
[xdoclet] at xjavadoc.ant.XJavadocTask.execute(XJavadocTask.java:105)
[xdoclet] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
[xdoclet] at org.apache.tools.ant.Task.perform(Task.java:364)
[xdoclet] at org.apache.tools.ant.Target.execute(Target.java:341)
[xdoclet] at org.apache.tools.ant.Target.performTasks(Target.java:369)
[xdoclet] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
[xdoclet] at org.apache.tools.ant.Project.executeTarget(Project.java:1185)
[xdoclet] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:40) [xdoclet] at org.eclipse.ant.internal.ui.antsupport.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:32)
[xdoclet] at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
[xdoclet] at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.run(InternalAntRunner.java:423) [xdoclet] at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.main(InternalAntRunner.java:137)
[/error]


However, if I use another Ejb tag, let's say
EJB name: <XDtEjb:ejbName />
It prints out the result correctly (EJB name: HelloWorldSession).

Can anyone help?

---
[This E-mail has been scanned for viruses but it is your responsibility to maintain up to date anti virus software on the device that you are
currently using to read this email. ]



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
xdoclet-user mailing list
xdoclet-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xdoclet-user

Reply via email to