Example usage for io.vertx.core MultiMap get

List of usage examples for io.vertx.core MultiMap get

Introduction

In this page you can find the example usage for io.vertx.core MultiMap get.

Prototype

@Nullable
String get(String name);

Source Link

Document

Returns the value of with the specified name.

Usage

From source file:org.sfs.nodes.compute.masterkey.VerifyRepairMasterKeys.java

License:Apache License

@Override
public void handle(final SfsRequest httpServerRequest) {

    VertxContext<Server> vertxContext = httpServerRequest.vertxContext();

    Defer.aVoid().flatMap(new Authenticate(httpServerRequest))
            .flatMap(new ValidateActionAdminOrSystem(httpServerRequest)).map(aVoid -> httpServerRequest)
            .map(new ValidateHeaderBetweenLong(Jobs.Parameters.TIMEOUT, 100, Long.MAX_VALUE))
            .map(new ToVoid<>()).flatMap(aVoid -> {
                ClusterInfo clusterInfo = vertxContext.verticle().getClusterInfo();
                Nodes nodes = vertxContext.verticle().nodes();
                MultiMap headers = httpServerRequest.headers();

                long timeout = headers.contains(Jobs.Parameters.TIMEOUT)
                        ? Long.parseLong(headers.get(Jobs.Parameters.TIMEOUT))
                        : 100;/*w ww . j av  a2  s  .  co m*/

                MultiMap params = MultiMap.caseInsensitiveMultiMap();

                TransientServiceDef transientServiceDef = clusterInfo.getCurrentMasterNode();
                MasterNode masterNode = nodes.remoteMasterNode(vertxContext, transientServiceDef);

                httpServerRequest.startProxyKeepAlive();

                return masterNode.executeJob(Jobs.ID.REPAIR_MASTER_KEYS, params, timeout,
                        TimeUnit.MILLISECONDS);
            }).single().subscribe(new ConnectionCloseTerminus<Void>(httpServerRequest) {
                @Override
                public void onNext(Void aVoid) {
                    JsonObject responseJson = new JsonObject().put("code", HTTP_OK).put("message", "Success");
                    httpServerRequest.response().write(responseJson.encode(), StandardCharsets.UTF_8.toString())
                            .write(DELIMITER_BUFFER);
                }
            });
}

From source file:org.sfs.nodes.compute.object.DeleteObject.java

License:Apache License

