[#34] Provide input parameters for all grpc methods
All checks were successful
DCO / DCO (pull_request) Successful in 24s
Verify code phase / Verify code (pull_request) Successful in 1m31s

Signed-off-by: Ori Bruk <o.bruk@yadro.com>
This commit is contained in:
Ori Bruk 2025-01-23 15:30:38 +03:00
parent e9e9480701
commit 1ccb1f2013
61 changed files with 1411 additions and 625 deletions

View file

@ -6,7 +6,7 @@
<parent>
<groupId>info.frostfs.sdk</groupId>
<artifactId>frostfs-sdk-java</artifactId>
<version>0.2.0</version>
<version>0.3.0</version>
</parent>
<artifactId>models</artifactId>
@ -21,17 +21,17 @@
<dependency>
<groupId>info.frostfs.sdk</groupId>
<artifactId>cryptography</artifactId>
<version>0.2.0</version>
<version>0.3.0</version>
</dependency>
<dependency>
<groupId>info.frostfs.sdk</groupId>
<artifactId>protos</artifactId>
<version>0.2.0</version>
<version>0.3.0</version>
</dependency>
<dependency>
<groupId>info.frostfs.sdk</groupId>
<artifactId>exceptions</artifactId>
<version>0.2.0</version>
<version>0.3.0</version>
</dependency>
</dependencies>

View file

@ -12,6 +12,7 @@ public class AppConst {
public static final int OBJECT_CHUNK_SIZE = 3 * MIB;
public static final int SHA256_HASH_LENGTH = 32;
public static final int UUID_BYTE_ARRAY_LENGTH = 16;
public static final int DEFAULT_GRPC_TIMEOUT = 5;
private AppConst() {
}

View file

@ -0,0 +1,17 @@
package info.frostfs.sdk.dto.object;
import frostfs.object.Types;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public class SplitInfo {
private final Types.SplitInfo splitInfo;
private final SplitId splitId;
private final ObjectId link;
private final ObjectId lastPart;
}

View file

@ -13,7 +13,6 @@ import java.util.stream.Collectors;
import static info.frostfs.sdk.UuidExtension.asBytes;
import static info.frostfs.sdk.UuidExtension.asUuid;
import static info.frostfs.sdk.constants.AttributeConst.DISABLE_HOMOMORPHIC_HASHING_ATTRIBUTE;
import static info.frostfs.sdk.constants.ErrorConst.UNKNOWN_ENUM_VALUE_TEMPLATE;
import static java.util.Objects.isNull;
@ -31,7 +30,6 @@ public class ContainerMapper {
.setPlacementPolicy(PlacementPolicyMapper.toGrpcMessage(container.getPlacementPolicy()))
.setNonce(ByteString.copyFrom(asBytes(container.getNonce())));
container.getAttributes().putIfAbsent(DISABLE_HOMOMORPHIC_HASHING_ATTRIBUTE, Boolean.TRUE.toString());
var attributes = container.getAttributes().entrySet().stream()
.map(entry ->
Types.Container.Attribute.newBuilder()

View file

@ -0,0 +1,30 @@
package info.frostfs.sdk.mappers.object;
import frostfs.object.Types;
import info.frostfs.sdk.dto.object.ObjectId;
import info.frostfs.sdk.dto.object.SplitId;
import info.frostfs.sdk.dto.object.SplitInfo;
import static info.frostfs.sdk.UuidExtension.asUuid;
import static java.util.Objects.isNull;
public class SplitInfoMapper {
private SplitInfoMapper() {
}
public static SplitInfo toModel(Types.SplitInfo splitInfo) {
if (isNull(splitInfo) || splitInfo.getSerializedSize() == 0) {
return null;
}
var splitId = new SplitId(asUuid(splitInfo.getSplitId().toByteArray()));
var link = splitInfo.getLink().getSerializedSize() == 0
? null
: new ObjectId(splitInfo.getLink().getValue().toByteArray());
var lastPart = splitInfo.getLastPart().getSerializedSize() == 0
? null
: new ObjectId(splitInfo.getLastPart().getValue().toByteArray());
return new SplitInfo(splitInfo, splitId, link, lastPart);
}
}

View file

@ -0,0 +1,61 @@
package info.frostfs.sdk.mappers.object;
import com.google.protobuf.ByteString;
import frostfs.object.Types;
import info.frostfs.sdk.dto.object.ObjectId;
import info.frostfs.sdk.dto.object.SplitId;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.*;
public class SplitInfoMapperTest {
@Test
void toModel_successLastPart() {
//Given
var splitId = new SplitId();
var objectId = new ObjectId("85orCLKSu3X1jGiTFmwmTUsBU88RBARNwuRwrEy5pyww");
var splitInfo = Types.SplitInfo.newBuilder()
.setSplitId(ByteString.copyFrom(splitId.toBinary()))
.setLastPart(ObjectIdMapper.toGrpcMessage(objectId))
.build();
//When
var result = SplitInfoMapper.toModel(splitInfo);
//Then
assertNotNull(result);
assertNull(result.getLink());
assertThat(result.getSplitInfo()).isEqualTo(splitInfo);
assertThat(result.getSplitId().toBinary()).containsExactly(splitId.toBinary());
assertEquals(objectId.getValue(), result.getLastPart().getValue());
}
@Test
void toModel_successLink() {
//Given
var splitId = new SplitId();
var objectId = new ObjectId("85orCLKSu3X1jGiTFmwmTUsBU88RBARNwuRwrEy5pyww");
var splitInfo = Types.SplitInfo.newBuilder()
.setSplitId(ByteString.copyFrom(splitId.toBinary()))
.setLink(ObjectIdMapper.toGrpcMessage(objectId))
.build();
//When
var result = SplitInfoMapper.toModel(splitInfo);
//Then
assertNotNull(result);
assertNull(result.getLastPart());
assertThat(result.getSplitInfo()).isEqualTo(splitInfo);
assertThat(result.getSplitId().toBinary()).containsExactly(splitId.toBinary());
assertEquals(objectId.getValue(), result.getLink().getValue());
}
@Test
void toModel_null() {
//When + Then
assertNull(SplitInfoMapper.toModel(null));
assertNull(SplitInfoMapper.toModel(Types.SplitInfo.getDefaultInstance()));
}
}