You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bo...@apache.org on 2005/10/12 06:23:00 UTC
svn commit: r314776 [2/2] - in /ant/core/trunk: docs/manual/
docs/manual/CoreTypes/ src/etc/testcases/types/resources/
src/main/org/apache/tools/ant/taskdefs/ src/main/org/apache/tools/ant/types/
src/main/org/apache/tools/ant/types/resources/ src/testc...
Added: ant/core/trunk/src/main/org/apache/tools/ant/types/resources/CompressedResource.java
URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/main/org/apache/tools/ant/types/resources/CompressedResource.java?rev=314776&view=auto
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/types/resources/CompressedResource.java (added)
+++ ant/core/trunk/src/main/org/apache/tools/ant/types/resources/CompressedResource.java Tue Oct 11 21:22:37 2005
@@ -0,0 +1,244 @@
+/*
+ * Copyright 2005 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.tools.ant.types.resources;
+
+import java.io.InputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.types.DataType;
+import org.apache.tools.ant.types.Resource;
+import org.apache.tools.ant.types.Reference;
+import org.apache.tools.ant.types.ResourceCollection;
+
+/**
+ * A compressed resource.
+ *
+ * <p>Wraps around another resource, delegates all queries to that
+ * other resource but uncompresses/compresses streams on the fly.</p>
+ *
+ * @since Ant 1.7
+ */
+public abstract class CompressedResource extends Resource
+ implements ResourceCollection {
+
+ private Resource resource;
+
+ public CompressedResource() {
+ }
+
+ public CompressedResource(ResourceCollection other) {
+ addConfigured(other);
+ }
+
+ /**
+ * Sets the resource to wrap using a single-element collection.
+ * @param a the resource to wrap as a single element Resource collection.
+ */
+ public void addConfigured(ResourceCollection a) {
+ checkChildrenAllowed();
+ if (resource != null) {
+ throw new BuildException("you must not specify more than one"
+ + " resource");
+ }
+ if (a.size() != 1) {
+ throw new BuildException("only single argument resource collections"
+ + " are supported");
+ }
+ resource = (Resource) a.iterator().next();
+ }
+
+ public String getName() {
+ return getResource().getName();
+ }
+
+
+ public void setName(String name) {
+ throw new BuildException("you can't change the name of a compressed"
+ + " resource");
+ }
+
+ /**
+ * The exists attribute tells whether a file exists.
+ * @return true if this resource exists.
+ */
+ public boolean isExists() {
+ return getResource().isExists();
+ }
+
+ /**
+ * Set the exists attribute.
+ * @param exists if true, this resource exists.
+ */
+ public void setExists(boolean exists) {
+ throw new BuildException("you can't change the exists state of a "
+ + " compressed resource");
+ }
+
+ /**
+ * Tells the modification time in milliseconds since 01.01.1970 .
+ *
+ * @return 0 if the resource does not exist to mirror the behavior
+ * of {@link java.io.File File}.
+ */
+ public long getLastModified() {
+ return getResource().getLastModified();
+ }
+
+ public void setLastModified(long lastmodified) {
+ throw new BuildException("you can't change the timestamp of a "
+ + " compressed resource");
+ }
+
+ /**
+ * Tells if the resource is a directory.
+ * @return boolean flag indicating if the resource is a directory.
+ */
+ public boolean isDirectory() {
+ return getResource().isDirectory();
+ }
+
+ public void setDirectory(boolean directory) {
+ throw new BuildException("you can't change the directory state of a "
+ + " compressed resource");
+ }
+
+ /**
+ * Get the size of this Resource.
+ * @return the size, as a long, 0 if the Resource does not exist (for
+ * compatibility with java.io.File), or UNKNOWN_SIZE if not known.
+ */
+ public long getSize() {
+ return getResource().getSize();
+ }
+
+ public void setSize(long size) {
+ throw new BuildException("you can't change the size of a "
+ + " compressed resource");
+ }
+
+ /**
+ * Delegates to a comparison of names.
+ * @param other the object to compare to.
+ * @return a negative integer, zero, or a positive integer as this Resource
+ * is less than, equal to, or greater than the specified Resource.
+ */
+ public int compareTo(Object other) {
+ return getResource().compareTo(other);
+ }
+
+ /**
+ * Get the hash code for this Resource.
+ * @return hash code as int.
+ */
+ public int hashCode() {
+ return getResource().hashCode();
+ }
+
+ /**
+ * Get an InputStream for the Resource.
+ * @return an InputStream containing this Resource's content.
+ * @throws IOException if unable to provide the content of this
+ * Resource as a stream.
+ * @throws UnsupportedOperationException if InputStreams are not
+ * supported for this Resource type.
+ */
+ public InputStream getInputStream() throws IOException {
+ InputStream in = getResource().getInputStream();
+ if (in != null) {
+ in = wrapStream(in);
+ }
+ return in;
+ }
+
+ /**
+ * Get an OutputStream for the Resource.
+ * @return an OutputStream to which content can be written.
+ * @throws IOException if unable to provide the content of this
+ * Resource as a stream.
+ * @throws UnsupportedOperationException if OutputStreams are not
+ * supported for this Resource type.
+ */
+ public OutputStream getOutputStream() throws IOException {
+ OutputStream out = getResource().getOutputStream();
+ if (out != null) {
+ out = wrapStream(out);
+ }
+ return out;
+ }
+
+ /**
+ * Fulfill the ResourceCollection contract.
+ * @return whether this Resource is a FileResource.
+ */
+ public boolean isFilesystemOnly() {
+ return false;
+ }
+
+ /**
+ * Get the string representation of this Resource.
+ * @return this Resource formatted as a String.
+ * @since Ant 1.7
+ */
+ public String toString() {
+ return getCompressionName() + " compressed "
+ + getResource().toString();
+ }
+
+ /**
+ * Overrides the base version.
+ * @param r the Reference to set.
+ */
+ public void setRefid(Reference r) {
+ if (resource != null) {
+ throw noChildrenAllowed();
+ }
+ super.setRefid(r);
+ }
+
+ /**
+ * Is supposed to wrap the stream to allow decompression on the fly.
+ *
+ * @param in InputStream to wrap, will never be null.
+ */
+ protected abstract InputStream wrapStream(InputStream in)
+ throws IOException;
+
+ /**
+ * Is supposed to wrap the stream to allow compression on the fly.
+ *
+ * @param out OutputStream to wrap, will never be null.
+ */
+ protected abstract OutputStream wrapStream(OutputStream out)
+ throws IOException;
+
+ /**
+ * @return the name of the compression method.
+ */
+ protected abstract String getCompressionName();
+
+ private Resource getResource() {
+ if (isReference()) {
+ return (Resource) getCheckedRef();
+ } else if (resource == null) {
+ throw new BuildException("no resource specified");
+ }
+ return resource;
+ }
+
+}
\ No newline at end of file
Propchange: ant/core/trunk/src/main/org/apache/tools/ant/types/resources/CompressedResource.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: ant/core/trunk/src/main/org/apache/tools/ant/types/resources/CompressedResource.java
------------------------------------------------------------------------------
svn:executable = *
Added: ant/core/trunk/src/main/org/apache/tools/ant/types/resources/GZipResource.java
URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/main/org/apache/tools/ant/types/resources/GZipResource.java?rev=314776&view=auto
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/types/resources/GZipResource.java (added)
+++ ant/core/trunk/src/main/org/apache/tools/ant/types/resources/GZipResource.java Tue Oct 11 21:22:37 2005
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2005 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.tools.ant.types.resources;
+
+import java.io.InputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.zip.GZIPInputStream;
+import java.util.zip.GZIPOutputStream;
+
+/**
+ * A GZip compressed resource.
+ *
+ * <p>Wraps around another resource, delegates all quries to that
+ * other resource but uncompresses/compresses streams on the fly.</p>
+ *
+ * @since Ant 1.7
+ */
+public class GZipResource extends CompressedResource {
+
+ public GZipResource() {
+ }
+
+ public GZipResource(org.apache.tools.ant.types.ResourceCollection other) {
+ super(other);
+ }
+
+ protected InputStream wrapStream(InputStream in) throws IOException {
+ return new GZIPInputStream(in);
+ }
+ protected OutputStream wrapStream(OutputStream out) throws IOException {
+ return new GZIPOutputStream(out);
+ }
+ protected String getCompressionName() {
+ return "GZip";
+ }
+}
\ No newline at end of file
Propchange: ant/core/trunk/src/main/org/apache/tools/ant/types/resources/GZipResource.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: ant/core/trunk/src/main/org/apache/tools/ant/types/resources/GZipResource.java
------------------------------------------------------------------------------
svn:executable = *
Added: ant/core/trunk/src/main/org/apache/tools/ant/types/resources/TarResource.java
URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/main/org/apache/tools/ant/types/resources/TarResource.java?rev=314776&view=auto
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/types/resources/TarResource.java (added)
+++ ant/core/trunk/src/main/org/apache/tools/ant/types/resources/TarResource.java Tue Oct 11 21:22:37 2005
@@ -0,0 +1,145 @@
+/*
+ * Copyright 2005 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.tools.ant.types.resources;
+
+import java.io.File;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.IOException;
+import java.io.FilterInputStream;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.types.Resource;
+import org.apache.tools.ant.types.Reference;
+import org.apache.tools.ant.util.FileUtils;
+import org.apache.tools.tar.TarEntry;
+import org.apache.tools.tar.TarInputStream;
+
+/**
+ * A Resource representation of an entry in a tar archive.
+ * @since Ant 1.7
+ */
+public class TarResource extends ArchiveResource {
+
+ /**
+ * Default constructor.
+ */
+ public TarResource() {
+ }
+
+ /**
+ * Construct a TarResource representing the specified
+ * entry in the specified archive.
+ * @param a the archive as File.
+ * @param e the TarEntry.
+ */
+ public TarResource(File a, TarEntry e) {
+ super(a, true);
+ setEntry(e);
+ }
+
+ /**
+ * Construct a TarResource representing the specified
+ * entry in the specified archive.
+ * @param a the archive as Resource.
+ * @param e the TarEntry.
+ */
+ public TarResource(Resource a, TarEntry e) {
+ super(a, true);
+ setEntry(e);
+ }
+
+ /**
+ * Return an InputStream for reading the contents of this Resource.
+ * @return an InputStream object.
+ * @throws IOException if the tar file cannot be opened,
+ * or the entry cannot be read.
+ */
+ public InputStream getInputStream() throws IOException {
+ if (isReference()) {
+ return ((Resource) getCheckedRef()).getInputStream();
+ }
+ Resource archive = getArchive();
+ final TarInputStream i = new TarInputStream(archive.getInputStream());
+ TarEntry te = null;
+ while ((te = i.getNextEntry()) != null) {
+ if (te.getName().equals(getName())) {
+ return i;
+ }
+ }
+
+ FileUtils.close(i);
+ throw new BuildException("no entry " + getName() + " in "
+ + getArchive());
+ }
+
+ /**
+ * Get an OutputStream for the Resource.
+ * @return an OutputStream to which content can be written.
+ * @throws IOException if unable to provide the content of this
+ * Resource as a stream.
+ * @throws UnsupportedOperationException if OutputStreams are not
+ * supported for this Resource type.
+ */
+ public OutputStream getOutputStream() throws IOException {
+ if (isReference()) {
+ return ((Resource) getCheckedRef()).getOutputStream();
+ }
+ throw new UnsupportedOperationException(
+ "Use the tar task for tar output.");
+ }
+
+ /**
+ * fetches information from the named entry inside the archive.
+ */
+ protected void fetchEntry() {
+ Resource archive = getArchive();
+ TarInputStream i = null;
+ try {
+ i = new TarInputStream(archive.getInputStream());
+ TarEntry te = null;
+ while ((te = i.getNextEntry()) != null) {
+ if (te.getName().equals(getName())) {
+ setEntry(te);
+ return;
+ }
+ }
+ } catch (IOException e) {
+ log(e.getMessage(), Project.MSG_DEBUG);
+ throw new BuildException(e);
+ } finally {
+ if (i != null) {
+ FileUtils.close(i);
+ }
+ }
+ setEntry(null);
+ }
+
+ private void setEntry(TarEntry e) {
+ if (e == null) {
+ super.setExists(false);
+ return;
+ }
+ super.setName(e.getName());
+ super.setExists(true);
+ super.setLastModified(e.getModTime().getTime());
+ super.setDirectory(e.isDirectory());
+ super.setSize(e.getSize());
+ }
+
+}
Propchange: ant/core/trunk/src/main/org/apache/tools/ant/types/resources/TarResource.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: ant/core/trunk/src/main/org/apache/tools/ant/types/resources/TarResource.java
------------------------------------------------------------------------------
svn:executable = *
Modified: ant/core/trunk/src/main/org/apache/tools/ant/types/resources/ZipResource.java
URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/main/org/apache/tools/ant/types/resources/ZipResource.java?rev=314776&r1=314775&r2=314776&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/types/resources/ZipResource.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/types/resources/ZipResource.java Tue Oct 11 21:22:37 2005
@@ -25,6 +25,7 @@
import org.apache.tools.ant.Project;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.types.Resource;
+import org.apache.tools.ant.types.ResourceCollection;
import org.apache.tools.ant.types.Reference;
import org.apache.tools.ant.util.FileUtils;
import org.apache.tools.zip.ZipFile;
@@ -34,13 +35,9 @@
* A Resource representation of an entry in a zipfile.
* @since Ant 1.7
*/
-public class ZipResource extends Resource {
- private static final int NULL_ZIPFILE
- = Resource.getMagicNumber("null zipfile".getBytes());
+public class ZipResource extends ArchiveResource {
private String encoding;
- private File zipfile;
- private boolean haveEntry = false;
/**
* Default constructor.
@@ -56,9 +53,9 @@
* @param e the ZipEntry.
*/
public ZipResource(File z, String enc, ZipEntry e) {
- setEntry(e);
- setZipfile(z);
+ super(z, true);
setEncoding(enc);
+ setEntry(e);
}
/**
@@ -66,8 +63,7 @@
* @param z the zipfile as a File.
*/
public void setZipfile(File z) {
- checkAttributesAllowed();
- zipfile = z;
+ setArchive(z);
}
/**
@@ -75,8 +71,20 @@
* @return the zipfile as a File.
*/
public File getZipfile() {
- return isReference()
- ? ((ZipResource) getCheckedRef()).getZipfile() : zipfile;
+ FileResource r = (FileResource) getArchive();
+ return r.getFile();
+ }
+
+ /**
+ * Sets the archive that holds this as a single element Resource
+ * collection.
+ * @param a the archive as a single element Resource collection.
+ */
+ public void addConfigured(ResourceCollection a) {
+ super.addConfigured(a);
+ if (!a.isFilesystemOnly()) {
+ throw new BuildException("only filesystem resources are supported");
+ }
}
/**
@@ -98,59 +106,11 @@
}
/**
- * Get the last modified date of this ZipResource.
- * @return the last modification date.
- */
- public long getLastModified() {
- if (isReference()) {
- return ((Resource) getCheckedRef()).getLastModified();
- }
- checkEntry();
- return super.getLastModified();
- }
-
- /**
- * Get the size of this ZipResource.
- * @return the long size of this ZipResource.
- */
- public long getSize() {
- if (isReference()) {
- return ((Resource) getCheckedRef()).getSize();
- }
- checkEntry();
- return super.getSize();
- }
-
- /**
- * Learn whether this ZipResource represents a directory.
- * @return boolean flag indicating whether the zip entry is a directory.
- */
- public boolean isDirectory() {
- if (isReference()) {
- return ((Resource) getCheckedRef()).isDirectory();
- }
- checkEntry();
- return super.isDirectory();
- }
-
- /**
- * Find out whether this ZipResource represents an existing Resource.
- * @return boolean existence flag.
- */
- public boolean isExists() {
- if (isReference()) {
- return ((Resource) getCheckedRef()).isExists();
- }
- checkEntry();
- return super.isExists();
- }
-
- /**
* Overrides the super version.
* @param r the Reference to set.
*/
public void setRefid(Reference r) {
- if (encoding != null || zipfile != null) {
+ if (encoding != null) {
throw tooManyAttributes();
}
super.setRefid(r);
@@ -199,76 +159,13 @@
}
/**
- * Compare this ZipResource to another Resource.
- * @param another the other Resource against which to compare.
- * @return a negative integer, zero, or a positive integer as this ZipResource
- * is less than, equal to, or greater than the specified Resource.
- */
- public int compareTo(Object another) {
- return this.equals(another) ? 0 : super.compareTo(another);
- }
-
- /**
- * Compare another Object to this ZipResource for equality.
- * @param another the other Object to compare.
- * @return true if another is a ZipResource representing
- * the same entry in the same zipfile.
- */
- public boolean equals(Object another) {
- if (this == another) {
- return true;
- }
- if (isReference()) {
- return getCheckedRef().equals(another);
- }
- if (!(another.getClass().equals(getClass()))) {
- return false;
- }
- ZipResource r = (ZipResource) another;
- return getZipfile().equals(r.getZipfile())
- && getName().equals(r.getName());
- }
-
- /**
- * Get the hash code for this Resource.
- * @return hash code as int.
- */
- public int hashCode() {
- return super.hashCode()
- * (getZipfile() == null ? NULL_ZIPFILE : getZipfile().hashCode());
- }
-
- /**
- * Format this ZipResource as a String.
- * @return String representatation of this ZipResource.
+ * fetches information from the named entry inside the archive.
*/
- public String toString() {
- return isReference() ? getCheckedRef().toString()
- : getZipfile().toString() + ':' + getName();
- }
-
- private synchronized void checkEntry() throws BuildException {
- if (haveEntry) {
- return;
- }
- String name = getName();
- if (name == null) {
- throw new BuildException("zip entry name not set");
- }
- File f = getZipfile();
- if (f == null) {
- throw new BuildException("zipfile attribute not set");
- }
- if (!f.exists()) {
- throw new BuildException(f.getAbsolutePath() + " does not exist.");
- }
- if (f.isDirectory()) {
- throw new BuildException(f + " denotes a directory.");
- }
+ protected void fetchEntry() {
ZipFile z = null;
try {
- z = new ZipFile(f, getEncoding());
- setEntry(z.getEntry(name));
+ z = new ZipFile(getZipfile(), getEncoding());
+ setEntry(z.getEntry(getName()));
} catch (IOException e) {
log(e.getMessage(), Project.MSG_DEBUG);
throw new BuildException(e);
@@ -283,8 +180,7 @@
}
}
- private synchronized void setEntry(ZipEntry e) {
- haveEntry = true;
+ private void setEntry(ZipEntry e) {
if (e == null) {
super.setExists(false);
return;
Added: ant/core/trunk/src/testcases/org/apache/tools/ant/types/TarFileSetTest.java
URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/testcases/org/apache/tools/ant/types/TarFileSetTest.java?rev=314776&view=auto
==============================================================================
--- ant/core/trunk/src/testcases/org/apache/tools/ant/types/TarFileSetTest.java (added)
+++ ant/core/trunk/src/testcases/org/apache/tools/ant/types/TarFileSetTest.java Tue Oct 11 21:22:37 2005
@@ -0,0 +1,118 @@
+/*
+ * Copyright 2005 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.tools.ant.types;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+
+import junit.framework.TestCase;
+import junit.framework.AssertionFailedError;
+
+import java.io.File;
+
+/**
+ * JUnit 3 testcases for org.apache.tools.ant.types.TarFileSet.
+ *
+ * <p>This doesn't actually test much, mainly reference handling.
+ *
+ */
+
+public class TarFileSetTest extends AbstractFileSetTest {
+
+ public TarFileSetTest(String name) {
+ super(name);
+ }
+
+ protected AbstractFileSet getInstance() {
+ return new TarFileSet();
+ }
+ public final void testAttributes() {
+ TarFileSet f = (TarFileSet)getInstance();
+ //check that dir and src are incompatible
+ f.setSrc(new File("example.tar"));
+ try {
+ f.setDir(new File("examples"));
+ fail("can add dir to "
+ + f.getDataTypeName()
+ + " when a src is already present");
+ } catch (BuildException be) {
+ assertEquals("Cannot set both dir and src attributes",be.getMessage());
+ }
+ f = (TarFileSet)getInstance();
+ //check that dir and src are incompatible
+ f.setDir(new File("examples"));
+ try {
+ f.setSrc(new File("example.tar"));
+ fail("can add src to "
+ + f.getDataTypeName()
+ + " when a dir is already present");
+ } catch (BuildException be) {
+ assertEquals("Cannot set both dir and src attributes",be.getMessage());
+ }
+ //check that fullpath and prefix are incompatible
+ f = (TarFileSet)getInstance();
+ f.setSrc(new File("example.tar"));
+ f.setPrefix("/examples");
+ try {
+ f.setFullpath("/doc/manual/index.html");
+ fail("Can add fullpath to "
+ + f.getDataTypeName()
+ + " when a prefix is already present");
+ } catch (BuildException be) {
+ assertEquals("Cannot set both fullpath and prefix attributes", be.getMessage());
+ }
+ f = (TarFileSet)getInstance();
+ f.setSrc(new File("example.tar"));
+ f.setFullpath("/doc/manual/index.html");
+ try {
+ f.setPrefix("/examples");
+ fail("Can add prefix to "
+ + f.getDataTypeName()
+ + " when a fullpath is already present");
+ } catch (BuildException be) {
+ assertEquals("Cannot set both fullpath and prefix attributes", be.getMessage());
+ }
+ // check that reference tarfilesets cannot have specific attributes
+ f = (TarFileSet)getInstance();
+ f.setRefid(new Reference("test"));
+ try {
+ f.setSrc(new File("example.tar"));
+ fail("Can add src to "
+ + f.getDataTypeName()
+ + " when a refid is already present");
+ } catch (BuildException be) {
+ assertEquals("You must not specify more than one "
+ + "attribute when using refid", be.getMessage());
+ }
+ // check that a reference tarfileset gets the same attributes as the original
+ f = (TarFileSet)getInstance();
+ f.setSrc(new File("example.tar"));
+ f.setPrefix("/examples");
+ f.setFileMode("600");
+ f.setDirMode("530");
+ getProject().addReference("test",f);
+ TarFileSet zid=(TarFileSet)getInstance();
+ zid.setRefid(new Reference("test"));
+ assertTrue("src attribute copied by copy constructor",zid.getSrc(getProject()).equals(f.getSrc(getProject())));
+ assertTrue("prefix attribute copied by copy constructor",f.getPrefix(getProject()).equals(zid.getPrefix(getProject())));
+ assertTrue("file mode attribute copied by copy constructor",f.getFileMode(getProject())==zid.getFileMode(getProject()));
+ assertTrue("dir mode attribute copied by copy constructor",f.getDirMode(getProject())==zid.getDirMode(getProject()));
+ }
+
+
+}
Propchange: ant/core/trunk/src/testcases/org/apache/tools/ant/types/TarFileSetTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: ant/core/trunk/src/testcases/org/apache/tools/ant/types/TarFileSetTest.java
------------------------------------------------------------------------------
svn:executable = *
Added: ant/core/trunk/src/testcases/org/apache/tools/ant/types/resources/TarResourceTest.java
URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/testcases/org/apache/tools/ant/types/resources/TarResourceTest.java?rev=314776&view=auto
==============================================================================
--- ant/core/trunk/src/testcases/org/apache/tools/ant/types/resources/TarResourceTest.java (added)
+++ ant/core/trunk/src/testcases/org/apache/tools/ant/types/resources/TarResourceTest.java Tue Oct 11 21:22:37 2005
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2005 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.tools.ant.types.resources;
+
+import org.apache.tools.ant.BuildFileTest;
+import org.apache.tools.ant.util.FileUtils;
+
+public class TarResourceTest extends BuildFileTest {
+
+ private static final FileUtils FU = FileUtils.getFileUtils();
+
+ public TarResourceTest(String name) {
+ super(name);
+ }
+
+ protected void setUp() throws Exception {
+ configureProject("src/etc/testcases/types/resources/tarentry.xml");
+ }
+
+ protected void tearDown() throws Exception {
+ executeTarget("tearDown");
+ }
+
+ public void testUncompressSource() throws java.io.IOException {
+ executeTarget("uncompressSource");
+ assertTrue(FU.contentEquals(project.resolveFile("../../asf-logo.gif"),
+ project.resolveFile("testout/asf-logo.gif")));
+ }
+}
\ No newline at end of file
Propchange: ant/core/trunk/src/testcases/org/apache/tools/ant/types/resources/TarResourceTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: ant/core/trunk/src/testcases/org/apache/tools/ant/types/resources/TarResourceTest.java
------------------------------------------------------------------------------
svn:executable = *
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org