001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: *
017: */
018:
019: /*
020: * Since the initial version of this file was deveolped on the clock on
021: * an NSF grant I should say the following boilerplate:
022: *
023: * This material is based upon work supported by the National Science
024: * Foundaton under Grant No. EIA-0196404. Any opinions, findings, and
025: * conclusions or recommendations expressed in this material are those
026: * of the author and do not necessarily reflect the views of the
027: * National Science Foundation.
028: */
029:
030: package org.apache.tools.ant.taskdefs.optional.unix;
031:
032: import java.io.File;
033:
034: import org.apache.tools.ant.BuildException;
035: import org.apache.tools.ant.taskdefs.condition.Os;
036: import org.apache.tools.ant.types.Commandline;
037: import org.apache.tools.ant.types.FileSet;
038:
039: /**
040: * @since Ant 1.6
041: *
042: * @ant.task category="filesystem"
043: */
044:
045: public abstract class AbstractAccessTask extends
046: org.apache.tools.ant.taskdefs.ExecuteOn {
047:
048: /**
049: * Chmod task for setting file and directory permissions.
050: */
051: public AbstractAccessTask() {
052: super .setParallel(true);
053: super .setSkipEmptyFilesets(true);
054: }
055:
056: /**
057: * Set the file which should have its access attributes modified.
058: * @param src the file to modify
059: */
060: public void setFile(File src) {
061: FileSet fs = new FileSet();
062: fs.setFile(src);
063: addFileset(fs);
064: }
065:
066: /**
067: * Prevent the user from specifying a different command.
068: *
069: * @ant.attribute ignore="true"
070: * @param cmdl A user supplied command line that we won't accept.
071: */
072: public void setCommand(Commandline cmdl) {
073: throw new BuildException(getTaskType()
074: + " doesn\'t support the command attribute",
075: getLocation());
076: }
077:
078: /**
079: * Prevent the skipping of empty filesets
080: *
081: * @ant.attribute ignore="true"
082: * @param skip A user supplied boolean we won't accept.
083: */
084: public void setSkipEmptyFilesets(boolean skip) {
085: throw new BuildException(getTaskType()
086: + " doesn\'t support the "
087: + "skipemptyfileset attribute", getLocation());
088: }
089:
090: /**
091: * Prevent the use of the addsourcefile atribute.
092: *
093: * @ant.attribute ignore="true"
094: * @param b A user supplied boolean we won't accept.
095: */
096: public void setAddsourcefile(boolean b) {
097: throw new BuildException(getTaskType()
098: + " doesn\'t support the addsourcefile attribute",
099: getLocation());
100: }
101:
102: /**
103: * Automatically approve Unix OS's.
104: * @return true if a valid OS, for unix this is always true, otherwise
105: * use the superclasses' test (user set).
106: */
107: protected boolean isValidOs() {
108: return Os.isFamily("unix") && super.isValidOs();
109: }
110: }
|