Hi,

I just updated to maven-scr-plugin:1.10.0 and 
org.apache.felix.scr.annotations:1.8.0 and I have this component:

@Component(name = "org.example.component", immediate = true, policy = 
ConfigurationPolicy.IGNORE)
public final class ContextRegistrator {

    @Reference
    HttpService httpService;

}

I didn't have the bind/unbind method but the plugin generated the names and put 
them into the Descriptor. The build was success but then it didn't work because 
SCR didn't find the non existing methods so I added the generateAccessors 
property to the plugin:

                <plugin>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>maven-scr-plugin</artifactId>
                    <version>1.10.0</version>
                    <configuration>
                        <generateAccessors>false</generateAccessors>
                    </configuration>
                </plugin>

When I build the project now it fails with this exception. 

Execution generate-scr-scrdescriptor of goal 
org.apache.felix:maven-scr-plugin:1.10.0:scr failed. NullPointerException -> 
[Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal 
org.apache.felix:maven-scr-plugin:1.10.0:scr (generate-scr-scrdescriptor) on 
project openidm-httpcontext: Execution generate-scr-scrdescriptor of goal 
org.apache.felix:maven-scr-plugin:1.10.0:scr failed.
        at 
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:225)
        at 
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
        at 
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
        at 
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
        at 
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
        at 
org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
        at 
org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at 
org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
        at 
org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
        at 
org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
        at 
org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution 
generate-scr-scrdescriptor of goal org.apache.felix:maven-scr-plugin:1.10.0:scr 
failed.
        at 
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:110)
        at 
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
        ... 19 more
Caused by: java.lang.NullPointerException
        at 
org.apache.felix.scrplugin.helper.Validator.validateMethod(Validator.java:523)
        at 
org.apache.felix.scrplugin.helper.Validator.validateReference(Validator.java:465)
        at 
org.apache.felix.scrplugin.helper.Validator.validate(Validator.java:189)
        at 
org.apache.felix.scrplugin.SCRDescriptorGenerator.execute(SCRDescriptorGenerator.java:214)
        at 
org.apache.felix.scrplugin.mojo.SCRDescriptorMojo.execute(SCRDescriptorMojo.java:248)
        at 
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
        ... 20 more


If I add these methods then it works.

    private void bindWebContainer(WebContainer service) {
       httpService = service;
    }

    private void unbindWebContainer(WebContainer service) {
        httpService = null;
    }

If I make a typo mistake in the name of one of these two methods I get NPE 
again. If I remove the generateAccessors property and the new methods the 
plugin "works" again and generate broken Descriptor. It checks when It 
shouldn't and It does not check when it should.

I see there is an integration test 
src/it/basic-build-it/src/main/java/org/apache/felix/scr/SimpleDSComponent.java 
but it does not validates the generated Descriptor. 

Regards,
Laszlo

Reply via email to