3Qn
3Qn

Reputation: 139

ArangoDB own converters

How can I add my own ArangoDB configuration converter.

An example of a converter.

public class HTMLConverter {

    private static final boolean HTML_DESCRIPTION_IS_PRESENT = ClassUtils.isPresent("com.b.k.api.domain.extend.HTML", null);

    public static Collection<Converter<?, ?>> getConvertersToRegister() {
        if (!HTML_DESCRIPTION_IS_PRESENT) {
            return Collections.emptySet();
        }
        final List<Converter<?, ?>> converters = new ArrayList<>();
        converters.add(HtmlToStringConverter.INSTANCE);

        converters.add(StringToHtmlConverter.INSTANCE);
        return converters;
    }

    public enum HtmlToStringConverter implements Converter<HTML, String> {
        INSTANCE;

        @Override
        public String convert(final HTML source) {
            return source == null ? null : source.getXml();
        }
    }

    public enum StringToHtmlConverter implements Converter<String, HTML> {
        INSTANCE;

        @Override
        public HTML convert(final String source) {
            return source == null ? null : new HTML(source);
        }
    }
}

The reproduction of my converters looks like this:

public class BKArangoCustomConverters extends CustomConversions {

    private static final StoreConversions STORE_CONVERSIONS;

    static {
        final Collection<Converter<?, ?>> converters = new ArrayList<>();
        converters.addAll(XMLConverter.getConvertersToRegister());
        converters.addAll(HTMLConverter.getConvertersToRegister());
        STORE_CONVERSIONS = StoreConversions.of(SimpleTypeHolder.DEFAULT, converters);
    }

    protected BKArangoCustomConverters(Collection<?> converters) {
        super(converters);
    }
}

I am asked how can I add new converters to the ArangoDB configuration using the builder "com.arangodb.ArangoDB.Builder" in the extension class "com.arangodb.springframework.config.AbstractArangoConfiguration".

Upvotes: 0

Views: 194

Answers (1)

mpv89
mpv89

Reputation: 1891

You have to override the method customConversions() from AbstractArangoConfiguration in your configuration class and add your converters there.

public CustomConversions customConversions() {
  Collection<Converter<?, ?>> converters = new ArrayList<>();
  converters.addAll(XMLConverter.getConvertersToRegister());
  converters.addAll(HTMLConverter.getConvertersToRegister());
  return new ArangoCustomConversions(converters);
}

or you replace the ArangoCustomConversions with our own clasn class BKArangoCustomConverters.

public CustomConversions customConversions() {
  return new BKArangoCustomConverters(Collections.emptyList());
}

Upvotes: 1

Related Questions