Author: joakime
Date: Mon Oct 29 13:03:58 2007
New Revision: 589831

URL: http://svn.apache.org/viewvc?rev=589831&view=rev
Log:
Removing archiva-xml-tools dependency from archiva-configuration.
Loading default FileTypes using plexus-configuration way, not via direct load 
of the XML.


Modified:
    maven/archiva/trunk/archiva-base/archiva-configuration/pom.xml
    
maven/archiva/trunk/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/FileTypes.java

Modified: maven/archiva/trunk/archiva-base/archiva-configuration/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-configuration/pom.xml?rev=589831&r1=589830&r2=589831&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-configuration/pom.xml (original)
+++ maven/archiva/trunk/archiva-base/archiva-configuration/pom.xml Mon Oct 29 
13:03:58 2007
@@ -34,10 +34,6 @@
     </dependency>
     <dependency>
       <groupId>org.apache.maven.archiva</groupId>
-      <artifactId>archiva-xml-tools</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven.archiva</groupId>
       <artifactId>archiva-policies</artifactId>
     </dependency>
     <dependency>

Modified: 
maven/archiva/trunk/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/FileTypes.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/FileTypes.java?rev=589831&r1=589830&r2=589831&view=diff
==============================================================================
--- 
maven/archiva/trunk/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/FileTypes.java
 (original)
+++ 
maven/archiva/trunk/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/FileTypes.java
 Mon Oct 29 13:03:58 2007
@@ -19,19 +19,19 @@
  * under the License.
  */
 
-import org.apache.commons.collections.Closure;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.Predicate;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.configuration.CombinedConfiguration;
 import 
org.apache.maven.archiva.configuration.functors.FiletypeSelectionPredicate;
-import org.apache.maven.archiva.xml.ElementTextListClosure;
-import org.apache.maven.archiva.xml.XMLException;
-import org.apache.maven.archiva.xml.XMLReader;
+import 
org.apache.maven.archiva.configuration.io.registry.ConfigurationRegistryReader;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
 import 
org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
-import org.dom4j.Element;
+import org.codehaus.plexus.registry.RegistryException;
+import org.codehaus.plexus.registry.commons.CommonsConfigurationRegistry;
 
-import java.net.URL;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -46,6 +46,7 @@
  * @plexus.component role="org.apache.maven.archiva.configuration.FileTypes"
  */
 public class FileTypes
+    extends AbstractLogEnabled
     implements Initializable
 {
     public static final String ARTIFACTS = "artifacts";
@@ -108,57 +109,59 @@
     public void initialize()
         throws InitializationException
     {
+        /* Initialize Default Type Map */
         defaultTypeMap.clear();
 
+        String errMsg = "Unable to load default archiva configuration for 
FileTypes: ";
+        
         try
         {
-            URL defaultArchivaXml = this.getClass()
-                .getResource( 
"/org/apache/maven/archiva/configuration/default-archiva.xml" );
+            CommonsConfigurationRegistry commonsRegistry = new 
CommonsConfigurationRegistry();
 
-            XMLReader reader = new XMLReader( "configuration", 
defaultArchivaXml );
-            List<Element> resp = reader.getElementList( 
"//configuration/repositoryScanning/fileTypes/fileType" );
+            // Configure commonsRegistry
+            Field fld = commonsRegistry.getClass().getDeclaredField( 
"configuration" );
+            fld.setAccessible( true );
+            fld.set( commonsRegistry, new CombinedConfiguration() );
+            commonsRegistry.enableLogging( getLogger() );
+            commonsRegistry.addConfigurationFromResource( 
"org/apache/maven/archiva/configuration/default-archiva.xml" );
+            
+            // Read configuration as it was intended.
+            ConfigurationRegistryReader configReader = new 
ConfigurationRegistryReader();
+            Configuration defaultConfig = configReader.read( commonsRegistry );
+
+            // Store the default file type declaration.
+            List<FileType> filetypes = 
defaultConfig.getRepositoryScanning().getFileTypes();
+            for ( FileType filetype : filetypes )
+            {
+                List<String> patterns = defaultTypeMap.get( filetype.getId() );
+                if ( patterns == null )
+                {
+                    patterns = new ArrayList<String>();
+                }
+                patterns.addAll( filetype.getPatterns() );
 
-            CollectionUtils.forAllDo( resp, new AddFileTypeToDefaultMap() );
+                defaultTypeMap.put( filetype.getId(), patterns );
+            }
         }
-        catch ( XMLException e )
+        catch ( RegistryException e )
         {
-            throw new InitializationException( "Unable to setup default 
filetype maps.", e );
+            throw new InitializationException( errMsg + e.getMessage(), e );
         }
-    }
-
-    class AddFileTypeToDefaultMap
-        implements Closure
-    {
-        public void execute( Object input )
+        catch ( SecurityException e )
         {
-            if ( !( input instanceof Element ) )
-            {
-                // Not an element. skip.
-                return;
-            }
-
-            Element elem = (Element) input;
-            if ( !StringUtils.equals( "fileType", elem.getName() ) )
-            {
-                // Not a 'fileType' element. skip.
-                return;
-            }
-
-            String id = elem.elementText( "id" );
-            Element patternsElem = elem.element( "patterns" );
-            if ( patternsElem == null )
-            {
-                // No patterns. skip.
-                return;
-            }
-
-            List<Element> patternElemList = patternsElem.elements( "pattern" );
-
-            ElementTextListClosure elemTextList = new ElementTextListClosure();
-            CollectionUtils.forAllDo( patternElemList, elemTextList );
-            List<String> patterns = elemTextList.getList();
-
-            defaultTypeMap.put( id, patterns );
+            throw new InitializationException( errMsg + e.getMessage(), e );
+        }
+        catch ( NoSuchFieldException e )
+        {
+            throw new InitializationException( errMsg + e.getMessage(), e );
+        }
+        catch ( IllegalArgumentException e )
+        {
+            throw new InitializationException( errMsg + e.getMessage(), e );
+        }
+        catch ( IllegalAccessException e )
+        {
+            throw new InitializationException( errMsg + e.getMessage(), e );
         }
     }
 }


Reply via email to