Justin Case
Mon, 15 Jun 2009 08:01:41 -0700
Hi all, Velocity code generation works fine with a VM file. I thought I'd use also the qtags special annotations to implement easier restrictions instead of checking everything in the VM file.
However I can't seem to understand how to activate them. I created the tags as
needed, put restrictions in their annotations, started the Ant build with some
broken files, the process flows happily ignoring all the qtags restrictions
I've got there. Shouldn't I get some kind of error? Do you see anything unusual
below - or forgotten?
Note: I couldn't really figure out what the "namespace" attributes need to
contain, but I picked something hopefully appropriate.
Thanks a lot,
M
Here more info:
---------The tag class:
package org.xdoclet.plugin.myplugin.qtags;
import com.thoughtworks.qdox.model.AbstractJavaEntity;
import org.xdoclet.XDocletTag;
/**
* @qtags.location class
* @qtags.once
*/
public class MyClassTag extends XDocletTag {
-------- the VM file:
#set( $class = $metadata )
public interface I${class.getName()} {
#set( $parameterTagsClass = $class.getTagsByName("mytag.classlvl") )
#foreach( $parameterTagClass in $parameterTagsClass )
#if ($parameterTagClass.getNamedParameter("table"))
public static final String TABLE =
"$parameterTagClass.getNamedParameter("table")";
#end
#end
---------- the build.xml
<taskdef name="xdoclet2"
classname="org.xdoclet.ant.XDocletTask"
classpathref="lib2.class.path" />
<xdoclet2>
<fileset dir="${src.java.dir}">
<include name="**/test/*Base.java" />
</fileset>
<component classname="org.generama.VelocityTemplateEngine"/>
<component classname="org.generama.JellyTemplateEngine"/>
<component
classname="org.xdoclet.plugin.qtags.impl.QTagImplPlugin"
destdir="${build2.java.dir}"
/>
<component
classname="org.xdoclet.plugin.qtags.impl.QTagLibraryPlugin"
destdir="${build2.java.dir}"
packagereplace="org.xdoclet.plugin.myplugin.qtags"
/>
<component
classname="org.xdoclet.plugin.qtags.xdoc.QTagXDocPlugin"
destdir="${build2.java.dir}/generated-xdocs"
namespace="myplugin"
/>
<component
classname="org.xdoclet.plugin.qtags.confluence.QTagConfluencePlugin"
destdir="${build2.java.dir}/confluence"
namespace="myplugin"
/>
<component
classname="org.xdoclet.plugin.myplugin.MyPlugin"
destdir="${build2.java.dir}"
fileregex="(.*)(.java)"
filereplace="I$1.java"
packageregex="test"
packagereplace="test.generated" />
--------tags registration:
package org.xdoclet.plugin.myplugin;
import org.generama.QDoxCapableMetadataProvider;
import org.generama.VelocityTemplateEngine;
import org.generama.WriterMapper;
import org.generama.defaults.JavaGeneratingPlugin;
import org.xdoclet.plugin.sqlinterface.qtags.MyClassTag;
public class MyPlugin extends JavaGeneratingPlugin {
public MyPlugin(VelocityTemplateEngine templateEngine,
QDoxCapableMetadataProvider metadataProvider,
WriterMapper writerMapper) {
super(templateEngine, metadataProvider, writerMapper);
setMultioutput(true);
metadataProvider.getDocletTagFactory().registerTag(MyClassTag.NAME,
MyClassTag.class);
--------- and the broken Java source
package com.test;
/**
* @mytag.classlvl table="firstone"
* @mytag.classlvl table="second"
**/
------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited
royalty-free distribution of the report engine for externally facing
server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
xdoclet-user mailing list
xdoclet-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xdoclet-user