Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Validate that @ConfigMapping annotation can only be placed in interfaces #424

Closed
angelozerr opened this issue Nov 4, 2021 · 0 comments · Fixed by #426
Closed

Validate that @ConfigMapping annotation can only be placed in interfaces #424

angelozerr opened this issue Nov 4, 2021 · 0 comments · Fixed by #426

Comments

@angelozerr
Copy link
Contributor

@ConfigMaping can be used only for interface and not for class.

  • Using interface is valid:
@ConfigMapping(prefix = "server")
public interface Server {

}
  • Using class should higlight the Server as an error:
@ConfigMapping(prefix = "server")
public class Server {

}

Here the Quarkus stack trace when we try to annotated a Java class with ConfigMapping:


java.lang.IllegalStateException: SRCFG00043: The @ConfigMapping annotation can only be placed in interfaces, class org.acme.Server is a class
	at io.smallrye.config.ConfigMappingLoader.validateAnnotations(ConfigMappingLoader.java:104)
	at io.smallrye.config.ConfigMappingLoader.getConfigMappingClass(ConfigMappingLoader.java:44)
	at io.smallrye.config.ConfigMappingLoader.getConfigMappingInterface(ConfigMappingLoader.java:40)
	at io.smallrye.config.ConfigMappingLoader.getConfigMappingsMetadata(ConfigMappingLoader.java:34)
	at io.quarkus.deployment.configuration.ConfigMappingUtils.generateConfigClasses(ConfigMappingUtils.java:79)
	at io.quarkus.arc.deployment.ConfigBuildStep.generateConfigClasses(ConfigBuildStep.java:246)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at io.quarkus.deployment.ExtensionLoader$2.execute(ExtensionLoader.java:820)
	at io.quarkus.builder.BuildContext.run(BuildContext.java:277)
	at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
	at java.base/java.lang.Thread.run(Thread.java:834)
	at org.jboss.threads.JBossThread.run(JBossThread.java:501)
Resulted in: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
	[error]: Build step io.quarkus.arc.deployment.ConfigBuildStep#generateConfigClasses threw an exception: java.lang.IllegalStateException: SRCFG00043: The @ConfigMapping annotation can only be placed in interfaces, class org.acme.Server is a class
	at io.smallrye.config.ConfigMappingLoader.validateAnnotations(ConfigMappingLoader.java:104)
	at io.smallrye.config.ConfigMappingLoader.getConfigMappingClass(ConfigMappingLoader.java:44)
	at io.smallrye.config.ConfigMappingLoader.getConfigMappingInterface(ConfigMappingLoader.java:40)
	at io.smallrye.config.ConfigMappingLoader.getConfigMappingsMetadata(ConfigMappingLoader.java:34)
	at io.quarkus.deployment.configuration.ConfigMappingUtils.generateConfigClasses(ConfigMappingUtils.java:79)
	at io.quarkus.arc.deployment.ConfigBuildStep.generateConfigClasses(ConfigBuildStep.java:246)
@angelozerr angelozerr changed the title Validator for @ConfigMaping. Validate that @ConfigMapping annotation can only be placed in interfaces Nov 4, 2021
angelozerr pushed a commit to angelozerr/quarkus-ls that referenced this issue Nov 5, 2021
angelozerr pushed a commit to angelozerr/quarkus-ls that referenced this issue Nov 5, 2021
angelozerr pushed a commit to angelozerr/quarkus-ls that referenced this issue Nov 8, 2021
angelozerr pushed a commit to angelozerr/quarkus-ls that referenced this issue Nov 8, 2021
angelozerr pushed a commit to angelozerr/quarkus-ls that referenced this issue Nov 8, 2021
angelozerr pushed a commit to angelozerr/quarkus-ls that referenced this issue Nov 8, 2021
angelozerr pushed a commit to angelozerr/quarkus-ls that referenced this issue Nov 8, 2021
@angelozerr angelozerr added this to the v0.11.0 milestone Nov 8, 2021
angelozerr pushed a commit to angelozerr/quarkus-ls that referenced this issue Nov 16, 2021
angelozerr pushed a commit that referenced this issue Nov 16, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant