This is an automated email from the ASF dual-hosted git repository. toulmean pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-tuweni.git
commit be990feadd61c8716ad308f3c197021fa92cf40b Author: Antoine Toulme <[email protected]> AuthorDate: Mon Nov 25 21:07:36 2019 -0800 Allow subclassing bytes --- .../main/java/org/apache/tuweni/bytes/Bytes32.java | 5 +-- .../main/java/org/apache/tuweni/bytes/Bytes48.java | 5 +-- ...DelegatingBytes32.java => DelegatingBytes.java} | 27 ++++++++-------- .../org/apache/tuweni/bytes/DelegatingBytes32.java | 17 +++++----- .../org/apache/tuweni/bytes/DelegatingBytes48.java | 16 +++++----- .../org/apache/tuweni/bytes/DelegateBytesTest.java | 37 ++++++++++++++++++++++ 6 files changed, 72 insertions(+), 35 deletions(-) diff --git a/bytes/src/main/java/org/apache/tuweni/bytes/Bytes32.java b/bytes/src/main/java/org/apache/tuweni/bytes/Bytes32.java index 571ac90..c0cc80b 100644 --- a/bytes/src/main/java/org/apache/tuweni/bytes/Bytes32.java +++ b/bytes/src/main/java/org/apache/tuweni/bytes/Bytes32.java @@ -82,7 +82,8 @@ public interface Bytes32 extends Bytes { if (value instanceof Bytes32) { return (Bytes32) value; } - return DelegatingBytes32.delegateTo(value); + checkArgument(value.size() == SIZE, "Expected %s bytes but got %s", SIZE, value.size()); + return new DelegatingBytes32(value); } /** @@ -110,7 +111,7 @@ public interface Bytes32 extends Bytes { if (slice instanceof Bytes32) { return (Bytes32) slice; } - return DelegatingBytes32.delegateTo(slice); + return new DelegatingBytes32(value); } /** diff --git a/bytes/src/main/java/org/apache/tuweni/bytes/Bytes48.java b/bytes/src/main/java/org/apache/tuweni/bytes/Bytes48.java index 518e5cf..cdb29aa 100644 --- a/bytes/src/main/java/org/apache/tuweni/bytes/Bytes48.java +++ b/bytes/src/main/java/org/apache/tuweni/bytes/Bytes48.java @@ -82,7 +82,8 @@ public interface Bytes48 extends Bytes { if (value instanceof Bytes48) { return (Bytes48) value; } - return DelegatingBytes48.delegateTo(value); + checkArgument(value.size() == SIZE, "Expected %s bytes but got %s", SIZE, value.size()); + return new DelegatingBytes48(value); } /** @@ -110,7 +111,7 @@ public interface Bytes48 extends Bytes { if (slice instanceof Bytes48) { return (Bytes48) slice; } - return DelegatingBytes48.delegateTo(slice); + return new DelegatingBytes48(Bytes48.wrap(slice)); } /** diff --git a/bytes/src/main/java/org/apache/tuweni/bytes/DelegatingBytes32.java b/bytes/src/main/java/org/apache/tuweni/bytes/DelegatingBytes.java similarity index 90% copy from bytes/src/main/java/org/apache/tuweni/bytes/DelegatingBytes32.java copy to bytes/src/main/java/org/apache/tuweni/bytes/DelegatingBytes.java index c29a60a..8f4a2f5 100644 --- a/bytes/src/main/java/org/apache/tuweni/bytes/DelegatingBytes32.java +++ b/bytes/src/main/java/org/apache/tuweni/bytes/DelegatingBytes.java @@ -12,30 +12,29 @@ */ package org.apache.tuweni.bytes; -import static com.google.common.base.Preconditions.checkArgument; - import java.math.BigInteger; import java.nio.ByteBuffer; import java.security.MessageDigest; import io.vertx.core.buffer.Buffer; -final class DelegatingBytes32 implements Bytes32 { +/** + * A class that holds and delegates all operations to its inner bytes field. + * + * <p> + * This class may be used to create more types that represent bytes, but need a different name for business logic. + */ +public class DelegatingBytes implements Bytes { private final Bytes delegate; - private DelegatingBytes32(Bytes delegate) { + protected DelegatingBytes(Bytes delegate) { this.delegate = delegate; } - static Bytes32 delegateTo(Bytes value) { - checkArgument(value.size() == SIZE, "Expected %s bytes but got %s", SIZE, value.size()); - return new DelegatingBytes32(value); - } - @Override public int size() { - return Bytes32.SIZE; + return delegate.size(); } @Override @@ -159,13 +158,13 @@ final class DelegatingBytes32 implements Bytes32 { } @Override - public Bytes32 copy() { - return Bytes32.wrap(toArray()); + public Bytes copy() { + return Bytes.wrap(toArray()); } @Override - public MutableBytes32 mutableCopy() { - return MutableBytes32.wrap(toArray()); + public MutableBytes mutableCopy() { + return MutableBytes.wrap(toArray()); } @Override diff --git a/bytes/src/main/java/org/apache/tuweni/bytes/DelegatingBytes32.java b/bytes/src/main/java/org/apache/tuweni/bytes/DelegatingBytes32.java index c29a60a..0e2f36e 100644 --- a/bytes/src/main/java/org/apache/tuweni/bytes/DelegatingBytes32.java +++ b/bytes/src/main/java/org/apache/tuweni/bytes/DelegatingBytes32.java @@ -12,27 +12,26 @@ */ package org.apache.tuweni.bytes; -import static com.google.common.base.Preconditions.checkArgument; - import java.math.BigInteger; import java.nio.ByteBuffer; import java.security.MessageDigest; import io.vertx.core.buffer.Buffer; -final class DelegatingBytes32 implements Bytes32 { +/** + * A class that holds and delegates all operations to its inner bytes field. + * + * <p> + * This class may be used to create more types that represent 32 bytes, but need a different name for business logic. + */ +public class DelegatingBytes32 implements Bytes32 { private final Bytes delegate; - private DelegatingBytes32(Bytes delegate) { + protected DelegatingBytes32(Bytes delegate) { this.delegate = delegate; } - static Bytes32 delegateTo(Bytes value) { - checkArgument(value.size() == SIZE, "Expected %s bytes but got %s", SIZE, value.size()); - return new DelegatingBytes32(value); - } - @Override public int size() { return Bytes32.SIZE; diff --git a/bytes/src/main/java/org/apache/tuweni/bytes/DelegatingBytes48.java b/bytes/src/main/java/org/apache/tuweni/bytes/DelegatingBytes48.java index 9f3198d..1441f73 100644 --- a/bytes/src/main/java/org/apache/tuweni/bytes/DelegatingBytes48.java +++ b/bytes/src/main/java/org/apache/tuweni/bytes/DelegatingBytes48.java @@ -12,7 +12,6 @@ */ package org.apache.tuweni.bytes; -import static com.google.common.base.Preconditions.checkArgument; import java.math.BigInteger; import java.nio.ByteBuffer; @@ -20,19 +19,20 @@ import java.security.MessageDigest; import io.vertx.core.buffer.Buffer; -final class DelegatingBytes48 implements Bytes48 { +/** + * A class that holds and delegates all operations to its inner bytes field. + * + * <p> + * This class may be used to create more types that represent 48 bytes, but need a different name for business logic. + */ +public class DelegatingBytes48 implements Bytes48 { private final Bytes delegate; - private DelegatingBytes48(Bytes delegate) { + protected DelegatingBytes48(Bytes delegate) { this.delegate = delegate; } - static Bytes48 delegateTo(Bytes value) { - checkArgument(value.size() == SIZE, "Expected %s bytes but got %s", SIZE, value.size()); - return new DelegatingBytes48(value); - } - @Override public int size() { return Bytes48.SIZE; diff --git a/bytes/src/test/java/org/apache/tuweni/bytes/DelegateBytesTest.java b/bytes/src/test/java/org/apache/tuweni/bytes/DelegateBytesTest.java new file mode 100644 index 0000000..bfc667c --- /dev/null +++ b/bytes/src/test/java/org/apache/tuweni/bytes/DelegateBytesTest.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE + * file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file + * to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package org.apache.tuweni.bytes; + +public class DelegateBytesTest extends CommonBytesTests { + + @Override + Bytes h(String hex) { + return new DelegatingBytes(Bytes.fromHexString(hex)); + } + + @Override + MutableBytes m(int size) { + // no-op + return MutableBytes.create(size); + } + + @Override + Bytes w(byte[] bytes) { + return new DelegatingBytes(Bytes.wrap(bytes)); + } + + @Override + Bytes of(int... bytes) { + return new DelegatingBytes(Bytes.of(bytes)); + } +} --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
