/*
 *  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
 *
 *      https://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 org.apache.tools.ant.MagicNames;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.PropertyHelper;

Thread local class containing local properties.
Since:Ant 1.8.0
/** * Thread local class containing local properties. * @since Ant 1.8.0 */
public class LocalProperties extends InheritableThreadLocal<LocalPropertyStack> implements PropertyHelper.PropertyEvaluator, PropertyHelper.PropertySetter {
Get a localproperties for the given project.
Params:
  • project – the project to retrieve the localproperties for.
Returns:the localproperties.
/** * Get a localproperties for the given project. * @param project the project to retrieve the localproperties for. * @return the localproperties. */
public static synchronized LocalProperties get(Project project) { LocalProperties l = project.getReference(MagicNames.REFID_LOCAL_PROPERTIES); if (l == null) { l = new LocalProperties(); project.addReference(MagicNames.REFID_LOCAL_PROPERTIES, l); PropertyHelper.getPropertyHelper(project).add(l); } return l; } // -------------------------------------------------- // // Thread stuff // // --------------------------------------------------
Construct a new LocalProperties object.
/** * Construct a new LocalProperties object. */
private LocalProperties() { }
Get the initial value.
Returns:a new localproperties stack.
/** * Get the initial value. * @return a new localproperties stack. */
@Override protected synchronized LocalPropertyStack initialValue() { return new LocalPropertyStack(); } // -------------------------------------------------- // // Local property adding and scoping // // --------------------------------------------------
Add a local property to the current scope.
Params:
  • property – the property name to add.
/** * Add a local property to the current scope. * @param property the property name to add. */
public void addLocal(String property) { get().addLocal(property); }
enter the scope
/** enter the scope */
public void enterScope() { get().enterScope(); }
exit the scope
/** exit the scope */
public void exitScope() { get().exitScope(); } // -------------------------------------------------- // // Copy - used in parallel to make a new stack // // --------------------------------------------------
Copy the stack for a parallel thread. To be called from the parallel thread itself.
/** * Copy the stack for a parallel thread. * To be called from the parallel thread itself. */
public void copy() { set(get().copy()); } // -------------------------------------------------- // // PropertyHelper delegate methods // // --------------------------------------------------
Evaluate a property.
Params:
  • property – the property's String "identifier".
  • helper – the invoking PropertyHelper.
Returns:Object value.
/** * Evaluate a property. * @param property the property's String "identifier". * @param helper the invoking PropertyHelper. * @return Object value. */
@Override public Object evaluate(String property, PropertyHelper helper) { return get().evaluate(property, helper); }
Set a *new" property.
Params:
  • property – the property's String "identifier".
  • value – the value to set.
  • propertyHelper – the invoking PropertyHelper.
Returns:true if this entity 'owns' the property.
/** * Set a *new" property. * @param property the property's String "identifier". * @param value the value to set. * @param propertyHelper the invoking PropertyHelper. * @return true if this entity 'owns' the property. */
@Override public boolean setNew( String property, Object value, PropertyHelper propertyHelper) { return get().setNew(property, value, propertyHelper); }
Set a property.
Params:
  • property – the property's String "identifier".
  • value – the value to set.
  • propertyHelper – the invoking PropertyHelper.
Returns:true if this entity 'owns' the property.
/** * Set a property. * @param property the property's String "identifier". * @param value the value to set. * @param propertyHelper the invoking PropertyHelper. * @return true if this entity 'owns' the property. */
@Override public boolean set( String property, Object value, PropertyHelper propertyHelper) { return get().set(property, value, propertyHelper); } }