+ A new API method AntProjectHelper.createAuxiliaryProperties
.
+
auxiliary.
".
+ *
+ * @return an instance of {@link AuxiliaryProperties} suitable for the project lookup
+ * @since 1.21
+ */
+ public AuxiliaryProperties createAuxiliaryProperties() {
+ return new AuxiliaryPropertiesImpl(this);
+ }
+
+ /**
* Create an implementation of {@link org.netbeans.api.queries.FileBuiltQuery} that works with files
* within the project based on simple glob pattern mappings.
*
diff --git a/project.ant/src/org/netbeans/spi/project/support/ant/AuxiliaryPropertiesImpl.java b/project.ant/src/org/netbeans/spi/project/support/ant/AuxiliaryPropertiesImpl.java
new file mode 100644
--- /dev/null
+++ b/project.ant/src/org/netbeans/spi/project/support/ant/AuxiliaryPropertiesImpl.java
@@ -0,0 +1,96 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common
+ * Development and Distribution License("CDDL") (collectively, the
+ * "License"). You may not use this file except in compliance with the
+ * License. You can obtain a copy of the License at
+ * http://www.netbeans.org/cddl-gplv2.html
+ * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+ * specific language governing permissions and limitations under the
+ * License. When distributing the software, include this License Header
+ * Notice in each file and include the License file at
+ * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the GPL Version 2 section of the License file that
+ * accompanied this code. If applicable, add the following below the
+ * License Header, with the fields enclosed by brackets [] replaced by
+ * your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ *
+ * If you wish your version of this file to be governed by only the CDDL
+ * or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution
+ * under the [CDDL or GPL Version 2] license." If you do not indicate a
+ * single choice of license, a recipient has the option to distribute
+ * your version of this file under either the CDDL, the GPL Version 2 or
+ * to extend the choice of license to its licensees as provided above.
+ * However, if you add GPL Version 2 code and therefore, elected the GPL
+ * Version 2 license, then the option applies only if the new code is
+ * made subject to such option by the copyright holder.
+ *
+ * Contributor(s):
+ *
+ * Portions Copyrighted 2008 Sun Microsystems, Inc.
+ */
+
+package org.netbeans.spi.project.support.ant;
+import java.util.LinkedList;
+import java.util.List;
+import org.netbeans.api.project.ProjectManager;
+import org.netbeans.spi.project.AuxiliaryProperties;
+import org.openide.util.Mutex;
+
+/**
+ *
+ * @author Jan Lahoda
+ */
+class AuxiliaryPropertiesImpl implements AuxiliaryProperties {
+
+ private final AntProjectHelper helper;
+ private final String propertyPrefix = "auxiliary.";
+
+ public AuxiliaryPropertiesImpl(AntProjectHelper helper) {
+ this.helper = helper;
+ }
+
+ public String get(String key, boolean shared) {
+ String location = shared ? AntProjectHelper.PROJECT_PROPERTIES_PATH : AntProjectHelper.PRIVATE_PROPERTIES_PATH;
+ EditableProperties props = helper.getProperties(location);
+
+ return props.get(propertyPrefix + key);
+ }
+
+ public void put(final String key, final String value, final boolean shared) {
+ ProjectManager.mutex().writeAccess(new Mutex.Action
+ Added new API method ProjectUtils.getPreferences
and new SPI interface AuxiliaryProperties
.
+
Allow to store arbitrary properties in the project, similarly as {@link AuxiliaryConfiguration}. + * Used as backing store for {@link org.netbeans.api.project.ProjectUtils#getPreferences(org.netbeans.api.project.Project, java.lang.Class, boolean)}. + *
+ * + *Note to API clients: do not use this interface directly, use + * {@link org.netbeans.api.project.ProjectUtils#getPreferences(org.netbeans.api.project.Project, java.lang.Class, boolean)} instead. + *
+ * + * @author Jan Lahoda + * @since 1.16 + */ +public interface AuxiliaryProperties { + + /** + * Get a property value. + * + * @param key name of the property + * @param shared true to look in a sharable settings area, false to look in a private + * settings area + * @return value of the selected property, or null if not set. + */ + public String get(String key, boolean shared); + + /** + * Put a property value. + * + * @param key name of the property + * @param value value of the property.null
will remove the property.
+ * @param shared true to look in a sharable settings area, false to look in a private
+ * settings area
+ */
+ public void put(String key, String value, boolean shared);
+
+ /**
+ * List all keys of all known properties.
+ *
+ * @param shared true to look in a sharable settings area, false to look in a private
+ * settings area
+ * @return known keys.
+ */
+ public Iterable