aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2013-01-09 17:22:07 -0800
committerTor Norbye <tnorbye@google.com>2013-01-14 16:49:11 -0800
commit918a4e76e93c4786dbf37c16355c99e52b4bcd66 (patch)
treecc30f877f8ab2f85fffee3997ac7e683b5d7f55f
parentd593929c0b4c1669aefc5770a34233a4b819b684 (diff)
downloadsdk-918a4e76e93c4786dbf37c16355c99e52b4bcd66.zip
sdk-918a4e76e93c4786dbf37c16355c99e52b4bcd66.tar.gz
sdk-918a4e76e93c4786dbf37c16355c99e52b4bcd66.tar.bz2
Faster ResourceFolderType.getFolderType(String folderName)
Change-Id: I7142846efabcb6aadeec2a609ebbc14964120301
-rw-r--r--layoutlib_api/src/main/java/com/android/resources/ResourceFolderType.java11
-rw-r--r--layoutlib_api/src/test/java/com/android/resources/ResourceFolderTypeTest.java30
2 files changed, 36 insertions, 5 deletions
diff --git a/layoutlib_api/src/main/java/com/android/resources/ResourceFolderType.java b/layoutlib_api/src/main/java/com/android/resources/ResourceFolderType.java
index 65c1cb3..5a271cf 100644
--- a/layoutlib_api/src/main/java/com/android/resources/ResourceFolderType.java
+++ b/layoutlib_api/src/main/java/com/android/resources/ResourceFolderType.java
@@ -51,6 +51,7 @@ public enum ResourceFolderType {
* @return the enum or null if not found.
*/
public static ResourceFolderType getTypeByName(String name) {
+ assert name.indexOf('-') == -1 : name; // use #getFolderType instead
for (ResourceFolderType rType : values()) {
if (rType.mName.equals(name)) {
return rType;
@@ -67,10 +68,10 @@ public enum ResourceFolderType {
* <code>null</code> if no matching type was found.
*/
public static ResourceFolderType getFolderType(String folderName) {
- // split the name of the folder in segments.
- String[] folderSegments = folderName.split(ResourceConstants.RES_QUALIFIER_SEP);
-
- // get the enum for the resource type.
- return getTypeByName(folderSegments[0]);
+ int index = folderName.indexOf(ResourceConstants.RES_QUALIFIER_SEP);
+ if (index != -1) {
+ folderName = folderName.substring(0, index);
+ }
+ return getTypeByName(folderName);
}
}
diff --git a/layoutlib_api/src/test/java/com/android/resources/ResourceFolderTypeTest.java b/layoutlib_api/src/test/java/com/android/resources/ResourceFolderTypeTest.java
new file mode 100644
index 0000000..a3c2c51
--- /dev/null
+++ b/layoutlib_api/src/test/java/com/android/resources/ResourceFolderTypeTest.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed 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 com.android.resources;
+
+import junit.framework.TestCase;
+
+public class ResourceFolderTypeTest extends TestCase {
+ public void test() {
+ assertEquals(ResourceFolderType.LAYOUT, ResourceFolderType.getFolderType("layout"));
+ assertEquals(ResourceFolderType.LAYOUT, ResourceFolderType.getFolderType("layout-port"));
+ assertEquals(ResourceFolderType.LAYOUT, ResourceFolderType.getFolderType("layout-port-sw600"));
+ assertEquals(ResourceFolderType.VALUES, ResourceFolderType.getFolderType("values"));
+
+ assertNull(ResourceFolderType.getFolderType(""));
+ assertNull(ResourceFolderType.getFolderType("foo"));
+ }
+}