Search in sources :

Example 1 with JsonReaderFactory

use of javax.json.JsonReaderFactory in project meecrowave by apache.

the class ConfigurableBus method initProviders.

public void initProviders(final Configuration builder, final ClassLoader loader) {
    final List<Object> providers = ofNullable(builder.getJaxrsDefaultProviders()).map(s -> Stream.of(s.split(" *, *")).map(String::trim).filter(p -> !p.isEmpty()).map(name -> {
        try {
            return Thread.currentThread().getContextClassLoader().loadClass(name).newInstance();
        } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
            throw new IllegalArgumentException(name + " can't be created");
        }
    }).collect(Collectors.<Object>toList())).orElseGet(() -> {
        // ensure both providers share the same memory reuse logic
        final JsonProvider provider = JsonProvider.provider();
        final JsonReaderFactory readerFactory = provider.createReaderFactory(new HashMap<String, Object>() {

            {
                put(JsonParserFactoryImpl.SUPPORTS_COMMENTS, builder.isJsonpSupportsComment());
                Optional.of(builder.getJsonpMaxStringLen()).filter(v -> v > 0).ifPresent(s -> put(JsonParserFactoryImpl.MAX_STRING_LENGTH, s));
                Optional.of(builder.getJsonpMaxReadBufferLen()).filter(v -> v > 0).ifPresent(s -> put(JsonParserFactoryImpl.BUFFER_LENGTH, s));
                ofNullable(builder.getJsonpBufferStrategy()).ifPresent(s -> put(AbstractJsonFactory.BUFFER_STRATEGY, s));
            }
        });
        final JsonWriterFactory writerFactory = provider.createWriterFactory(new HashMap<String, Object>() {

            {
                put(JsonGenerator.PRETTY_PRINTING, builder.isJsonpPrettify());
                Optional.of(builder.getJsonpMaxWriteBufferLen()).filter(v -> v > 0).ifPresent(v -> put(JsonGeneratorFactoryImpl.GENERATOR_BUFFER_LENGTH, v));
                ofNullable(builder.getJsonpBufferStrategy()).ifPresent(s -> put(AbstractJsonFactory.BUFFER_STRATEGY, s));
            }
        });
        return Stream.<Object>of(new ConfiguredJsonbJaxrsProvider(builder.getJsonbEncoding(), builder.isJsonbNulls(), builder.isJsonbIJson(), builder.isJsonbPrettify(), builder.getJsonbBinaryStrategy(), builder.getJsonbNamingStrategy(), builder.getJsonbOrderStrategy(), new DelegateJsonProvider(provider, readerFactory, writerFactory))).collect(toList());
    });
    if (builder.isJaxrsAutoActivateBeanValidation()) {
        try {
            // we don't need the jaxrsbeanvalidationfeature since bean validation cdi extension handles it normally
            loader.loadClass("javax.validation.Validation");
            final Object instance = loader.loadClass("org.apache.cxf.jaxrs.validation.ValidationExceptionMapper").getConstructor().newInstance();
            // validate bval can be used, check NoClassDefFoundError javax.validation.ValidationException
            instance.getClass().getGenericInterfaces();
            providers.add(instance);
        } catch (final Exception | NoClassDefFoundError e) {
        // no-op
        }
    }
    // client
    if (getProperty("org.apache.cxf.jaxrs.bus.providers") == null) {
        setProperty("skip.default.json.provider.registration", "true");
        setProperty("org.apache.cxf.jaxrs.bus.providers", providers);
    }
}
Also used : JsonReaderFactory(javax.json.JsonReaderFactory) JsonWriterFactory(javax.json.JsonWriterFactory) Produces(javax.ws.rs.Produces) Provider(javax.ws.rs.ext.Provider) JsonParserFactoryImpl(org.apache.johnzon.core.JsonParserFactoryImpl) JsonBuilderFactory(javax.json.JsonBuilderFactory) Collections.singletonList(java.util.Collections.singletonList) JsonProvider(javax.json.spi.JsonProvider) JsonValue(javax.json.JsonValue) BigDecimal(java.math.BigDecimal) JsonStructure(javax.json.JsonStructure) MediaType(javax.ws.rs.core.MediaType) JsonNumber(javax.json.JsonNumber) Consumes(javax.ws.rs.Consumes) Map(java.util.Map) BigInteger(java.math.BigInteger) ClientLifeCycleManagerImpl(org.apache.cxf.bus.managers.ClientLifeCycleManagerImpl) JsonObject(javax.json.JsonObject) JsonbBuilder(javax.json.bind.JsonbBuilder) Collection(java.util.Collection) JsonGeneratorFactory(javax.json.stream.JsonGeneratorFactory) Reader(java.io.Reader) AbstractJsonFactory(org.apache.johnzon.core.AbstractJsonFactory) Collectors(java.util.stream.Collectors) List(java.util.List) Stream(java.util.stream.Stream) Type(java.lang.reflect.Type) Writer(java.io.Writer) Annotation(java.lang.annotation.Annotation) Optional(java.util.Optional) JsonObjectBuilder(javax.json.JsonObjectBuilder) JsonGenerator(javax.json.stream.JsonGenerator) JsonArrayBuilder(javax.json.JsonArrayBuilder) JsonPatch(javax.json.JsonPatch) ClientLifeCycleManager(org.apache.cxf.endpoint.ClientLifeCycleManager) HashMap(java.util.HashMap) JsonParserFactory(javax.json.stream.JsonParserFactory) ExtensionManagerBus(org.apache.cxf.bus.extension.ExtensionManagerBus) JsonbJaxrsProvider(org.apache.johnzon.jaxrs.jsonb.jaxrs.JsonbJaxrsProvider) OutputStream(java.io.OutputStream) JsonParser(javax.json.stream.JsonParser) JsonReader(javax.json.JsonReader) Optional.ofNullable(java.util.Optional.ofNullable) JsonArray(javax.json.JsonArray) JsonMergePatch(javax.json.JsonMergePatch) Configuration(org.apache.meecrowave.configuration.Configuration) JsonGeneratorFactoryImpl(org.apache.johnzon.core.JsonGeneratorFactoryImpl) JsonString(javax.json.JsonString) Collectors.toList(java.util.stream.Collectors.toList) JsonPatchBuilder(javax.json.JsonPatchBuilder) JsonWriter(javax.json.JsonWriter) Jsonb(javax.json.bind.Jsonb) JsonPointer(javax.json.JsonPointer) InputStream(java.io.InputStream) JsonString(javax.json.JsonString) JsonProvider(javax.json.spi.JsonProvider) JsonObject(javax.json.JsonObject) JsonWriterFactory(javax.json.JsonWriterFactory) JsonReaderFactory(javax.json.JsonReaderFactory)

