Skip to content

impossible to use @Optional with reserved word keys like default #567

@radist-nt

Description

@radist-nt

Trying to mirgate to config library from plain Properties. My property file contains several settings with "default" in key (changing keys is no option for me):

gate.default.query=...
gate.default.action=...
.....

My bean contains a field with getter-setter pair:

....
    @Optional
    private DefaultConfig Default; // DefaultConfig is another bean
    public DefaultConfig getDefault() {
        return Default;
    }
    public void setDefault(DefaultConfig Default) {
        this.Default = Default;
    }
...

Method com.typesafe.config.impl.ConfigBeanImpl.isOptionalProperty(Class, PropertyDescriptor) requires the @Optional annotation to be placed at field named exactly as config option. But minimal change will allow to place @Optional annotation at property getter method if field cannot be created (actually, I've reproduced problem). This is proposed fix for com.typesafe.config.impl.ConfigBeanImpl.isOptionalProperty(Class, PropertyDescriptor):

    private static boolean isOptionalProperty(Class beanClass, PropertyDescriptor beanProp) {
        Field field = getField(beanClass, beanProp.getName());
        return field != null ? field.getAnnotationsByType(Optional.class).length > 0
                : beanProp.getReadMethod().getAnnotationsByType(Optional.class).length > 0;
    }

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions