commons-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From brit...@apache.org
Subject svn commit: r1559495 - in /commons/proper/lang/trunk/src: changes/changes.xml main/java/org/apache/commons/lang3/ClassPathUtils.java test/java/org/apache/commons/lang3/ClassPathUtilsTest.java
Date Sun, 19 Jan 2014 13:26:46 GMT
Author: britter
Date: Sun Jan 19 13:26:45 2014
New Revision: 1559495

URL: http://svn.apache.org/r1559495
Log:
LANG-417: New class ClassPathUtils with methods for turning FQN into resource path

Added:
    commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/ClassPathUtils.java 
 (with props)
    commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/ClassPathUtilsTest.java
  (with props)
Modified:
    commons/proper/lang/trunk/src/changes/changes.xml

Modified: commons/proper/lang/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/changes/changes.xml?rev=1559495&r1=1559494&r2=1559495&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/changes/changes.xml [utf-8] (original)
+++ commons/proper/lang/trunk/src/changes/changes.xml [utf-8] Sun Jan 19 13:26:45 2014
@@ -22,6 +22,7 @@
   <body>
 
   <release version="3.3" date="TBA" description="Bugfix and Feature release">
+    <action issue="LANG-417" type="add" dev="britter">New class ClassPathUtils with
methods for turning FQN into resource path</action>
     <action issue="LANG-939" type="update" dev="britter">Move Documentation from user
guide to package-info files</action>
     <action issue="LANG-953" type="update" dev="britter">Convert package.html files
to package-info.java files</action>
     <action issue="LANG-950" type="fix" dev="chas">FastDateParser does not handle two
digit year parsing like SimpleDateFormat</action>

Added: commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/ClassPathUtils.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/ClassPathUtils.java?rev=1559495&view=auto
==============================================================================
--- commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/ClassPathUtils.java (added)
+++ commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/ClassPathUtils.java Sun
Jan 19 13:26:45 2014
@@ -0,0 +1,137 @@
+/*
+ * 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.lang3;
+
+/**
+ * Operations regarding the classpath.
+ *
+ * @since 3.3
+ * @version $Id$
+ */
+//@Immutable
+public final class ClassPathUtils {
+
+    /**
+     * <p>{@code ClassPathUtils} instances should NOT be constructed in
+     * standard programming. Instead, the class should be used as
+     * {@code ClassPathUtils.toFullyQualifiedName(MyClass.class, MyClass.properties);}.</p>
+     *
+     * <p>This constructor is public to permit tools that require a JavaBean
+     * instance to operate.</p>
+     */
+    public ClassPathUtils() {
+        super();
+    }
+
+    /**
+     * Returns the fully qualified name for the resource with name {@code resourceName} relative
to the given context.
+     *
+     * <p>Note that this method does not check whether the resource actually exists.
+     * It only constructs the name.
+     * Null inputs are not allowed.</p>
+     *
+     * <pre>
+     * ClassPathUtils.toFullyQualifiedName(StringUtils.class, "StringUtils.properties") =
"org.apache.commons.lang3.StringUtils.properties"
+     * </pre>
+     *
+     * @param context The context for constructing the name.
+     * @param resourceName the resource name to construct the fully qualified name for.
+     * @return the fully qualified name of the resource with name {@code resourceName}.
+     * @throws java.lang.NullPointerException if either {@code context} or {@code resourceName}
is null.
+     */
+    public static String toFullyQualifiedName(final Class context, final String resourceName)
{
+        Validate.notNull(context, "Parameter '%s' must not be null!", "context" );
+        Validate.notNull(resourceName, "Parameter '%s' must not be null!", "resourceName");
+        return toFullyQualifiedName(context.getPackage(), resourceName);
+    }
+
+    /**
+     * Returns the fully qualified name for the resource with name {@code resourceName} relative
to the given context.
+     *
+     * <p>Note that this method does not check whether the resource actually exists.
+     * It only constructs the name.
+     * Null inputs are not allowed.</p>
+     *
+     * <pre>
+     * ClassPathUtils.toFullyQualifiedName(StringUtils.class.getPackage(), "StringUtils.properties")
= "org.apache.commons.lang3.StringUtils.properties"
+     * </pre>
+     *
+     * @param context The context for constructing the name.
+     * @param resourceName the resource name to construct the fully qualified name for.
+     * @return the fully qualified name of the resource with name {@code resourceName}.
+     * @throws java.lang.NullPointerException if either {@code context} or {@code resourceName}
is null.
+     */
+    public static String toFullyQualifiedName(final Package context, final String resourceName)
{
+        Validate.notNull(context, "Parameter '%s' must not be null!", "context" );
+        Validate.notNull(resourceName, "Parameter '%s' must not be null!", "resourceName");
+        StringBuilder sb = new StringBuilder();
+        sb.append(context.getName());
+        sb.append(".");
+        sb.append(resourceName);
+        return sb.toString();
+    }
+
+    /**
+     * Returns the fully qualified path for the resource with name {@code resourceName} relative
to the given context.
+     *
+     * <p>Note that this method does not check whether the resource actually exists.
+     * It only constructs the path.
+     * Null inputs are not allowed.</p>
+     *
+     * <pre>
+     * ClassPathUtils.toFullyQualifiedPath(StringUtils.class, "StringUtils.properties") =
"org/apache/commons/lang3/StringUtils.properties"
+     * </pre>
+     *
+     * @param context The context for constructing the path.
+     * @param resourceName the resource name to construct the fully qualified path for.
+     * @return the fully qualified path of the resource with name {@code resourceName}.
+     * @throws java.lang.NullPointerException if either {@code context} or {@code resourceName}
is null.
+     */
+    public static String toFullyQualifiedPath(final Class context, final String resourceName)
{
+        Validate.notNull(context, "Parameter '%s' must not be null!", "context" );
+        Validate.notNull(resourceName, "Parameter '%s' must not be null!", "resourceName");
+        return toFullyQualifiedPath(context.getPackage(), resourceName);
+    }
+
+
+    /**
+     * Returns the fully qualified path for the resource with name {@code resourceName} relative
to the given context.
+     *
+     * <p>Note that this method does not check whether the resource actually exists.
+     * It only constructs the path.
+     * Null inputs are not allowed.</p>
+     *
+     * <pre>
+     * ClassPathUtils.toFullyQualifiedPath(StringUtils.class.getPackage(), "StringUtils.properties")
= "org/apache/commons/lang3/StringUtils.properties"
+     * </pre>
+     *
+     * @param context The context for constructing the path.
+     * @param resourceName the resource name to construct the fully qualified path for.
+     * @return the fully qualified path of the resource with name {@code resourceName}.
+     * @throws java.lang.NullPointerException if either {@code context} or {@code resourceName}
is null.
+     */
+    public static String toFullyQualifiedPath(final Package context, final String resourceName)
{
+        Validate.notNull(context, "Parameter '%s' must not be null!", "context" );
+        Validate.notNull(resourceName, "Parameter '%s' must not be null!", "resourceName");
+        StringBuilder sb = new StringBuilder();
+        sb.append(context.getName().replace('.', '/'));
+        sb.append("/");
+        sb.append(resourceName);
+        return sb.toString();
+    }
+
+}

