Author: sergiykarpenko
Date: 2010-09-06 05:26:17 -0400 (Mon, 06 Sep 2010)
New Revision: 3059
Modified:
core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/tika/TikaDocumentReaderServiceImpl.java
Log:
EXOJCR-749: TikaDocumentReaderService: lazy TikaDocumentReader registering synchronized
Modified:
core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/tika/TikaDocumentReaderServiceImpl.java
===================================================================
---
core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/tika/TikaDocumentReaderServiceImpl.java 2010-09-05
23:13:00 UTC (rev 3058)
+++
core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/tika/TikaDocumentReaderServiceImpl.java 2010-09-06
09:26:17 UTC (rev 3059)
@@ -79,18 +79,31 @@
// tika-config may contain really big amount of mimetypes, but used only few,
// so to avoid load in memory many copies of DocumentReader, we will register
it
// only if someone need it
- Parser tikaParser = conf.getParser(mimeType);
- if (tikaParser != null)
+ synchronized (this)
{
- TikaDocumentReader reader = new TikaDocumentReader(tikaParser, mimeType);
- //register new document reader
- super.readers_.put(mimeType, reader);
- return reader;
+ //check again - previous thread may register TikaDocumenReader that we are
looking
+ try
+ {
+ return super.getDocumentReader(mimeType);
+ }
+ catch (HandlerNotFoundException ex)
+ {
+ // keep working
+ }
+
+ Parser tikaParser = conf.getParser(mimeType);
+ if (tikaParser != null)
+ {
+ TikaDocumentReader reader = new TikaDocumentReader(tikaParser, mimeType);
+ //register new document reader
+ super.readers_.put(mimeType, reader);
+ return reader;
+ }
+ else
+ {
+ throw new HandlerNotFoundException("No appropriate properties
extractor for " + mimeType);
+ }
}
- else
- {
- throw new HandlerNotFoundException("No appropriate properties extractor
for " + mimeType);
- }
}
}
}
Show replies by date