@Override
public void handle(final SfsRequest httpServerRequest) {

    MultiMap queryParams = httpServerRequest.params();
    final String versionAsString = queryParams.get(VERSION);

    VertxContext<Server> vertxContext = httpServerRequest.vertxContext();

    aVoid().flatMap(new Authenticate(httpServerRequest))
            .flatMap(new ValidateActionAuthenticated(httpServerRequest))
            .map(aVoid -> fromSfsRequest(httpServerRequest)).map(new ValidateObjectPath())
            .flatMap(new LoadAccountAndContainerAndObject(vertxContext)).flatMap(persistentObject -> {
                int maxRevisions = persistentObject.getParent().getMaxObjectRevisions();
                boolean hasVersionString = !isNullOrEmpty(versionAsString);
                // if there is no version number supplied
                // add a delete marker if the newest version
                // isn't already a delete marker
                List<TransientVersion> versionsToCheck = new ArrayList<>();
                TransientVersion newVersion = null;
                if (!hasVersionString) {
                    if (maxRevisions <= 0) {
                        for (TransientVersion transientVersion : persistentObject.getVersions()) {
                            transientVersion.setDeleted(TRUE);
                            versionsToCheck.add(transientVersion);
                        }/* www  .j  ava 2s  .c o  m*/
                    } else {
                        Optional<TransientVersion> oNewestVersion = persistentObject.getNewestVersion();
                        if (oNewestVersion.isPresent()) {
                            TransientVersion newestVersion = oNewestVersion.get();
                            versionsToCheck.add(newestVersion);
                            if (!TRUE.equals(newestVersion.getDeleteMarker())) {
                                newVersion = persistentObject.newVersion().merge(newestVersion.toJsonObject())
                                        .setDeleteMarker(TRUE);
                            }
                        }
                    }
                } else {
                    final boolean all = equalsIgnoreCase("all", versionAsString);
                    final Set<Long> toDeleteVersions;
                    if (!all) {
                        toDeleteVersions = from(on(',').omitEmptyStrings().trimResults().split(versionAsString))
                                .transform(input -> tryParse(input)).filter(notNull()).toSet();
                    } else {
                        toDeleteVersions = emptySet();
                    }

                    Iterable<TransientVersion> versionsToDelete = from(persistentObject.getVersions())
                            .filter(notNull()).filter(input -> all || toDeleteVersions.contains(input.getId()));

                    for (TransientVersion version : versionsToDelete) {
                        version.setDeleted(TRUE);
                        versionsToCheck.add(version);
                    }
                }

                TransientVersion finalNewVersion = newVersion;
                return Observable.from(versionsToCheck)
                        .flatMap(new ValidateActionObjectDelete(httpServerRequest)).count().map(new ToVoid<>())
                        .flatMap(aVoid -> {
                            if (finalNewVersion != null) {
                                return new PruneObject(httpServerRequest.vertxContext(), finalNewVersion)
                                        .call(persistentObject).map(modified -> persistentObject);
                            } else {
                                return new PruneObject(httpServerRequest.vertxContext()).call(persistentObject)
                                        .map(modified -> persistentObject);
                            }
                        });
            }).flatMap(persistentObject -> {
                if (persistentObject.getVersions().isEmpty()) {
                    return just(persistentObject).flatMap(new RemoveObject(httpServerRequest.vertxContext()))
                            .map(new ValidateOptimisticObjectLock());
                } else {
                    return just(persistentObject)
                            .map(persistentObject1 -> persistentObject.setUpdateTs(getInstance()))
                            .flatMap(new UpdateObject(httpServerRequest.vertxContext()))
                            .map(new ValidateOptimisticObjectLock());
                }
            }).single().subscribe(new ConnectionCloseTerminus<PersistentObject>(httpServerRequest) {
                @Override
                public void onNext(PersistentObject input) {
                    httpServerRequest.response().setStatusCode(HTTP_NO_CONTENT);
                }
            });

}

From source file:org.sfs.nodes.compute.object.GetObject.java

License:Apache License

@Override
public void handle(final SfsRequest httpServerRequest) {
    httpServerRequest.pause();/*from   w  ww .  j a  va2s  . com*/

    MultiMap queryParams = httpServerRequest.params();
    final String versionAsString = queryParams.get(VERSION);

    final BufferEndableWriteStream httpResponseWriteStream = new NoEndEndableWriteStream(
            new HttpServerResponseEndableWriteStream(httpServerRequest.response()));

    VertxContext<Server> vertxContext = httpServerRequest.vertxContext();

    aVoid().flatMap(new Authenticate(httpServerRequest))
            .flatMap(new ValidateActionAuthenticated(httpServerRequest))
            .map(aVoid -> fromSfsRequest(httpServerRequest)).map(new ValidateObjectPath())
            .flatMap(new LoadAccountAndContainerAndObject(vertxContext)).flatMap(persistentObject -> {
                if (isNullOrEmpty(versionAsString)) {
                    return just(persistentObject).map(new ValidatePersistentObjectLatestVersionExists());
                } else {
                    final long parsedVersion = tryParse(versionAsString);
                    return just(persistentObject).map(new ValidatePersistentObjectVersionExists(parsedVersion));
                }
            }).flatMap(new ValidateActionObjectRead(httpServerRequest)).map(new ValidateVersionNotDeleted())
            .map(new ValidateVersionNotDeleteMarker()).map(new ValidateVersionNotExpired())
            .map(new ValidateVersionHasSegments()).map(new ValidateVersionSegmentsHasData())
            .map(new ValidateVersionIsReadable()).flatMap(transientVersion -> {
                // Dynamic large objects are stupid but it's the way openstack swift does
                // there's lots of opportunity to delete dynamic large object parts
                // or change them after the object manifest has been declared
                // but hey... we're doing it anyways because we want to be
                // compatible with existing gui tools that support swift.
                // This reactor will fail if there are no parts
                if (transientVersion.getObjectManifest().isPresent()) {
                    return just(transientVersion)
                            .flatMap(new EmitDynamicLargeObjectParts(httpServerRequest.vertxContext()))
                            .map(new ValidatePersistentObjectLatestVersionExists())
                            .flatMap(new ValidateActionObjectRead(httpServerRequest))
                            .map(new ValidateVersionNotDeleted()).map(new ValidateVersionNotDeleteMarker())
                            .map(new ValidateVersionNotExpired()).map(new ValidateVersionHasSegments())
                            .map(new ValidateVersionSegmentsHasData()).map(new ValidateVersionIsReadable())
                            .toSortedList((lft, rgt) -> {
                                String lftId = lft.getParent().getId();
                                String rgtId = rgt.getParent().getId();
                                return lftId.compareTo(rgtId);
                            })
                            .flatMap(transientVersions -> just(transientVersions)
                                    .map(new ValidateDynamicLargeObjectHasParts(transientVersion))
                                    .doOnNext(aVoid -> httpServerRequest.response().setStatusCode(HTTP_OK))
                                    .map(new WriteHttpServerResponseHeaders(httpServerRequest, transientVersion,
                                            transientVersions))
                                    .map(aVoid -> transientVersions)
                                    .flatMap(new ReadSegments(vertxContext, httpResponseWriteStream)));
                } else {
                    return aVoid().doOnNext(aVoid -> httpServerRequest.response().setStatusCode(HTTP_OK))
                            .map(new WriteHttpServerResponseHeaders(httpServerRequest, transientVersion,
                                    emptyList()))
                            .map(aVoid -> singletonList(transientVersion))
                            .flatMap(new ReadSegments(vertxContext, httpResponseWriteStream));
                }
            }).map(new ToVoid<>()).subscribe(new ConnectionCloseTerminus<Void>(httpServerRequest) {
                @Override
                public void onNext(Void input) {
                    // do nothing here since the headers need to set before the stream is copied. As a result
                    // the WriteHttpServerResponseHeaders map call
                }
            });

}

From source file:org.sfs.nodes.compute.object.HeadObject.java

License:Apache License

@Override
public void handle(final SfsRequest httpServerRequest) {
    httpServerRequest.pause();//w  w  w .  ja v  a  2  s  .c  om

    VertxContext<Server> vertxContext = httpServerRequest.vertxContext();

    MultiMap queryParams = httpServerRequest.params();
    final String versionAsString = queryParams.get(VERSION);

    aVoid().flatMap(new Authenticate(httpServerRequest))
            .flatMap(new ValidateActionAuthenticated(httpServerRequest))
            .map(aVoid -> fromSfsRequest(httpServerRequest)).map(new ValidateObjectPath())
            .flatMap(new LoadAccountAndContainerAndObject(vertxContext)).flatMap(persistentObject -> {
                if (isNullOrEmpty(versionAsString)) {
                    return just(persistentObject).map(new ValidatePersistentObjectLatestVersionExists());
                } else {
                    final long parsedVersion = tryParse(versionAsString);
                    return just(persistentObject).map(new ValidatePersistentObjectVersionExists(parsedVersion));
                }
            }).flatMap(new ValidateActionObjectRead(httpServerRequest)).map(new ValidateVersionNotDeleted())
            .map(new ValidateVersionNotDeleteMarker()).map(new ValidateVersionNotExpired())
            .map(new ValidateVersionHasSegments()).map(new ValidateVersionSegmentsHasData())
            .map(new ValidateVersionIsReadable()).flatMap(transientVersion -> {
                if (transientVersion.getObjectManifest().isPresent()) {
                    return just(transientVersion)
                            .flatMap(new EmitDynamicLargeObjectParts(httpServerRequest.vertxContext()))
                            .map(new ValidatePersistentObjectLatestVersionExists())
                            .flatMap(transientVersion1 -> just(transientVersion1)
                                    .map(new ValidateActionObjectRead(httpServerRequest))
                                    .map(aVoid -> transientVersion1))
                            .map(new ValidateVersionNotDeleted()).map(new ValidateVersionNotDeleteMarker())
                            .map(new ValidateVersionNotExpired()).map(new ValidateVersionHasSegments())
                            .map(new ValidateVersionSegmentsHasData()).map(new ValidateVersionIsReadable())
                            .toSortedList((lft, rgt) -> {
                                String lftId = lft.getParent().getId();
                                String rgtId = rgt.getParent().getId();
                                return lftId.compareTo(rgtId);
                            })
                            .flatMap(transientVersions -> just(transientVersions)
                                    .map(new ValidateDynamicLargeObjectHasParts(transientVersion))
                                    .doOnNext(aVoid -> httpServerRequest.response().setStatusCode(HTTP_OK))
                                    .map(new WriteHttpServerResponseHeaders(httpServerRequest, transientVersion,
                                            transientVersions))
                                    .map(aVoid -> transientVersions));
                } else {
                    return aVoid().doOnNext(aVoid -> httpServerRequest.response().setStatusCode(HTTP_OK))
                            .map(new WriteHttpServerResponseHeaders(httpServerRequest, transientVersion,
                                    emptyList()));
                }
            }).map(new ToVoid<>()).single().subscribe(new ConnectionCloseTerminus<Void>(httpServerRequest) {

                @Override
                public void onNext(Void input) {
                    // do nothing here since the headers are set earlier
                }
            });

}

From source file:org.sfs.nodes.compute.object.PostObject.java

License:Apache License

@Override
public void handle(final SfsRequest httpServerRequest) {
    httpServerRequest.pause();//from   w  ww. j  a v a2  s  .  co m

    VertxContext<Server> vertxContext = httpServerRequest.vertxContext();

    aVoid().flatMap(new Authenticate(httpServerRequest))
            .flatMap(new ValidateActionAuthenticated(httpServerRequest))
            .map(aVoid -> fromSfsRequest(httpServerRequest)).map(new ValidateObjectPath())
            .flatMap(new LoadAccountAndContainerAndObject(vertxContext))
            .map(new ValidatePersistentObjectLatestVersionExists())
            .flatMap(new ValidateActionObjectUpdate(httpServerRequest))
            .map(new ValidateVersionNotDeleteMarker()).map(new ValidateVersionNotExpired())
            .map(transientVersion -> {
                TransientVersion newVersion = transientVersion.getParent().newVersion();
                return newVersion.merge(transientVersion.toJsonObject());
            }).map(transientVersion -> {

                Calendar updateTs = getInstance();
                transientVersion.setUpdateTs(updateTs);

                MultiMap headers = httpServerRequest.headers();

                Metadata metadata = transientVersion.getMetadata();
                metadata.clear();
                metadata.withHttpHeaders(headers);

                String contentEncoding = headers.get(CONTENT_ENCODING);
                String contentType = headers.get(CONTENT_TYPE);
                String contentDisposition = headers.get(CONTENT_DISPOSITION);
                String deleteAt = headers.get(X_DELETE_AT);
                String deleteAfter = headers.get(X_DELETE_AFTER);

                if (!isNullOrEmpty(deleteAt)) {
                    Long parsed = tryParse(deleteAt);
                    transientVersion.setDeleteAt(parsed);
                }

                if (!isNullOrEmpty(deleteAfter)) {
                    Long parsed = tryParse(deleteAfter);
                    long now = checkedAdd(updateTs.getTimeInMillis(), parsed);
                    transientVersion.setDeleteAt(now);
                }

                if (isNullOrEmpty(deleteAt) && isNullOrEmpty(deleteAfter)) {
                    transientVersion.setDeleteAt(null);
                }

                transientVersion.setContentEncoding(contentEncoding);

                transientVersion.setContentType(contentType);

                transientVersion.setContentDisposition(contentDisposition);

                return transientVersion;
            })
            .flatMap(transientVersion -> just((PersistentObject) transientVersion.getParent())
                    .flatMap(new PruneObject(httpServerRequest.vertxContext(), transientVersion))
                    .map(modified -> (PersistentObject) transientVersion.getParent()))
            .map(persistentObject -> persistentObject.setUpdateTs(getInstance()))
            .flatMap(new UpdateObject(httpServerRequest.vertxContext())).map(new ValidateOptimisticObjectLock())
            .map(persistentObject -> persistentObject.getNewestVersion().get())
            .doOnNext(version -> httpServerRequest.response().setStatusCode(HTTP_ACCEPTED))
            .flatMap(version -> aVoid()
                    .map(new WriteHttpServerResponseHeaders(httpServerRequest, version, emptyList())))
            .single().subscribe(new ConnectionCloseTerminus<Void>(httpServerRequest) {

                @Override
                public void onNext(Void aVoid) {
                    // do nothing here since the headers are set earlier
                }

            });

}

From source file:org.sfs.nodes.compute.object.PutObject.java

License:Apache License

@Override
public void handle(final SfsRequest httpServerRequest) {
    httpServerRequest.pause();/*from   www.  j a  va  2  s  .  c o m*/

    VertxContext<Server> vertxContext = httpServerRequest.vertxContext();

    final AtomicReference<FileBackedBuffer> tempFileRef = new AtomicReference<>();

    Observable<Void> o = aVoid().flatMap(new Authenticate(httpServerRequest))
            .flatMap(new ValidateActionAuthenticated(httpServerRequest)).map(aVoid -> httpServerRequest)
            .map(new ValidateParamNotExists(MULTIPART_MANIFEST)).map(new ValidateHeaderNotExists(X_COPY_FROM))
            .map(new ValidateHeaderIsBase16LowercaseEncoded(ETAG))
            .map(new ValidateHeaderIsBase64Encoded(CONTENT_MD5))
            .map(new ValidateHeaderIsBase64Encoded(X_CONTENT_SHA512)).map(new ValidateTtl()).map(new ToVoid<>())
            .flatMap(aVoid -> {
                ObjectPath objectPath = fromSfsRequest(httpServerRequest);
                return just(objectPath).map(new ValidateObjectPath())
                        .flatMap(new LoadAccountAndContainer(vertxContext))
                        .flatMap(persistentContainer -> just(objectPath.objectPath().get())
                                .flatMap(new LoadObject(vertxContext, persistentContainer))
                                .map(oPersistentObject -> {
                                    if (oPersistentObject.isPresent()) {
                                        PersistentObject persistentObject = oPersistentObject.get();
                                        return persistentObject.newVersion().merge(httpServerRequest);
                                    } else {
                                        final TransientObject transientObject = new TransientObject(
                                                persistentContainer, objectPath.objectPath().get())
                                                        .setOwnerGuid(httpServerRequest.getUserAndRole()
                                                                .getUser().getId());
                                        return transientObject.newVersion().merge(httpServerRequest);
                                    }
                                }));
            }).flatMap(new ValidateActionObjectCreate(httpServerRequest))
            // do this step after we validate that we can create an object
            // so we don't consume a stream if we won't be able to create an object
            .flatMap(transientVersion -> {
                final MultiMap headers = httpServerRequest.headers();
                String contentLength = headers.get(CONTENT_LENGTH);
                if (contentLength == null) {
                    Path tempDirectory = httpServerRequest.vertxContext().verticle().sfsFileSystem()
                            .tmpDirectory();
                    FileBackedBuffer fileBackedBuffer = new FileBackedBuffer(vertxContext.vertx(), 8192, true,
                            tempDirectory);
                    tempFileRef.set(fileBackedBuffer);
                    LimitedReadStream readStream = new LimitedReadStream(httpServerRequest, MAX_SEGMENT_SIZE);
                    CountingReadStream countingWriteStream = new CountingReadStream(readStream);
                    return pump(countingWriteStream, fileBackedBuffer).map(aVoid -> {
                        transientVersion.setContentLength(countingWriteStream.count());
                        httpServerRequest.headers().set(CONTENT_LENGTH, valueOf(countingWriteStream.count()));
                        return transientVersion;
                    });
                } else {
                    return just(transientVersion);
                }
            })
            .flatMap(transientVersion -> just(httpServerRequest)
                    .map(new ValidateHeaderBetweenLong(CONTENT_LENGTH, 0L, MAX_SEGMENT_SIZE))
                    .map(httpServerRequest1 -> transientVersion))
            .flatMap(transientVersion -> {
                long length = transientVersion.getContentLength().get();
                if (length > 0) {
                    return aVoid().flatMap(aVoid -> {
                        if (tempFileRef.get() != null) {
                            FileBackedBuffer fileBackedBuffer = tempFileRef.get();
                            return Observable.just(transientVersion).flatMap(new WriteNewSegment(
                                    httpServerRequest.vertxContext(), fileBackedBuffer.readStream()));
                        } else {
                            return Observable.just(transientVersion).flatMap(
                                    new WriteNewSegment(httpServerRequest.vertxContext(), httpServerRequest));
                        }
                    }).map(transientSegment -> {
                        validateSegment(transientSegment);
                        return transientSegment;
                    }).map(transientSegment -> transientSegment.getParent());
                } else {
                    return just(transientVersion);
                }
            }).flatMap(transientVersion -> {
                final long versionId = transientVersion.getId();
                XObject xObject = transientVersion.getParent();
                if (xObject instanceof PersistentObject) {
                    return just((PersistentObject) xObject)
                            .map(persistentObject -> persistentObject.setUpdateTs(getInstance()))
                            .flatMap(new UpdateObject(httpServerRequest.vertxContext()))
                            .map(new ValidateOptimisticObjectLock())
                            .map(persistentObject -> persistentObject.getVersion(versionId).get());
                } else {
                    return just((TransientObject) xObject).doOnNext(transientObject -> {
                        Optional<TransientServiceDef> currentMaintainerNode = vertxContext.verticle()
                                .getClusterInfo().getCurrentMaintainerNode();
                        if (currentMaintainerNode.isPresent()) {
                            transientObject.setNodeId(currentMaintainerNode.get().getId());
                        }
                    }).flatMap(new PersistObject(httpServerRequest.vertxContext()))
                            .map(new ValidateOptimisticObjectLock())
                            .map(persistentObject -> persistentObject.getVersion(versionId).get());
                }
            }).flatMap(transientVersion -> {
                long length = transientVersion.getContentLength().get();
                if (length > 0) {
                    TransientSegment latestSegment = transientVersion.getNewestSegment().get();
                    return just(latestSegment).flatMap(new AcknowledgeSegment(httpServerRequest.vertxContext()))
                            .map(modified -> latestSegment)
                            .flatMap(new VerifySegmentQuick(httpServerRequest.vertxContext())).map(verified -> {
                                checkState(verified, "Segment verification failed");
                                return (Void) null;
                            }).map(aVoid -> latestSegment.getParent());
                } else {
                    return just(transientVersion);
                }
            }).flatMap(transientVersion -> {
                PersistentObject persistentObject = (PersistentObject) transientVersion.getParent();
                return just(persistentObject)
                        .flatMap(new PruneObject(httpServerRequest.vertxContext(), transientVersion))
                        .map(modified -> persistentObject.getVersion(transientVersion.getId()).get());
            }).flatMap(transientVersion -> {
                final long versionId = transientVersion.getId();
                XObject xObject = transientVersion.getParent();
                return just((PersistentObject) xObject)
                        .map(persistentObject -> persistentObject.setUpdateTs(getInstance()))
                        .flatMap(new UpdateObject(httpServerRequest.vertxContext()))
                        .map(new ValidateOptimisticObjectLock())
                        .map(persistentObject -> persistentObject.getVersion(versionId).get());
            }).doOnNext(version -> httpServerRequest.response().setStatusCode(HTTP_CREATED))
            .flatMap(version -> aVoid()
                    .map(new WriteHttpServerResponseHeaders(httpServerRequest, version, emptyList())))
            .single();

    using(() -> null, aVoid -> o, aVoid -> cleanupTmp(tempFileRef).subscribe(new NullSubscriber<>()))
            .subscribe(new ConnectionCloseTerminus<Void>(httpServerRequest) {
                @Override
                public void onNext(Void aVoid) {
                    // do nothing here since the headers are set earlier
                }

            }

    );

}

From source file:org.sfs.nodes.compute.object.VerifyRepairObjectExecute.java

License:Apache License

@Override
public void handle(final SfsRequest httpServerRequest) {

    VertxContext<Server> vertxContext = httpServerRequest.vertxContext();

    Defer.aVoid().flatMap(new Authenticate(httpServerRequest))
            .flatMap(new ValidateActionAdminOrSystem(httpServerRequest)).map(aVoid -> httpServerRequest)
            .map(new ValidateHeaderBetweenLong(Jobs.Parameters.TIMEOUT, 100, Long.MAX_VALUE))
            .map(new ToVoid<>()).map(aVoid -> ObjectPath.fromSfsRequest(httpServerRequest))
            .map(new ValidateObjectPath()).flatMap(objectPath -> {
                ClusterInfo clusterInfo = vertxContext.verticle().getClusterInfo();
                Nodes nodes = vertxContext.verticle().nodes();
                MultiMap headers = httpServerRequest.headers();

                long timeout = headers.contains(Jobs.Parameters.TIMEOUT)
                        ? Long.parseLong(headers.get(Jobs.Parameters.TIMEOUT))
                        : 100;/*w  ww  . ja va  2s .c  om*/

                String unparsedForceRemoveVolumes = headers.contains(Jobs.Parameters.FORCE_REMOVE_VOLUMES)
                        ? headers.get(Jobs.Parameters.FORCE_REMOVE_VOLUMES)
                        : null;

                MultiMap params = MultiMap.caseInsensitiveMultiMap();
                if (unparsedForceRemoveVolumes != null) {
                    params.add(Jobs.Parameters.FORCE_REMOVE_VOLUMES, unparsedForceRemoveVolumes);
                }
                params.set(Jobs.Parameters.OBJECT_ID, objectPath.objectPath().get());

                TransientServiceDef transientServiceDef = clusterInfo.getCurrentMasterNode();
                MasterNode masterNode = nodes.remoteMasterNode(vertxContext, transientServiceDef);

                httpServerRequest.startProxyKeepAlive();

                return masterNode.executeJob(Jobs.ID.VERIFY_REPAIR_OBJECT, params, timeout,
                        TimeUnit.MILLISECONDS);
            }).single().subscribe(new ConnectionCloseTerminus<Void>(httpServerRequest) {
                @Override
                public void onNext(Void aVoid) {
                    JsonObject responseJson = new JsonObject().put("code", HTTP_OK).put("message", "Success");
                    httpServerRequest.response().write(responseJson.encode(), StandardCharsets.UTF_8.toString())
                            .write(DELIMITER_BUFFER);
                }
            });
}

From source file:org.sfs.nodes.compute.object.VerifyRepairObjectStop.java

License:Apache License

@Override
public void handle(final SfsRequest httpServerRequest) {

    VertxContext<Server> vertxContext = httpServerRequest.vertxContext();

    Defer.aVoid().flatMap(new Authenticate(httpServerRequest))
            .flatMap(new ValidateActionAdminOrSystem(httpServerRequest)).map(aVoid -> httpServerRequest)
            .map(new ValidateHeaderExists(Jobs.Parameters.TIMEOUT))
            .map(new ValidateHeaderBetweenLong(Jobs.Parameters.TIMEOUT, 100, Long.MAX_VALUE))
            .map(new ToVoid<>()).map(aVoid -> ObjectPath.fromSfsRequest(httpServerRequest))
            .map(new ValidateObjectPath()).flatMap(objectPath -> {
                ClusterInfo clusterInfo = vertxContext.verticle().getClusterInfo();
                Nodes nodes = vertxContext.verticle().nodes();
                MultiMap headers = httpServerRequest.headers();

                long timeout = headers.contains(Jobs.Parameters.TIMEOUT)
                        ? Long.parseLong(headers.get(Jobs.Parameters.TIMEOUT))
                        : -1;// w  w w. jav  a  2 s .c  o m

                TransientServiceDef transientServiceDef = clusterInfo.getCurrentMasterNode();
                MasterNode masterNode = nodes.remoteMasterNode(vertxContext, transientServiceDef);

                httpServerRequest.startProxyKeepAlive();

                return masterNode.stopJob(Jobs.ID.VERIFY_REPAIR_OBJECT, timeout, TimeUnit.MILLISECONDS);
            }).single().subscribe(new ConnectionCloseTerminus<Void>(httpServerRequest) {
                @Override
                public void onNext(Void aVoid) {
                    JsonObject responseJson = new JsonObject().put("code", HTTP_OK).put("message", "Success");
                    httpServerRequest.response().write(responseJson.encode(), StandardCharsets.UTF_8.toString())
                            .write(DELIMITER_BUFFER);
                }
            });
}