Propchange: commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/ClassPathUtils.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/ClassPathUtils.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/ClassPathUtilsTest.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/ClassPathUtilsTest.java?rev=1559495&view=auto
==============================================================================
--- commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/ClassPathUtilsTest.java
(added)
+++ commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/ClassPathUtilsTest.java
Sun Jan 19 13:26:45 2014
@@ -0,0 +1,99 @@
+/*
+ * 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.lang3;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+/**
+ * @version $Id$
+ */
+public class ClassPathUtilsTest {
+
+    @Test(expected = NullPointerException.class)
+    public void testToFullyQualifiedNameNullClassString() throws Exception {
+        ClassPathUtils.toFullyQualifiedName((Class<?>) null, "Test.properties");
+    }
+
+    @Test(expected = NullPointerException.class)
+    public void testToFullyQualifiedNameClassNull() throws Exception {
+        ClassPathUtils.toFullyQualifiedName(ClassPathUtils.class, null);
+    }
+
+    @Test
+    public void testToFullyQualifiedNameClassString() throws Exception {
+        String expected = "org.apache.commons.lang3.Test.properties";
+        String actual = ClassPathUtils.toFullyQualifiedName(ClassPathUtils.class, "Test.properties");
+
+        assertEquals(expected, actual);
+    }
+
+    @Test(expected = NullPointerException.class)
+    public void testToFullyQualifiedNameNullPackageString() throws Exception {
+        ClassPathUtils.toFullyQualifiedName((Package) null, "Test.properties");
+    }
+
+    @Test(expected = NullPointerException.class)
+    public void testToFullyQualifiedNamePackageNull() throws Exception {
+        ClassPathUtils.toFullyQualifiedName(ClassPathUtils.class.getPackage(), null);
+    }
+
+    @Test
+    public void testToFullyQualifiedNamePackageString() throws Exception {
+        String expected = "org.apache.commons.lang3.Test.properties";
+        String actual = ClassPathUtils.toFullyQualifiedName(ClassPathUtils.class.getPackage(),
"Test.properties");
+
+        assertEquals(expected, actual);
+    }
+
+    @Test(expected = NullPointerException.class)
+    public void testToFullyQualifiedPathClassNullString() throws Exception {
+        ClassPathUtils.toFullyQualifiedPath((Class<?>) null, "Test.properties");
+    }
+
+    @Test(expected = NullPointerException.class)
+    public void testToFullyQualifiedPathClassNull() throws Exception {
+        ClassPathUtils.toFullyQualifiedPath(ClassPathUtils.class, null);
+    }
+
+    @Test
+    public void testToFullyQualifiedPathClass() throws Exception {
+        String expected = "org/apache/commons/lang3/Test.properties";
+        String actual = ClassPathUtils.toFullyQualifiedPath(ClassPathUtils.class, "Test.properties");
+
+        assertEquals(expected, actual);
+    }
+
+    @Test(expected = NullPointerException.class)
+    public void testToFullyQualifiedPathPackageNullString() throws Exception {
+        ClassPathUtils.toFullyQualifiedPath((Package) null, "Test.properties");
+    }
+
+    @Test(expected = NullPointerException.class)
+    public void testToFullyQualifiedPathPackageNull() throws Exception {
+        ClassPathUtils.toFullyQualifiedPath(ClassPathUtils.class.getPackage(), null);
+    }
+
+    @Test
+    public void testToFullyQualifiedPathPackage() throws Exception {
+        String expected = "org/apache/commons/lang3/Test.properties";
+        String actual = ClassPathUtils.toFullyQualifiedPath(ClassPathUtils.class.getPackage(),
"Test.properties");
+
+        assertEquals(expected, actual);
+    }
+}

Propchange: commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/ClassPathUtilsTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/ClassPathUtilsTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL



Mime
View raw message