You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ni...@apache.org on 2012/02/17 13:24:33 UTC
svn commit: r1245426 -
/tika/trunk/tika-core/src/main/java/org/apache/tika/mime/MimeTypes.java
Author: nick
Date: Fri Feb 17 12:24:33 2012
New Revision: 1245426
URL: http://svn.apache.org/viewvc?rev=1245426&view=rev
Log:
TIKA-865 Reduce the amount of MimeTypes.forName that needs to be synchronized
Modified:
tika/trunk/tika-core/src/main/java/org/apache/tika/mime/MimeTypes.java
Modified: tika/trunk/tika-core/src/main/java/org/apache/tika/mime/MimeTypes.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/java/org/apache/tika/mime/MimeTypes.java?rev=1245426&r1=1245425&r2=1245426&view=diff
==============================================================================
--- tika/trunk/tika-core/src/main/java/org/apache/tika/mime/MimeTypes.java (original)
+++ tika/trunk/tika-core/src/main/java/org/apache/tika/mime/MimeTypes.java Fri Feb 17 12:24:33 2012
@@ -262,15 +262,23 @@ public final class MimeTypes implements
* @return the registered media type with the given name or alias
* @throws MimeTypeException if the given media type name is invalid
*/
- public synchronized MimeType forName(String name)
- throws MimeTypeException {
+ public MimeType forName(String name) throws MimeTypeException {
MediaType type = MediaType.parse(name);
if (type != null) {
- MimeType mime = types.get(registry.normalize(type));
+ MediaType normalisedType = registry.normalize(type);
+ MimeType mime = types.get(normalisedType);
+
if (mime == null) {
- mime = new MimeType(type);
- add(mime);
- types.put(type, mime);
+ synchronized (types) {
+ // Double check it didn't already get added while
+ // we were waiting for the lock
+ mime = types.get(normalisedType);
+ if (mime == null) {
+ mime = new MimeType(type);
+ add(mime);
+ types.put(type, mime);
+ }
+ }
}
return mime;
} else {