* The "builtin" and "selftest" descriptors are now generated. * Fixed ant-descriptor.template to handle @ant:type tag properly. Submitted by Darrell DeBoer [darrell@apache.org] git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271623 13f79535-47bb-0310-9956-ffa450edef68master
@@ -27,7 +27,6 @@ Legal: | |||||
<property name="gen.dir" value="${build.dir}/gen"/> | <property name="gen.dir" value="${build.dir}/gen"/> | ||||
<property name="antlib.name" value="NONAME"/> | <property name="antlib.name" value="NONAME"/> | ||||
<property name="antlib.include" value="org/apache/antlib/${antlib.name}/**"/> | |||||
<property name="antlib.descriptor" value="${antlib.name}-ant-descriptor.xml"/> | <property name="antlib.descriptor" value="${antlib.name}-ant-descriptor.xml"/> | ||||
<property name="antlib.role.descriptor" value="${antlib.name}-ant-roles.xml"/> | <property name="antlib.role.descriptor" value="${antlib.name}-ant-roles.xml"/> | ||||
@@ -40,36 +39,37 @@ Legal: | |||||
</path> | </path> | ||||
<!-- Main target --> | <!-- Main target --> | ||||
<target name="main" depends="jar" /> | |||||
<target name="check-uptodate"> | |||||
<uptodate property="xdoclet.uptodate" targetfile="${gen.dir}/${antlib.descriptor}" > | |||||
<srcfiles dir= "${java.dir}" includes="${antlib.include}/*.java"/> | |||||
</uptodate> | |||||
<target name="main" depends="antlib-jar" /> | |||||
<!-- Define the pattern which specifies file to include/exclude | |||||
in this antlib. --> | |||||
<target name="antlib-definition"> | |||||
<patternset id="antlib.include"> | |||||
<include name="org/apache/antlib/${antlib.name}/**"/> | |||||
</patternset> | |||||
</target> | </target> | ||||
<!-- runs xdoclet if need be --> | <!-- runs xdoclet if need be --> | ||||
<target name="xdoclet" depends="check-uptodate" unless="xdoclet.uptodate"> | |||||
<taskdef name="xdoclet" classname="xdoclet.DocletTask" classpathref="project.class.path"/> | |||||
<xdoclet sourcepath="${java.dir}" destdir="${gen.dir}" classpathref="project.class.path"> | |||||
<target name="antlib-descriptors" | |||||
depends="antlib-definition" | |||||
unless="antlib-descriptors.omit"> | |||||
<antlib-descriptor libName="${antlib.name}" | |||||
destdir="${gen.dir}" | |||||
classpathref="project.class.path"> | |||||
<fileset dir="${java.dir}"> | <fileset dir="${java.dir}"> | ||||
<include name="${antlib.include}/*.java" /> | |||||
<patternset refid="antlib.include"/> | |||||
</fileset> | </fileset> | ||||
<template templateFile="${manifest.dir}/ant-descriptor.template" | |||||
destinationfile="${antlib.descriptor}"/> | |||||
<template templateFile="${manifest.dir}/ant-roles.template" | |||||
destinationfile="${antlib.role.descriptor}"/> | |||||
</xdoclet> | |||||
</antlib-descriptor> | |||||
</target> | </target> | ||||
<!-- Creates the jars file --> | |||||
<target name="jar" depends="xdoclet"> | |||||
<!-- Generate an "atl" jar file for this antlib. --> | |||||
<target name="antlib-jar" depends="antlib-descriptors"> | |||||
<antlib-jar jarfile="${build.lib}/${antlib.name}.atl" | <antlib-jar jarfile="${build.lib}/${antlib.name}.atl" | ||||
basedir="${build.classes}" | |||||
descriptor="${gen.dir}/${antlib.descriptor}" | descriptor="${gen.dir}/${antlib.descriptor}" | ||||
rolesDescriptor="${gen.dir}/${antlib.role.descriptor}"> | rolesDescriptor="${gen.dir}/${antlib.role.descriptor}"> | ||||
<include name="${antlib.include}" /> | |||||
<fileset dir="${build.classes}"> | |||||
<patternset refid="antlib.include"/> | |||||
</fileset> | |||||
</antlib-jar> | </antlib-jar> | ||||
</target> | </target> | ||||
@@ -184,14 +184,24 @@ Legal: | |||||
<!-- Compiles and installs the custom build tasks --> | <!-- Compiles and installs the custom build tasks --> | ||||
<target name="custom-tasks"> | <target name="custom-tasks"> | ||||
<property name="custom-tasks-dir" value="${build.dir}/tasks"/> | |||||
<mkdir dir="${custom-tasks-dir}"/> | |||||
<javac srcdir="src/make" destdir="${custom-tasks-dir}"> | |||||
<classpath refid="project.class.path"/> | |||||
</javac> | |||||
<taskdef name="antlib-jar" classname="org.apache.myrmidon.build.AntlibJarTask"> | |||||
<classpath location="${custom-tasks-dir}"/> | |||||
</taskdef> | |||||
<property name="custom-tasks-dir" value="${build.dir}/tasks"/> | |||||
<mkdir dir="${custom-tasks-dir}"/> | |||||
<javac srcdir="src/make" destdir="${custom-tasks-dir}"> | |||||
<classpath refid="project.class.path"/> | |||||
</javac> | |||||
<copy file="${manifest.dir}/ant-descriptor.template" todir="${build.dir}/tasks"/> | |||||
<copy file="${manifest.dir}/ant-roles.template" todir="${build.dir}/tasks"/> | |||||
<taskdef name="antlib-jar" classname="org.apache.myrmidon.build.AntlibJarTask"> | |||||
<classpath location="${custom-tasks-dir}"/> | |||||
</taskdef> | |||||
<taskdef name="antlib-descriptor" classname="org.apache.myrmidon.build.AntlibDescriptorTask"> | |||||
<classpath> | |||||
<pathelement location="${custom-tasks-dir}"/> | |||||
<path refid="project.class.path"/> | |||||
</classpath> | |||||
</taskdef> | |||||
</target> | </target> | ||||
<!-- Compiles the source code --> | <!-- Compiles the source code --> | ||||
@@ -302,23 +312,15 @@ Legal: | |||||
</target> | </target> | ||||
<!-- Creates the jars file --> | |||||
<target name="jars" depends="custom-tasks, compile"> | |||||
<target name="jar-prepare" depends="custom-tasks, compile"> | |||||
<mkdir dir="${build.lib}"/> | <mkdir dir="${build.lib}"/> | ||||
<jar jarfile="${build.lib}/myrmidon-launcher.jar" | |||||
basedir="${build.classes}" | |||||
manifest="${manifest.dir}/myrmidon-launcher.mf"> | |||||
<!-- Define the packaging for the various jars --> | |||||
<patternset id="myrmidon-launcher.include"> | |||||
<include name="org/apache/myrmidon/launcher/*" /> | <include name="org/apache/myrmidon/launcher/*" /> | ||||
</jar> | |||||
</patternset> | |||||
<antlib-jar jarfile="${build.lib}/myrmidon-api.jar" | |||||
basedir="${build.classes}" | |||||
manifest="${manifest.dir}/myrmidon-api.mf" | |||||
rolesDescriptor="${manifest.dir}/builtin-ant-roles.xml" | |||||
descriptor="${manifest.dir}/builtin-ant-descriptor.xml" | |||||
servicesDescriptor="${manifest.dir}/core-services.xml" > | |||||
<patternset id="myrmidon-api.include"> | |||||
<include name="org/apache/myrmidon/api/*" /> | <include name="org/apache/myrmidon/api/*" /> | ||||
<include name="org/apache/myrmidon/aspects/*" /> | <include name="org/apache/myrmidon/aspects/*" /> | ||||
<include name="org/apache/myrmidon/converter/*" /> | <include name="org/apache/myrmidon/converter/*" /> | ||||
@@ -327,34 +329,91 @@ Legal: | |||||
<include name="org/apache/myrmidon/framework/**" /> | <include name="org/apache/myrmidon/framework/**" /> | ||||
<include name="org/apache/aut/**" /> | <include name="org/apache/aut/**" /> | ||||
<include name="org/apache/tools/**" /> | <include name="org/apache/tools/**" /> | ||||
<!-- <include name="org/apache/myrmidon/*" /> | |||||
<include name="org/apache/myrmidon/components/**"/> | |||||
<include name="org/apache/myrmidon/frontends/*" /> --> | |||||
</antlib-jar> | |||||
</patternset> | |||||
<patternset id="myrmidon-container.include"> | |||||
<include name="org/apache/myrmidon/components/**" /> | |||||
<include name="org/apache/myrmidon/frontends/*" /> | |||||
<include name="org/apache/myrmidon/*" /> | |||||
</patternset> | |||||
<!-- | |||||
<jar jarfile="${build.lib}/myrmidon-framework.jar" | |||||
basedir="${build.classes}" | |||||
manifest="${manifest.dir}/myrmidon-framework.mf"> | |||||
<include name="org/apache/myrmidon/framework/**" /> | |||||
<patternset id="selftest.include"> | |||||
<include name="org/apache/antlib/selftest/**" /> | |||||
<exclude name="org/apache/antlib/selftest/extension1/**" /> | |||||
</patternset> | |||||
<zipfileset dir="${manifest.dir}" fullpath="META-INF/ant-roles.xml"> | |||||
<include name="builtin-ant-roles.xml"/> | |||||
</zipfileset> | |||||
<patternset id="selftest-extension1.include"> | |||||
<include name="org/apache/antlib/selftest/extension1/**" /> | |||||
</patternset> | |||||
</target> | |||||
<zipfileset dir="${manifest.dir}" fullpath="META-INF/ant-descriptor.xml"> | |||||
<include name="builtin-ant-descriptor.xml"/> | |||||
</zipfileset> | |||||
<!-- The generation of the descriptor is kept separated from the packaging | |||||
of the jars, since jarring is fast and XDoclet is pretty slow.--> | |||||
<target name="antlib-descriptors" | |||||
depends="jar-prepare" | |||||
unless="antlib-descriptors.omit" | |||||
description="Generates Antlib descriptors using XDoclet."> | |||||
<!-- The "builtin" descriptors include metainfo for both | |||||
myrmidon-api and myrmidon-container jars. | |||||
(Packaged with myrmidon-api.jar). --> | |||||
<antlib-descriptor libName="builtin" | |||||
destdir="${gen.dir}" | |||||
classpathref="project.class.path"> | |||||
<fileset dir="${java.dir}"> | |||||
<patternset refid="myrmidon-api.include"/> | |||||
<patternset refid="myrmidon-container.include"/> | |||||
</fileset> | |||||
</antlib-descriptor> | |||||
<antlib-descriptor libName="selftest" | |||||
destdir="${gen.dir}" | |||||
classpathref="project.class.path"> | |||||
<fileset dir="${java.dir}"> | |||||
<patternset refid="selftest.include"/> | |||||
</fileset> | |||||
</antlib-descriptor> | |||||
</target> | |||||
<!-- Package the jar files --> | |||||
<target name="jars" depends="antlib-descriptors"> | |||||
<jar jarfile="${build.lib}/myrmidon-launcher.jar" | |||||
basedir="${build.classes}" | |||||
manifest="${manifest.dir}/myrmidon-launcher.mf"> | |||||
<patternset refid="myrmidon-launcher.include"/> | |||||
</jar> | </jar> | ||||
--> | |||||
<jar jarfile="${build.lib}/myrmidon-container.jar" | <jar jarfile="${build.lib}/myrmidon-container.jar" | ||||
basedir="${build.classes}" | basedir="${build.classes}" | ||||
manifest="${manifest.dir}/myrmidon-container.mf"> | manifest="${manifest.dir}/myrmidon-container.mf"> | ||||
<include name="org/apache/myrmidon/components/**" /> | |||||
<include name="org/apache/myrmidon/frontends/*" /> | |||||
<include name="org/apache/myrmidon/*" /> | |||||
<patternset refid="myrmidon-container.include"/> | |||||
</jar> | </jar> | ||||
<antlib-jar jarfile="${build.lib}/myrmidon-api.jar" | |||||
basedir="${build.classes}" | |||||
manifest="${manifest.dir}/myrmidon-api.mf" | |||||
rolesDescriptor="${gen.dir}/builtin-ant-roles.xml" | |||||
descriptor="${gen.dir}/builtin-ant-descriptor.xml" | |||||
servicesDescriptor="${manifest.dir}/core-services.xml" > | |||||
<patternset refid="myrmidon-api.include"/> | |||||
</antlib-jar> | |||||
<antlib-jar jarfile="${build.lib}/selftest.atl" | |||||
basedir="${build.classes}" | |||||
manifest="${manifest.dir}/selftest.mf" | |||||
descriptor="${gen.dir}/selftest-ant-descriptor.xml" | |||||
rolesDescriptor="${gen.dir}/selftest-ant-roles.xml"> | |||||
<patternset refid="selftest.include"/> | |||||
</antlib-jar> | |||||
<jar jarfile="${build.lib}/selftest-extension1.jar" | |||||
basedir="${build.classes}" | |||||
manifest="${manifest.dir}/selftest-extension1.mf"> | |||||
<patternset refid="selftest-extension1.include" /> | |||||
</jar> | |||||
<!-- Simple cases handled by antlib.xml --> | |||||
<ant antfile="antlib.xml"> | <ant antfile="antlib.xml"> | ||||
<property name="antlib.name" value="core"/> | <property name="antlib.name" value="core"/> | ||||
</ant> | </ant> | ||||
@@ -390,22 +449,6 @@ Legal: | |||||
<ant antfile="antlib.xml"> | <ant antfile="antlib.xml"> | ||||
<property name="antlib.name" value="vfile"/> | <property name="antlib.name" value="vfile"/> | ||||
</ant> | </ant> | ||||
<antlib-jar jarfile="${build.lib}/selftest.atl" | |||||
basedir="${build.classes}" | |||||
manifest="${manifest.dir}/selftest.mf" | |||||
descriptor="${manifest.dir}/selftest-ant-descriptor.xml" | |||||
rolesDescriptor="${manifest.dir}/empty-roles.xml"> | |||||
<include name="org/apache/antlib/selftest/**" /> | |||||
<exclude name="org/apache/antlib/selftest/extension1/**" /> | |||||
</antlib-jar> | |||||
<jar jarfile="${build.lib}/selftest-extension1.jar" | |||||
basedir="${build.classes}" | |||||
manifest="${manifest.dir}/selftest-extension1.mf"> | |||||
<include name="org/apache/antlib/selftest/extension1/**" /> | |||||
</jar> | |||||
</target> | </target> | ||||
<!-- Compiles and runs the unit tests --> | <!-- Compiles and runs the unit tests --> | ||||
@@ -487,7 +530,9 @@ Legal: | |||||
</target> | </target> | ||||
<!-- Creates the distribution --> | <!-- Creates the distribution --> | ||||
<target name="dist-lite" depends="jars"> | |||||
<target name="dist-lite" | |||||
depends="jars" | |||||
description="Generates a minimal working distribution."> | |||||
<mkdir dir="${dist.bin}"/> | <mkdir dir="${dist.bin}"/> | ||||
<mkdir dir="${dist.lib}"/> | <mkdir dir="${dist.lib}"/> | ||||
@@ -529,6 +574,12 @@ Legal: | |||||
</target> | </target> | ||||
<target name="dist-extralite" | |||||
description="A faster version of dist-lite (no XDoclet)."> | |||||
<property name="antlib-descriptors.omit" value="true"/> | |||||
<antcall target="dist-lite"/> | |||||
</target> | |||||
<!-- Creates the distribution --> | <!-- Creates the distribution --> | ||||
<target name="dist" depends="dist-lite,test" description="Builds the distribution"/> | <target name="dist" depends="dist-lite,test" description="Builds the distribution"/> | ||||
@@ -15,6 +15,7 @@ import org.apache.myrmidon.api.TaskException; | |||||
* This is to test whether extension is loaded. | * This is to test whether extension is loaded. | ||||
* | * | ||||
* @author <a href="mailto:peter@apache.org">Peter Donald</a> | * @author <a href="mailto:peter@apache.org">Peter Donald</a> | ||||
* @ant:task name="extensions-test" | |||||
*/ | */ | ||||
public class ExtensionsTest | public class ExtensionsTest | ||||
extends AbstractTask | extends AbstractTask | ||||
@@ -14,6 +14,7 @@ import org.apache.myrmidon.api.TaskException; | |||||
* Test conversion of all the primitive types. | * Test conversion of all the primitive types. | ||||
* | * | ||||
* @author <a href="mailto:peter@apache.org">Peter Donald</a> | * @author <a href="mailto:peter@apache.org">Peter Donald</a> | ||||
* @ant:task name="prim-test" | |||||
*/ | */ | ||||
public class PrimitiveTypesTest | public class PrimitiveTypesTest | ||||
extends AbstractTask | extends AbstractTask | ||||
@@ -28,6 +28,7 @@ import java.util.Properties; | |||||
* | * | ||||
* @author <a href="mailto:peter@apache.org">Peter Donald</a> | * @author <a href="mailto:peter@apache.org">Peter Donald</a> | ||||
* @version $Revision$ $Date$ | * @version $Revision$ $Date$ | ||||
* @ant:role shorthand="exec-manager" | |||||
*/ | */ | ||||
public interface ExecManager | public interface ExecManager | ||||
{ | { | ||||
@@ -50,6 +50,7 @@ import java.io.File; | |||||
* </ul> | * </ul> | ||||
* | * | ||||
* @author Adam Murdoch | * @author Adam Murdoch | ||||
* @ant:role shorthand="file-system-manager" | |||||
*/ | */ | ||||
public interface FileSystemManager | public interface FileSystemManager | ||||
{ | { | ||||
@@ -12,6 +12,7 @@ package org.apache.myrmidon.aspects; | |||||
* | * | ||||
* @author <a href="mailto:peter@apache.org">Peter Donald</a> | * @author <a href="mailto:peter@apache.org">Peter Donald</a> | ||||
* @version $Revision$ $Date$ | * @version $Revision$ $Date$ | ||||
* @ant:type type="aspect" name="noop" | |||||
*/ | */ | ||||
public class NoopAspectHandler | public class NoopAspectHandler | ||||
extends AbstractAspectHandler | extends AbstractAspectHandler | ||||
@@ -29,6 +29,7 @@ import org.xml.sax.XMLReader; | |||||
* | * | ||||
* @author <a href="mailto:peter@apache.org">Peter Donald</a> | * @author <a href="mailto:peter@apache.org">Peter Donald</a> | ||||
* @version $Revision$ $Date$ | * @version $Revision$ $Date$ | ||||
* @ant:type type="project-builder" name="ati" | |||||
*/ | */ | ||||
public class ATIProjectBuilder | public class ATIProjectBuilder | ||||
extends DefaultProjectBuilder | extends DefaultProjectBuilder | ||||
@@ -35,6 +35,8 @@ import org.xml.sax.XMLReader; | |||||
* | * | ||||
* @author <a href="mailto:peter@apache.org">Peter Donald</a> | * @author <a href="mailto:peter@apache.org">Peter Donald</a> | ||||
* @version $Revision$ $Date$ | * @version $Revision$ $Date$ | ||||
* @ant:type type="project-builder" name="xml" | |||||
* @ant:type type="project-builder" name="ant" | |||||
*/ | */ | ||||
public class DefaultProjectBuilder | public class DefaultProjectBuilder | ||||
extends AbstractLogEnabled | extends AbstractLogEnabled | ||||
@@ -30,6 +30,7 @@ import org.apache.myrmidon.interfaces.configurer.Configurer; | |||||
* Class used to configure tasks. | * Class used to configure tasks. | ||||
* | * | ||||
* @author <a href="mailto:peter@apache.org">Peter Donald</a> | * @author <a href="mailto:peter@apache.org">Peter Donald</a> | ||||
* @ant:type type="configurer" name="classic" | |||||
*/ | */ | ||||
public class ClassicConfigurer | public class ClassicConfigurer | ||||
extends AbstractLogEnabled | extends AbstractLogEnabled | ||||
@@ -34,6 +34,7 @@ import org.apache.myrmidon.interfaces.type.TypeManager; | |||||
* | * | ||||
* @author <a href="mailto:peter@apache.org">Peter Donald</a> | * @author <a href="mailto:peter@apache.org">Peter Donald</a> | ||||
* @version $Revision$ $Date$ | * @version $Revision$ $Date$ | ||||
* @ant:type type="configurer" name="default" | |||||
*/ | */ | ||||
public class DefaultConfigurer | public class DefaultConfigurer | ||||
extends AbstractLogEnabled | extends AbstractLogEnabled | ||||
@@ -17,6 +17,7 @@ import org.apache.myrmidon.api.TaskException; | |||||
* | * | ||||
* @author <a href="mailto:peter@apache.org">Peter Donald</a> | * @author <a href="mailto:peter@apache.org">Peter Donald</a> | ||||
* @version $Revision$ $Date$ | * @version $Revision$ $Date$ | ||||
* @ant:data-type name="pattern" | |||||
*/ | */ | ||||
public class Pattern | public class Pattern | ||||
implements DataType | implements DataType | ||||
@@ -13,7 +13,7 @@ import org.apache.myrmidon.api.TaskException; | |||||
import org.apache.myrmidon.aspects.AspectHandler; | import org.apache.myrmidon.aspects.AspectHandler; | ||||
/** | /** | ||||
* Manage and propogate Aspects. | |||||
* Manage and propogate Aspects.. | |||||
* | * | ||||
* @author <a href="mailto:peter@apache.org">Peter Donald</a> | * @author <a href="mailto:peter@apache.org">Peter Donald</a> | ||||
* @version $Revision$ $Date$ | * @version $Revision$ $Date$ | ||||
@@ -16,6 +16,7 @@ import org.apache.myrmidon.api.Context; | |||||
* | * | ||||
* @author <a href="mailto:peter@apache.org">Peter Donald</a> | * @author <a href="mailto:peter@apache.org">Peter Donald</a> | ||||
* @version $Revision$ $Date$ | * @version $Revision$ $Date$ | ||||
* @ant:role shorthand="configurer" | |||||
*/ | */ | ||||
public interface Configurer | public interface Configurer | ||||
{ | { | ||||
@@ -15,6 +15,7 @@ import org.apache.avalon.framework.ExceptionUtil; | |||||
* | * | ||||
* @author <a href="mailto:peter@apache.org">Peter Donald</a> | * @author <a href="mailto:peter@apache.org">Peter Donald</a> | ||||
* @version $Revision$ $Date$ | * @version $Revision$ $Date$ | ||||
* @ant:type type="listener" name="classic" | |||||
*/ | */ | ||||
public class ClassicProjectListener | public class ClassicProjectListener | ||||
extends AbstractProjectListener | extends AbstractProjectListener | ||||
@@ -12,6 +12,7 @@ package org.apache.myrmidon.listeners; | |||||
* | * | ||||
* @author <a href="mailto:peter@apache.org">Peter Donald</a> | * @author <a href="mailto:peter@apache.org">Peter Donald</a> | ||||
* @version $Revision$ $Date$ | * @version $Revision$ $Date$ | ||||
* @ant:type type="listener" name="default" | |||||
*/ | */ | ||||
public class DefaultProjectListener | public class DefaultProjectListener | ||||
extends ClassicProjectListener | extends ClassicProjectListener | ||||
@@ -12,7 +12,8 @@ package org.apache.myrmidon.listeners; | |||||
* | * | ||||
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | ||||
* @version $Revision$ $Date$ | * @version $Revision$ $Date$ | ||||
*/ | |||||
* @ant:type type="listener" name="noprefix" | |||||
*/ | |||||
public class NoPrefixProjectListener | public class NoPrefixProjectListener | ||||
extends DefaultProjectListener | extends DefaultProjectListener | ||||
{ | { | ||||
@@ -18,10 +18,10 @@ | |||||
</XDtClass:ifHasClassTag> | </XDtClass:ifHasClassTag> | ||||
</XDtClass:forAllClasses> | </XDtClass:forAllClasses> | ||||
<XDtClass:forAllClasses> | |||||
<XDtClass:forAllClassTags tagName="ant:type"> | |||||
<<XDtClass:classTagValue tagName="ant:type" paramName="type"/> | |||||
name="<XDtClass:classTagValue tagName="ant:type" paramName="name"/>" | |||||
<XDtClass:forAllClasses extent="concrete-type"> | |||||
<XDtClass:forAllClassTags tagName="ant:type" superclasses="false"> | |||||
<<XDtClass:classTagValue tagName="ant:type" paramName="type" superclasses="false"/> | |||||
name="<XDtClass:classTagValue tagName="ant:type" paramName="name" superclasses="false"/>" | |||||
classname="<XDtClass:fullClassName/>" /> | classname="<XDtClass:fullClassName/>" /> | ||||
</XDtClass:forAllClassTags> | </XDtClass:forAllClassTags> | ||||
</XDtClass:forAllClasses> | </XDtClass:forAllClasses> | ||||