You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2022/11/16 14:50:53 UTC
[cayenne] 06/06: CAY-2772 Bootique-style module "extenders" for smoother configuration - cleanup Crypto module
This is an automated email from the ASF dual-hosted git repository.
ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit 473e943e904b39bc87cf8a3e921242378f4257a2
Author: Nikita Timofeev <st...@gmail.com>
AuthorDate: Wed Nov 16 17:48:52 2022 +0300
CAY-2772 Bootique-style module "extenders" for smoother configuration
- cleanup Crypto module
---
.../org/apache/cayenne/crypto/CryptoModule.java | 6 ++---
.../cayenne/crypto/CryptoModuleExtender.java | 30 +++++++++++++++-------
.../transformer/value/BytesToBytesConverter.java | 11 ++++----
.../cayenne/crypto/CryptoModuleExtenderTest.java | 10 +++++++-
.../apache/cayenne/crypto/Runtime_AES128_Base.java | 4 +--
5 files changed, 39 insertions(+), 22 deletions(-)
diff --git a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/CryptoModule.java b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/CryptoModule.java
index 97401891c..9f619393e 100644
--- a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/CryptoModule.java
+++ b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/CryptoModule.java
@@ -103,12 +103,12 @@ public class CryptoModule implements Module {
.keyStore((String) null, DEFAULT_KEY_PASSWORD, null)
.keySource(JceksKeySource.class)
- .valueTransformerFactory(DefaultValueTransformerFactory.class)
- .bytesTransformerFactory(DefaultBytesTransformerFactory.class)
+ .valueTransformer(DefaultValueTransformerFactory.class)
+ .bytesTransformer(DefaultBytesTransformerFactory.class)
.columnMapper(DEFAULT_COLUMN_MAPPER_PATTERN)
- .objectToBytesConverter("byte[]", BytesToBytesConverter.INSTANCE)
+ .objectToBytesConverter(byte[].class, BytesToBytesConverter.INSTANCE)
.objectToBytesConverter(String.class, Utf8StringConverter.INSTANCE)
.objectToBytesConverter(Double.class, DoubleConverter.INSTANCE)
diff --git a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/CryptoModuleExtender.java b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/CryptoModuleExtender.java
index 0adfb9213..04f464fa4 100644
--- a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/CryptoModuleExtender.java
+++ b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/CryptoModuleExtender.java
@@ -72,24 +72,18 @@ public class CryptoModuleExtender {
return this;
}
- public CryptoModuleExtender valueTransformerFactory(Class<? extends ValueTransformerFactory> factoryType) {
+ public CryptoModuleExtender valueTransformer(Class<? extends ValueTransformerFactory> factoryType) {
binder.bind(ValueTransformerFactory.class).to(factoryType);
return this;
}
- public CryptoModuleExtender bytesTransformerFactory(Class<? extends BytesTransformerFactory> factoryType) {
+ public CryptoModuleExtender bytesTransformer(Class<? extends BytesTransformerFactory> factoryType) {
binder.bind(BytesTransformerFactory.class).to(factoryType);
return this;
}
public <T> CryptoModuleExtender objectToBytesConverter(Class<T> objectType, BytesConverter<T> converter) {
- contributeObjectToByteConverters(binder).put(objectType.getName(), Objects.requireNonNull(converter));
- return this;
- }
-
- // workaround for byte[]
- CryptoModuleExtender objectToBytesConverter(String objectTypeName, BytesConverter<Object> converter) {
- contributeObjectToByteConverters(binder).put(objectTypeName, Objects.requireNonNull(converter));
+ contributeObjectToByteConverters(binder).put(typeName(objectType), Objects.requireNonNull(converter));
return this;
}
@@ -229,4 +223,22 @@ public class CryptoModuleExtender {
}
return objectToByteConverters;
}
+
+ /**
+ * Get a name of the provided Java type.
+ * Consistent with the logic of {@link org.apache.cayenne.di.AdhocObjectFactory#getJavaClass(String)} method
+ * @param objectType to get a name of
+ * @return a name of the type
+ * @param <T> the type of the class
+ */
+ static <T> String typeName(Class<T> objectType) {
+ if(objectType.isArray()) {
+ if(objectType.getComponentType().isPrimitive()) {
+ return objectType.getComponentType().getSimpleName() + "[]";
+ } else {
+ return objectType.getComponentType().getName() + "[]";
+ }
+ }
+ return objectType.getName();
+ }
}
diff --git a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/BytesToBytesConverter.java b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/BytesToBytesConverter.java
index 302e613f0..78aa07100 100644
--- a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/BytesToBytesConverter.java
+++ b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/BytesToBytesConverter.java
@@ -21,18 +21,17 @@ package org.apache.cayenne.crypto.transformer.value;
/**
* @since 4.0
*/
-// we can't use <byte[]> , so parameterizing this converter to Object
-public class BytesToBytesConverter implements BytesConverter<Object> {
+public class BytesToBytesConverter implements BytesConverter<byte[]> {
- public static final BytesConverter<Object> INSTANCE = new BytesToBytesConverter();
+ public static final BytesConverter<byte[]> INSTANCE = new BytesToBytesConverter();
@Override
- public byte[] toBytes(Object value) {
- return (byte[]) value;
+ public byte[] toBytes(byte[] value) {
+ return value;
}
@Override
- public Object fromBytes(byte[] bytes) {
+ public byte[] fromBytes(byte[] bytes) {
return bytes;
}
diff --git a/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/CryptoModuleExtenderTest.java b/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/CryptoModuleExtenderTest.java
index 20e03a900..b44d91f95 100644
--- a/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/CryptoModuleExtenderTest.java
+++ b/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/CryptoModuleExtenderTest.java
@@ -38,7 +38,7 @@ public class CryptoModuleExtenderTest {
public void testBuild_KeySource() {
URL ksUrl = JceksKeySourceTest.class.getResource(JceksKeySourceTest.KS1_JCEKS);
Module m = b -> new CryptoModuleExtender(b).keyStore(ksUrl, JceksKeySourceTest.TEST_KEY_PASS, "k1")
- .valueTransformerFactory(DefaultValueTransformerFactory.class);
+ .valueTransformer(DefaultValueTransformerFactory.class);
Injector injector = DIBootstrap.createInjector(new CryptoModule(), m);
@@ -52,4 +52,12 @@ public class CryptoModuleExtenderTest {
assertEquals("k1", dkName);
}
+ @Test
+ public void testTypeName() {
+ assertEquals("java.lang.String", CryptoModuleExtender.typeName(String.class));
+ assertEquals("byte", CryptoModuleExtender.typeName(Byte.TYPE));
+ assertEquals("java.lang.Byte", CryptoModuleExtender.typeName(Byte.class));
+ assertEquals("int[]", CryptoModuleExtender.typeName(int[].class));
+ assertEquals("java.lang.String[]", CryptoModuleExtender.typeName(String[].class));
+ }
}
diff --git a/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/Runtime_AES128_Base.java b/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/Runtime_AES128_Base.java
index 43c6873a3..8164cc41e 100644
--- a/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/Runtime_AES128_Base.java
+++ b/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/Runtime_AES128_Base.java
@@ -66,7 +66,7 @@ public class Runtime_AES128_Base {
protected Module createCryptoModule(boolean compress, boolean useHMAC) {
URL keyStoreUrl = JceksKeySourceTest.class.getResource(JceksKeySourceTest.KS1_JCEKS);
- Module module = b -> {
+ return b -> {
CryptoModuleExtender moduleExtender = CryptoModule.extend(b)
.keyStore(keyStoreUrl, JceksKeySourceTest.TEST_KEY_PASS, "k3");
if (compress) {
@@ -76,8 +76,6 @@ public class Runtime_AES128_Base {
moduleExtender.useHMAC();
}
};
-
- return module;
}
}