Allow non string parameter vlaues.

This commit is contained in:
David Kocher
2026-03-15 18:32:08 +01:00
parent 9a806f3563
commit fbcedf78ef
9 changed files with 34 additions and 28 deletions
@@ -78,7 +78,7 @@ public class B2WriteFeature extends AbstractHttpWriteFeature<BaseB2Response> imp
try {
final Checksum checksum = status.getChecksum();
if(status.isSegment()) {
final B2GetUploadPartUrlResponse uploadUrl = session.getClient().getUploadPartUrl(status.getParameters().get("fileId"));
final B2GetUploadPartUrlResponse uploadUrl = session.getClient().getUploadPartUrl(status.getParameters().get("fileId").toString());
return session.getClient().uploadLargeFilePart(uploadUrl, status.getPart(), entity, checksum.hash);
}
else {
@@ -185,8 +185,8 @@ public class BoxWriteFeature extends AbstractHttpWriteFeature<File> {
final HttpRange range = HttpRange.withStatus(new TransferStatus()
.setLength(status.getLength())
.setOffset(status.getOffset()));
final String uploadSessionId = status.getParameters().get(BoxLargeUploadService.UPLOAD_SESSION_ID);
final String overall_length = status.getParameters().get(BoxLargeUploadService.OVERALL_LENGTH);
final String uploadSessionId = status.getParameters().get(BoxLargeUploadService.UPLOAD_SESSION_ID).toString();
final String overall_length = status.getParameters().get(BoxLargeUploadService.OVERALL_LENGTH).toString();
log.debug("Send range {} for file {}", range, file);
final HttpPut request = new HttpPut(String.format("%s/files/upload_sessions/%s", client.getBasePath(), uploadSessionId));
// Must not overlap with the range of a part already uploaded this session.
@@ -160,7 +160,7 @@ public class TransferStatus implements TransferResponse, StreamCancelation, Stre
private Long modified;
private Long created;
private Map<String, String> parameters
private Map<String, ?> parameters
= Collections.emptyMap();
private Map<String, String> metadata
@@ -522,11 +522,11 @@ public class TransferStatus implements TransferResponse, StreamCancelation, Stre
return this;
}
public Map<String, String> getParameters() {
public Map<String, ?> getParameters() {
return parameters;
}
public TransferStatus setParameters(final Map<String, String> parameters) {
public TransferStatus setParameters(final Map<String, ?> parameters) {
this.parameters = parameters;
return this;
}
@@ -83,7 +83,7 @@ public class EueWriteFeature extends AbstractHttpWriteFeature<EueWriteFeature.Ch
}
else {
uploadUri = status.getUrl();
resourceId = status.getParameters().get(RESOURCE_ID);
resourceId = status.getParameters().get(RESOURCE_ID).toString();
}
final HttpResponseOutputStream<Chunk> stream = this.write(file, status,
new DelayedHttpEntityCallable<Chunk>(file) {
@@ -52,6 +52,7 @@ import java.util.EnumSet;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
public class S3WriteFeature extends AbstractHttpWriteFeature<StorageObject> implements Write<StorageObject> {
private static final Logger log = LogManager.getLogger(S3WriteFeature.class);
@@ -77,7 +78,9 @@ public class S3WriteFeature extends AbstractHttpWriteFeature<StorageObject> impl
final RequestEntityRestStorageService client = session.getClient();
final Path bucket = containerService.getContainer(file);
client.putObjectWithRequestEntityImpl(
bucket.isRoot() ? StringUtils.EMPTY : bucket.getName(), object, entity, status.getParameters());
bucket.isRoot() ? StringUtils.EMPTY : bucket.getName(), object, entity,
status.getParameters().entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().toString())));
log.debug("Saved object {} with checksum {}", file, object.getETag());
}
catch(ServiceException e) {
@@ -156,7 +156,7 @@ public class SpectraBulkService implements Bulk<Set<UUID>> {
for(Map.Entry<TransferItem, TransferStatus> item : files.entrySet()) {
if(container.getKey().equals(containerService.getContainer(item.getKey().remote))) {
final TransferStatus status = item.getValue();
final Map<String, String> parameters = new HashMap<>(status.getParameters());
final Map<String, Object> parameters = new HashMap<>(status.getParameters());
parameters.put(REQUEST_PARAMETER_JOBID_IDENTIFIER, master.getJobId().toString());
status.setParameters(parameters);
status.setPart(counters.get(containerService.getKey(item.getKey().remote)));
@@ -191,7 +191,7 @@ public class SpectraBulkService implements Bulk<Set<UUID>> {
if(!status.getParameters().containsKey(REQUEST_PARAMETER_JOBID_IDENTIFIER)) {
throw new NotfoundException(String.format("Missing job id parameter in status for %s", file.getName()));
}
final String job = status.getParameters().get(REQUEST_PARAMETER_JOBID_IDENTIFIER);
final String job = status.getParameters().get(REQUEST_PARAMETER_JOBID_IDENTIFIER).toString();
log.debug("Cancel job {}", job);
final Ds3Client client = new SpectraClientBuilder().wrap(session, session.getHost());
client.cancelJobSpectraS3(new CancelJobSpectraS3Request(job));
@@ -224,7 +224,7 @@ public class SpectraBulkService implements Bulk<Set<UUID>> {
if(!status.getParameters().containsKey(REQUEST_PARAMETER_JOBID_IDENTIFIER)) {
throw new NotfoundException(String.format("Missing job id parameter in status for %s", file.getName()));
}
final String job = status.getParameters().get(REQUEST_PARAMETER_JOBID_IDENTIFIER);
final String job = status.getParameters().get(REQUEST_PARAMETER_JOBID_IDENTIFIER).toString();
log.debug("Query status for job {}", job);
// Fetch current list from server
final Ds3Client client = new SpectraClientBuilder().wrap(session, session.getHost());
@@ -305,7 +305,7 @@ public class SpectraBulkService implements Bulk<Set<UUID>> {
chunk.setLength(object.getLength());
chunk.setOffset(object.getOffset());
// Job parameter already present from #pre
final Map<String, String> parameters = new HashMap<>(chunk.getParameters());
final Map<String, Object> parameters = new HashMap<>(chunk.getParameters());
// Set offset for chunk.
parameters.put(REQUEST_PARAMETER_OFFSET, Long.toString(chunk.getOffset()));
chunk.setParameters(parameters);
@@ -34,6 +34,8 @@ import java.util.Comparator;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class SpectraReadFeature implements Read {
@@ -64,19 +66,20 @@ public class SpectraReadFeature implements Read {
public InputStream open() throws IOException {
try {
return session.getClient().getObjectImpl(
false,
containerService.getContainer(file).getName(),
containerService.getKey(file),
null,
null,
null,
null,
null,
null,
file.attributes().getVersionId(),
new HashMap<String, Object>(),
chunk.getParameters())
.getDataInputStream();
false,
containerService.getContainer(file).getName(),
containerService.getKey(file),
null,
null,
null,
null,
null,
null,
file.attributes().getVersionId(),
new HashMap<>(),
chunk.getParameters().entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().toString())))
.getDataInputStream();
}
catch(ServiceException e) {
throw new IOException(e.getMessage(), e);
@@ -64,7 +64,7 @@ public class TusWriteFeature extends AbstractHttpWriteFeature<Void> {
final DelayedHttpEntityCallable<Void> command = new DelayedHttpEntityCallable<Void>(file) {
@Override
public Void call(final HttpEntity entity) throws BackgroundException {
final HttpPatch request = new HttpPatch(status.getParameters().get(TusUploadFeature.UPLOAD_URL));
final HttpPatch request = new HttpPatch(status.getParameters().get(TusUploadFeature.UPLOAD_URL).toString());
request.setEntity(entity);
request.setHeader(TUS_HEADER_RESUMABLE, TUS_VERSION);
final Checksum checksum = status.getChecksum();
@@ -117,13 +117,13 @@ public class DAVReadFeature implements Read {
if(!status.getParameters().isEmpty()) {
resource.append("?");
}
for(Map.Entry<String, String> parameter : status.getParameters().entrySet()) {
for(Map.Entry<String, ?> parameter : status.getParameters().entrySet()) {
if(!resource.toString().endsWith("?")) {
resource.append("&");
}
resource.append(URIEncoder.encode(parameter.getKey()))
.append("=")
.append(URIEncoder.encode(parameter.getValue()));
.append(URIEncoder.encode(parameter.getValue().toString()));
}
return new HttpGet(resource.toString());