diff options
author | Tor Norbye <tnorbye@google.com> | 2013-01-09 17:22:07 -0800 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2013-01-14 16:49:11 -0800 |
commit | 918a4e76e93c4786dbf37c16355c99e52b4bcd66 (patch) | |
tree | cc30f877f8ab2f85fffee3997ac7e683b5d7f55f | |
parent | d593929c0b4c1669aefc5770a34233a4b819b684 (diff) | |
download | sdk-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.java | 11 | ||||
-rw-r--r-- | layoutlib_api/src/test/java/com/android/resources/ResourceFolderTypeTest.java | 30 |
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")); + } +} |