aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/types/AntFilterReader.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/types/AntFilterReader.java')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/types/AntFilterReader.java178
1 files changed, 178 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/types/AntFilterReader.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/types/AntFilterReader.java
new file mode 100644
index 00000000..20c41bc7
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/types/AntFilterReader.java
@@ -0,0 +1,178 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 java.util.Stack;
+import java.util.Vector;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+
+/**
+ * An AntFilterReader is a wrapper class that encloses the classname
+ * and configuration of a Configurable FilterReader.
+ */
+public final class AntFilterReader
+ extends DataType implements Cloneable {
+
+ private String className;
+
+ private final Vector<Parameter> parameters = new Vector<Parameter>();
+
+ private Path classpath;
+
+ /**
+ * Set the className attribute.
+ *
+ * @param className a <code>String</code> value
+ */
+ public void setClassName(final String className) {
+ if (isReference()) {
+ throw tooManyAttributes();
+ }
+ this.className = className;
+ }
+
+ /**
+ * Get the className attribute.
+ *
+ * @return a <code>String</code> value
+ */
+ public String getClassName() {
+ if (isReference()) {
+ return ((AntFilterReader) getCheckedRef()).getClassName();
+ }
+ dieOnCircularReference();
+ return className;
+ }
+
+ /**
+ * Add a Parameter.
+ *
+ * @param param a <code>Parameter</code> value
+ */
+ public void addParam(final Parameter param) {
+ if (isReference()) {
+ throw noChildrenAllowed();
+ }
+ parameters.addElement(param);
+ }
+
+ /**
+ * Set the classpath to load the FilterReader through (attribute).
+ * @param classpath a classpath
+ */
+ public void setClasspath(Path classpath) {
+ if (isReference()) {
+ throw tooManyAttributes();
+ }
+ if (this.classpath == null) {
+ this.classpath = classpath;
+ } else {
+ this.classpath.append(classpath);
+ }
+ setChecked(false);
+ }
+
+ /**
+ * Set the classpath to load the FilterReader through (nested element).
+ * @return a classpath to be configured
+ */
+ public Path createClasspath() {
+ if (isReference()) {
+ throw noChildrenAllowed();
+ }
+ if (this.classpath == null) {
+ this.classpath = new Path(getProject());
+ }
+ setChecked(false);
+ return this.classpath.createPath();
+ }
+
+ /**
+ * Get the classpath.
+ * @return the classpath
+ */
+ public Path getClasspath() {
+ if (isReference()) {
+ ((AntFilterReader) getCheckedRef()).getClasspath();
+ }
+ dieOnCircularReference();
+ return classpath;
+ }
+
+ /**
+ * Set the classpath to load the FilterReader through via
+ * reference (attribute).
+ * @param r a reference to a classpath
+ */
+ public void setClasspathRef(Reference r) {
+ if (isReference()) {
+ throw tooManyAttributes();
+ }
+ createClasspath().setRefid(r);
+ }
+
+ /**
+ * The parameters for this filter.
+ *
+ * @return a <code>Parameter[]</code> value
+ */
+ public Parameter[] getParams() {
+ if (isReference()) {
+ ((AntFilterReader) getCheckedRef()).getParams();
+ }
+ dieOnCircularReference();
+ Parameter[] params = new Parameter[parameters.size()];
+ parameters.copyInto(params);
+ return params;
+ }
+
+ /**
+ * Makes this instance in effect a reference to another AntFilterReader
+ * instance.
+ *
+ * <p>You must not set another attribute or nest elements inside
+ * this element if you make it a reference.</p>
+ *
+ * @param r the reference to which this instance is associated
+ * @exception BuildException if this instance already has been configured.
+ */
+ public void setRefid(Reference r) throws BuildException {
+ if (!parameters.isEmpty() || className != null
+ || classpath != null) {
+ throw tooManyAttributes();
+ }
+ super.setRefid(r);
+ }
+
+ protected synchronized void dieOnCircularReference(Stack<Object> stk, Project p)
+ throws BuildException {
+ if (isChecked()) {
+ return;
+ }
+ if (isReference()) {
+ super.dieOnCircularReference(stk, p);
+ } else {
+ if (classpath != null) {
+ pushAndInvokeCircularReferenceCheck(classpath, stk, p);
+ }
+ setChecked(true);
+ }
+ }
+}