+1 On Sat, Mar 28, 2009 at 14:50, Vincent Massol <[email protected]> wrote: > Hi, > > So far we've been using plexus configuration mechanism in > components.xml to define component configuration data. I'm proposing > to drop this. Reasons: > 1) This is trying us to plexus and is not generic enough for all IOC > frameworks > 2) It doesn't easily allow overriding config values (for ex if the > user wants to override a value in a wiki page or in xwiki.properties > file) > > I thus propose 3 things: > 1) to use our new xwiki configuration mechanism to store component > configuration data > 2) to have a META-INF/<module prefix>.properties file located in the > module jar where <module prefix> is org.xwiki.rendering for example > for the rendering module (we could also have a submodule if the module > is split into several modules). The idea is that the file name needs > to be unique across jars so that we can create uberjars later on if > need be. > 3) in general we shouldn't have component-specific config data and > instead make the data as generic config data as much as possible and > bound to the module's Configuration component instead. > > For 1) and 2), it's very easy to do: > - the component which requires config data need to have > ConfigurationManager and ConfigurationSources injected and implement > the Initializable interface and then call in initialize(): > > this.configurationManager.initializeConfiguration(this, > this.sourceCollection.getConfigurationSources(), <prefix>); > > - store data using a FQN in META-INF/<module prefix>.properties, for > example: > > org.xwiki.rendering.internal.macro.RealmMacroSource.priority = 10 > > In this example you would call initializeConfiguration with a prefix > value of RealmMacroSource.getClass().getName(). > > 3) is important because otherwise users will be able to override > private config data and if the internal implementation changes the > config data won't be valid anymore. The reason for 2) is to hide these > config data from the users as much as possible since these are > advanced config options that shouldn't normally be used. > For example we would defined a default priority for macros but in some > very exceptional cases the user would want to change the priority so > that the macro executes at a different time for a given reason. > > Another example if the velocity components which contain lots of data. > I believe these data should be moved to a VelocityConfiguration > component instead. > > WDYT? > > Thanks > -Vincent > > _______________________________________________ > devs mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/devs >
-- Thomas Mortagne _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

