Hi,

(1) The NPE is certainly not good. The plugin should just report the missing 
methods if they are not generated. May I ask you to report an issue ? Thanks.

(2) The first case might be caused by the plugin not generating the methods 
because of the class being final. Could you try not declaring the class final ? 
If that works, I would assume the plugin should properly complain and fail the 
build due to missing methods.

Regards
Felix

Am 24.02.2013 um 15:23 schrieb László Hordós:

> 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
> 


--
Felix Meschberger | Principal Scientist | Adobe








---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
For additional commands, e-mail: users-h...@felix.apache.org

Reply via email to