Author: oheger
Date: Sat Sep 28 19:30:49 2013
New Revision: 1527227
URL: http://svn.apache.org/r1527227
Log:
Added a method for extracting a location strategy from a FileLocator.
In a FileLocator the default location strategy can be overridden. The new
method always returns a valid strategy, no matter whether the locator
defines one or not.
Modified:
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/io/FileLocatorUtils.java
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/io/TestFileLocatorUtils.java
Modified:
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/io/FileLocatorUtils.java
URL:
http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/io/FileLocatorUtils.java?rev=1527227&r1=1527226&r2=1527227&view=diff
==============================================================================
---
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/io/FileLocatorUtils.java
(original)
+++
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/io/FileLocatorUtils.java
Sat Sep 28 19:30:49 2013
@@ -618,6 +618,23 @@ public final class FileLocatorUtils
}
/**
+ * Obtains a non <b>null</b> {@code FileLocationStrategy} object from the
+ * passed in {@code FileLocator}. If the {@code FileLocator} is not
+ * <b>null</b> and has a {@code FileLocationStrategy} defined, this
strategy
+ * is returned. Otherwise, result is the default
+ * {@code FileLocationStrategy}.
+ *
+ * @param locator the {@code FileLocator}
+ * @return the {@code FileLocationStrategy} for this {@code FileLocator}
+ */
+ static FileLocationStrategy obtainLocationStrategy(FileLocator locator)
+ {
+ return (locator != null) ? ObjectUtils.defaultIfNull(
+ locator.getLocationStrategy(), DEFAULT_LOCATION_STRATEGY)
+ : DEFAULT_LOCATION_STRATEGY;
+ }
+
+ /**
* Creates a fully initialized {@code FileLocator} based on a URL.
*
* @param locator the source {@code FileLocator}
Modified:
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/io/TestFileLocatorUtils.java
URL:
http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/io/TestFileLocatorUtils.java?rev=1527227&r1=1527226&r2=1527227&view=diff
==============================================================================
---
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/io/TestFileLocatorUtils.java
(original)
+++
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/io/TestFileLocatorUtils.java
Sat Sep 28 19:30:49 2013
@@ -435,4 +435,46 @@ public class TestFileLocatorUtils
assertTrue("Wrong strategy (7)",
it.next() instanceof ClasspathLocationStrategy);
}
+
+ /**
+ * Tests whether a location strategy can be obtained if it is defined by
the
+ * locator.
+ */
+ @Test
+ public void testObtainLocationStrategySetInLocator()
+ {
+ FileLocationStrategy strategy =
+ EasyMock.createMock(FileLocationStrategy.class);
+ EasyMock.replay(strategy);
+ FileLocator locator =
+ FileLocatorUtils.fileLocator().locationStrategy(strategy)
+ .create();
+ assertSame("Wrong strategy", strategy,
+ FileLocatorUtils.obtainLocationStrategy(locator));
+ }
+
+ /**
+ * Tests whether a location strategy can be obtained if it is not defined
by
+ * the locator.
+ */
+ @Test
+ public void testObtainLocationStrategyNotSetInLocator()
+ {
+ FileLocator locator = FileLocatorUtils.fileLocator().create();
+ assertSame("Wrong strategy",
+ FileLocatorUtils.DEFAULT_LOCATION_STRATEGY,
+ FileLocatorUtils.obtainLocationStrategy(locator));
+ }
+
+ /**
+ * Tests whether a location strategy can be obtained if a null locator is
+ * passed.
+ */
+ @Test
+ public void testObtainLocationStrategyNullLocator()
+ {
+ assertSame("Wrong strategy",
+ FileLocatorUtils.DEFAULT_LOCATION_STRATEGY,
+ FileLocatorUtils.obtainLocationStrategy(null));
+ }
}