You are viewing a plain text version of this content. The canonical link for it is here.
Posted to tdk-dev@turbine.apache.org by jv...@apache.org on 2002/02/12 17:51:42 UTC
cvs commit: jakarta-turbine-tdk/src/tdk/task/org/apache/tdk CreatePatternSet.java CreateReference.java
jvanzyl 02/02/12 08:51:42
Added: src/tdk/task/org/apache/tdk CreatePatternSet.java
CreateReference.java
Log:
- here are the classes :-)
Revision Changes Path
1.1 jakarta-turbine-tdk/src/tdk/task/org/apache/tdk/CreatePatternSet.java
Index: CreatePatternSet.java
===================================================================
package org.apache.tdk.task;
/*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2001-2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Ant", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.types.PatternSet;
/**
* Task that creates a referable patternset based on the contents of a descriptor
* file. By referable we mean that we are emulating the following
* construct:
*
* @author <a href="mailto:jason@zenplex.com">Jason van Zyl</a>
* @version $Id: CreatePatternSet.java,v 1.1 2002/02/12 16:51:41 jvanzyl Exp $
*
*/
public class CreatePatternSet
extends CreateReference
{
/**
* Path that is created from the elements of the path descriptor.
*/
private PatternSet patternSet;
/**
* Default constructor
*/
public CreatePatternSet()
{
patternSet = new PatternSet();
}
/**
* read in a source file to a property
*
* @exception BuildException if something goes wrong with the build
*/
public void execute()
throws BuildException
{
// Make sure that we have a valid path descriptor.
if (descriptor == null)
{
throw new BuildException("Path descriptor file not defined");
}
StringBuffer includesSb = new StringBuffer();
StringBuffer excludesSb = new StringBuffer();
String line;
BufferedReader in = null;
try
{
in = new BufferedReader(new FileReader(descriptor));
while ((line = in.readLine()) != null)
{
line = line.trim();
// Allow comments and blank lines to be placed in the
// payload descriptor.
if (line.startsWith("#") || line.startsWith("--") || line.length() < 1)
{
continue;
}
if (line.startsWith("include"))
{
// We have something like the following pattern:
// include = conf/foo.xml
includesSb.append(split(line,"=",-1)[1]).append(",");
}
if (line.startsWith("exclude"))
{
// We have something like the following pattern:
// exclude = conf/foo.xml
excludesSb.append(split(line,"=",-1)[1]).append(",");
}
}
String includes = includesSb.toString();
String excludes = excludesSb.toString();
if (includes.length() > 0)
{
// Remove trailing comma
includes = includes.substring(0,includes.length()-1);
patternSet.setIncludes(includes);
log("includes: " + includes, Project.MSG_INFO);
}
if (excludes.length() > 0)
{
// Remove trailing comma
excludes = excludes.substring(0,excludes.length()-1);
patternSet.setExcludes(excludes);
log("excludes: " + excludes, Project.MSG_INFO);
}
// Add the top-level path as a reference to the project.
project.addReference(rid, patternSet);
}
catch (IOException ioe)
{
String message = "Unable to load file: " + ioe.toString();
if (failOnError)
{
throw new BuildException(message, ioe, location);
}
else
{
log(message, Project.MSG_ERR);
}
}
finally
{
try
{
if (in != null)
{
in.close();
}
}
catch (IOException ioex)
{
}
}
}
/**
* Splits the provided text into a list, based on a given
* separator.
*
* @param text Textual list to parse.
* @param separator The separator character.
* @param max The maximum number of elements to include in the
* list. A value of <code>-1</code> implies no limit.
* @return The list of values.
*/
private static String[] split(String text, String separator, int max)
{
StringTokenizer tok = new StringTokenizer(text, separator);
int listSize = tok.countTokens();
if (max != -1 && listSize > max)
{
listSize = max;
}
String[] list = new String[listSize];
int i = 0;
while (tok.hasMoreTokens())
{
if (max != -1 && i == listSize - 1)
{
// In the situation where we hit the max yet have
// tokens left over in our input, the last list
// element gets all remaining text.
StringBuffer buf = new StringBuffer
((int) 1.2 * text.length() * (listSize - i) / listSize);
while (tok.hasMoreTokens())
{
buf.append(tok.nextToken());
if (tok.hasMoreTokens())
{
buf.append(separator);
}
}
list[i] = buf.toString();
break;
}
else
{
list[i] = tok.nextToken();
}
i++;
}
return list;
}
}
1.1 jakarta-turbine-tdk/src/tdk/task/org/apache/tdk/CreateReference.java
Index: CreateReference.java
===================================================================
package org.apache.tdk.task;
/*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2001-2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Ant", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.Reference;
/**
* @author <a href="mailto:jason@zenplex.com">Jason van Zyl</a>
* @version $Id: CreateReference.java,v 1.1 2002/02/12 16:51:41 jvanzyl Exp $
*
*/
public class CreateReference
extends Task
{
/**
* source file, usually null
*/
protected File descriptor = null;
/**
* what to do when it goes pear-shaped
*/
protected boolean failOnError = true;
/**
* The id to use when creating a reference to the created path
* in the project.
*/
protected String rid;
/**
* Id to use for creating a reference to the path
* in the project.
*
* @param pathId Reference identifier to use in the call
* to project.addReference(pathId, path).
*/
public void setRid(String rid)
{
this.rid = rid;
}
/**
* Sets the pathDescriptor attribute.
*
* @param pathDescriptor The new pathDescriptor value
*/
public void setDescriptor(File descriptor)
{
this.descriptor = descriptor;
}
/**
* Sets the Failonerror attribute of the LoadFile object
*
* @param fail The new Failonerror value
*/
public void setFailonerror(boolean fail)
{
failOnError = fail;
}
/**
* read in a source file to a property
*
* @exception BuildException if something goes wrong with the build
*/
public void execute()
throws BuildException
{
}
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>