Skip to content
This repository was archived by the owner on May 14, 2020. It is now read-only.

Commit 2d50506

Browse files
author
Denis Kurochkin
committed
REPO-239 Change FileType lookup logic to fit with the type strings that FileApi accept
FileType.lookup() stays backward compatible, but now it should also accept snake-cased type names
1 parent f7729ef commit 2d50506

2 files changed

Lines changed: 39 additions & 10 deletions

File tree

api-sdk/src/main/java/com/smartling/api/sdk/file/FileType.java

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717

1818
import org.apache.commons.lang3.StringUtils;
1919

20+
import java.util.HashMap;
21+
import java.util.Map;
22+
2023
public enum FileType
2124
{
2225
JAVA_PROPERTIES("text/plain", true), // Java resources
@@ -50,7 +53,19 @@ public enum FileType
5053
private final String mimeType;
5154
private final boolean isTextFormat;
5255

53-
private static String createIdentifier(String s)
56+
// Lookup map
57+
public final static Map<String, FileType> BY_NAME_LOOKUP = new HashMap<>();
58+
59+
static
60+
{
61+
for (final FileType value : FileType.values())
62+
{
63+
BY_NAME_LOOKUP.put(value.identifier.toLowerCase(), value);
64+
BY_NAME_LOOKUP.put(value.name().toLowerCase(), value);
65+
}
66+
}
67+
68+
private static String toLowerCamel(String s)
5469
{
5570
StringBuilder buf = new StringBuilder();
5671
String[] parts = s.split("_");
@@ -61,9 +76,9 @@ private static String createIdentifier(String s)
6176
return buf.toString();
6277
}
6378

64-
private FileType(final String mimeType, final boolean isTextFormat)
79+
FileType(final String mimeType, final boolean isTextFormat)
6580
{
66-
this.identifier = createIdentifier(name());
81+
this.identifier = toLowerCamel(name());
6782
this.mimeType = mimeType;
6883
this.isTextFormat = isTextFormat;
6984
}
@@ -85,12 +100,6 @@ public boolean isTextFormat()
85100

86101
public static FileType lookup(final String fileTypeString)
87102
{
88-
for (final FileType fileType : FileType.values())
89-
{
90-
if (fileType.identifier.equalsIgnoreCase(fileTypeString))
91-
return fileType;
92-
}
93-
94-
return null;
103+
return BY_NAME_LOOKUP.get(StringUtils.lowerCase(fileTypeString));
95104
}
96105
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.smartling.api.sdk.file;
2+
3+
import org.junit.Assert;
4+
import org.junit.Test;
5+
6+
import static com.smartling.api.sdk.file.FileType.JAVA_PROPERTIES;
7+
8+
public class FileTypeTest
9+
{
10+
@Test
11+
public void testLookup()
12+
{
13+
Assert.assertEquals(JAVA_PROPERTIES, FileType.lookup("javaProperties"));
14+
Assert.assertEquals(JAVA_PROPERTIES, FileType.lookup("JaVaPrOpErTiEs"));
15+
Assert.assertEquals(JAVA_PROPERTIES, FileType.lookup("JaVa_PrOpErTiEs"));
16+
Assert.assertEquals(JAVA_PROPERTIES, FileType.lookup(JAVA_PROPERTIES.name()));
17+
Assert.assertEquals(JAVA_PROPERTIES, FileType.lookup(JAVA_PROPERTIES.toString()));
18+
Assert.assertNull(FileType.lookup("A_NON_EXISTING_CONTENT_TYPE"));
19+
}
20+
}

0 commit comments

Comments
 (0)