List of usage examples for io.vertx.core MultiMap contains
@GenIgnore(GenIgnore.PERMITTED_TYPE)
boolean contains(CharSequence name);
From source file:org.sfs.auth.SimpleAuthProvider.java
License:Apache License
protected UserAndRole getUserByCredentials(SfsRequest sfsRequest) { MultiMap headers = sfsRequest.headers(); Optional<String> oToken; if (headers.contains(X_AUTH_TOKEN)) { oToken = fromNullable(headers.get(X_AUTH_TOKEN)); } else if (headers.contains(AUTHORIZATION)) { oToken = extractToken(headers.get(AUTHORIZATION), "Basic"); } else {//ww w . j a va 2s . c o m oToken = absent(); } if (oToken.isPresent()) { String token = oToken.get(); String decoded = new String(base64().decode(token), StandardCharsets.UTF_8); String[] parts = toArray(on(':').limit(2).split(decoded), String.class); if (parts.length == 2) { String username = parts[0]; String password = parts[1]; for (Role role : new Role[] { ADMIN, USER }) { Set<User> usersForRole = this.roles.get(role); if (usersForRole != null) { for (User user : usersForRole) { if (equal(user.getUsername(), username) && equal(user.getPassword(), password)) { return new UserAndRole(role, user); } } } } } } return null; }
From source file:org.sfs.nodes.compute.container.ExportContainer.java
License:Apache License
@Override public void handle(final SfsRequest httpServerRequest) { VertxContext<Server> vertxContext = httpServerRequest.vertxContext(); SfsVertx sfsVertx = vertxContext.vertx(); Context context = sfsVertx.getOrCreateContext(); aVoid().flatMap(new Authenticate(httpServerRequest)).flatMap(new ValidateActionAdmin(httpServerRequest)) .map(aVoid -> httpServerRequest).map(new ValidateHeaderExists(X_SFS_DEST_DIRECTORY)) .map(new ValidateHeaderIsBoolean(X_SFS_COMPRESS)) .map(new ValidateHeaderIsBase64Encoded(X_SFS_SECRET)) .map(new ValidateHeaderBetweenLong(X_SFS_KEEP_ALIVE_TIMEOUT, 10000, 300000)) .map(aVoid -> fromSfsRequest(httpServerRequest)).map(new ValidateContainerPath()) .flatMap(new LoadAccountAndContainer(vertxContext)).flatMap(persistentContainer -> { MultiMap headers = httpServerRequest.headers(); String destDirectory = headers.get(X_SFS_DEST_DIRECTORY); boolean compress = "true".equalsIgnoreCase(headers.get(X_SFS_COMPRESS)); byte[] secret = headers.contains(X_SFS_SECRET) ? base64().decode(headers.get(X_SFS_SECRET)) : null;/*w w w .j ava 2 s . c o m*/ return aVoid().flatMap(aVoid -> { ObservableFuture<Boolean> handler = RxHelper.observableFuture(); vertxContext.vertx().fileSystem().exists(destDirectory, handler.toHandler()); return handler.map(destDirectoryExists -> { if (!TRUE.equals(destDirectoryExists)) { JsonObject jsonObject = new JsonObject().put("message", format("%s does not exist", destDirectory)); throw new HttpRequestValidationException(HTTP_BAD_REQUEST, jsonObject); } else { return (Void) null; } }); }).flatMap(oVoid -> { ObservableFuture<List<String>> handler = RxHelper.observableFuture(); vertxContext.vertx().fileSystem().readDir(destDirectory, handler.toHandler()); return handler.map(listing -> { if (listing.size() > 0) { JsonObject jsonObject = new JsonObject().put("message", format("%s is not empty", destDirectory)); throw new HttpRequestValidationException(HTTP_BAD_REQUEST, jsonObject); } else { return (Void) null; } }); }).flatMap(aVoid -> { LOGGER.info("Exporting container " + persistentContainer.getId() + " to " + destDirectory); JournalFile dumpFile = new JournalFile(get(destDirectory).resolve(DUMP_FILE_NAME)); return dumpFile.open(vertxContext.vertx()) .flatMap(aVoid1 -> dumpFile.enableWrites(vertxContext.vertx())) .map(aVoid1 -> dumpFile); }).flatMap(dumpFile -> { httpServerRequest.startProxyKeepAlive(); Elasticsearch elasticsearch = vertxContext.verticle().elasticsearch(); String containerId = persistentContainer.getId(); String objectIndex = elasticsearch.objectIndex(persistentContainer.getName()); long now = System.currentTimeMillis() - VerifyRepairAllContainerObjects.CONSISTENCY_THRESHOLD; Calendar consistencyThreshold = Calendar.getInstance(); consistencyThreshold.setTimeInMillis(now); TermQueryBuilder containerIdQuery = termQuery("container_id", containerId); ScanAndScrollStreamProducer producer = new ScanAndScrollStreamProducer(vertxContext, containerIdQuery).setIndeces(objectIndex).setTypes(elasticsearch.defaultType()) .setReturnVersion(true); DumpFileWriter fileWriter = new DumpFileWriter(vertxContext, persistentContainer, dumpFile); if (compress) { fileWriter.enableDataCompression(); } if (secret != null) { fileWriter.enableDataEncryption(secret); } return pump(producer, fileWriter).map(aVoid -> dumpFile); }).flatMap(journalFile -> journalFile.disableWrites(vertxContext.vertx()) .map(aVoid -> journalFile)) .flatMap(journalFile -> journalFile.force(vertxContext.vertx(), true) .map(aVoid -> journalFile)) .flatMap(journalFile -> journalFile.close(vertxContext.vertx()) .map(aVoid -> journalFile)) .flatMap(journalFile -> RxHelper.executeBlocking(context, sfsVertx.getBackgroundPool(), () -> { try { write(get(destDirectory).resolve(".successful"), new byte[0], CREATE_NEW, WRITE); return (Void) null; } catch (IOException e) { throw new RuntimeException(e); } })) .doOnNext(aVoid -> LOGGER.info("Done exporting container " + persistentContainer.getId() + " to " + destDirectory)) .onErrorResumeNext(throwable -> { LOGGER.info("Failed exporting container " + persistentContainer.getId() + " to " + destDirectory, throwable); return Observable.error(throwable); }); }).map(new ToVoid<>()).single().subscribe(new ConnectionCloseTerminus<Void>(httpServerRequest) { @Override public void onNext(Void aVoid) { JsonObject jsonResponse = new JsonObject(); jsonResponse.put("code", HTTP_OK); HttpServerResponse httpResponse = httpServerRequest.response(); httpResponse.write(jsonResponse.encode(), UTF_8.toString()).write(DELIMITER_BUFFER); } }); }
From source file:org.sfs.nodes.compute.container.PutContainer.java
License:Apache License
@Override public void handle(final SfsRequest httpServerRequest) { VertxContext<Server> vertxContext = httpServerRequest.vertxContext(); aVoid().flatMap(new Authenticate(httpServerRequest)) .flatMap(new ValidateActionAuthenticated(httpServerRequest)).map(aVoid -> httpServerRequest) .map(new ValidateHeaderBetweenInteger(X_SFS_OBJECT_INDEX_SHARDS, 1, 1024)) .map(new ValidateHeaderBetweenInteger(X_SFS_OBJECT_INDEX_REPLICAS, 1, 6)) .map(new ValidateHeaderBetweenInteger(X_SFS_OBJECT_REPLICAS, 1, 6)) .map(aVoid -> fromSfsRequest(httpServerRequest)).map(new ValidateContainerPath()) .flatMap(objectPath -> {//w w w. j a v a 2 s.c om String accountId = objectPath.accountPath().get(); String containerId = objectPath.containerPath().get(); return just(accountId).flatMap(new LoadAccount(vertxContext)) .map(new ValidatePersistentAccountExists()).flatMap(persistentAccount -> { TransientContainer transientContainer = TransientContainer .fromSfsRequest(persistentAccount, httpServerRequest) .setOwnerGuid(httpServerRequest.getUserAndRole().getUser().getId()); return Defer.just(transientContainer) .flatMap(new ValidateActionContainerCreate(httpServerRequest)) .map(new ToVoid<>()).map(aVoid -> containerId) .flatMap(new LoadContainer(vertxContext, persistentAccount)) .map(new ValidatePersistentContainerNotExists()) .map(aVoid -> transientContainer) .flatMap(new PersistContainer(vertxContext)) .map(new ValidateOptimisticContainerLock()).flatMap(persistentContainer -> { MultiMap headers = httpServerRequest.headers(); CreateObjectIndex createObjectIndex = new CreateObjectIndex( vertxContext); if (headers.contains(X_SFS_OBJECT_INDEX_SHARDS)) { int shards = parseInt(headers.get(X_SFS_OBJECT_INDEX_SHARDS)); createObjectIndex = createObjectIndex.setNumberOfShards(shards); } if (headers.contains(X_SFS_OBJECT_INDEX_REPLICAS)) { int replicas = parseInt(headers.get(X_SFS_OBJECT_INDEX_REPLICAS)); createObjectIndex = createObjectIndex.setNumberOfReplicas(replicas); } return createObjectIndex.call(persistentContainer); }); }); }).single().subscribe(new ConnectionCloseTerminus<PersistentContainer>(httpServerRequest) { @Override public void onNext(PersistentContainer persistentContainer) { httpServerRequest.response().setStatusCode(HTTP_CREATED); } }); }
From source file:org.sfs.nodes.compute.container.VerifyRepairAllContainersExecute.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 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;/*from ww w.j av a 2 s . c o m*/ 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); } TransientServiceDef transientServiceDef = clusterInfo.getCurrentMasterNode(); MasterNode masterNode = nodes.remoteMasterNode(vertxContext, transientServiceDef); httpServerRequest.startProxyKeepAlive(); return masterNode.executeJob(Jobs.ID.VERIFY_REPAIR_ALL_CONTAINERS_OBJECTS, 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.container.VerifyRepairAllContainersStop.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<>()).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;/*from 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_ALL_CONTAINERS_OBJECTS, 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.container.VerifyRepairAllContainersWait.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<>()).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;/*from w w w. j a v a 2 s. com*/ TransientServiceDef transientServiceDef = clusterInfo.getCurrentMasterNode(); MasterNode masterNode = nodes.remoteMasterNode(vertxContext, transientServiceDef); httpServerRequest.startProxyKeepAlive(); return masterNode.waitForJob(Jobs.ID.VERIFY_REPAIR_ALL_CONTAINERS_OBJECTS, 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.container.VerifyRepairContainerExecute.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 ValidateContainerPath()).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 w w. j a v a2 s. co m 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.CONTAINER_ID, objectPath.containerPath().get()); TransientServiceDef transientServiceDef = clusterInfo.getCurrentMasterNode(); MasterNode masterNode = nodes.remoteMasterNode(vertxContext, transientServiceDef); httpServerRequest.startProxyKeepAlive(); return masterNode.executeJob(Jobs.ID.VERIFY_REPAIR_CONTAINER_OBJECTS, 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.container.VerifyRepairContainerStop.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 ValidateContainerPath()).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 w w .j a va 2s . c om TransientServiceDef transientServiceDef = clusterInfo.getCurrentMasterNode(); MasterNode masterNode = nodes.remoteMasterNode(vertxContext, transientServiceDef); httpServerRequest.startProxyKeepAlive(); return masterNode.stopJob(Jobs.ID.VERIFY_REPAIR_CONTAINER_OBJECTS, 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.container.VerifyRepairContainerWait.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 ValidateContainerPath()).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;// ww w . ja v a 2 s .c o m TransientServiceDef transientServiceDef = clusterInfo.getCurrentMasterNode(); MasterNode masterNode = nodes.remoteMasterNode(vertxContext, transientServiceDef); httpServerRequest.startProxyKeepAlive(); return masterNode.waitForJob(Jobs.ID.VERIFY_REPAIR_CONTAINER_OBJECTS, 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.containerkeys.ReEncryptContainerKeys.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 w w. j a v a 2s . co m*/ MultiMap params = MultiMap.caseInsensitiveMultiMap(); TransientServiceDef transientServiceDef = clusterInfo.getCurrentMasterNode(); MasterNode masterNode = nodes.remoteMasterNode(vertxContext, transientServiceDef); httpServerRequest.startProxyKeepAlive(); return masterNode.executeJob(Jobs.ID.RE_ENCRYPT_CONTAINER_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); } }); }