Return-Path: Delivered-To: apmail-jakarta-ant-dev-archive@apache.org Received: (qmail 67161 invoked from network); 2 May 2002 08:43:42 -0000 Received: from unknown (HELO nagoya.betaversion.org) (192.18.49.131) by daedalus.apache.org with SMTP; 2 May 2002 08:43:42 -0000 Received: (qmail 3311 invoked by uid 97); 2 May 2002 08:43:51 -0000 Delivered-To: qmlist-jakarta-archive-ant-dev@nagoya.betaversion.org Received: (qmail 3216 invoked by alias); 2 May 2002 08:43:50 -0000 Delivered-To: jakarta-archive-ant-dev@jakarta.apache.org Received: (qmail 3202 invoked by uid 97); 2 May 2002 08:43:50 -0000 Mailing-List: contact ant-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Ant Developers List" Reply-To: "Ant Developers List" Delivered-To: mailing list ant-dev@jakarta.apache.org Received: (qmail 3191 invoked by alias); 2 May 2002 08:43:49 -0000 X-Antivirus: nagoya (v4198 created Apr 24 2002) Date: 2 May 2002 08:43:33 -0000 Message-ID: <20020502084333.12652.qmail@icarus.apache.org> From: donaldp@apache.org To: jakarta-ant-myrmidon-cvs@apache.org Subject: cvs commit: jakarta-ant-myrmidon/antlib/src/java/org/apache/antlib/project TypeLibTask.java TargetTask.java Resources.properties X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N donaldp 02/05/02 01:43:33 Added: antlib/src/java/org/apache/antlib/project TypeLibTask.java TargetTask.java Resources.properties Log: Start to create tasks that can represent a Project. Revision Changes Path 1.1 jakarta-ant-myrmidon/antlib/src/java/org/apache/antlib/project/TypeLibTask.java Index: TypeLibTask.java =================================================================== /* * 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.txt file. */ package org.apache.antlib.project; import java.io.File; import org.apache.avalon.excalibur.i18n.ResourceManager; import org.apache.avalon.excalibur.i18n.Resources; import org.apache.myrmidon.api.AbstractTask; import org.apache.myrmidon.api.TaskException; import org.apache.myrmidon.interfaces.deployer.Deployer; import org.apache.myrmidon.interfaces.deployer.DeploymentException; import org.apache.myrmidon.interfaces.deployer.TypeLibraryDeployer; /** * Task to import a typeLib. * * @author Peter Donald * @ant.task name="typelib" */ public class TypeLibTask extends AbstractTask { private static final Resources REZ = ResourceManager.getPackageResources( TypeLibTask.class ); private String m_library; private String m_name; private String m_role; public void setLibrary( final String library ) { m_library = library; } public void setName( final String name ) { m_name = name; } public void setRole( final String role ) { m_role = role; } public void execute() throws TaskException { validate(); deployTypeLib(); } /** * Make sure valid parameters are passed to task. * * @throws TaskException if invalid parameters passed to task */ private void validate() throws TaskException { if( null == m_library ) { final String message = REZ.getString( "typelib.missing-library.error" ); throw new TaskException( message ); } if( null == m_name && null == m_role ) { return; } else if( null == m_name ) { final String message = REZ.getString( "typelib.missing-name.error", m_role ); throw new TaskException( message ); } else if( null == m_role ) { final String message = REZ.getString( "typelib.missing-role.error", m_name ); throw new TaskException( message ); } } /** * Actually do work of deploying type library. * * @throws TaskException if error occured deploying library */ private void deployTypeLib() throws TaskException { final File file = findTypeLib(); try { final Deployer deployer = (Deployer)getService( Deployer.class ); final TypeLibraryDeployer typeDeployer = deployer.createDeployer( file ); if( null == m_role ) { // Deploy everything in the typelib typeDeployer.deployAll(); } else { // Deploy the specified type typeDeployer.deployType( m_role, m_name ); } } catch( final DeploymentException de ) { final String message = REZ.getString( "no-deploy.error", m_library, file ); throw new TaskException( message, de ); } } /** * Find the physical file location of library. * * @return the File representing library * @throws TaskException if can not find library * matching name * @todo In future this will be expanded to allow * users to specify search path or automagically * add entries to lib path (like user specific or * workspace specific) */ private File findTypeLib() throws TaskException { final String name = m_library.replace( '/', File.separatorChar ) + ".atl"; final File[] extPath = (File[])getContext().getProperty( "myrmidon.antlib.path" ); for( int i = 0; i < extPath.length; i++ ) { final File extDir = extPath[ i ]; final File file = new File( extDir, name ); if( file.exists() ) { if( !file.canRead() ) { final String message = REZ.getString( "typelib.no-read.error", file, m_library ); throw new TaskException( message ); } else { return file; } } } final String message = REZ.getString( "typelib.no-file.error", m_library ); throw new TaskException( message ); } } 1.1 jakarta-ant-myrmidon/antlib/src/java/org/apache/antlib/project/TargetTask.java Index: TargetTask.java =================================================================== /* * 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.txt file. */ package org.apache.antlib.project; import java.util.ArrayList; import org.apache.avalon.excalibur.i18n.ResourceManager; import org.apache.avalon.excalibur.i18n.Resources; import org.apache.myrmidon.api.TaskException; import org.apache.myrmidon.api.metadata.ModelElement; import org.apache.myrmidon.framework.AbstractContainerTask; import org.apache.myrmidon.interfaces.executor.ExecutionFrame; /** * A simple task to task to execute a group of tasks. * * @author Peter Donald * @version $Revision: 1.1 $ $Date: 2002/05/02 08:43:33 $ * @ant.task name="target" */ public class TargetTask extends AbstractContainerTask { private static final Resources REZ = ResourceManager.getPackageResources( TargetTask.class ); /** * The array of ordered tasks which are contained * withing Target. */ private final ArrayList m_tasks = new ArrayList(); /** * The name of the target. */ private String m_name; /** * The frame in which the tasks in target execute. */ private ExecutionFrame m_frame; /** * Specify the name of target. * * @param name the name of the target * @see #m_name */ public void setName( final String name ) { m_name = name; } /** * Add a task to the target. * * @param task a model representing a task * @see #m_tasks */ public void add( final ModelElement task ) { m_tasks.add( task ); } public void execute() throws TaskException { if( null == m_name ) { final String message = REZ.getString( "target.no-name.error" ); throw new TaskException( message ); } if( getContext().isInfoEnabled() ) { final String message = REZ.getString( "target.exec.notice", m_name ); getContext().info( message ); } final ExecutionFrame parentFrame = super.getExecutionFrame(); m_frame = parentFrame.createChildFrame( m_name, null, false ); final ModelElement[] tasks = (ModelElement[])m_tasks.toArray( new ModelElement[ m_tasks.size() ] ); for( int i = 0; i < tasks.length; i++ ) { final ModelElement task = tasks[ i ]; if( getContext().isInfoEnabled() ) { final String message = REZ.getString( "target.task-exec.notice", task.getName() ); getContext().info( message ); } executeTask( task ); } } /** * Return a different frame for target. * * @return the targets frame */ protected ExecutionFrame getExecutionFrame() { return m_frame; } public String toString() { return "Target['" + m_name + "]"; } } 1.1 jakarta-ant-myrmidon/antlib/src/java/org/apache/antlib/project/Resources.properties Index: Resources.properties =================================================================== target.no-name.error=Target does not specify the name attribute. target.exec.notice=Executing target: "{0}". target.task-exec.notice=Executing task: "{0}". typelib.missing-library.error=Missing library attribute from typelib statement. typelib.missing-name.error=Specified role ("{0}") but missing name from typelib statement. typelib.missing-role.error=Specified name ("{0}") but missing role from typelib statement. typelib.no-read.error=Unable to read file "{0}" to load library "{1}". typelib.no-file.error=No file can be found when searching for library "{0}". -- To unsubscribe, e-mail: For additional commands, e-mail: