CVS: plexus-container-new/src/java/org/apache/plexus DefaultPlexusContainer.java,1.23,1.24
[email protected] Sat, 31 May 2003 17:02:45 -0500
| Newsgroups | gmane.comp.java.plexus.devel |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/plexus/plexus-container-new/src/java/org/apache/plexus
In directory eng.werken.com:/tmp/cvs-serv24889/src/java/org/apache/plexus
Modified Files:
DefaultPlexusContainer.java
Log Message:
o Adding preliminary support for the specification of addition configuration
files using the <configurations-directory/> element in the main configuration.
Index: DefaultPlexusContainer.java
===================================================================
RCS file: /cvsroot/plexus/plexus-container-new/src/java/org/apache/plexus/DefaultPlexusContainer.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- DefaultPlexusContainer.java 25 May 2003 18:10:26 -0000 1.23
+++ DefaultPlexusContainer.java 31 May 2003 22:02:43 -0000 1.24
@@ -64,6 +64,7 @@
import org.apache.plexus.classloader.ResourceManagerFactory;
import org.apache.plexus.configuration.ConfigurationResourceException;
import org.apache.plexus.configuration.XmlPullConfigurationBuilder;
+import org.apache.plexus.configuration.DefaultConfiguration;
import org.apache.plexus.context.DefaultContext;
import org.apache.plexus.lifecycle.LifecycleHandler;
import org.apache.plexus.lifecycle.LifecycleHandlerFactory;
@@ -74,10 +75,13 @@
import org.apache.plexus.service.repository.ComponentRepositoryFactory;
import org.apache.plexus.util.ContextMapAdapter;
import org.apache.plexus.util.InterpolationFilterReader;
+import org.apache.plexus.util.DirectoryScanner;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
+import java.io.File;
+import java.io.FileReader;
/** The main Plexus container component.
*
@@ -348,7 +352,48 @@
new ContextMapAdapter( getContext() ) );
setConfiguration( builder.parse( interpolationFilterReader ) );
+
+ processConfigurationsDirectory();
}
+
+ /**
+ * Process any additional component configuration files that have been
+ * specified. The specified directory is scanned recursively so configurations
+ * can be within nested directories to help with component organization.
+ */
+ protected void processConfigurationsDirectory()
+ throws Exception
+ {
+ String s = getConfiguration().getChild( "configurations-directory" ).getValue( null );
+
+ if ( s != null )
+ {
+ DefaultConfiguration componentsConfiguration =
+ (DefaultConfiguration) getConfiguration().getChild( "components");
+
+ File configurationsDirectory = new File( s );
+
+ if ( configurationsDirectory.exists()
+ &&
+ configurationsDirectory.isDirectory() )
+ {
+ DirectoryScanner scanner = new DirectoryScanner();
+ scanner.setBasedir( configurationsDirectory );
+ scanner.setIncludes( new String[]{ "**/*.conf", "**/*.xml" } );
+ scanner.scan();
+
+ String[] confs = scanner.getIncludedFiles();
+
+ for ( int i = 0; i < confs.length; i++ )
+ {
+ File conf = new File( configurationsDirectory, confs[i] );
+ Configuration c = builder.parse( new FileReader( conf ) );
+ componentsConfiguration.addAllChildren( c.getChild( "components" ) );
+ }
+ }
+ }
+ }
+
/** Initialize Logging.
*