diff --git a/src/main/java/org/codelibs/fess/thumbnail/ThumbnailManager.java b/src/main/java/org/codelibs/fess/thumbnail/ThumbnailManager.java index c5dde96e1..6f8770468 100644 --- a/src/main/java/org/codelibs/fess/thumbnail/ThumbnailManager.java +++ b/src/main/java/org/codelibs/fess/thumbnail/ThumbnailManager.java @@ -211,20 +211,24 @@ public class ThumbnailManager { idList.add(entity.getId()); final String generatorName = entity.getGenerator(); try { - final ThumbnailGenerator generator = ComponentUtil.getComponent(generatorName); final File outputFile = new File(baseDir, entity.getPath()); final File noImageFile = new File(outputFile.getAbsolutePath() + NOIMAGE_FILE_SUFFIX); if (!noImageFile.isFile() || System.currentTimeMillis() - noImageFile.lastModified() > noImageExpired) { if (noImageFile.isFile() && !noImageFile.delete()) { logger.warn("Failed to delete " + noImageFile.getAbsolutePath()); } - if (!generator.generate(entity.getThumbnailId(), outputFile)) { - new File(outputFile.getAbsolutePath() + NOIMAGE_FILE_SUFFIX).setLastModified(System.currentTimeMillis()); - } else { - final long interval = fessConfig.getThumbnailGeneratorIntervalAsInteger().longValue(); - if (interval > 0) { - Thread.sleep(interval); + final ThumbnailGenerator generator = ComponentUtil.getComponent(generatorName); + if (generator.isAvailable()) { + if (!generator.generate(entity.getThumbnailId(), outputFile)) { + new File(outputFile.getAbsolutePath() + NOIMAGE_FILE_SUFFIX).setLastModified(System.currentTimeMillis()); + } else { + final long interval = fessConfig.getThumbnailGeneratorIntervalAsInteger().longValue(); + if (interval > 0) { + Thread.sleep(interval); + } } + } else { + logger.warn(generatorName + " is not available."); } } else if (logger.isDebugEnabled()) { logger.debug("No image file exists: " + noImageFile.getAbsolutePath()); @@ -291,6 +295,7 @@ public class ThumbnailManager { } public void add(final ThumbnailGenerator generator) { + logger.info(generator.getName() + " is available."); if (generator.isAvailable()) { generatorList.add(generator); } diff --git a/src/main/java/org/codelibs/fess/thumbnail/impl/BaseThumbnailGenerator.java b/src/main/java/org/codelibs/fess/thumbnail/impl/BaseThumbnailGenerator.java index 4e8fa24ba..e545f6480 100644 --- a/src/main/java/org/codelibs/fess/thumbnail/impl/BaseThumbnailGenerator.java +++ b/src/main/java/org/codelibs/fess/thumbnail/impl/BaseThumbnailGenerator.java @@ -59,6 +59,8 @@ public abstract class BaseThumbnailGenerator implements ThumbnailGenerator { protected int maxRedirectCount = 10; + protected Boolean available = null; + public void addCondition(final String key, final String regex) { final String value = conditionMap.get(key); if (StringUtil.isBlank(value)) { @@ -84,6 +86,9 @@ public abstract class BaseThumbnailGenerator implements ThumbnailGenerator { @Override public boolean isAvailable() { + if (available != null) { + return available; + } if (generatorList != null && !generatorList.isEmpty()) { String path = System.getenv("PATH"); if (path == null) { @@ -97,7 +102,7 @@ public abstract class BaseThumbnailGenerator implements ThumbnailGenerator { if (path != null) { stream(path.split(File.pathSeparator)).of(stream -> stream.map(s -> s.trim()).forEach(s -> pathList.add(s))); } - return generatorList.stream().map(s -> { + available = generatorList.stream().map(s -> { if (s.startsWith("${path}")) { for (final String p : pathList) { final File f = new File(s.replace("${path}", p)); @@ -110,8 +115,10 @@ public abstract class BaseThumbnailGenerator implements ThumbnailGenerator { } return s; }).allMatch(s -> new File(s).isFile()); + } else { + available = true; } - return true; + return available; } @Override diff --git a/src/main/java/org/codelibs/fess/thumbnail/impl/EmptyGenerator.java b/src/main/java/org/codelibs/fess/thumbnail/impl/EmptyGenerator.java index f5530c8e1..f64ff9c5d 100644 --- a/src/main/java/org/codelibs/fess/thumbnail/impl/EmptyGenerator.java +++ b/src/main/java/org/codelibs/fess/thumbnail/impl/EmptyGenerator.java @@ -28,9 +28,4 @@ public class EmptyGenerator extends BaseThumbnailGenerator { public void destroy() { // nothing } - - @Override - public boolean isAvailable() { - return true; - } }