use of org.infinispan.commons.dataconversion.internal.Json in project infinispan by infinispan.
the class JsonQueryRequest method fromJson.
public static JsonQueryRequest fromJson(String json) {
Map<String, Json> properties = Json.read(json).asJsonMap();
Json queryValue = properties.get(QUERY_STRING);
Json offsetValue = properties.get(OFFSET);
Json maxResultsValue = properties.get(MAX_RESULTS);
String query = queryValue != null ? queryValue.asString() : null;
Integer offset = offsetValue != null ? offsetValue.asInteger() : null;
Integer maxResults = maxResultsValue != null ? maxResultsValue.asInteger() : null;
return new JsonQueryRequest(query, offset, maxResults);
}
use of org.infinispan.commons.dataconversion.internal.Json in project infinispan by infinispan.
the class CacheResourceV2 method addSourceConnection.
private CompletionStage<RestResponse> addSourceConnection(RestRequest request) {
final NettyRestResponse.Builder builder = new NettyRestResponse.Builder();
builder.status(NO_CONTENT);
String cacheName = request.variables().get("cacheName");
ContentSource contents = request.contents();
byte[] config = contents.rawContent();
Cache<?, ?> cache = invocationHelper.getRestCacheManager().getCache(cacheName, request);
if (cache == null) {
return notFoundResponseFuture();
}
if (config == null || config.length == 0) {
return badRequestResponseFuture("A remote-store config must be provided");
}
String storeConfig = new String(config, UTF_8);
Json read = Json.read(storeConfig);
if (!read.isObject() || read.at("remote-store") == null || read.asMap().size() != 1) {
return badRequestResponseFuture("Invalid remote-store JSON description: a single remote-store element must be provided");
}
return CompletableFuture.supplyAsync(() -> {
RollingUpgradeManager upgradeManager = cache.getAdvancedCache().getComponentRegistry().getComponent(RollingUpgradeManager.class);
try {
RemoteStoreConfiguration storeConfiguration = SerializationUtils.fromJson(read.toString());
if (!upgradeManager.isConnected(MIGRATOR_NAME)) {
upgradeManager.connectSource(MIGRATOR_NAME, storeConfiguration);
} else {
builder.status(HttpResponseStatus.NOT_MODIFIED);
}
} catch (Exception e) {
Throwable rootCause = Util.getRootCause(e);
builder.status(HttpResponseStatus.INTERNAL_SERVER_ERROR).entity(rootCause.getMessage());
}
return builder.build();
}, invocationHelper.getExecutor());
}
use of org.infinispan.commons.dataconversion.internal.Json in project infinispan by infinispan.
the class LoggingResource method jsonLoggerConfigs.
private Json jsonLoggerConfigs(Collection<LoggerConfig> loggerConfigs) {
Json array = Json.array();
for (LoggerConfig loggerConfig : loggerConfigs) {
Json jsonLoggerConfig = Json.object();
jsonLoggerConfig.set("name", loggerConfig.getName());
jsonLoggerConfig.set("level", loggerConfig.getLevel().toString());
jsonLoggerConfig.set("appenders", Json.make(loggerConfig.getAppenders().keySet()));
array.add(jsonLoggerConfig);
}
return array;
}
use of org.infinispan.commons.dataconversion.internal.Json in project infinispan by infinispan.
the class SecurityResource method acl.
private CompletionStage<RestResponse> acl(RestRequest request) {
Subject subject = request.getSubject();
RestCacheManager<Object> rcm = invocationHelper.getRestCacheManager();
Collection<String> cacheNames = rcm.getCacheNames();
Json acl = Json.object();
if (subject == null) {
acl.set("subject", Json.array());
} else {
Json jsonSubjects = Json.array();
subject.getPrincipals().forEach(principal -> {
jsonSubjects.add(Json.object().set("name", principal.getName()).set("type", principal.getClass().getSimpleName()));
});
acl.set("subject", jsonSubjects);
Authorizer authorizer = rcm.getAuthorizer();
SubjectACL globalACL = authorizer.getACL(subject);
acl.set("global", aclToJson(globalACL));
Json caches = Json.object();
acl.set("caches", caches);
for (String cacheName : cacheNames) {
Configuration cacheConfiguration = SecurityActions.getCacheConfigurationFromManager(rcm.getInstance(), cacheName);
SubjectACL cacheACL = authorizer.getACL(subject, cacheConfiguration.security().authorization());
caches.set(cacheName, aclToJson(cacheACL));
}
}
return asJsonResponseFuture(acl);
}
use of org.infinispan.commons.dataconversion.internal.Json in project infinispan by infinispan.
the class BackupManagerResource method handleRestore.
static CompletionStage<RestResponse> handleRestore(String name, RestRequest request, BackupManager backupManager, TriFunction<String, Path, Json, CompletionStage<Void>> function) {
BackupManager.Status existingStatus = backupManager.getRestoreStatus(name);
if (existingStatus != BackupManager.Status.NOT_FOUND)
return responseFuture(CONFLICT);
Path path;
Json resourcesJson = Json.object();
MediaType contentType = request.contentType();
boolean uploadedBackup = contentType.match(MediaType.MULTIPART_FORM_DATA);
try {
if (uploadedBackup) {
FullHttpRequest nettyRequest = ((NettyRestRequest) request).getFullHttpRequest();
DefaultHttpDataFactory factory = new DefaultHttpDataFactory(true);
InterfaceHttpPostRequestDecoder decoder = new HttpPostMultipartRequestDecoder(factory, nettyRequest);
DiskFileUpload backup = (DiskFileUpload) decoder.getBodyHttpData("backup");
path = backup.getFile().toPath();
DiskAttribute resources = (DiskAttribute) decoder.getBodyHttpData("resources");
if (resources != null)
resourcesJson = Json.read(resources.getString());
} else if (contentType.match(MediaType.APPLICATION_JSON)) {
// Attempt to parse body as json
Json json = Json.read(request.contents().asString());
Json resources = json.at(RESOURCES_KEY);
if (resources != null)
resourcesJson = resources;
Json backupPath = json.at(LOCATION_KEY);
if (backupPath == null)
return responseFuture(BAD_REQUEST, "Required json attribute 'backup-location' not found");
path = Paths.get(backupPath.asString());
} else {
return responseFuture(UNSUPPORTED_MEDIA_TYPE);
}
function.apply(name, path, resourcesJson).whenComplete((Void, t) -> {
if (t != null) {
LOG.error(t);
}
if (uploadedBackup) {
try {
Files.delete(path);
} catch (IOException e) {
LOG.warnf(e, "Unable to delete uploaded backup file '%s'", path);
}
}
});
return responseFuture(ACCEPTED);
} catch (IOException e) {
LOG.error(e);
return responseFuture(INTERNAL_SERVER_ERROR, e.getMessage());
}
}
Aggregations