View | Details | Raw Unified | Return to bug 30094
Collapse All | Expand All

(-)apache-ant-1.6.5.orig/src/main/org/apache/tools/ant/DirectoryScanner.java (-2 / +2 lines)
Lines 32-37 Link Here
32
import org.apache.tools.ant.taskdefs.condition.Os;
32
import org.apache.tools.ant.taskdefs.condition.Os;
33
import org.apache.tools.ant.types.Resource;
33
import org.apache.tools.ant.types.Resource;
34
import org.apache.tools.ant.types.ResourceFactory;
34
import org.apache.tools.ant.types.ResourceFactory;
35
import org.apache.tools.ant.types.ResourceFile;
35
import org.apache.tools.ant.types.selectors.FileSelector;
36
import org.apache.tools.ant.types.selectors.FileSelector;
36
import org.apache.tools.ant.types.selectors.SelectorUtils;
37
import org.apache.tools.ant.types.selectors.SelectorUtils;
37
import org.apache.tools.ant.types.selectors.SelectorScanner;
38
import org.apache.tools.ant.types.selectors.SelectorScanner;
Lines 1476-1483 Link Here
1476
     */
1477
     */
1477
    public synchronized Resource getResource(String name) {
1478
    public synchronized Resource getResource(String name) {
1478
        File f = FILE_UTILS.resolveFile(basedir, name);
1479
        File f = FILE_UTILS.resolveFile(basedir, name);
1479
        return new Resource(name, f.exists(), f.lastModified(),
1480
        return new ResourceFile(name, f);
1480
                            f.isDirectory(), f.length());
1481
    }
1481
    }
1482
1482
1483
    /**
1483
    /**
(-)apache-ant-1.6.5.orig/src/main/org/apache/tools/ant/taskdefs/Length.java (-4 / +7 lines)
Lines 31-36 Link Here
31
import org.apache.tools.ant.taskdefs.condition.Condition;
31
import org.apache.tools.ant.taskdefs.condition.Condition;
32
import org.apache.tools.ant.types.FileSet;
32
import org.apache.tools.ant.types.FileSet;
33
import org.apache.tools.ant.types.Resource;
33
import org.apache.tools.ant.types.Resource;
34
import org.apache.tools.ant.types.ResourceFile;
34
import org.apache.tools.ant.types.EnumeratedAttribute;
35
import org.apache.tools.ant.types.EnumeratedAttribute;
35
import org.apache.tools.ant.util.FileUtils;
36
import org.apache.tools.ant.util.FileUtils;
36
37
Lines 220-229 Link Here
220
                } else {
221
                } else {
221
                    //force a full path:
222
                    //force a full path:
222
                    File basedir = ds.getBasedir();
223
                    File basedir = ds.getBasedir();
223
                    String s = FileUtils.getFileUtils().resolveFile(
224
                    File file = FileUtils.getFileUtils().resolveFile(basedir, r.getName());
224
                        basedir, r.getName()).getAbsolutePath();
225
                    String name = file.getAbsolutePath();
225
                    h.handle(new Resource(s, true,
226
                    ResourceFile rf = new ResourceFile(name, file);
226
                        r.getLastModified(), false, r.getSize()));
227
                    rf.setExists(true);
228
                    rf.setDirectory(false);
229
                    h.handle(rf);
227
                }
230
                }
228
            }
231
            }
229
        }
232
        }
(-)apache-ant-1.6.5.orig/src/main/org/apache/tools/ant/types/Resource.java (-90 / +12 lines)
Lines 25-102 Link Here
25
 *
25
 *
26
 * @since Ant 1.5.2
26
 * @since Ant 1.5.2
27
 */
27
 */