Example 2 with JsonReaderFactory

use of javax.json.JsonReaderFactory in project meecrowave by apache.

the class ConfigurableBus method initProviders.

public void initProviders(final Meecrowave.Builder builder, final ClassLoader loader) {
    final List<Object> providers = ofNullable(builder.getJaxrsDefaultProviders()).map(s -> Stream.of(s.split(" *, *")).map(String::trim).filter(p -> !p.isEmpty()).map(name -> {
        try {
            return Thread.currentThread().getContextClassLoader().loadClass(name).newInstance();
        } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
            throw new IllegalArgumentException(name + " can't be created");
        }
    }).collect(Collectors.<Object>toList())).orElseGet(() -> {
        // ensure both providers share the same memory reuse logic
        final JsonProvider provider = JsonProvider.provider();
        final JsonReaderFactory readerFactory = provider.createReaderFactory(new HashMap<String, Object>() {

            {
                put(JsonParserFactoryImpl.SUPPORTS_COMMENTS, builder.isJsonpSupportsComment());
                of(builder.getJsonpMaxStringLen()).filter(v -> v > 0).ifPresent(s -> put(JsonParserFactoryImpl.MAX_STRING_LENGTH, s));
                of(builder.getJsonpMaxReadBufferLen()).filter(v -> v > 0).ifPresent(s -> put(JsonParserFactoryImpl.BUFFER_LENGTH, s));
                ofNullable(builder.getJsonpBufferStrategy()).ifPresent(s -> put(AbstractJsonFactory.BUFFER_STRATEGY, s));
            }
        });
        final JsonWriterFactory writerFactory = provider.createWriterFactory(new HashMap<String, Object>() {

            {
                put(JsonGenerator.PRETTY_PRINTING, builder.isJsonpPrettify());
                of(builder.getJsonpMaxWriteBufferLen()).filter(v -> v > 0).ifPresent(v -> put(JsonGeneratorFactoryImpl.GENERATOR_BUFFER_LENGTH, v));
                ofNullable(builder.getJsonpBufferStrategy()).ifPresent(s -> put(AbstractJsonFactory.BUFFER_STRATEGY, s));
            }
        });
        return Stream.<Object>of(new ConfiguredJsonbJaxrsProvider(builder.getJsonbEncoding(), builder.isJsonbNulls(), builder.isJsonbIJson(), builder.isJsonbPrettify(), builder.getJsonbBinaryStrategy(), builder.getJsonbNamingStrategy(), builder.getJsonbOrderStrategy(), new DelegateJsonProvider(provider, readerFactory, writerFactory)), new ConfiguredJsrProvider(readerFactory, writerFactory)).collect(toList());
    });
    if (builder.isJaxrsAutoActivateBeanValidation()) {
        try {
            // we don't need the jaxrsbeanvalidationfeature since bean validation cdi extension handles it normally
            loader.loadClass("javax.validation.Validation");
            final Object instance = loader.loadClass("org.apache.cxf.jaxrs.validation.ValidationExceptionMapper").getConstructor().newInstance();
            // validate bval can be used, check NoClassDefFoundError javax.validation.ValidationException
            instance.getClass().getGenericInterfaces();
            providers.add(instance);
        } catch (final Exception | NoClassDefFoundError e) {
        // no-op
        }
    }
    // client
    if (getProperty("org.apache.cxf.jaxrs.bus.providers") == null) {
        setProperty("skip.default.json.provider.registration", "true");
        setProperty("org.apache.cxf.jaxrs.bus.providers", providers);
    }
}
Also used : JsonReaderFactory(javax.json.JsonReaderFactory) Arrays(java.util.Arrays) JsonWriterFactory(javax.json.JsonWriterFactory) Produces(javax.ws.rs.Produces) Provider(javax.ws.rs.ext.Provider) JsonParserFactoryImpl(org.apache.johnzon.core.JsonParserFactoryImpl) JsonBuilderFactory(javax.json.JsonBuilderFactory) Optional.of(java.util.Optional.of) JsonProvider(javax.json.spi.JsonProvider) JsonValue(javax.json.JsonValue) BigDecimal(java.math.BigDecimal) JsonStructure(javax.json.JsonStructure) MediaType(javax.ws.rs.core.MediaType) JsonNumber(javax.json.JsonNumber) Consumes(javax.ws.rs.Consumes) Map(java.util.Map) BigInteger(java.math.BigInteger) ClientLifeCycleManagerImpl(org.apache.cxf.bus.managers.ClientLifeCycleManagerImpl) JsonObject(javax.json.JsonObject) JsonbBuilder(javax.json.bind.JsonbBuilder) Collection(java.util.Collection) JsonGeneratorFactory(javax.json.stream.JsonGeneratorFactory) Reader(java.io.Reader) AbstractJsonFactory(org.apache.johnzon.core.AbstractJsonFactory) Collectors(java.util.stream.Collectors) List(java.util.List) Stream(java.util.stream.Stream) Writer(java.io.Writer) Meecrowave(org.apache.meecrowave.Meecrowave) JsonObjectBuilder(javax.json.JsonObjectBuilder) JsonGenerator(javax.json.stream.JsonGenerator) JsonArrayBuilder(javax.json.JsonArrayBuilder) JsonPatch(javax.json.JsonPatch) ClientLifeCycleManager(org.apache.cxf.endpoint.ClientLifeCycleManager) HashMap(java.util.HashMap) JsonParserFactory(javax.json.stream.JsonParserFactory) ExtensionManagerBus(org.apache.cxf.bus.extension.ExtensionManagerBus) DelegateProvider(org.apache.johnzon.jaxrs.DelegateProvider) JsonbJaxrsProvider(org.apache.johnzon.jaxrs.jsonb.jaxrs.JsonbJaxrsProvider) JsrMessageBodyReader(org.apache.johnzon.jaxrs.JsrMessageBodyReader) OutputStream(java.io.OutputStream) JsonParser(javax.json.stream.JsonParser) JsonReader(javax.json.JsonReader) Optional.ofNullable(java.util.Optional.ofNullable) JsonArray(javax.json.JsonArray) JsonMergePatch(javax.json.JsonMergePatch) JsrMessageBodyWriter(org.apache.johnzon.jaxrs.JsrMessageBodyWriter) JsonGeneratorFactoryImpl(org.apache.johnzon.core.JsonGeneratorFactoryImpl) JsonString(javax.json.JsonString) Collectors.toList(java.util.stream.Collectors.toList) JsonPatchBuilder(javax.json.JsonPatchBuilder) JsonWriter(javax.json.JsonWriter) Jsonb(javax.json.bind.Jsonb) JsonPointer(javax.json.JsonPointer) InputStream(java.io.InputStream) JsonString(javax.json.JsonString) JsonProvider(javax.json.spi.JsonProvider) JsonObject(javax.json.JsonObject) JsonWriterFactory(javax.json.JsonWriterFactory) JsonReaderFactory(javax.json.JsonReaderFactory)

Aggregations

InputStream (java.io.InputStream)2 OutputStream (java.io.OutputStream)2 Reader (java.io.Reader)2 Writer (java.io.Writer)2 BigDecimal (java.math.BigDecimal)2 BigInteger (java.math.BigInteger)2 Collection (java.util.Collection)2 HashMap (java.util.HashMap)2 List (java.util.List)2 Map (java.util.Map)2 Optional.ofNullable (java.util.Optional.ofNullable)2 Collectors (java.util.stream.Collectors)2 Collectors.toList (java.util.stream.Collectors.toList)2 Stream (java.util.stream.Stream)2 JsonArray (javax.json.JsonArray)2 JsonArrayBuilder (javax.json.JsonArrayBuilder)2 JsonBuilderFactory (javax.json.JsonBuilderFactory)2 JsonMergePatch (javax.json.JsonMergePatch)2 JsonNumber (javax.json.JsonNumber)2 JsonObject (javax.json.JsonObject)2