You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by oh...@apache.org on 2009/10/06 21:16:12 UTC

svn commit: r822439 - /commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/fs/Locator.java

Author: oheger
Date: Tue Oct  6 19:16:12 2009
New Revision: 822439

URL: http://svn.apache.org/viewvc?rev=822439&view=rev
Log:
Added Locator interface.

Added:
    commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/fs/Locator.java   (with props)

Added: commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/fs/Locator.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/fs/Locator.java?rev=822439&view=auto
==============================================================================
--- commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/fs/Locator.java (added)
+++ commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/fs/Locator.java Tue Oct  6 19:16:12 2009
@@ -0,0 +1,67 @@
+/*
+ * 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.commons.configuration2.fs;
+
+import java.net.URL;
+
+/**
+ * <p>
+ * Definition of an interface for locating configuration sources.
+ * </p>
+ * <p>
+ * Configuration data is typically retrieved from various locations, e.g. from
+ * the local file system, from a jar archive in the class path, or even from a
+ * URL over the network. This interface provides an easy yet flexible way of
+ * dealing with all these different locations.
+ * </p>
+ * <p>
+ * A {@code Locator} simply provides a URL to the data to be loaded (or
+ * written). Configuration sources that are capable of dealing with locators
+ * interpret these URLs with the help of the {@link FileSystem} classes and open
+ * corresponding streams for the I/O operations to be performed.
+ * </p>
+ * <p>
+ * There are already some default {@code Locator} implementations for typical
+ * use cases. For special requirements it should not be too complicated to
+ * create a custom implementation of this interface. Here an arbitrary complex
+ * search strategy for configuration data can be defined.
+ * </p>
+ *
+ * @author Commons Configuration team
+ * @version $Id$
+ */
+public interface Locator
+{
+    /**
+     * Returns a {@code URL} to the configuration data pointed by this {@code
+     * Locator}. When a configuration source is to be loaded this method is
+     * called with the argument <b>false</b>. Analogous, for writing a
+     * configuration source, {@code getURL()} is called with the parameter
+     * <b>true</b>. It is up to a concrete implementation whether it
+     * distinguishes between input and output URLs and which algorithm it uses
+     * for locating the actual data. The configuration sources just use the URLs
+     * returned by this method for reading and writing their data. No additional
+     * checks are performed on these URLs. An implementation should never return
+     * <b>null</b>. In case of an error a runtime exception - preferably a
+     * {@code ConfigurationRuntimeException} - should be thrown.
+     *
+     * @param output <b>true</b> if the URL is to be used for writing data;
+     *        <b>false</b> if it is to be used for reading data
+     * @return the {@code URL} pointing to configuration data
+     */
+    URL getURL(boolean output);
+}

Propchange: commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/fs/Locator.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/fs/Locator.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/fs/Locator.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain