I'm working on implementing bean validation support for the connectors
in Geronimo 3.0. This has involved changes to both the connector
component and Geronimo. I've attached a couple of patches patches to
the Jira for this enhancement showing my progress so far:
https://issues.apache.org/jira/browse/GERONIMO-5230
Basically, each of the javabean types that require validation have had
their corresponding wrapper classes enhanced to support injection of a
ValidatorFactory instance and optionally validate the wrappered objects
before the first use.
A big part of this was changes to the ConnectorModuleBuilder to add a
reference to the ValidatorFactoryGBean for the module in question. In
order for this to work, a ValidatorFactoryGBean instance needs to be
added to the module by the BValModuleBuilderExtension. Currently, the
ConnectorModuleBuilder did not support builder extensions, but my patch
has added this support.
Everything is building cleanly, but when I start the server, the
ManagedConnectorFactory GBean cannot be initialized because it can't
find the reference to the ValidatorFactory instance. Looking at the
serialized config for the system-database car, the required
ValidatorFactory GBean does appear to be missing.
Debugging this further in the build for the system-database plugin, I'm
seeing something that I can't explain. I'm seeing the following events
occurring during this build:
1) The BValModuleBuilderExtension is created (expected).
2) The ConnectorModuleBuilder is created, but NO
ModuleBuilderExtensions are passed in to the constructor (not expected).
3) A second ConnectorModuleBuilder instance is created. This instance
is passed a collection containing the single BValModuleBuilderExtension
instance (this was what was expected, except for the fact this a second
instance).
4) The first ConnectorModuleBuilder instance is called to process the
module. Since this instance does not have a reference to the
BValModuleBuilderExtension, the ValidatorFactoryGBean instance is not
getting added to the configuration.
So, I'm now at a point where I'm stuck. So far, I've not been able to
figure out why there are two instances of the ConnectorModuleBuilder
getting created and why the first instance is not picking up the
BValModuleBuilderExtension. I'm guessing I'm missing something simple
here, but I'm a bit stumped on how to debug this further. Can anybody
offer an assistance here?
Rick