Search in sources :

Example 31 with Json

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);
}
Also used : Json(org.infinispan.commons.dataconversion.internal.Json)

Example 32 with Json

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());
}
Also used : RollingUpgradeManager(org.infinispan.upgrade.RollingUpgradeManager) ContentSource(org.infinispan.rest.framework.ContentSource) RemoteStoreConfiguration(org.infinispan.persistence.remote.configuration.RemoteStoreConfiguration) ConfigurationBuilder(org.infinispan.configuration.cache.ConfigurationBuilder) ResourceUtil.addEntityAsJson(org.infinispan.rest.resources.ResourceUtil.addEntityAsJson) Json(org.infinispan.commons.dataconversion.internal.Json) NettyRestResponse(org.infinispan.rest.NettyRestResponse) RestResponseException(org.infinispan.rest.RestResponseException)

Example 33 with Json

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;
}
Also used : Json(org.infinispan.commons.dataconversion.internal.Json) LoggerConfig(org.apache.logging.log4j.core.config.LoggerConfig)

Example 34 with Json

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);
}
Also used : GlobalConfiguration(org.infinispan.configuration.global.GlobalConfiguration) GlobalAuthorizationConfiguration(org.infinispan.configuration.global.GlobalAuthorizationConfiguration) Configuration(org.infinispan.configuration.cache.Configuration) Authorizer(org.infinispan.security.impl.Authorizer) Json(org.infinispan.commons.dataconversion.internal.Json) Subject(javax.security.auth.Subject) SubjectACL(org.infinispan.security.impl.SubjectACL)

Example 35 with Json

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());
    }
}
Also used : Path(java.nio.file.Path) FullHttpRequest(io.netty.handler.codec.http.FullHttpRequest) Json(org.infinispan.commons.dataconversion.internal.Json) IOException(java.io.IOException) BackupManager(org.infinispan.server.core.BackupManager) DiskAttribute(io.netty.handler.codec.http.multipart.DiskAttribute) InterfaceHttpPostRequestDecoder(io.netty.handler.codec.http.multipart.InterfaceHttpPostRequestDecoder) DiskFileUpload(io.netty.handler.codec.http.multipart.DiskFileUpload) DefaultHttpDataFactory(io.netty.handler.codec.http.multipart.DefaultHttpDataFactory) HttpPostMultipartRequestDecoder(io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder) MediaType(org.infinispan.commons.dataconversion.MediaType) NettyRestRequest(org.infinispan.rest.NettyRestRequest)

Aggregations

Json (org.infinispan.commons.dataconversion.internal.Json)130 RestResponse (org.infinispan.client.rest.RestResponse)51 Test (org.testng.annotations.Test)51 RestClient (org.infinispan.client.rest.RestClient)15 Util.getResourceAsString (org.infinispan.commons.util.Util.getResourceAsString)13 Test (org.junit.Test)13 RestCacheClient (org.infinispan.client.rest.RestCacheClient)12 MultipleCacheManagersTest (org.infinispan.test.MultipleCacheManagersTest)12 AbstractMultipleSitesTest (org.infinispan.xsite.AbstractMultipleSitesTest)7 ArrayList (java.util.ArrayList)6 List (java.util.List)6 Map (java.util.Map)6 NettyRestResponse (org.infinispan.rest.NettyRestResponse)6 ResourceUtil.addEntityAsJson (org.infinispan.rest.resources.ResourceUtil.addEntityAsJson)6 HashMap (java.util.HashMap)5 RestEntity (org.infinispan.client.rest.RestEntity)5 IOException (java.io.IOException)4 HashSet (java.util.HashSet)4 Request (okhttp3.Request)4 RestSchemaClient (org.infinispan.client.rest.RestSchemaClient)4