Browse Source

Added the mapper unpackage

PR: 18908
Obtained from: Brad Clark
Submitted by:  Peter Reilly


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@274671 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Reilly 22 years ago
parent
commit
e64467f9c0
5 changed files with 190 additions and 2 deletions
  1. +3
    -0
      WHATSNEW
  2. +23
    -1
      docs/manual/CoreTypes/mapper.html
  3. +3
    -1
      src/main/org/apache/tools/ant/types/Mapper.java
  4. +85
    -0
      src/main/org/apache/tools/ant/util/UnPackageNameMapper.java
  5. +76
    -0
      src/testcases/org/apache/tools/ant/util/UnPackageNameMapperTest.java

+ 3
- 0
WHATSNEW View File

@@ -410,6 +410,9 @@ Bugzilla Report 19180.
* <pvcs> config attribute added to set the location of a specific PVCS .cfg file
Bugzilla Report 9752

* <mapper> has an "unpackage" mapper
Bugzilla Report 18908

Changes from Ant 1.5.2 to Ant 1.5.3
===================================



+ 23
- 1
docs/manual/CoreTypes/mapper.html View File

@@ -365,9 +365,31 @@ with <code>&lt;uptodate&gt;</code> and <code>&lt;junit&gt;</code> output.</p>
<td valign="top">ignored</td>
</tr>
</table>
<h4><a name="unpackage-mapper">unpackage (since ant 1.6)</a></h4>
<p>This mapper is the inverse of the <a href="#package-mapper">package</a> mapper.
It replaces the dots in a package name with directory separators. This
is useful for matching XML formatter results against their JUnit test
test cases. The mapper shares the sample syntax
as the <a href="#glob-mapper">glob mapper</a>.
</p>
<b>Example:</b>
<blockquote><pre>
&lt;mapper type="unpackage"
from="TEST-*Test.xml" to="${test.src.dir}/*Test.java"&gt;
</pre></blockquote>
<table border="1" cellpadding="2" cellspacing="0">
<tr>
<td valign="top"><b>Source file name</b></td>
<td valign="top"><b>Target file name</b></td>
</tr>
<tr>
<td valign="top"><code>TEST-org.acme.AcmeTest.xml</code></td>
<td valign="top"><code>${test.src.dir}/org/acme/AcmeTest.java</code></td>
</tr>
</table>

<hr>
<p align="center">Copyright &copy; 2000-2001 Apache Software Foundation. All rights
<p align="center">Copyright &copy; 2000-2003 Apache Software Foundation. All rights
Reserved.</p>

</body>


+ 3
- 1
src/main/org/apache/tools/ant/types/Mapper.java View File

@@ -262,11 +262,13 @@ public class Mapper extends DataType implements Cloneable {
"org.apache.tools.ant.util.RegexpPatternMapper");
implementations.put("package",
"org.apache.tools.ant.util.PackageNameMapper");
implementations.put("unpackage",
"org.apache.tools.ant.util.UnPackageNameMapper");
}

public String[] getValues() {
return new String[] {"identity", "flatten", "glob",
"merge", "regexp", "package"};
"merge", "regexp", "package", "unpackage"};
}

public String getImplementation() {


+ 85
- 0
src/main/org/apache/tools/ant/util/UnPackageNameMapper.java View File

@@ -0,0 +1,85 @@
/*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 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 "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/>.
*/
package org.apache.tools.ant.util;

import java.io.File;
import org.apache.tools.ant.util.GlobPatternMapper;
/**
* Maps dotted package name matches to a directory name.
* This is the inverse of the package mapper.
* This is useful for matching XML formatter results against their JUnit test
* cases.
* <pre>
* &lt;mapper classname="org.apache.tools.ant.util.UnPackageNameMapper"
* from="${test.data.dir}/TEST-*Test.xml" to="*Test.java"&gt;
* </pre>
*
*@author Brad Clark
*
*/
public class UnPackageNameMapper extends GlobPatternMapper {
/**
* Returns the part of the given string that matches the * in the
* &quot;from&quot; pattern replacing dots with file separators
*
*@param name Source filename
*@return Replaced variable part
*/
protected String extractVariablePart(String name) {
String var = name.substring(prefixLength,
name.length() - postfixLength);
return var.replace('.', File.separatorChar);
}
}


+ 76
- 0
src/testcases/org/apache/tools/ant/util/UnPackageNameMapperTest.java View File

@@ -0,0 +1,76 @@
/*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 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 "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/>.
*/
package org.apache.tools.ant.util;

import java.io.File;
import junit.framework.TestCase;

public class UnPackageNameMapperTest extends TestCase {
public UnPackageNameMapperTest(String name) { super(name); }
public void testMapping() {
UnPackageNameMapper mapper = new UnPackageNameMapper();
mapper.setFrom("TEST-*.xml");
mapper.setTo("*.java");
String file ="TEST-org.apache.tools.ant.util.UnPackageNameMapperTest.xml";
String result = mapper.mapFileName(file)[0];
String expected = fixupPath("org/apache/tools/ant/util/UnPackageNameMapperTest.java");
assertEquals(expected, result);
}
private String fixupPath(String file) {
return file.replace('/', File.separatorChar);
}
}

Loading…
Cancel
Save