aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/property/LocalProperties.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/property/LocalProperties.java')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/property/LocalProperties.java152
1 files changed, 152 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/property/LocalProperties.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/property/LocalProperties.java
new file mode 100644
index 00000000..c9ce3af0
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/property/LocalProperties.java
@@ -0,0 +1,152 @@
+/*
+ * 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 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
+ */
+public class LocalProperties
+ extends InheritableThreadLocal<LocalPropertyStack>
+ implements PropertyHelper.PropertyEvaluator,
+ PropertyHelper.PropertySetter {
+
+ /**
+ * 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 = (LocalProperties) 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.
+ */
+ private LocalProperties() {
+ }
+
+ /**
+ * Get the initial value.
+ * @return a new localproperties stack.
+ */
+ protected synchronized LocalPropertyStack initialValue() {
+ return new LocalPropertyStack();
+ }
+
+ private LocalPropertyStack current() {
+ return (LocalPropertyStack) get();
+ }
+
+ // --------------------------------------------------
+ //
+ // Local property adding and scoping
+ //
+ // --------------------------------------------------
+
+ /**
+ * Add a local property to the current scope.
+ * @param property the property name to add.
+ */
+ public void addLocal(String property) {
+ current().addLocal(property);
+ }
+
+ /** enter the scope */
+ public void enterScope() {
+ current().enterScope();
+ }
+
+ /** exit the scope */
+ public void exitScope() {
+ current().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.
+ */
+ public void copy() {
+ set(current().copy());
+ }
+
+ // --------------------------------------------------
+ //
+ // PropertyHelper delegate methods
+ //
+ // --------------------------------------------------
+
+ /**
+ * Evaluate a property.
+ * @param property the property's String "identifier".
+ * @param helper the invoking PropertyHelper.
+ * @return Object value.
+ */
+ public Object evaluate(String property, PropertyHelper helper) {
+ return current().evaluate(property, helper);
+ }
+
+ /**
+ * 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.
+ */
+ public boolean setNew(
+ String property, Object value, PropertyHelper propertyHelper) {
+ return current().setNew(property, value, propertyHelper);
+ }
+
+ /**
+ * 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.
+ */
+ public boolean set(
+ String property, Object value, PropertyHelper propertyHelper) {
+ return current().set(property, value, propertyHelper);
+ }
+}
+
+