Search in sources :

Example 26 with Json

use of org.infinispan.commons.dataconversion.internal.Json in project infinispan by infinispan.

the class RestLoggingResource method testListAppenders.

@Test
public void testListAppenders() {
    RestClient client = SERVER_TEST.rest().create();
    RestResponse response = sync(client.server().logging().listAppenders());
    String body = response.getBody();
    Json appenders = Json.read(body);
    assertEquals(body, 5, appenders.asMap().size());
}
Also used : RestResponse(org.infinispan.client.rest.RestResponse) RestClient(org.infinispan.client.rest.RestClient) Json(org.infinispan.commons.dataconversion.internal.Json) Test(org.junit.Test)

Example 27 with Json

use of org.infinispan.commons.dataconversion.internal.Json in project infinispan by infinispan.

the class RestLoggingResource method testListLoggers.

@Test
public void testListLoggers() {
    RestClient client = SERVER_TEST.rest().create();
    RestResponse response = sync(client.server().logging().listLoggers());
    Json loggers = Json.read(response.getBody());
    assertTrue(loggers.asJsonList().size() > 0);
}
Also used : RestResponse(org.infinispan.client.rest.RestResponse) RestClient(org.infinispan.client.rest.RestClient) Json(org.infinispan.commons.dataconversion.internal.Json) Test(org.junit.Test)

Example 28 with Json

use of org.infinispan.commons.dataconversion.internal.Json in project infinispan by infinispan.

the class AbstractSchemaJdbcStore method recursiveUpdateParameters.

void recursiveUpdateParameters(Descriptor descriptor, Map<String, Parameter> parameterMap, String[] nestedMessageNames, Set<String> seenNames, boolean key) {
    for (FieldDescriptor fieldDescriptor : descriptor.getFields()) {
        String name = fieldDescriptor.getName();
        if (fieldDescriptor.isRepeated()) {
            throw log.repeatedFieldsNotSupported(name, fieldDescriptor.getTypeName());
        }
        Descriptor fieldMessageDescriptor = fieldDescriptor.getMessageType();
        if (fieldMessageDescriptor != null) {
            String[] newNestedMessageNames;
            if (nestedMessageNames == null) {
                newNestedMessageNames = new String[1];
                newNestedMessageNames[0] = name;
            } else {
                newNestedMessageNames = Arrays.copyOf(nestedMessageNames, nestedMessageNames.length + 1);
                newNestedMessageNames[nestedMessageNames.length] = name;
            }
            recursiveUpdateParameters(fieldMessageDescriptor, parameterMap, newNestedMessageNames, seenNames, key);
            continue;
        }
        if (!seenNames.add(name)) {
            throw log.duplicateFieldInSchema(name, fieldDescriptor.getTypeName());
        }
        Parameter parameter = parameterMap.get(name.toUpperCase());
        if (parameter == null) {
            if (fieldDescriptor.isRequired()) {
                throw log.requiredSchemaFieldNotPresent(name, fieldDescriptor.getTypeName());
            }
            continue;
        }
        if (parameter.primaryIdentifier && !key && !config.getSchemaJdbcConfiguration().embeddedKey()) {
            throw log.primaryKeyPresentButNotEmbedded(parameter.name, fieldDescriptor.getTypeName());
        }
        Function<Json, Json> retrievalFunction;
        BiConsumer<Json, Object> valueConsumer;
        // Oracle doesn't have a boolean type, so use a number of 0 or 1 instead
        if (parameter.type == ProtostreamFieldType.INT_32 && fieldDescriptor.getType() == Type.BOOL) {
            retrievalFunction = json -> Json.factory().number(json.at(name).asBoolean() ? 1 : 0);
            valueConsumer = (json, o) -> json.set(name, ((Integer) o) == 1);
        } else {
            retrievalFunction = json -> json.at(name);
            valueConsumer = (json, o) -> json.set(name, o);
        }
        if (nestedMessageNames == null) {
            updateUnwrap(parameter, key, retrievalFunction);
            parameter.jsonUpdateConsumer = valueConsumer;
        } else {
            updateUnwrap(parameter, key, json -> {
                for (String nestedName : nestedMessageNames) {
                    json = json.at(nestedName);
                    if (json == null)
                        return null;
                }
                return retrievalFunction.apply(json);
            });
            parameter.jsonUpdateConsumer = ((json, o) -> {
                Json nestedJSon = json;
                for (String nestedName : nestedMessageNames) {
                    nestedJSon = json.at(nestedName);
                    if (nestedJSon == null) {
                        nestedJSon = Json.object();
                        json.set(nestedName, nestedJSon);
                    }
                    json = nestedJSon;
                }
                valueConsumer.accept(nestedJSon, o);
            });
        }
    }
}
Also used : Type(org.infinispan.protostream.descriptors.Type) Arrays(java.util.Arrays) ImmutableSerializationContext(org.infinispan.protostream.ImmutableSerializationContext) TableOperations(org.infinispan.persistence.jdbc.common.TableOperations) AbstractSchemaJdbcConfiguration(org.infinispan.persistence.sql.configuration.AbstractSchemaJdbcConfiguration) MarshallableEntryFactory(org.infinispan.persistence.spi.MarshallableEntryFactory) HashMap(java.util.HashMap) ComponentRegistry(org.infinispan.factories.ComponentRegistry) Descriptor(org.infinispan.protostream.descriptors.Descriptor) Function(java.util.function.Function) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) EnumDescriptor(org.infinispan.protostream.descriptors.EnumDescriptor) SQLException(java.sql.SQLException) MediaType(org.infinispan.commons.dataconversion.MediaType) AdvancedCache(org.infinispan.AdvancedCache) ResultSet(java.sql.ResultSet) Map(java.util.Map) BiConsumer(java.util.function.BiConsumer) MarshallableEntry(org.infinispan.persistence.spi.MarshallableEntry) SerializationContextRegistry(org.infinispan.marshall.protostream.impl.SerializationContextRegistry) BaseJdbcStore(org.infinispan.persistence.jdbc.common.impl.BaseJdbcStore) BaseTableOperations(org.infinispan.persistence.jdbc.common.sql.BaseTableOperations) Predicate(java.util.function.Predicate) CacheConfigurationException(org.infinispan.commons.CacheConfigurationException) Timestamp(java.sql.Timestamp) Set(java.util.Set) Json(org.infinispan.commons.dataconversion.internal.Json) PreparedStatement(java.sql.PreparedStatement) Collectors(java.util.stream.Collectors) SchemaJdbcConfiguration(org.infinispan.persistence.sql.configuration.SchemaJdbcConfiguration) FieldDescriptor(org.infinispan.protostream.descriptors.FieldDescriptor) Objects(java.util.Objects) GenericDescriptor(org.infinispan.protostream.descriptors.GenericDescriptor) Base64(java.util.Base64) List(java.util.List) ConnectionFactory(org.infinispan.persistence.jdbc.common.connectionfactory.ConnectionFactory) InitializationContext(org.infinispan.persistence.spi.InitializationContext) DataConversion(org.infinispan.encoding.DataConversion) Types(java.sql.Types) Descriptor(org.infinispan.protostream.descriptors.Descriptor) EnumDescriptor(org.infinispan.protostream.descriptors.EnumDescriptor) FieldDescriptor(org.infinispan.protostream.descriptors.FieldDescriptor) GenericDescriptor(org.infinispan.protostream.descriptors.GenericDescriptor) Json(org.infinispan.commons.dataconversion.internal.Json) FieldDescriptor(org.infinispan.protostream.descriptors.FieldDescriptor)

Example 29 with Json

use of org.infinispan.commons.dataconversion.internal.Json in project infinispan by infinispan.

the class AbstractSchemaJdbcStore method verifyParametersPresentForMessage.

void verifyParametersPresentForMessage(ImmutableSerializationContext ctx, String fullTypeName, Map<String, Parameter> parameterMap, boolean key) {
    GenericDescriptor genericDescriptor;
    try {
        genericDescriptor = ctx.getDescriptorByName(fullTypeName);
    } catch (IllegalArgumentException t) {
        throw log.schemaNotFound(fullTypeName);
    }
    Set<String> seenNames = new HashSet<>();
    if (genericDescriptor instanceof Descriptor) {
        recursiveUpdateParameters((Descriptor) genericDescriptor, parameterMap, null, seenNames, key);
    } else if (genericDescriptor instanceof EnumDescriptor) {
        if (!key && config.getSchemaJdbcConfiguration().embeddedKey()) {
            throw log.keyCannotEmbedWithEnum(fullTypeName);
        }
        String name = genericDescriptor.getName();
        // treat an enum as just a string
        Parameter enumParam = parameterMap.get(name.toUpperCase());
        if (enumParam != null) {
            assert enumParam.getType() == ProtostreamFieldType.STRING;
            updateUnwrap(enumParam, key, json -> json.at("_value"));
            enumParam.jsonUpdateConsumer = (json, o) -> {
                json.set("_type", fullTypeName);
                json.set("_value", o);
            };
        }
    } else {
        throw new UnsupportedOperationException("Unsupported descriptor found " + genericDescriptor);
    }
}
Also used : Type(org.infinispan.protostream.descriptors.Type) Arrays(java.util.Arrays) ImmutableSerializationContext(org.infinispan.protostream.ImmutableSerializationContext) TableOperations(org.infinispan.persistence.jdbc.common.TableOperations) AbstractSchemaJdbcConfiguration(org.infinispan.persistence.sql.configuration.AbstractSchemaJdbcConfiguration) MarshallableEntryFactory(org.infinispan.persistence.spi.MarshallableEntryFactory) HashMap(java.util.HashMap) ComponentRegistry(org.infinispan.factories.ComponentRegistry) Descriptor(org.infinispan.protostream.descriptors.Descriptor) Function(java.util.function.Function) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) EnumDescriptor(org.infinispan.protostream.descriptors.EnumDescriptor) SQLException(java.sql.SQLException) MediaType(org.infinispan.commons.dataconversion.MediaType) AdvancedCache(org.infinispan.AdvancedCache) ResultSet(java.sql.ResultSet) Map(java.util.Map) BiConsumer(java.util.function.BiConsumer) MarshallableEntry(org.infinispan.persistence.spi.MarshallableEntry) SerializationContextRegistry(org.infinispan.marshall.protostream.impl.SerializationContextRegistry) BaseJdbcStore(org.infinispan.persistence.jdbc.common.impl.BaseJdbcStore) BaseTableOperations(org.infinispan.persistence.jdbc.common.sql.BaseTableOperations) Predicate(java.util.function.Predicate) CacheConfigurationException(org.infinispan.commons.CacheConfigurationException) Timestamp(java.sql.Timestamp) Set(java.util.Set) Json(org.infinispan.commons.dataconversion.internal.Json) PreparedStatement(java.sql.PreparedStatement) Collectors(java.util.stream.Collectors) SchemaJdbcConfiguration(org.infinispan.persistence.sql.configuration.SchemaJdbcConfiguration) FieldDescriptor(org.infinispan.protostream.descriptors.FieldDescriptor) Objects(java.util.Objects) GenericDescriptor(org.infinispan.protostream.descriptors.GenericDescriptor) Base64(java.util.Base64) List(java.util.List) ConnectionFactory(org.infinispan.persistence.jdbc.common.connectionfactory.ConnectionFactory) InitializationContext(org.infinispan.persistence.spi.InitializationContext) DataConversion(org.infinispan.encoding.DataConversion) Types(java.sql.Types) GenericDescriptor(org.infinispan.protostream.descriptors.GenericDescriptor) Descriptor(org.infinispan.protostream.descriptors.Descriptor) EnumDescriptor(org.infinispan.protostream.descriptors.EnumDescriptor) FieldDescriptor(org.infinispan.protostream.descriptors.FieldDescriptor) GenericDescriptor(org.infinispan.protostream.descriptors.GenericDescriptor) EnumDescriptor(org.infinispan.protostream.descriptors.EnumDescriptor) HashSet(java.util.HashSet)

Example 30 with Json

use of org.infinispan.commons.dataconversion.internal.Json in project infinispan by infinispan.

the class QueryRequest method fromJson.

public static QueryRequest fromJson(Json jsonRequest) {
    String queryString = jsonRequest.at(QUERY_STRING_FIELD).asString();
    Json offsetValue = jsonRequest.at(START_OFFSET_FIELD);
    Json maxResults = jsonRequest.at(MAX_RESULTS_FIELD);
    Json named = jsonRequest.at(NAMED_PARAMETERS_FIELD);
    List<NamedParameter> params = named.isArray() ? named.asJsonList().stream().map(NamedParameter::fromJson).collect(toList()) : Collections.emptyList();
    QueryRequest queryRequest = new QueryRequest();
    queryRequest.setQueryString(queryString);
    if (!offsetValue.isNull())
        queryRequest.setStartOffset(offsetValue.asLong());
    if (!maxResults.isNull())
        queryRequest.setMaxResults(maxResults.asInteger());
    if (!params.isEmpty())
        queryRequest.setNamedParameters(params);
    return queryRequest;
}
Also used : Json(org.infinispan.commons.dataconversion.internal.Json)

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