28
public class Resource implements Cloneable, Comparable {
28
public abstract class Resource implements Cloneable, Comparable {
29
    protected String name = null;
30
29
    /** Constant unknown size */
31
    /** Constant unknown size */
30
    public static final long UNKNOWN_SIZE = -1;
32
    public static final long UNKNOWN_SIZE = -1;
31
33
32
    private String name = null;
33
    private boolean exists = true;
34
    private long lastmodified = 0;
35
    private boolean directory = false;
36
    private long size = UNKNOWN_SIZE;
37
38
    /**
34
    /**
39
     * Default constructor.
35
     * Default constructor.
40
     */
36
     */
41
    public Resource() {
37
    protected Resource() {
42
    }
43
44
    /**
45
     * Only sets the name.
46
     *
47
     * <p>This is a dummy, used for not existing resources.</p>
48
     *
49
     * @param name relative path of the resource.  Expects
50
     * &quot;/&quot; to be used as the directory separator.
51
     */
52
    public Resource(String name) {
53
        this(name, false, 0, false);
54
    }
55
56
    /**
57
     * Sets the name, lastmodified flag, and exists flag.
58
     *
59
     * @param name relative path of the resource.  Expects
60
     * &quot;/&quot; to be used as the directory separator.
61
     * @param exists if true, this resource exists.
62
     * @param lastmodified the last modification time of this resource.
63
     */
64
    public Resource(String name, boolean exists, long lastmodified) {
65
        this(name, exists, lastmodified, false);
66
    }
67
68
    /**
69
     * Sets the name, lastmodified flag, exists flag, and directory flag.
70
     *
71
     * @param name relative path of the resource.  Expects
72
     * &quot;/&quot; to be used as the directory separator.
73
     * @param exists if true the resource exists
74
     * @param lastmodified the last modification time of the resource
75
     * @param directory    if true, this resource is a directory
76
     */
77
    public Resource(String name, boolean exists, long lastmodified,
78
                    boolean directory) {
79
        this(name, exists, lastmodified, directory, UNKNOWN_SIZE);
80
    }
81
82
    /**
83
     * Sets the name, lastmodified flag, exists flag, directory flag, and size.
84
     *
85
     * @param name relative path of the resource.  Expects
86
     * &quot;/&quot; to be used as the directory separator.
87
     * @param exists if true the resource exists
88
     * @param lastmodified the last modification time of the resource
89
     * @param directory    if true, this resource is a directory
90
     * @param size the size of this resource.
91
     */
92
    public Resource(String name, boolean exists, long lastmodified,
93
                    boolean directory, long size) {
94
        this.name = name;
95
        setName(name);
96
        setExists(exists);
97
        setLastModified(lastmodified);
98
        setDirectory(directory);
99
        setSize(size);
100
    }
38
    }
101
39
102
    /**
40
    /**
Lines 128-144 Link Here
128
     * The exists attribute tells whether a file exists.
66
     * The exists attribute tells whether a file exists.
129
     * @return true if this resource exists.
67
     * @return true if this resource exists.
130
     */
68
     */
131
    public boolean isExists() {
69
    public abstract boolean isExists();
132
        return exists;
133
    }
134
70
135
    /**
71
    /**
136
     * Set the exists attribute.
72
     * Set the exists attribute.
137
     * @param exists if true, this resource exists.
73
     * @param exists if true, this resource exists.
138
     */
74
     */
139
    public void setExists(boolean exists) {
75
    public abstract void setExists(boolean exists);
140
        this.exists = exists;
141
    }
142
76
143
    /**
77
    /**
144
     * Tells the modification time in milliseconds since 01.01.1970 .
78
     * Tells the modification time in milliseconds since 01.01.1970 .
Lines 146-187 Link Here
146
     * @return 0 if the resource does not exist to mirror the behavior
80
     * @return 0 if the resource does not exist to mirror the behavior
147
     * of {@link java.io.File File}.
81
     * of {@link java.io.File File}.
148
     */
82
     */
149
    public long getLastModified() {
83
    public abstract long getLastModified();
150
        return !exists || lastmodified < 0 ? 0L : lastmodified;
151
    }
152
84
153
    /**
85
    /**
154
     * Set the last modification attribute.
86
     * Set the last modification attribute.
155
     * @param lastmodified the modification time in milliseconds since 01.01.1970.
87
     * @param lastmodified the modification time in milliseconds since 01.01.1970.
156
     */
88
     */
157
    public void setLastModified(long lastmodified) {
89
    public abstract void setLastModified(long lastmodified);
158
        this.lastmodified = lastmodified;
159
    }
160
90
161
    /**
91
    /**
162
     * Tells if the resource is a directory.
92
     * Tells if the resource is a directory.
163
     * @return boolean flag indicating if the resource is a directory.
93
     * @return boolean flag indicating if the resource is a directory.
164
     */
94
     */
165
    public boolean isDirectory() {
95
    public abstract boolean isDirectory();
166
        return directory;
167
    }
168
96
169
    /**
97
    /**
170
     * Set the directory attribute.
98
     * Set the directory attribute.
171
     * @param directory if true, this resource is a directory.
99
     * @param directory if true, this resource is a directory.
172
     */
100
     */
173
    public void setDirectory(boolean directory) {
101
    public abstract void setDirectory(boolean directory);
174
        this.directory = directory;
175
    }
176
102
177
    /**
103
    /**
178
     * Set the size of this Resource.
104
     * Set the size of this Resource.
179
     * @param size the size, as a long.
105
     * @param size the size, as a long.
180
     * @since Ant 1.6.3
106
     * @since Ant 1.6.3
181
     */
107
     */
182
    public void setSize(long size) {
108
    public abstract void setSize(long size);
183
        this.size = (size > UNKNOWN_SIZE) ? size : UNKNOWN_SIZE;
184
    }
185
109
186
    /**
110
    /**
187
     * Get the size of this Resource.
111
     * Get the size of this Resource.
Lines 189-197 Link Here
189
     *         compatibility with java.io.File), or UNKNOWN_SIZE if not known.
113
     *         compatibility with java.io.File), or UNKNOWN_SIZE if not known.
190
     * @since Ant 1.6.3
114
     * @since Ant 1.6.3
191
     */
115
     */
192
    public long getSize() {
116
    public abstract long getSize();
193
        return (exists) ? size : 0L;
194
    }
195
117
196
    /**
118
    /**
197
     * Clone this Resource.
119
     * Clone this Resource.
(-)apache-ant-1.6.5.orig/src/main/org/apache/tools/ant/types/ResourceFile.java (+197 lines)
Line 0 Link Here
1
/*
2
 * Created on Jul 10, 2004
3
 *
4
 * TODO To change the template for this generated file go to
5
 * Window - Preferences - Java - Code Style - Code Templates
6
 */
7
package org.apache.tools.ant.types;
8
9
import java.io.*;
10
11
/**
12
 * @author jbleijen
13
 * 
14
 * TODO To change the template for this generated type comment go to Window -
15
 * Preferences - Java - Code Style - Code Templates
16
 */
17
public class ResourceFile extends Resource {
18
    protected File file;
19
20
    private final static int UNKNOWN = 1;
21
22
    private final static int FILE_EXISTS = 2;
23
24
    private final static int FILE_DOES_NOT_EXISTS = 3;
25
26
    private final static int IS_DIRECTORY = 4;
27
28
    private final static int IS_NOT_DIRECTORY = 5;
29
30
    private int exists = UNKNOWN;
31
32
    private int isDir = UNKNOWN;
33
34
    private long lastModified = -1l;
35
36
    private long size = UNKNOWN_SIZE;
37
38
    /**
39
     * only sets the name.
40
     * 
41
     * <p>
42
     * This is a dummy, used for not existing resources.
43
     * </p>
44
     * 
45
     * @param name
46
     *            relative path of the resource. Expects &quot;/&quot; to be
47
     *            used as the directory separator.
48
     */
49
    public ResourceFile(String name) {
50
        this(name, new File(name));
51
    }
52
53
    public ResourceFile(String name, File file) {
54
        this.name = name;
55
        this.file = file;
56
    }
57
58
    /**
59
     * the exists attribute tells whether a file exists
60
     */
61
    public boolean isExists() {
62
        validateFileExists();
63
        return exists == FILE_EXISTS;
64
    }
65
66
    public void setExists(boolean exists) {
67
        if (exists) {
68
            this.exists = FILE_EXISTS;
69
        } else {
70
            this.exists = FILE_DOES_NOT_EXISTS;
71
        }
72
    }
73
74
    /**
75
     * tells the modification time in milliseconds since 01.01.1970 of
76
     * 
77
     * @return 0 if the resource does not exist to mirror the behavior of
78
     *         {@link java.io.File File}.
79
     */
80
    public long getLastModified() {
81
        if (!isExists())
82
            return 0;
83
        if (lastModified == -1) {
84
            lastModified = file.lastModified();
85
        }
86
        return lastModified;
87
    }
88
89
    public void setLastModified(long lastmodified) {
90
        this.lastModified = lastmodified;
91
    }
92
93
    /**
94
     * tells if the resource is a directory
95
     * 
96
     * @return boolean flag indicating if the resource is a directory
97
     */
98
    public boolean isDirectory() {
99
        validateFileIsDir();
100
        return isDir == IS_DIRECTORY;
101
    }
102
103
    public void setDirectory(boolean directory) {
104
        if (directory) {
105
            this.isDir = IS_DIRECTORY;
106
        } else {
107
            this.isDir = IS_NOT_DIRECTORY;
108
        }
109
    }
110
111
    /**
112
     * Get the size of this Resource.
113
     * @return the size, as a long, 0 if the Resource does not exist (for
114
     *         compatibility with java.io.File), or UNKNOWN_SIZE if not known.
115
     * @since Ant 1.6.3
116
     */
117
    public long getSize() {
118
        if (!isExists()) {
119
            return 0L;
120
        }
121
        validateFileSize();
122
        return size;
123
    }
124
125
    /**
126
     * Set the size of this Resource.
127
     * @param size the size, as a long.
128
     * @since Ant 1.6.3
129
     */
130
    public void setSize(long size) {
131
        this.size = (size > UNKNOWN_SIZE) ? size : UNKNOWN_SIZE;
132
    }
133
134
    /**
135
     * @return copy of this
136
     */
137
    public Object clone() {
138
        return super.clone();
139
    }
140
141
    /**
142
     * delegates to a comparison of names.
143
     * 
144
     * @since Ant 1.6
145
     */
146
    public int compareTo(Object other) {
147
        if (!(other instanceof Resource)) {
148
            throw new IllegalArgumentException("Can only be compared with "
149
                    + "Resources");
150
        }
151
        Resource r = (Resource) other;
152
        return getName().compareTo(r.getName());
153
    }
154
155
    /*
156
     * TODO
157
     */
158
    protected void validateFileExists() {
159
        if (exists == UNKNOWN) {
160
            this.lastModified = file.lastModified();
161
            if (this.lastModified == 0l) {
162
                this.exists = FILE_DOES_NOT_EXISTS;
163
            } else {
164
                this.exists = FILE_EXISTS;
165
            }
166
        }
167
    }
168
169
    /*
170
     * TODO @author jbleijen
171
     *  
172
     */
173
    protected void validateFileIsDir() {
174
        if (exists == FILE_DOES_NOT_EXISTS) {
175
            isDir = IS_NOT_DIRECTORY;
176
            return;
177
        }
178
        if (isDir == UNKNOWN) {
179
            if (file.isDirectory()) {
180
                isDir = IS_DIRECTORY;
181
            } else {
182
                isDir = IS_NOT_DIRECTORY;
183
            }
184
        }
185
    }
186
187
    /*
188
     * TODO @author rverduijn
189
     *  
190
     */
191
    protected void validateFileSize() {
192
        if (size == UNKNOWN_SIZE) {
193
            this.size = file.length();
194
        }
195
    }
196
197
}
(-)apache-ant-1.6.5.orig/src/main/org/apache/tools/ant/types/ResourceZipEntry.java (+149 lines)
Line 0 Link Here
1
/*
2
 * Created on Jul 10, 2004
3
 *
4
 * TODO To change the template for this generated file go to
5
 * Window - Preferences - Java - Code Style - Code Templates
6
 */
7
package org.apache.tools.ant.types;
8
9
/**
10
 * @author jbleijen
11
 *
12
 * TODO To change the template for this generated type comment go to
13
 * Window - Preferences - Java - Code Style - Code Templates
14
 */
15
public class ResourceZipEntry extends Resource
16
{
17
    protected boolean exists = true;
18
    protected long lastmodified = 0;
19
    protected boolean directory = false;
20
    protected long size = UNKNOWN_SIZE;
21
22
    /**
23
     * only sets the name.
24
     *
25
     * <p>This is a dummy, used for not existing resources.</p>
26
     *
27
     * @param name relative path of the resource.  Expects
28
     * &quot;/&quot; to be used as the directory separator.
29
     */
30
    public ResourceZipEntry(String name) {
31
        this(name, false, 0, false);
32
    }
33
34
    /**
35
     * sets the name, lastmodified flag, and exists flag
36
     *
37
     * @param name relative path of the resource.  Expects
38
     * &quot;/&quot; to be used as the directory separator.
39
     */
40
    public ResourceZipEntry(String name, boolean exists, long lastmodified) {
41
        this(name, exists, lastmodified, false);
42
    }
43
44
    /**
45
     * @param name relative path of the resource.  Expects
46
     * &quot;/&quot; to be used as the directory separator.
47
     */
48
    public ResourceZipEntry(String name, boolean exists, long lastmodified,
49
                    boolean directory) {
50
        this(name, exists, lastmodified, directory, UNKNOWN_SIZE);
51
    }
52
    
53
    /**
54
     * Sets the name, lastmodified flag, exists flag, directory flag, and size.
55
     *
56
     * @param name relative path of the resource.  Expects
57
     * &quot;/&quot; to be used as the directory separator.
58
     * @param exists if true the resource exists
59
     * @param lastmodified the last modification time of the resource
60
     * @param directory    if true, this resource is a directory
61
     * @param size the size of this resource.
62
     */
63
    public ResourceZipEntry(String name, boolean exists, long lastmodified,
64
                    boolean directory, long size) {
65
        this.name = name;
66
        setName(name);
67
        setExists(exists);
68
        setLastModified(lastmodified);
69
        setDirectory(directory);
70
        setSize(size);
71
    }
72
73
    /**
74
     * the exists attribute tells whether a file exists
75
     */
76
    public boolean isExists() {
77
        return exists;
78
    }
79
80
    public void setExists(boolean exists) {
81
        this.exists = exists;
82
    }
83
84
    /**
85
     * tells the modification time in milliseconds since 01.01.1970 of
86
     *
87
     * @return 0 if the resource does not exist to mirror the behavior
88
     * of {@link java.io.File File}.
89
     */
90
    public long getLastModified() {
91
        return !exists || lastmodified < 0 ? 0 : lastmodified;
92
    }
93
94
    public void setLastModified(long lastmodified) {
95
        this.lastmodified = lastmodified;
96
    }
97
98
    /**
99
     * tells if the resource is a directory
100
     * @return boolean flag indicating if the resource is a directory
101
     */
102
    public boolean isDirectory() {
103
        return directory;
104
    }
105
106
    public void setDirectory(boolean directory) {
107
        this.directory = directory;
108
    }
109
110
    /**
111
     * Get the size of this Resource.
112
     * @return the size, as a long, 0 if the Resource does not exist (for
113
     *         compatibility with java.io.File), or UNKNOWN_SIZE if not known.
114
     * @since Ant 1.6.3
115
     */
116
    public long getSize() {
117
        return (isExists()) ? size : 0L;
118
    }
119
120
    /**
121
     * Set the size of this Resource.
122
     * @param size the size, as a long.
123
     * @since Ant 1.6.3
124
     */
125
    public void setSize(long size) {
126
        this.size = (size > UNKNOWN_SIZE) ? size : UNKNOWN_SIZE;
127
    }
128
129
    /**
130
     * @return copy of this
131
     */
132
    public Object clone() {
133
            return super.clone();
134
    }
135
136
    /**
137
     * delegates to a comparison of names.
138
     *
139
     * @since Ant 1.6
140
     */
141
    public int compareTo(Object other) {
142
        if (!(other instanceof ResourceZipEntry)) {
143
            throw new IllegalArgumentException("Can only be compared with "
144
                                               + "Resources");
145
        }
146
        ResourceZipEntry r = (ResourceZipEntry) other;
147
        return getName().compareTo(r.getName());
148
    }
149
}
(-)apache-ant-1.6.5.orig/src/main/org/apache/tools/ant/types/ZipScanner.java (-4 / +4 lines)
Lines 174-180 Link Here
174
            return super.getResource(name);
174
            return super.getResource(name);
175
        } else if (name.equals("")) {
175
        } else if (name.equals("")) {
176
            // special case in ZIPs, we do not want this thing included
176
            // special case in ZIPs, we do not want this thing included
177
            return new Resource("", true, Long.MAX_VALUE, true);
177
            return new ResourceZipEntry("", true, Long.MAX_VALUE, true);
178
        }
178
        }
