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 ma...@apache.org on 2018/07/20 08:05:04 UTC
[03/19] james-project git commit: JAMES-2472 refactor hashing code to
use guava
JAMES-2472 refactor hashing code to use guava
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/18340831
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/18340831
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/18340831
Branch: refs/heads/master
Commit: 18340831fd5e7f33c547c75ea0dcf56386ff3044
Parents: 18f5da3
Author: Matthieu Baechler <ma...@apache.org>
Authored: Tue Jul 17 16:23:08 2018 +0200
Committer: Matthieu Baechler <ma...@apache.org>
Committed: Fri Jul 20 10:03:52 2018 +0200
----------------------------------------------------------------------
.../org/apache/james/mailbox/model/BlobId.java | 5 ++--
.../mailbox/tika/CachingTextExtractor.java | 4 +--
.../james/blob/cassandra/CassandraBlobId.java | 4 +--
.../apache/james/user/jpa/model/JPAUser.java | 30 +++++++++++++-------
.../DockerClusterRabbitMQExtension.java | 6 ++--
5 files changed, 29 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/18340831/mailbox/api/src/main/java/org/apache/james/mailbox/model/BlobId.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/BlobId.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/BlobId.java
index 34a62e3..b5b25ad 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/BlobId.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/BlobId.java
@@ -21,16 +21,15 @@ package org.apache.james.mailbox.model;
import java.util.Objects;
-import org.apache.commons.codec.digest.DigestUtils;
-
import com.google.common.base.MoreObjects;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
+import com.google.common.hash.Hashing;
public class BlobId {
public static BlobId fromBytes(byte[] bytes) {
Preconditions.checkNotNull(bytes);
- return new BlobId(DigestUtils.sha256Hex(bytes));
+ return new BlobId(Hashing.sha256().hashBytes(bytes).toString());
}
public static BlobId fromString(String raw) {
http://git-wip-us.apache.org/repos/asf/james-project/blob/18340831/mailbox/tika/src/main/java/org/apache/james/mailbox/tika/CachingTextExtractor.java
----------------------------------------------------------------------
diff --git a/mailbox/tika/src/main/java/org/apache/james/mailbox/tika/CachingTextExtractor.java b/mailbox/tika/src/main/java/org/apache/james/mailbox/tika/CachingTextExtractor.java
index 3db1ad9..9feaf55 100644
--- a/mailbox/tika/src/main/java/org/apache/james/mailbox/tika/CachingTextExtractor.java
+++ b/mailbox/tika/src/main/java/org/apache/james/mailbox/tika/CachingTextExtractor.java
@@ -26,7 +26,6 @@ import java.util.Optional;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
-import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.io.IOUtils;
import org.apache.james.mailbox.extractor.ParsedContent;
import org.apache.james.mailbox.extractor.TextExtractor;
@@ -39,6 +38,7 @@ import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.RemovalListener;
import com.google.common.cache.Weigher;
+import com.google.common.hash.Hashing;
import com.google.common.util.concurrent.UncheckedExecutionException;
public class CachingTextExtractor implements TextExtractor {
@@ -110,7 +110,7 @@ public class CachingTextExtractor implements TextExtractor {
@Override
public ParsedContent extractContent(InputStream inputStream, String contentType) throws Exception {
byte[] bytes = IOUtils.toByteArray(inputStream);
- String key = DigestUtils.sha256Hex(bytes);
+ String key = Hashing.sha256().hashBytes(bytes).toString();
try {
return cache.get(key, () -> retrieveAndUpdateWeight(bytes, contentType));
http://git-wip-us.apache.org/repos/asf/james-project/blob/18340831/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/CassandraBlobId.java
----------------------------------------------------------------------
diff --git a/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/CassandraBlobId.java b/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/CassandraBlobId.java
index fedd734..d349b53 100644
--- a/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/CassandraBlobId.java
+++ b/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/CassandraBlobId.java
@@ -19,7 +19,6 @@
package org.apache.james.blob.cassandra;
-import org.apache.commons.codec.digest.DigestUtils;
import org.apache.james.blob.api.BlobId;
import com.google.common.annotations.VisibleForTesting;
@@ -27,6 +26,7 @@ import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
+import com.google.common.hash.Hashing;
public class CassandraBlobId implements BlobId {
@@ -34,7 +34,7 @@ public class CassandraBlobId implements BlobId {
@Override
public CassandraBlobId forPayload(byte[] payload) {
Preconditions.checkArgument(payload != null);
- return new CassandraBlobId(DigestUtils.sha256Hex(payload));
+ return new CassandraBlobId(Hashing.sha256().hashBytes(payload).toString());
}
@Override
http://git-wip-us.apache.org/repos/asf/james-project/blob/18340831/server/data/data-jpa/src/main/java/org/apache/james/user/jpa/model/JPAUser.java
----------------------------------------------------------------------
diff --git a/server/data/data-jpa/src/main/java/org/apache/james/user/jpa/model/JPAUser.java b/server/data/data-jpa/src/main/java/org/apache/james/user/jpa/model/JPAUser.java
index 07c9a1c..271ea38 100644
--- a/server/data/data-jpa/src/main/java/org/apache/james/user/jpa/model/JPAUser.java
+++ b/server/data/data-jpa/src/main/java/org/apache/james/user/jpa/model/JPAUser.java
@@ -19,6 +19,8 @@
package org.apache.james.user.jpa.model;
+import java.nio.charset.StandardCharsets;
+import java.util.Optional;
import java.util.function.Function;
import javax.persistence.Basic;
@@ -30,10 +32,11 @@ import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Version;
-import org.apache.commons.codec.digest.DigestUtils;
import org.apache.james.user.api.model.User;
import com.google.common.annotations.VisibleForTesting;
+import com.google.common.hash.HashFunction;
+import com.google.common.hash.Hashing;
@Entity(name = "JamesUser")
@Table(name = "JAMES_USER")
@@ -57,23 +60,28 @@ public class JPAUser implements User {
return chooseHashFunction(alg).apply(password);
}
- interface HashFunction extends Function<String, String> {}
+ interface PasswordHashFunction extends Function<String, String> {}
- private static HashFunction chooseHashFunction(String algorithm) {
- if (algorithm == null) {
- return DigestUtils::md5Hex;
- }
+ private static PasswordHashFunction chooseHashFunction(String nullableAlgorithm) {
+ String algorithm = Optional.ofNullable(nullableAlgorithm).orElse("MD5");
switch (algorithm) {
- case "MD5":
- return DigestUtils::md5Hex;
case "NONE":
return (password) -> "password";
+ default:
+ return (password) -> chooseHashing(algorithm).hashString(password, StandardCharsets.UTF_8).toString();
+ }
+ }
+
+ private static HashFunction chooseHashing(String algorithm) {
+ switch (algorithm) {
+ case "MD5":
+ return Hashing.md5();
case "SHA-256":
- return DigestUtils::sha256Hex;
+ return Hashing.sha256();
case "SHA-512":
- return DigestUtils::sha512Hex;
+ return Hashing.sha512();
default:
- return DigestUtils::sha1Hex;
+ return Hashing.sha1();
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/18340831/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/DockerClusterRabbitMQExtension.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/DockerClusterRabbitMQExtension.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/DockerClusterRabbitMQExtension.java
index 1f8cc0f..bbe9457 100644
--- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/DockerClusterRabbitMQExtension.java
+++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/DockerClusterRabbitMQExtension.java
@@ -18,7 +18,8 @@
****************************************************************/
package org.apache.james.queue.rabbitmq;
-import org.apache.commons.codec.digest.DigestUtils;
+import java.nio.charset.StandardCharsets;
+
import org.apache.james.util.Runnables;
import org.junit.jupiter.api.extension.AfterEachCallback;
import org.junit.jupiter.api.extension.BeforeEachCallback;
@@ -30,6 +31,7 @@ import org.testcontainers.containers.Network;
import com.github.fge.lambdas.Throwing;
import com.google.common.collect.ImmutableList;
+import com.google.common.hash.Hashing;
import com.rabbitmq.client.Address;
public class DockerClusterRabbitMQExtension implements BeforeEachCallback, AfterEachCallback, ParameterResolver {
@@ -42,7 +44,7 @@ public class DockerClusterRabbitMQExtension implements BeforeEachCallback, After
@Override
public void beforeEach(ExtensionContext context) {
- String cookie = DigestUtils.sha1Hex("secret cookie here");
+ String cookie = Hashing.sha1().hashString("secret cookie here", StandardCharsets.UTF_8).toString();
network = Network.NetworkImpl.builder()
.enableIpv6(false)
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org