fix #1292 check generatorList

This commit is contained in:
Shinsuke Sugaya 2017-09-28 18:39:57 +09:00
parent 2ee2160dcc
commit a10416816b
3 changed files with 21 additions and 14 deletions

View file

@ -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);
}

View file

@ -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

View file

@ -28,9 +28,4 @@ public class EmptyGenerator extends BaseThumbnailGenerator {
public void destroy() {
// nothing
}
@Override
public boolean isAvailable() {
return true;
}
}