You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2018/05/31 01:53:44 UTC

[05/14] james-project git commit: MAILBOX-338 Allow to disable Tika

MAILBOX-338 Allow to disable Tika


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/ed4166a5
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/ed4166a5
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/ed4166a5

Branch: refs/heads/master
Commit: ed4166a52565746b4a183e4db2529738ac5823a9
Parents: 64b2c28
Author: benwa <bt...@linagora.com>
Authored: Sun May 27 13:54:17 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu May 31 08:53:16 2018 +0700

----------------------------------------------------------------------
 mailbox/tika/pom.xml                            |  20 +++-
 .../james/mailbox/tika/TikaConfiguration.java   | 106 ++++++++++++++++---
 .../mailbox/tika/CachingTextExtractorTest.java  |  11 +-
 .../mailbox/TikaConfigurationReader.java        |  30 ++++--
 .../modules/mailbox/TikaMailboxModule.java      |  31 +++---
 .../mailbox/TikaConfigurationReaderTest.java    |  87 +++++++++++----
 6 files changed, 221 insertions(+), 64 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/ed4166a5/mailbox/tika/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/tika/pom.xml b/mailbox/tika/pom.xml
index 8d78433..f926a35 100644
--- a/mailbox/tika/pom.xml
+++ b/mailbox/tika/pom.xml
@@ -72,11 +72,6 @@
             <artifactId>commons-configuration</artifactId>
         </dependency>
         <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
         </dependency>
@@ -91,6 +86,21 @@
             <scope>test</scope>
         </dependency>
         <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.platform</groupId>
+            <artifactId>junit-platform-launcher</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.vintage</groupId>
+            <artifactId>junit-vintage-engine</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>org.mockito</groupId>
             <artifactId>mockito-core</artifactId>
             <scope>test</scope>

http://git-wip-us.apache.org/repos/asf/james-project/blob/ed4166a5/mailbox/tika/src/main/java/org/apache/james/mailbox/tika/TikaConfiguration.java
----------------------------------------------------------------------
diff --git a/mailbox/tika/src/main/java/org/apache/james/mailbox/tika/TikaConfiguration.java b/mailbox/tika/src/main/java/org/apache/james/mailbox/tika/TikaConfiguration.java
index e7994b7..113c1e9 100644
--- a/mailbox/tika/src/main/java/org/apache/james/mailbox/tika/TikaConfiguration.java
+++ b/mailbox/tika/src/main/java/org/apache/james/mailbox/tika/TikaConfiguration.java
@@ -22,19 +22,18 @@ package org.apache.james.mailbox.tika;
 import java.time.Duration;
 import java.util.Objects;
 import java.util.Optional;
+import java.util.concurrent.TimeUnit;
 
 import org.apache.james.util.Port;
 
 import com.google.common.base.Preconditions;
+import com.google.common.primitives.Ints;
 
 public class TikaConfiguration {
 
-    public static Builder builder() {
-        return new Builder();
-    }
-
     public static class Builder {
-
+        private Optional<Boolean> isEnabled;
+        private Optional<Boolean> isCacheEnabled;
         private Optional<String> host;
         private Optional<Integer> port;
         private Optional<Integer> timeoutInMillis;
@@ -42,6 +41,8 @@ public class TikaConfiguration {
         private Optional<Long> cacheWeightInBytes;
 
         private Builder() {
+            isEnabled = Optional.empty();
+            isCacheEnabled = Optional.empty();
             host = Optional.empty();
             port = Optional.empty();
             timeoutInMillis = Optional.empty();
@@ -49,8 +50,47 @@ public class TikaConfiguration {
             cacheWeightInBytes = Optional.empty();
         }
 
+        public Builder enable(Optional<Boolean> isEnabled) {
+            Preconditions.checkNotNull(isEnabled);
+            this.isEnabled = isEnabled;
+            return this;
+        }
+
+        public Builder enabled() {
+            this.isEnabled = Optional.of(true);
+            return this;
+        }
+
+        public Builder disabled() {
+            this.isEnabled = Optional.of(false);
+            return this;
+        }
+
+        public Builder cacheEnable(Optional<Boolean> isEnabled) {
+            Preconditions.checkNotNull(isEnabled);
+            this.isCacheEnabled = isEnabled;
+            return this;
+        }
+
+        public Builder cacheEnabled() {
+            this.isCacheEnabled = Optional.of(true);
+            return this;
+        }
+
+        public Builder cacheDisabled() {
+            this.isCacheEnabled = Optional.of(false);
+            return this;
+        }
+
         public Builder host(String host) {
-            this.host = Optional.ofNullable(host);
+            Preconditions.checkNotNull(host);
+            this.host = Optional.of(host);
+            return this;
+        }
+
+        public Builder host(Optional<String> host) {
+            Preconditions.checkNotNull(host);
+            this.host = host;
             return this;
         }
 
@@ -59,11 +99,23 @@ public class TikaConfiguration {
             return this;
         }
 
+        public Builder port(Optional<Integer> port) {
+            Preconditions.checkNotNull(port);
+            this.port = port;
+            return this;
+        }
+
         public Builder timeoutInMillis(int timeoutInMillis) {
             this.timeoutInMillis = Optional.of(timeoutInMillis);
             return this;
         }
 
+        public Builder timeoutInMillis(Optional<Integer> timeoutInMillis) {
+            Preconditions.checkNotNull(timeoutInMillis);
+            this.timeoutInMillis = timeoutInMillis;
+            return this;
+        }
+
         public Builder cacheEvictionPeriod(Duration duration) {
             this.cacheEvictionPeriod = Optional.of(duration);
             return this;
@@ -85,26 +137,41 @@ public class TikaConfiguration {
         }
 
         public TikaConfiguration build() {
-            Preconditions.checkState(host.isPresent(), "'host' is mandatory");
-            Preconditions.checkState(port.isPresent(), "'port' is mandatory");
-            Preconditions.checkState(timeoutInMillis.isPresent(), "'timeoutInMillis' is mandatory");
-            Port.assertValid(port.get());
-
-            return new TikaConfiguration(host.get(), port.get(), timeoutInMillis.get(),
+            port.ifPresent(Port::assertValid);
+
+            return new TikaConfiguration(
+                isEnabled.orElse(DEFAULT_DISABLED),
+                isCacheEnabled.orElse(DEFAULT_DISABLED),
+                host.orElse(DEFAULT_HOST),
+                port.orElse(DEFAULT_PORT),
+                timeoutInMillis.orElse(DEFAULT_TIMEOUT_IN_MS),
                 cacheEvictionPeriod.orElse(DEFAULT_CACHE_EVICTION_PERIOD),
                 cacheWeightInBytes.orElse(DEFAULT_CACHE_LIMIT_100_MB));
         }
     }
+
     public static final long DEFAULT_CACHE_LIMIT_100_MB = 1024L * 1024L * 100L;
     public static final Duration DEFAULT_CACHE_EVICTION_PERIOD = Duration.ofDays(1);
+    public static final boolean DEFAULT_DISABLED = false;
+    public static final String DEFAULT_HOST = "127.0.0.1";
+    public static final int DEFAULT_PORT = 9998;
+    public static final int DEFAULT_TIMEOUT_IN_MS = Ints.checkedCast(TimeUnit.SECONDS.toMillis(30));
+
+    public static Builder builder() {
+        return new Builder();
+    }
 
+    private final boolean enabled;
+    private final boolean cacheEnabled;
     private final String host;
     private final int port;
     private final int timeoutInMillis;
     private final Duration cacheEvictionPeriod;
     private final long cacheWeightInBytes;
 
-    private TikaConfiguration(String host, int port, int timeoutInMillis, Duration cacheEvictionPeriod, long cacheWeightInBytes) {
+    private TikaConfiguration(boolean enabled, boolean cacheEnabled, String host, int port, int timeoutInMillis, Duration cacheEvictionPeriod, long cacheWeightInBytes) {
+        this.enabled = enabled;
+        this.cacheEnabled = cacheEnabled;
         this.host = host;
         this.port = port;
         this.timeoutInMillis = timeoutInMillis;
@@ -112,6 +179,14 @@ public class TikaConfiguration {
         this.cacheWeightInBytes = cacheWeightInBytes;
     }
 
+    public boolean isEnabled() {
+        return enabled;
+    }
+
+    public boolean isCacheEnabled() {
+        return cacheEnabled;
+    }
+
     public String getHost() {
         return host;
     }
@@ -137,7 +212,8 @@ public class TikaConfiguration {
         if (o instanceof TikaConfiguration) {
             TikaConfiguration that = (TikaConfiguration) o;
 
-            return Objects.equals(this.port, that.port)
+            return Objects.equals(this.enabled, that.enabled)
+                && Objects.equals(this.port, that.port)
                 && Objects.equals(this.timeoutInMillis, that.timeoutInMillis)
                 && Objects.equals(this.cacheWeightInBytes, that.cacheWeightInBytes)
                 && Objects.equals(this.host, that.host)
@@ -148,7 +224,7 @@ public class TikaConfiguration {
 
     @Override
     public final int hashCode() {
-        return Objects.hash(host, port, timeoutInMillis, cacheEvictionPeriod, cacheWeightInBytes);
+        return Objects.hash(enabled, host, port, timeoutInMillis, cacheEvictionPeriod, cacheWeightInBytes);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/ed4166a5/mailbox/tika/src/test/java/org/apache/james/mailbox/tika/CachingTextExtractorTest.java
----------------------------------------------------------------------
diff --git a/mailbox/tika/src/test/java/org/apache/james/mailbox/tika/CachingTextExtractorTest.java b/mailbox/tika/src/test/java/org/apache/james/mailbox/tika/CachingTextExtractorTest.java
index 54e743f..e34f95c 100644
--- a/mailbox/tika/src/test/java/org/apache/james/mailbox/tika/CachingTextExtractorTest.java
+++ b/mailbox/tika/src/test/java/org/apache/james/mailbox/tika/CachingTextExtractorTest.java
@@ -36,19 +36,20 @@ import java.util.function.Supplier;
 import org.apache.james.mailbox.extractor.ParsedContent;
 import org.apache.james.mailbox.extractor.TextExtractor;
 import org.apache.james.metrics.api.NoopMetricFactory;
-import org.junit.Before;
-import org.junit.Test;
-import org.testcontainers.shaded.com.google.common.collect.ImmutableMap;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import com.google.common.collect.ImmutableMap;
 
 public class CachingTextExtractorTest {
 
     public static final ParsedContent RESULT = new ParsedContent("content", ImmutableMap.of());
     public static final Supplier<InputStream> INPUT_STREAM_1 = () -> new ByteArrayInputStream("content1".getBytes(StandardCharsets.UTF_8));
 
-    private TextExtractor textExtractor;
+    private CachingTextExtractor textExtractor;
     private TextExtractor wrappedTextExtractor;
 
-    @Before
+    @BeforeEach
     public void setUp() throws Exception {
         wrappedTextExtractor = mock(TextExtractor.class);
         textExtractor = new CachingTextExtractor(wrappedTextExtractor,

http://git-wip-us.apache.org/repos/asf/james-project/blob/ed4166a5/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/TikaConfigurationReader.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/TikaConfigurationReader.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/TikaConfigurationReader.java
index 13ca0cd..6907330 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/TikaConfigurationReader.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/TikaConfigurationReader.java
@@ -21,7 +21,6 @@ package org.apache.james.modules.mailbox;
 
 import java.time.Duration;
 import java.util.Optional;
-import java.util.concurrent.TimeUnit;
 
 import org.apache.commons.configuration.PropertiesConfiguration;
 import org.apache.james.mailbox.tika.TikaConfiguration;
@@ -29,19 +28,32 @@ import org.apache.james.util.Size;
 import org.apache.james.util.TimeConverter;
 
 import com.github.fge.lambdas.Throwing;
-import com.google.common.primitives.Ints;
 
 public class TikaConfigurationReader {
+    public static final String TIKA_ENABLED = "tika.enabled";
+    public static final String TIKA_CACHE_ENABLED = "tika.cache.enabled";
     public static final String TIKA_HOST = "tika.host";
     public static final String TIKA_PORT = "tika.port";
     public static final String TIKA_TIMEOUT_IN_MS = "tika.timeoutInMillis";
-    public static final String DEFAULT_HOST = "127.0.0.1";
-    public static final int DEFAULT_PORT = 9998;
     public static final String TIKA_CACHE_EVICTION_PERIOD = "tika.cache.eviction.period";
     public static final String TIKA_CACHE_WEIGHT_MAX = "tika.cache.weight.max";
-    public static final int DEFAULT_TIMEOUT_IN_MS = Ints.checkedCast(TimeUnit.SECONDS.toMillis(30));
 
     public static TikaConfiguration readTikaConfiguration(PropertiesConfiguration configuration) {
+        Optional<Boolean> enabled = Optional.ofNullable(
+            configuration.getBoolean(TIKA_ENABLED, null));
+
+        Optional<Boolean> cacheEnabled = Optional.ofNullable(
+            configuration.getBoolean(TIKA_CACHE_ENABLED, null));
+
+        Optional<String> host = Optional.ofNullable(
+            configuration.getString(TIKA_HOST, null));
+
+        Optional<Integer> port = Optional.ofNullable(
+            configuration.getInteger(TIKA_PORT, null));
+
+        Optional<Integer> timeoutInMillis = Optional.ofNullable(
+            configuration.getInteger(TIKA_TIMEOUT_IN_MS, null));
+
         Optional<Duration> cacheEvictionPeriod = Optional.ofNullable(
             configuration.getString(TIKA_CACHE_EVICTION_PERIOD,
                 null))
@@ -54,9 +66,11 @@ public class TikaConfigurationReader {
             .map(Size::asBytes);
 
         return TikaConfiguration.builder()
-            .host(configuration.getString(TIKA_HOST, DEFAULT_HOST))
-            .port(configuration.getInt(TIKA_PORT, DEFAULT_PORT))
-            .timeoutInMillis(configuration.getInt(TIKA_TIMEOUT_IN_MS, DEFAULT_TIMEOUT_IN_MS))
+            .enable(enabled)
+            .host(host)
+            .port(port)
+            .timeoutInMillis(timeoutInMillis)
+            .cacheEnable(cacheEnabled)
             .cacheEvictionPeriod(cacheEvictionPeriod)
             .cacheWeightInBytes(cacheWeight)
             .build();

http://git-wip-us.apache.org/repos/asf/james-project/blob/ed4166a5/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/TikaMailboxModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/TikaMailboxModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/TikaMailboxModule.java
index b5421f6..08bcfa5 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/TikaMailboxModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/TikaMailboxModule.java
@@ -19,10 +19,6 @@
 
 package org.apache.james.modules.mailbox;
 
-import static org.apache.james.modules.mailbox.TikaConfigurationReader.DEFAULT_HOST;
-import static org.apache.james.modules.mailbox.TikaConfigurationReader.DEFAULT_PORT;
-import static org.apache.james.modules.mailbox.TikaConfigurationReader.DEFAULT_TIMEOUT_IN_MS;
-
 import java.io.FileNotFoundException;
 import java.net.URISyntaxException;
 
@@ -31,6 +27,7 @@ import javax.inject.Singleton;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.PropertiesConfiguration;
 import org.apache.james.mailbox.extractor.TextExtractor;
+import org.apache.james.mailbox.store.extractor.DefaultTextExtractor;
 import org.apache.james.mailbox.tika.CachingTextExtractor;
 import org.apache.james.mailbox.tika.TikaConfiguration;
 import org.apache.james.mailbox.tika.TikaHttpClient;
@@ -71,22 +68,30 @@ public class TikaMailboxModule extends AbstractModule {
 
             return TikaConfigurationReader.readTikaConfiguration(configuration);
         } catch (FileNotFoundException e) {
-            LOGGER.warn("Could not find {} configuration file. Using {}:{} as contact point", TIKA_CONFIGURATION_NAME, DEFAULT_HOST, DEFAULT_PORT);
+            LOGGER.warn("Could not find {} configuration file. Disabling Tika.", TIKA_CONFIGURATION_NAME);
             return TikaConfiguration.builder()
-                    .host(DEFAULT_HOST)
-                    .port(DEFAULT_PORT)
-                    .timeoutInMillis(DEFAULT_TIMEOUT_IN_MS)
-                    .build();
+                .disabled()
+                .build();
         }
     }
 
     @Provides
     @Singleton
     private TextExtractor provideTextExtractor(TikaTextExtractor textExtractor, TikaConfiguration configuration, MetricFactory metricFactory) {
-        return new CachingTextExtractor(
-            textExtractor,
-            configuration.getCacheEvictionPeriod(),
-            configuration.getCacheWeightInBytes(), metricFactory);
+        if (configuration.isEnabled() && configuration.isCacheEnabled()) {
+            LOGGER.info("Tika cache has been enabled.");
+            return new CachingTextExtractor(
+                textExtractor,
+                configuration.getCacheEvictionPeriod(),
+                configuration.getCacheWeightInBytes(), metricFactory);
+        }
+        if (configuration.isEnabled()) {
+            return textExtractor;
+        }
+        LOGGER.info("Tika text extraction has been disabled." +
+            " Using DefaultTextExtractor instead. " +
+            "No complex extraction will be done.");
+        return new DefaultTextExtractor();
     }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/ed4166a5/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/mailbox/TikaConfigurationReaderTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/mailbox/TikaConfigurationReaderTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/mailbox/TikaConfigurationReaderTest.java
index 484c8f0..c66df2d 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/mailbox/TikaConfigurationReaderTest.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/mailbox/TikaConfigurationReaderTest.java
@@ -34,16 +34,19 @@ public class TikaConfigurationReaderTest {
     public void readTikaConfigurationShouldAcceptMandatoryValues() throws Exception {
         PropertiesConfiguration configuration = new PropertiesConfiguration();
         configuration.load(new StringReader(
+                "tika.enabled=true\n" +
             "tika.host=172.0.0.5\n" +
-                "tika.port=889\n" +
-                "tika.timeoutInMillis=500\n"));
+            "tika.port=889\n" +
+            "tika.timeoutInMillis=500\n"));
 
         assertThat(TikaConfigurationReader.readTikaConfiguration(configuration))
             .isEqualTo(
                 TikaConfiguration.builder()
+                    .enabled()
                     .host("172.0.0.5")
                     .port(889)
                     .timeoutInMillis(500)
+                    .cacheDisabled()
                     .cacheWeightInBytes(100L * 1024L *1024L)
                     .cacheEvictionPeriod(Duration.ofDays(1))
                     .build());
@@ -53,12 +56,14 @@ public class TikaConfigurationReaderTest {
     public void readTikaConfigurationShouldReturnDefaultOnMissingHost() throws Exception {
         PropertiesConfiguration configuration = new PropertiesConfiguration();
         configuration.load(new StringReader(
-                "tika.port=889\n" +
-                "tika.timeoutInMillis=500\n"));
+            "tika.enabled=true\n" +
+            "tika.port=889\n" +
+            "tika.timeoutInMillis=500\n"));
 
         assertThat(TikaConfigurationReader.readTikaConfiguration(configuration))
             .isEqualTo(
                 TikaConfiguration.builder()
+                    .enabled()
                     .host("127.0.0.1")
                     .port(889)
                     .timeoutInMillis(500)
@@ -69,12 +74,14 @@ public class TikaConfigurationReaderTest {
     public void readTikaConfigurationShouldReturnDefaultOnMissingPort() throws Exception {
         PropertiesConfiguration configuration = new PropertiesConfiguration();
         configuration.load(new StringReader(
+            "tika.enabled=true\n" +
             "tika.host=172.0.0.5\n" +
-                "tika.timeoutInMillis=500\n"));
+            "tika.timeoutInMillis=500\n"));
 
         assertThat(TikaConfigurationReader.readTikaConfiguration(configuration))
             .isEqualTo(
                 TikaConfiguration.builder()
+                    .enabled()
                     .host("172.0.0.5")
                     .port(9998)
                     .timeoutInMillis(500)
@@ -85,31 +92,46 @@ public class TikaConfigurationReaderTest {
     public void readTikaConfigurationShouldReturnDefaultOnMissingTimeout() throws Exception {
         PropertiesConfiguration configuration = new PropertiesConfiguration();
         configuration.load(new StringReader(
+            "tika.enabled=true\n" +
             "tika.host=172.0.0.5\n" +
-                "tika.port=889\n"));
+            "tika.port=889\n"));
 
         assertThat(TikaConfigurationReader.readTikaConfiguration(configuration))
             .isEqualTo(
                 TikaConfiguration.builder()
+                    .enabled()
                     .host("172.0.0.5")
                     .port(889)
                     .timeoutInMillis(30 * 1000)
                     .build());
     }
 
+    @Test
+    public void tikaShouldBeDisabledByDefault() throws Exception {
+        PropertiesConfiguration configuration = new PropertiesConfiguration();
+        configuration.load(new StringReader(""));
+
+        assertThat(TikaConfigurationReader.readTikaConfiguration(configuration))
+            .isEqualTo(
+                TikaConfiguration.builder()
+                    .disabled()
+                    .build());
+    }
 
     @Test
     public void readTikaConfigurationShouldParseUnitForCacheEvictionPeriod() throws Exception {
         PropertiesConfiguration configuration = new PropertiesConfiguration();
         configuration.load(new StringReader(
+            "tika.enabled=true\n" +
             "tika.host=172.0.0.5\n" +
-                "tika.port=889\n" +
-                "tika.timeoutInMillis=500\n" +
-                "tika.cache.eviction.period=2H"));
+            "tika.port=889\n" +
+            "tika.timeoutInMillis=500\n" +
+            "tika.cache.eviction.period=2H"));
 
         assertThat(TikaConfigurationReader.readTikaConfiguration(configuration))
             .isEqualTo(
                 TikaConfiguration.builder()
+                    .enabled()
                     .host("172.0.0.5")
                     .port(889)
                     .timeoutInMillis(500)
@@ -121,14 +143,16 @@ public class TikaConfigurationReaderTest {
     public void readTikaConfigurationShouldDefaultToSecondWhenMissingUnitForCacheEvitionPeriod() throws Exception {
         PropertiesConfiguration configuration = new PropertiesConfiguration();
         configuration.load(new StringReader(
+            "tika.enabled=true\n" +
             "tika.host=172.0.0.5\n" +
-                "tika.port=889\n" +
-                "tika.timeoutInMillis=500\n" +
-                "tika.cache.eviction.period=3600"));
+            "tika.port=889\n" +
+            "tika.timeoutInMillis=500\n" +
+            "tika.cache.eviction.period=3600"));
 
         assertThat(TikaConfigurationReader.readTikaConfiguration(configuration))
             .isEqualTo(
                 TikaConfiguration.builder()
+                    .enabled()
                     .host("172.0.0.5")
                     .port(889)
                     .timeoutInMillis(500)
@@ -140,14 +164,16 @@ public class TikaConfigurationReaderTest {
     public void readTikaConfigurationShouldParseUnitForCacheWeightMax() throws Exception {
         PropertiesConfiguration configuration = new PropertiesConfiguration();
         configuration.load(new StringReader(
+            "tika.enabled=true\n" +
             "tika.host=172.0.0.5\n" +
-                "tika.port=889\n" +
-                "tika.timeoutInMillis=500\n" +
-                "tika.cache.weight.max=200M"));
+            "tika.port=889\n" +
+            "tika.timeoutInMillis=500\n" +
+            "tika.cache.weight.max=200M"));
 
         assertThat(TikaConfigurationReader.readTikaConfiguration(configuration))
             .isEqualTo(
                 TikaConfiguration.builder()
+                    .enabled()
                     .host("172.0.0.5")
                     .port(889)
                     .timeoutInMillis(500)
@@ -159,14 +185,39 @@ public class TikaConfigurationReaderTest {
     public void readTikaConfigurationShouldDefaultToByteAsSizeUnit() throws Exception {
         PropertiesConfiguration configuration = new PropertiesConfiguration();
         configuration.load(new StringReader(
+            "tika.enabled=true\n" +
+            "tika.host=172.0.0.5\n" +
+            "tika.port=889\n" +
+            "tika.timeoutInMillis=500\n" +
+            "tika.cache.weight.max=1520000"));
+
+        assertThat(TikaConfigurationReader.readTikaConfiguration(configuration))
+            .isEqualTo(
+                TikaConfiguration.builder()
+                    .enabled()
+                    .host("172.0.0.5")
+                    .port(889)
+                    .timeoutInMillis(500)
+                    .cacheWeightInBytes(1520000)
+                    .build());
+    }
+
+    @Test
+    public void readTikaConfigurationShouldEnableCacheWhenConfigured() throws Exception {
+        PropertiesConfiguration configuration = new PropertiesConfiguration();
+        configuration.load(new StringReader(
+            "tika.enabled=true\n" +
+            "tika.cache.enabled=true\n" +
             "tika.host=172.0.0.5\n" +
-                "tika.port=889\n" +
-                "tika.timeoutInMillis=500\n" +
-                "tika.cache.weight.max=1520000"));
+            "tika.port=889\n" +
+            "tika.timeoutInMillis=500\n" +
+            "tika.cache.weight.max=1520000"));
 
         assertThat(TikaConfigurationReader.readTikaConfiguration(configuration))
             .isEqualTo(
                 TikaConfiguration.builder()
+                    .enabled()
+                    .cacheEnabled()
                     .host("172.0.0.5")
                     .port(889)
                     .timeoutInMillis(500)


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org