Configuration of an Arquillian Extension
asotobu Apr 8, 2014 5:59 AMHello I am developing an extension and I need that users configure some parameters. I have done next steps:
Create a MocoConfigurator class which listens for arquillian descriptor:
@Inject
@ApplicationScoped
private InstanceProducer<MocoConfiguration> configurationProvider;
public void configure(@Observes ArquillianDescriptor arquillianDescriptor) {
Map<String, String> config = arquillianDescriptor.extension(EXTENSION_NAME).getExtensionProperties();
configurationProvider.set(MocoConfiguration.fromMap(config));
}
Then I have added MocoConfiguration class to extension archive:
@Override
public Archive<?> createAuxiliaryArchive() {
return ShrinkWrap.create(JavaArchive.class, "arquillian-moco.jar")
.addClass(ReflectionHelper.class)
.addPackage(Moco.class.getPackage())
.addPackage(MocoRemoteExtension.class.getPackage())
.addClass(MocoConfiguration.class)
.addAsServiceProvider(RemoteLoadableExtension.class, MocoRemoteExtension.class);
}
Then in extension class I have registered the observer:
@Override
public void register(ExtensionBuilder builder) {
builder.service(ApplicationArchiveProcessor.class,
MocoDependencyArchiveProcessor.class);
builder.service(AuxiliaryArchiveAppender.class,
MocoArchiveAppender.class);
builder.observer(MocoConfigurator.class);
}
The instance is required in container side so I have added next line on a class that is executed in remote side.
@Inject private Instance<MocoConfiguration> config;
The problem is that when I use this code the class is not executed but no error is thrown, but if I comment the previous line and I hardcoded the port then it works, so it seems I have missed something to do so this can work on remote side. Am I wrong= What I have missed?
Thank you so much for your help.
And finally I have added the information inside arquillian.xml (which is configured to use Servlet protocol).
The problem is that although the information is loaded correctly