From 51e2cc543512d445e415bc5b7c2a42f98ddf8446 Mon Sep 17 00:00:00 2001 From: Peter Donald Date: Tue, 12 Dec 2000 11:51:11 +0000 Subject: [PATCH] Added register-datatype task git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268343 13f79535-47bb-0310-9956-ffa450edef68 --- .../tasklet/engine/DefaultTskDeployer.java | 21 +++++++++ .../ant/tasks/core/RegisterDataType.java | 43 +++++++++++++++++++ proposal/myrmidon/src/make/sample.xmk | 10 +++++ proposal/myrmidon/src/manifest/taskdefs.xml | 1 + 4 files changed, 75 insertions(+) create mode 100644 proposal/myrmidon/src/java/org/apache/ant/tasks/core/RegisterDataType.java 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 @@ +