From source file:org.sfs.nodes.compute.object.VerifyRepairObjectWait.java

License:Apache License

@Override
public void handle(final SfsRequest httpServerRequest) {

    VertxContext<Server> vertxContext = httpServerRequest.vertxContext();

    Defer.aVoid().flatMap(new Authenticate(httpServerRequest))
            .flatMap(new ValidateActionAdminOrSystem(httpServerRequest)).map(aVoid -> httpServerRequest)
            .map(new ValidateHeaderExists(Jobs.Parameters.TIMEOUT))
            .map(new ValidateHeaderBetweenLong(Jobs.Parameters.TIMEOUT, 100, Long.MAX_VALUE))
            .map(new ToVoid<>()).map(aVoid -> ObjectPath.fromSfsRequest(httpServerRequest))
            .map(new ValidateObjectPath()).flatMap(objectPath -> {
                ClusterInfo clusterInfo = vertxContext.verticle().getClusterInfo();
                Nodes nodes = vertxContext.verticle().nodes();
                MultiMap headers = httpServerRequest.headers();

                long timeout = headers.contains(Jobs.Parameters.TIMEOUT)
                        ? Long.parseLong(headers.get(Jobs.Parameters.TIMEOUT))
                        : -1;/* ww  w.j a  v  a 2  s.co m*/

                TransientServiceDef transientServiceDef = clusterInfo.getCurrentMasterNode();
                MasterNode masterNode = nodes.remoteMasterNode(vertxContext, transientServiceDef);

                httpServerRequest.startProxyKeepAlive();

                return masterNode.waitForJob(Jobs.ID.VERIFY_REPAIR_OBJECT, timeout, TimeUnit.MILLISECONDS);
            }).single().subscribe(new ConnectionCloseTerminus<Void>(httpServerRequest) {
                @Override
                public void onNext(Void aVoid) {
                    JsonObject responseJson = new JsonObject().put("code", HTTP_OK).put("message", "Success");
                    httpServerRequest.response().write(responseJson.encode(), StandardCharsets.UTF_8.toString())
                            .write(DELIMITER_BUFFER);
                }
            });
}

From source file:org.sfs.nodes.data.AckBlob.java

License:Apache License

@Override
public void handle(final SfsRequest httpServerRequest) {

    VertxContext<Server> vertxContext = httpServerRequest.vertxContext();

    aVoid().flatMap(new Authenticate(httpServerRequest))
            .flatMap(new ValidateActionAdminOrSystem(httpServerRequest))
            .map(new ValidateNodeIsDataNode<>(vertxContext)).map(aVoid -> httpServerRequest)
            .map(new ValidateParamExists(VOLUME)).map(new ValidateParamExists(POSITION))
            .map(new ValidateParamBetweenLong(POSITION, 0, MAX_VALUE)).flatMap(httpServerRequest1 -> {
                MultiMap headers = httpServerRequest1.params();
                String volumeId = headers.get(VOLUME);
                long position = parseLong(headers.get(POSITION));
                final Volume volume = vertxContext.verticle().nodes().volumeManager().get(volumeId).get();
                return volume.acknowledge(httpServerRequest1.vertxContext().vertx(), position);
            }).map(headerBlobOptional -> new Holder2<>(httpServerRequest, headerBlobOptional))
            .map(new WriteHeaderBlobAsHttpResponseHeaders<>()).single()
            .onErrorResumeNext(new HandleServerToBusy<>())
            .subscribe(new Terminus<Holder2<SfsRequest, Optional<HeaderBlob>>>(httpServerRequest) {

                @Override/*w w w . j  a  v a 2s. co m*/
                public void onNext(Holder2<SfsRequest, Optional<HeaderBlob>> holder) {
                    Optional<HeaderBlob> oBlob = holder.value1();
                    if (oBlob.isPresent()) {
                        holder.value0().response().setStatusCode(HTTP_NO_CONTENT);
                    } else {
                        holder.value0().response().setStatusCode(HTTP_NOT_MODIFIED);
                    }
                }
            });

}