179
179
180
        // first check if the archive needs to be scanned again
180
        // first check if the archive needs to be scanned again
Lines 184-190 Link Here
184
        } else if (myentries.containsKey(name + "/")) {
184
        } else if (myentries.containsKey(name + "/")) {
185
            return (Resource) myentries.get(name + "/");
185
            return (Resource) myentries.get(name + "/");
186
        } else {
186
        } else {
187
            return new Resource(name);
187
            return new ResourceZipEntry(name);
188
        }
188
        }
189
    }
189
    }
190
190
Lines 196-202 Link Here
196
     * type
196
     * type
197
     */
197
     */
198
    private void scanme() {
198
    private void scanme() {
199
        Resource thisresource = new Resource(srcFile.getAbsolutePath(),
199
        Resource thisresource = new ResourceZipEntry(srcFile.getAbsolutePath(),
200
                                             srcFile.exists(),
200
                                             srcFile.exists(),
201
                                             srcFile.lastModified());
201
                                             srcFile.lastModified());
202
202
Lines 224-230 Link Here
224
            while (e.hasMoreElements()) {
224
            while (e.hasMoreElements()) {
225
                entry = (ZipEntry) e.nextElement();
225
                entry = (ZipEntry) e.nextElement();
226
                myentries.put(new String(entry.getName()),
226
                myentries.put(new String(entry.getName()),
227
                              new Resource(entry.getName(), true,
227
                              new ResourceZipEntry(entry.getName(), true,
228
                                           entry.getTime(),
228
                                           entry.getTime(),
229
                                           entry.isDirectory(),
229
                                           entry.isDirectory(),
230
                                           entry.getSize()));
230
                                           entry.getSize()));
(-)apache-ant-1.6.5.orig/src/main/org/apache/tools/ant/util/ResourceUtils.java (-5 / +5 lines)
Lines 81-91 Link Here
81
81
82
        Vector vresult = new Vector();
82
        Vector vresult = new Vector();
83
        for (int counter = 0; counter < source.length; counter++) {
83
        for (int counter = 0; counter < source.length; counter++) {
84
            if (source[counter].getLastModified() > now) {
84
//            if (source[counter].getLastModified() > now) {
85
                logTo.log("Warning: " + source[counter].getName()
85
//                logTo.log("Warning: " + source[counter].getName()
86
                         + " modified in the future.",
86
//                         + " modified in the future.",
87
                         Project.MSG_WARN);
87
//                         Project.MSG_WARN);
88
            }
88
//            }
89
89
90
            String[] targetnames =
90
            String[] targetnames =
91
                mapper.mapFileName(source[counter].getName()
91
                mapper.mapFileName(source[counter].getName()
(-)apache-ant-1.6.5.orig/src/main/org/apache/tools/ant/util/SourceFileScanner.java (-4 / +5 lines)
Lines 22-27 Link Here
22
import org.apache.tools.ant.Task;
22
import org.apache.tools.ant.Task;
23
import org.apache.tools.ant.types.ResourceFactory;
23
import org.apache.tools.ant.types.ResourceFactory;
24
import org.apache.tools.ant.types.Resource;
24
import org.apache.tools.ant.types.Resource;
25
import org.apache.tools.ant.types.ResourceFile;
25
26
26
/**
27
/**
27
 * Utility class that collects the functionality of the various
28
 * Utility class that collects the functionality of the various
Lines 86-93 Link Here
86
        Vector v = new Vector();
87
        Vector v = new Vector();
87
        for (int i = 0; i < files.length; i++) {
88
        for (int i = 0; i < files.length; i++) {
88
            File src = fileUtils.resolveFile(srcDir, files[i]);
89
            File src = fileUtils.resolveFile(srcDir, files[i]);
89
            v.addElement(new Resource(files[i], src.exists(),
90
            ResourceFile rf = new ResourceFile(files[i], src);
90
                                      src.lastModified(), src.isDirectory()));
91
            rf.setExists(true);
92
            v.addElement(rf);
91
        }
93
        }
92
        Resource[] sourceresources = new Resource[v.size()];
94
        Resource[] sourceresources = new Resource[v.size()];
93
        v.copyInto(sourceresources);
95
        v.copyInto(sourceresources);
Lines 141-148 Link Here
141
     */
143
     */
142
    public Resource getResource(String name) {
144
    public Resource getResource(String name) {
143
        File src = fileUtils.resolveFile(destDir, name);
145
        File src = fileUtils.resolveFile(destDir, name);
144
        return new Resource(name, src.exists(), src.lastModified(),
146
        return new ResourceFile(name, src);
145
                            src.isDirectory());
146
    }
147
    }
147
}
148
}
148
149

Return to bug 30094