The default configuration value for the OSGi component contains escaped backslash

Below is the code of my simple OSGi component

@Component(metatype = true, label = "My Component", policy = ConfigurationPolicy.REQUIRE)
@Property(label = "My Component expression", name = "my.expression", value = "/5 * * * * ? *")
public class MyComponent {

    private static final Logger log = LoggerFactory.getLogger(MyComponent.class);

    @Reference
    private Scheduler scheduler;

    @Activate
    public void activate(final ComponentContext context) {
        final String quartzExpression = PropertiesUtil.toString(
                context.getProperties().get("my.expression"), "");
        ScheduleOptions options = scheduler.EXPR(quartzExpression).name("MyJob");
        scheduler.schedule(new Runnable() {

            @Override
            public void run() {
                log.info("Hello World!");

            }
        }, options);
    }
}

What he should do: he takes a configuration value, which is an expression of quartz, and uses it to schedule a task that registers a simple greeting.

, 5 , . , ConfigurationPolicy.REQUIRE, . OSGi, My Component . . , , , , . /5\\ *\\ *\\ *\\ *\\ ?\\ * /5\ *\ *\ *\ *\ ?\ *.

, , , . : , , , OSGi ?

: , , Maven SCR, . : .\target\classes\OSGI-INF\MyComponent.xml:

<?xml version="1.0" encoding="UTF-8"?><components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0">
    <scr:component name="MyComponent" configuration-policy="require" activate="activate">
        <implementation class="MyComponent"/>
        <property name="my.expression" value="/5 * * * * ? *"/>
        <property name="service.pid" value="MyComponent"/>
        <reference name="scheduler" interface="org.apache.sling.commons.scheduler.Scheduler" cardinality="1..1" policy="static" bind="bindScheduler" unbind="unbindScheduler"/>
    </scr:component>
</components>

: .\target\classes\OSGI-INF\metatype\MyComponent.xml

<?xml version="1.0" encoding="UTF-8"?><metatype:MetaData xmlns:metatype="http://www.osgi.org/xmlns/metatype/v1.0.0" localization="OSGI-INF/metatype/MyComponent">
    <OCD id="MyComponent" name="%MyComponent.name" description="%MyComponent">
        <AD id="my.expression" type="String" name="%MyComponent.my.expression" />
    </OCD>
    <Designate pid="MyComponent">
        <Object ocdref="MyComponent"/>
    </Designate>
</metatype:MetaData>

, metatype .

+4
1

Maven SCR, values ​​- commit .

.

+4

All Articles