diff options
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/property/ParseProperties.java')
-rw-r--r-- | framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/property/ParseProperties.java | 199 |
1 files changed, 0 insertions, 199 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/property/ParseProperties.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/property/ParseProperties.java deleted file mode 100644 index f03f966e..00000000 --- a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/property/ParseProperties.java +++ /dev/null @@ -1,199 +0,0 @@ -/* - * 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.property; - -import java.text.ParsePosition; -import java.util.Collection; - -import org.apache.tools.ant.Project; - -/** - * Parse properties using a collection of expanders. - * - * @since Ant 1.8.0 - */ -public class ParseProperties implements ParseNextProperty { - - private final Project project; - private final GetProperty getProperty; - private final Collection<PropertyExpander> expanders; - - /** - * Constructor with a getProperty. - * @param project the current Ant project. - * @param expanders a sequence of expanders - * @param getProperty property resolver. - */ - public ParseProperties(Project project, Collection<PropertyExpander> expanders, GetProperty getProperty) { - this.project = project; - this.expanders = expanders; - this.getProperty = getProperty; - } - - /** - * Get the project. - * @return the current Ant project. - */ - public Project getProject() { - return project; - } - - /** - * Decode properties from a String representation. - * - * <ul> - * - * <li>This implementation starts parsing the <code>value</code> - * parameter (unsurprisingly) at the beginning and asks each - * {@link PropertyExpander PropertyExpander} whether there is a - * property reference at that point. PropertyExpanders return - * the name of a property they may find and may advance the parse - * position.</li> - * - * <li>If the PropertyExpander returns <code>null</code> the - * method continues with the next PropertyExpander, otherwise it - * tries to look up the property's value using the configured - * {@link GetProperty GetProperty} instance.</li> - * - * <li>Once all PropertyExpanders have been consulted, the parse - * position is advanced by one character and the process repeated - * until <code>value</code> is exhausted.</li> - * - * </ul> - * - * <p>If the entire contents of <code>value</code> resolves to a - * single property, the looked up property value is returned. - * Otherwise a String is returned that concatenates the - * non-property parts of <code>value</code> and the expanded - * values of the properties that have been found.</p> - * - * @param value The string to be scanned for property references. - * May be <code>null</code>, in which case this - * method returns immediately with no effect. - * - * @return the original string with the properties replaced, or - * <code>null</code> if the original string is <code>null</code>. - */ - public Object parseProperties(String value) { - if (value == null || "".equals(value)) { - return value; - } - final int len = value.length(); - ParsePosition pos = new ParsePosition(0); - Object o = parseNextProperty(value, pos); - if (o != null && pos.getIndex() >= len) { - return o; - } - StringBuffer sb = new StringBuffer(len * 2); - if (o == null) { - sb.append(value.charAt(pos.getIndex())); - pos.setIndex(pos.getIndex() + 1); - } else { - sb.append(o); - } - while (pos.getIndex() < len) { - o = parseNextProperty(value, pos); - if (o == null) { - sb.append(value.charAt(pos.getIndex())); - pos.setIndex(pos.getIndex() + 1); - } else { - sb.append(o); - } - } - return sb.toString(); - } - - /** - * Learn whether a String contains replaceable properties. - * - * <p>Uses the configured {@link PropertyExpander - * PropertyExpanders} and scans through the string. Returns true - * as soon as any expander finds a property.</p> - * - * @param value the String to check. - * @return <code>true</code> if <code>value</code> contains property notation. - */ - public boolean containsProperties(String value) { - if (value == null) { - return false; - } - final int len = value.length(); - for (ParsePosition pos = new ParsePosition(0); pos.getIndex() < len;) { - if (parsePropertyName(value, pos) != null) { - return true; - } - pos.setIndex(pos.getIndex() + 1); - } - return false; - } - - /** - * Return any property that can be parsed from the specified position - * in the specified String. - * - * <p>Uses the configured {@link PropertyExpander - * PropertyExpanders} and {@link GetProperty GetProperty} - * instance .</p> - * - * @param value String to parse - * @param pos ParsePosition - * @return Object or null if no property is at the current - * location. If a property reference has been found but the - * property doesn't expand to a value, the property's name is - * returned. - */ - public Object parseNextProperty(String value, ParsePosition pos) { - final int start = pos.getIndex(); - - if (start > value.length()) { - // early exit, can't find any property here, no need to - // consult all the delegates. - return null; - } - - String propertyName = parsePropertyName(value, pos); - if (propertyName != null) { - Object result = getProperty(propertyName); - if (result != null) { - return result; - } - if (project != null) { - project.log( - "Property \"" + propertyName - + "\" has not been set", Project.MSG_VERBOSE); - } - return value.substring(start, pos.getIndex()); - } - return null; - } - - private String parsePropertyName(String value, ParsePosition pos) { - for (PropertyExpander propertyExpander : expanders) { - String propertyName = propertyExpander.parsePropertyName(value, pos, this); - if (propertyName == null) { - continue; - } - return propertyName; - } - return null; - } - - private Object getProperty(String propertyName) { - return getProperty.getProperty(propertyName); - } -} |