diff --git a/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DefaultTskDeployer.java b/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DefaultTskDeployer.java
index c83494c5f..6b0419530 100644
--- a/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DefaultTskDeployer.java
+++ b/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DefaultTskDeployer.java
@@ -151,6 +151,27 @@ public class DefaultTskDeployer
public void deployDataType( final String name, final String location, final URL url )
throws DeploymentException
{
+ checkDeployment( location, url );
+ final ZipFile zipFile = getZipFileFor( url );
+ final Configuration datatypedefs = loadConfiguration( zipFile, TSKDEF_FILE );
+
+ try
+ {
+ final Iterator datatypes = datatypedefs.getChildren( "datatype" );
+ while( datatypes.hasNext() )
+ {
+ final Configuration datatype = (Configuration)datatypes.next();
+ if( datatype.getAttribute( "name" ).equals( name ) )
+ {
+ handleDataType( datatype, url );
+ break;
+ }
+ }
+ }
+ catch( final ConfigurationException ce )
+ {
+ throw new DeploymentException( "Malformed taskdefs.xml", ce );
+ }
}
public void deployTasklet( final String name, final String location, final URL url )
diff --git a/proposal/myrmidon/src/java/org/apache/ant/tasks/core/RegisterDataType.java b/proposal/myrmidon/src/java/org/apache/ant/tasks/core/RegisterDataType.java
new file mode 100644
index 000000000..524cd2ab4
--- /dev/null
+++ b/proposal/myrmidon/src/java/org/apache/ant/tasks/core/RegisterDataType.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) The Apache Software Foundation. All rights reserved.
+ *
+ * This software is published under the terms of the Apache Software License
+ * version 1.1, a copy of which has been included with this distribution in
+ * the LICENSE file.
+ */
+package org.apache.ant.tasks.core;
+
+import java.net.URL;
+import org.apache.ant.AntException;
+import org.apache.avalon.camelot.DefaultLocator;
+import org.apache.avalon.camelot.DeploymentException;
+import org.apache.avalon.camelot.RegistryException;
+
+/**
+ * Method to register a single datatype.
+ *
+ * @author Peter Donald
+ */
+public class RegisterDataType
+ extends AbstractResourceRegisterer
+{
+ protected void registerResource( final String name,
+ final String classname,
+ final URL url )
+ throws AntException, RegistryException
+ {
+ if( null == classname )
+ {
+ try { m_engine.getTskDeployer().deployDataType( name, url.toString(), url ); }
+ catch( final DeploymentException de )
+ {
+ throw new AntException( "Failed deploying " + name + " from " + url, de );
+ }
+ }
+ else
+ {
+ final DefaultLocator locator = new DefaultLocator( classname, url );
+ m_engine.getDataTypeEngine().getRegistry().register( name, locator );
+ }
+ }
+}
diff --git a/proposal/myrmidon/src/make/sample.xmk b/proposal/myrmidon/src/make/sample.xmk
index 00e7316a2..247130361 100644
--- a/proposal/myrmidon/src/make/sample.xmk
+++ b/proposal/myrmidon/src/make/sample.xmk
@@ -84,6 +84,16 @@ Legal:
+
+
+
+
+
+
+
+
diff --git a/proposal/myrmidon/src/manifest/taskdefs.xml b/proposal/myrmidon/src/manifest/taskdefs.xml
index eb5d6f226..5d87b7937 100644
--- a/proposal/myrmidon/src/manifest/taskdefs.xml
+++ b/proposal/myrmidon/src/manifest/taskdefs.xml
@@ -8,6 +8,7 @@
+