On 10-Aug-09, at 1:32 PM, Jochen Wiedmann wrote:

Hi,

in a plugin, I'd like to select a component dynamically. Basically,
I'd like to have something along these lines:

   <configuration>
     <myComponent hint="foo">
        ...
     </myComponent>
   </configuration>

The idea is to use the hint for looking up the "myComponent" bean and
use the XML fragment between <myComponent> and <myComponent> to
configure the bean.

Is that possible? Any other ideas how to achieve my goal?


// Lookup you unconfigured component
//
Foo component = container.lookup( Foo.class, "myComponent"  );

// Create a PlexusConfiguration to use against your component and populate as necessary // by adding elements and attributes. Use autocomplete in your IDE to find out what's available. PlexusConfiguration configuration = new XmlPlexusConfiguration( "configuration" );

// Look up the default component configurator which is used internally to configure component.
//
ComponentConfigurator configurator = container.lookup( Configurator.class );

// I assume you're in a plugin so you'll need the classrealm of the plugin itself // which you can access through the mojoExecution using the $ {mojoExecution} expression ClassRealm pluginRealm = mojoExecution.getMojoDescriptor().getPluginDescriptor().getClassRealm();

// Use the configurator to configure the component
configurator.configureComponent( component, configuration, pluginRealm );

You might want to make your own implementation of the PlexusConfiguration if you're going to use another source other then XML. Internally in Plexus the configuration can come from any source but in Maven it's primarily XML but you're not restricted to XML.

Thanks,

Jochen

--
Base64 decoding, 300% faster than sun.misc.BASE64Decoder:
http://archive.netbsd.se/?ml=commons-dev&a=2008-05&t=7522166

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Thanks,

Jason

----------------------------------------------------------
Jason van Zyl
Founder,  Apache Maven
http://twitter.com/jvanzyl
http://twitter.com/SonatypeNexus
http://twitter.com/SonatypeM2E
----------------------------------------------------------

People develop abstractions by generalizing from concrete examples.
Every attempt to determine the correct abstraction on paper without
actually developing a running system is doomed to failure. No one
is that smart. A framework is a resuable design, so you develop it by
looking at the things it is supposed to be a design of. The more examples
you look at, the more general your framework will be.

  -- Ralph Johnson & Don Roberts, Patterns for Evolving Frameworks


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to