@Override public void configure(final Env env, final Config config, final Binder binder) { JsonbConfig jsonbConfig = new JsonbConfig(); if (configurer != null) { configurer.accept(jsonbConfig, config); } Jsonb jsonb = JsonbBuilder.create(jsonbConfig); binder.bind(Jsonb.class).toInstance(jsonb); Multibinder.newSetBinder(binder, Parser.class).addBinding() .toInstance(new YassonParser(type, jsonb)); Multibinder.newSetBinder(binder, Renderer.class).addBinding() .toInstance(new YassonRenderer(type, jsonb)); }
/** * Property used to specify custom naming strategy. * * Configures value of {@code JSONB_PROPERTY_NAMING_STRATEGY} property. * * @param propertyNamingStrategy * Custom naming strategy which affects serialization and deserialization. * * @return This JsonbConfig instance. */ public final JsonbConfig withPropertyNamingStrategy(final PropertyNamingStrategy propertyNamingStrategy) { return setProperty(PROPERTY_NAMING_STRATEGY, propertyNamingStrategy); }
public UiSpecService(final Client client) { this.client = client; this.jsonb = JsonbBuilder.create(new JsonbConfig().setProperty("johnzon.cdi.activated", false)); this.closeJsonb = true; }
@SuppressWarnings("unchecked") private <T> void mergeProperties(final String propertyKey, final T[] values, final Class<T> tClass) { final Optional<Object> property = getProperty(propertyKey); if (!property.isPresent()) { setProperty(propertyKey, values); return; } T[] storedValues = (T[]) property.get(); T[] newValues = (T[]) Array.newInstance(tClass, storedValues.length + values.length); System.arraycopy(storedValues, 0, newValues, 0, storedValues.length); System.arraycopy(values, 0, newValues, storedValues.length, values.length); setProperty(propertyKey, newValues); } }
private Object map(final Object next) { if (next == null || Record.class.isInstance(next)) { // directly ok return next; } if (String.class.isInstance(next) || next.getClass().isPrimitive()) { // primitives return next; } if (jsonb == null) { synchronized (this) { if (jsonb == null) { jsonb = JsonbBuilder .create(new JsonbConfig() .withAdapters(new MultipleFormatDateAdapter()) .setProperty("johnzon.cdi.activated", false)); } } } return new RecordConverters() .toRecord(next, () -> jsonb, () -> ComponentManager.instance().getRecordBuilderFactoryProvider().apply(null)); } }
@Override // for debug purposes, don't use it for anything else public String toString() { try (final Jsonb jsonb = JsonbBuilder .create(new JsonbConfig().withFormatting(true).setProperty("johnzon.cdi.activated", false))) { return new RecordConverters() .toType(this, JsonObject.class, () -> Json.createBuilderFactory(emptyMap()), JsonProvider::provider, () -> jsonb) .toString(); } catch (final Exception e) { return super.toString(); } }
private Map<String, ?> readerConfig() { final Map<String, Object> map = new HashMap<>(); if (config == null) { return map; } config.getProperty(JsonParserFactoryImpl.BUFFER_LENGTH).ifPresent(b -> map.put(JsonParserFactoryImpl.BUFFER_LENGTH, b)); config.getProperty(JsonParserFactoryImpl.MAX_STRING_LENGTH).ifPresent(b -> map.put(JsonParserFactoryImpl.MAX_STRING_LENGTH, b)); config.getProperty(JsonParserFactoryImpl.SUPPORTS_COMMENTS).ifPresent(b -> map.put(JsonParserFactoryImpl.SUPPORTS_COMMENTS, b)); config.getProperty(AbstractJsonFactory.BUFFER_STRATEGY).ifPresent(b -> map.put(AbstractJsonFactory.BUFFER_STRATEGY, b)); return map; } }
config = new JsonbConfig(); if (config.getProperty(JsonbConfig.FORMATTING).map(Boolean.class::cast).orElse(false)) { builder.setPretty(true); config.getProperty(JsonbConfig.ENCODING).ifPresent(encoding -> builder.setEncoding(String.valueOf(encoding))); config.getProperty(JsonbConfig.NULL_VALUES).ifPresent(serNulls -> builder.setSkipNull(!Boolean.class.cast(serNulls))); final Optional<Object> namingStrategyValue = config.getProperty(JsonbConfig.PROPERTY_NAMING_STRATEGY); final String orderValue = config.getProperty(JsonbConfig.PROPERTY_ORDER_STRATEGY).map(String::valueOf).orElse(LEXICOGRAPHICAL); final PropertyVisibilityStrategy visibilityStrategy = config.getProperty(JsonbConfig.PROPERTY_VISIBILITY_STRATEGY) .map(PropertyVisibilityStrategy.class::cast).orElse(new PropertyVisibilityStrategy() { private final ConcurrentMap<Class<?>, PropertyVisibilityStrategy> strategies = new ConcurrentHashMap<>(); config.getProperty("johnzon.attributeOrder").ifPresent(comp -> builder.setAttributeOrder(Comparator.class.cast(comp))); config.getProperty("johnzon.enforceQuoteString") .map(v -> !Boolean.class.isInstance(v) ? Boolean.parseBoolean(v.toString()) : Boolean.class.cast(v)) .ifPresent(builder::setEnforceQuoteString); config.getProperty("johnzon.primitiveConverters") .map(v -> !Boolean.class.isInstance(v) ? Boolean.parseBoolean(v.toString()) : Boolean.class.cast(v)) .ifPresent(builder::setPrimitiveConverters); config.getProperty("johnzon.useBigDecimalForFloats") .map(v -> !Boolean.class.isInstance(v) ? Boolean.parseBoolean(v.toString()) : Boolean.class.cast(v)) .ifPresent(builder::setUseBigDecimalForFloats); config.getProperty("johnzon.deduplicateObjects") .map(v -> !Boolean.class.isInstance(v) ? Boolean.parseBoolean(v.toString()) : Boolean.class.cast(v)) .ifPresent(builder::setDeduplicateObjects); config.getProperty("johnzon.interfaceImplementationMapping")
private static Jsonb newJsonb() { return JsonbBuilder .create(new JsonbConfig() .withPropertyOrderStrategy(PropertyOrderStrategy.LEXICOGRAPHICAL) .withFormatting(true)); }
@PostConstruct private void init() { defaultMapper = JsonbBuilder.create(new JsonbConfig().withPropertyOrderStrategy(PropertyOrderStrategy.LEXICOGRAPHICAL)); }
private Jsonb jsonb() { if (jsonb == null) { synchronized (this) { if (jsonb == null) { jsonb = ContainerFinder.Instance.get().find(plugin()).findService(Jsonb.class); } if (jsonb == null) { // for tests mainly jsonb = JsonbBuilder .create(new JsonbConfig() .withAdapters(new MultipleFormatDateAdapter()) .withBinaryDataStrategy(BinaryDataStrategy.BASE_64)); } } } return jsonb; }
public void setPropertyOrderStrategy(final String propertyOrderStrategy) { config.withPropertyOrderStrategy(propertyOrderStrategy); customized = true; }
public void setPretty(final boolean pretty) { config.withFormatting(pretty); customized = true; }
/** * Property used to specify property order strategy. * * Configures values of {@code JSONB_PROPERTY_ORDER_STRATEGY} property. * * @param propertyOrderStrategy * Predefined property order strategy which affects serialization. * * @return This JsonbConfig instance. */ public final JsonbConfig withPropertyOrderStrategy(final String propertyOrderStrategy) { return setProperty(PROPERTY_ORDER_STRATEGY, propertyOrderStrategy); }
public OpenAPI loadDefaultApi() { final ClassLoader loader = Thread.currentThread().getContextClassLoader(); return Stream.of("", "/").map(prefix -> prefix + "META-INF/openapi.json") .map(it -> ofNullable(loader.getResourceAsStream(it)).orElseGet(() -> context.getResourceAsStream(it))) .filter(Objects::nonNull).findFirst().map(r -> { try (final Jsonb jsonb = JsonbBuilder.create(new JsonbConfig() .setProperty("johnzon.interfaceImplementationMapping", ApiBindings.get())); final InputStream stream = r) { return jsonb.fromJson(stream, OpenAPIImpl.class); } catch (final Exception e) { throw new IllegalStateException(e); } }).map(OpenAPI.class::cast) .orElseGet(() -> Stream.of("", "/").map(prefix -> prefix + "META-INF/openapi.") .flatMap(p -> Stream.of(p + "yaml", p + "yml")) .map(it -> ofNullable(loader.getResourceAsStream(it)).orElseGet(() -> context.getResourceAsStream(it))) .filter(Objects::nonNull).findFirst().map(this::loadFromYaml).orElseGet(OpenAPIImpl::new)); }
@SuppressWarnings("unchecked") private <T> void mergeProperties(final String propertyKey, final T[] values, final Class<T> tClass) { final Optional<Object> property = getProperty(propertyKey); if (!property.isPresent()) { setProperty(propertyKey, values); return; } T[] storedValues = (T[]) property.get(); T[] newValues = (T[]) Array.newInstance(tClass, storedValues.length + values.length); System.arraycopy(storedValues, 0, newValues, 0, storedValues.length); System.arraycopy(values, 0, newValues, storedValues.length, values.length); setProperty(propertyKey, newValues); } }
if (jsonb == null) { jsonb = JsonbBuilder .create(new JsonbConfig() .withAdapters(new MultipleFormatDateAdapter()) .setProperty("johnzon.cdi.activated", false));
private Map<String, ?> generatorConfig() { final Map<String, Object> map = new HashMap<>(); if (config == null) { return map; } config.getProperty(JsonGeneratorFactoryImpl.GENERATOR_BUFFER_LENGTH).ifPresent(b -> map.put(JsonGeneratorFactoryImpl.GENERATOR_BUFFER_LENGTH, b)); config.getProperty(AbstractJsonFactory.BUFFER_STRATEGY).ifPresent(b -> map.put(AbstractJsonFactory.BUFFER_STRATEGY, b)); config.getProperty(JsonbConfig.FORMATTING).ifPresent(b -> map.put(JsonGenerator.PRETTY_PRINTING, b)); return map; }
config = new JsonbConfig(); if (config.getProperty(JsonbConfig.FORMATTING).map(Boolean.class::cast).orElse(false)) { builder.setPretty(true); config.getProperty(JsonbConfig.ENCODING).ifPresent(encoding -> builder.setEncoding(String.valueOf(encoding))); config.getProperty(JsonbConfig.NULL_VALUES).ifPresent(serNulls -> builder.setSkipNull(!Boolean.class.cast(serNulls))); final Optional<Object> namingStrategyValue = config.getProperty(JsonbConfig.PROPERTY_NAMING_STRATEGY); final String orderValue = config.getProperty(JsonbConfig.PROPERTY_ORDER_STRATEGY).map(String::valueOf).orElse(LEXICOGRAPHICAL); final PropertyVisibilityStrategy visibilityStrategy = config.getProperty(JsonbConfig.PROPERTY_VISIBILITY_STRATEGY) .map(PropertyVisibilityStrategy.class::cast).orElse(new PropertyVisibilityStrategy() { private final ConcurrentMap<Class<?>, PropertyVisibilityStrategy> strategies = new ConcurrentHashMap<>(); config.getProperty("johnzon.attributeOrder").ifPresent(comp -> builder.setAttributeOrder(Comparator.class.cast(comp))); config.getProperty("johnzon.enforceQuoteString") .map(v -> !Boolean.class.isInstance(v) ? Boolean.parseBoolean(v.toString()) : Boolean.class.cast(v)) .ifPresent(builder::setEnforceQuoteString); config.getProperty("johnzon.primitiveConverters") .map(v -> !Boolean.class.isInstance(v) ? Boolean.parseBoolean(v.toString()) : Boolean.class.cast(v)) .ifPresent(builder::setPrimitiveConverters); config.getProperty("johnzon.useBigDecimalForFloats") .map(v -> !Boolean.class.isInstance(v) ? Boolean.parseBoolean(v.toString()) : Boolean.class.cast(v)) .ifPresent(builder::setUseBigDecimalForFloats); config.getProperty("johnzon.deduplicateObjects") .map(v -> !Boolean.class.isInstance(v) ? Boolean.parseBoolean(v.toString()) : Boolean.class.cast(v)) .ifPresent(builder::setDeduplicateObjects); config.getProperty("johnzon.interfaceImplementationMapping")
.create(new JsonbConfig().withPropertyOrderStrategy(PropertyOrderStrategy.LEXICOGRAPHICAL))) { final Map<String, List<JsonObject>> byVersion = updates.stream().map(f -> { try {