Author: olamy
Date: Fri Sep  9 08:32:59 2011
New Revision: 1167034

URL: http://svn.apache.org/viewvc?rev=1167034&view=rev
Log:
[MRM-1512] api to configure RepositoryScanningConfiguration

Modified:
    
archiva/trunk/archiva-modules/archiva-base/archiva-configuration/src/main/mdo/configuration.mdo
    
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/admin/ArchivaAdministration.java
    
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/admin/DefaultArchivaAdministration.java
    
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/admin/FileType.java
    
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/admin/RepositoryScanning.java
    
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/test/java/org/apache/archiva/admin/repository/admin/ArchivaAdministrationTest.java
    
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/RepositoryScanningAction.java

Modified: 
archiva/trunk/archiva-modules/archiva-base/archiva-configuration/src/main/mdo/configuration.mdo
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-configuration/src/main/mdo/configuration.mdo?rev=1167034&r1=1167033&r2=1167034&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-base/archiva-configuration/src/main/mdo/configuration.mdo
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-base/archiva-configuration/src/main/mdo/configuration.mdo
 Fri Sep  9 08:32:59 2011
@@ -1092,6 +1092,41 @@
           </association>
         </field>
       </fields>
+      <codeSegments>
+        <codeSegment>
+          <version>1.0.0+</version>
+          <code><![CDATA[
+
+            @Override
+            public boolean equals( Object o )
+            {
+                if ( this == o )
+                {
+                    return true;
+                }
+                if ( o == null || getClass() != o.getClass() )
+                {
+                    return false;
+                }
+
+                FileType fileType = (FileType) o;
+
+                if ( id != null ? !id.equals( fileType.id ) : fileType.id != 
null )
+                {
+                    return false;
+                }
+
+                return true;
+            }
+
+            @Override
+            public int hashCode()
+            {
+                return id != null ? 37 + id.hashCode() : 0;
+            }
+          ]]></code>
+        </codeSegment>
+      </codeSegments>
     </class>
 
     <!--

Modified: 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/admin/ArchivaAdministration.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/admin/ArchivaAdministration.java?rev=1167034&r1=1167033&r2=1167034&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/admin/ArchivaAdministration.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/admin/ArchivaAdministration.java
 Fri Sep  9 08:32:59 2011
@@ -38,4 +38,38 @@ public interface ArchivaAdministration
 
     void deleteLegacyArtifactPath( String path, AuditInformation 
auditInformation )
         throws RepositoryAdminException;
+
+    RepositoryScanning getRepositoryScanning()
+        throws RepositoryAdminException;
+
+    void updateRepositoryScanning( RepositoryScanning repositoryScanning, 
AuditInformation auditInformation )
+        throws RepositoryAdminException;
+
+    void addFileTypePattern( String fileTypeId, String pattern, 
AuditInformation auditInformation )
+        throws RepositoryAdminException;
+
+    void removeFileTypePattern( String fileTypeId, String pattern, 
AuditInformation auditInformation )
+        throws RepositoryAdminException;
+
+    FileType getFileType( String fileTypeId )
+        throws RepositoryAdminException;
+
+    void addFileType( FileType fileType, AuditInformation auditInformation )
+        throws RepositoryAdminException;
+
+    void removeFileType( String fileTypeId, AuditInformation auditInformation )
+        throws RepositoryAdminException;
+
+    void addKnownContentConsumer( String knownContentConsumer, 
AuditInformation auditInformation )
+        throws RepositoryAdminException;
+
+    void removeKnownContentConsumer( String knownContentConsumer, 
AuditInformation auditInformation )
+        throws RepositoryAdminException;
+
+    void addInvalidContentConsumer( String knownContentConsumer, 
AuditInformation auditInformation )
+        throws RepositoryAdminException;
+
+    void removeInvalidContentConsumer( String knownContentConsumer, 
AuditInformation auditInformation )
+        throws RepositoryAdminException;
+
 }

Modified: 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/admin/DefaultArchivaAdministration.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/admin/DefaultArchivaAdministration.java?rev=1167034&r1=1167033&r2=1167034&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/admin/DefaultArchivaAdministration.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/admin/DefaultArchivaAdministration.java
 Fri Sep  9 08:32:59 2011
@@ -22,7 +22,10 @@ import net.sf.beanlib.provider.replicato
 import org.apache.archiva.admin.AuditInformation;
 import org.apache.archiva.admin.repository.AbstractRepositoryAdmin;
 import org.apache.archiva.admin.repository.RepositoryAdminException;
+import org.apache.archiva.audit.AuditEvent;
+import org.apache.commons.lang.StringUtils;
 import org.apache.maven.archiva.configuration.Configuration;
+import org.apache.maven.archiva.configuration.RepositoryScanningConfiguration;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
@@ -46,6 +49,7 @@ public class DefaultArchivaAdministratio
                 new BeanReplicator().replicateBean( legacyArtifactPath, 
LegacyArtifactPath.class ) );
         }
         return legacyArtifactPaths;
+
     }
 
     public void addLegacyArtifactPath( LegacyArtifactPath legacyArtifactPath, 
AuditInformation auditInformation )
@@ -57,6 +61,7 @@ public class DefaultArchivaAdministratio
                                                                                
  org.apache.maven.archiva.configuration.LegacyArtifactPath.class ) );
 
         saveConfiguration( configuration );
+        triggerAuditEvent( "", "", AuditEvent.ADD_LEGACY_PATH, 
auditInformation );
     }
 
     public void deleteLegacyArtifactPath( String path, AuditInformation 
auditInformation )
@@ -70,5 +75,144 @@ public class DefaultArchivaAdministratio
         configuration.removeLegacyArtifactPath( legacyArtifactPath );
 
         saveConfiguration( configuration );
+        triggerAuditEvent( "", "", AuditEvent.REMOVE_LEGACY_PATH, 
auditInformation );
+    }
+
+    public void updateRepositoryScanning( RepositoryScanning 
repositoryScanning, AuditInformation auditInformation )
+        throws RepositoryAdminException
+    {
+        Configuration configuration = 
getArchivaConfiguration().getConfiguration();
+
+        configuration.setRepositoryScanning(
+            new BeanReplicator().replicateBean( repositoryScanning, 
RepositoryScanningConfiguration.class ) );
+
+        saveConfiguration( configuration );
+    }
+
+    public RepositoryScanning getRepositoryScanning()
+        throws RepositoryAdminException
+    {
+        return new BeanReplicator().replicateBean( 
getArchivaConfiguration().getConfiguration().getRepositoryScanning(),
+                                                   RepositoryScanning.class );
+    }
+
+    public void addFileTypePattern( String fileTypeId, String pattern, 
AuditInformation auditInformation )
+        throws RepositoryAdminException
+    {
+        Configuration configuration = 
getArchivaConfiguration().getConfiguration();
+
+        org.apache.maven.archiva.configuration.FileType fileType = 
getFileTypeById( fileTypeId, configuration );
+        if ( fileType == null )
+        {
+            return;
+        }
+        fileType.addPattern( pattern );
+
+        saveConfiguration( configuration );
+    }
+
+    public void removeFileTypePattern( String fileTypeId, String pattern, 
AuditInformation auditInformation )
+        throws RepositoryAdminException
+    {
+        Configuration configuration = 
getArchivaConfiguration().getConfiguration();
+
+        org.apache.maven.archiva.configuration.FileType fileType = 
getFileTypeById( fileTypeId, configuration );
+        if ( fileType == null )
+        {
+            return;
+        }
+        fileType.removePattern( pattern );
+
+        saveConfiguration( configuration );
+    }
+
+    public FileType getFileType( String fileTypeId )
+        throws RepositoryAdminException
+    {
+        org.apache.maven.archiva.configuration.FileType fileType =
+            getFileTypeById( fileTypeId, 
getArchivaConfiguration().getConfiguration() );
+        if ( fileType == null )
+        {
+            return null;
+        }
+        return new BeanReplicator().replicateBean( fileType, FileType.class );
+    }
+
+    public void addFileType( FileType fileType, AuditInformation 
auditInformation )
+        throws RepositoryAdminException
+    {
+        Configuration configuration = 
getArchivaConfiguration().getConfiguration();
+        if ( getFileTypeById( fileType.getId(), configuration ) != null )
+        {
+            throw new RepositoryAdminException(
+                "impossible to FileType with id " + fileType.getId() + " 
already exists" );
+        }
+
+        configuration.getRepositoryScanning().addFileType(
+            new BeanReplicator().replicateBean( fileType, 
org.apache.maven.archiva.configuration.FileType.class ) );
+        saveConfiguration( configuration );
+    }
+
+    public void removeFileType( String fileTypeId, AuditInformation 
auditInformation )
+        throws RepositoryAdminException
+    {
+        Configuration configuration = 
getArchivaConfiguration().getConfiguration();
+        org.apache.maven.archiva.configuration.FileType fileType =
+            new org.apache.maven.archiva.configuration.FileType();
+        fileType.setId( fileTypeId );
+        configuration.getRepositoryScanning().removeFileType( fileType );
+        saveConfiguration( configuration );
+    }
+
+    public void addKnownContentConsumer( String knownContentConsumer, 
AuditInformation auditInformation )
+        throws RepositoryAdminException
+    {
+        Configuration configuration = 
getArchivaConfiguration().getConfiguration();
+        configuration.getRepositoryScanning().addKnownContentConsumer( 
knownContentConsumer );
+        saveConfiguration( configuration );
+        triggerAuditEvent( "", "", AuditEvent.ENABLE_REPO_CONSUMER, 
auditInformation );
+    }
+
+    public void removeKnownContentConsumer( String knownContentConsumer, 
AuditInformation auditInformation )
+        throws RepositoryAdminException
+    {
+        Configuration configuration = 
getArchivaConfiguration().getConfiguration();
+        configuration.getRepositoryScanning().removeKnownContentConsumer( 
knownContentConsumer );
+        saveConfiguration( configuration );
+        triggerAuditEvent( "", "", AuditEvent.DISABLE_REPO_CONSUMER, 
auditInformation );
+    }
+
+    public void addInvalidContentConsumer( String invalidContentConsumer, 
AuditInformation auditInformation )
+        throws RepositoryAdminException
+    {
+        Configuration configuration = 
getArchivaConfiguration().getConfiguration();
+        configuration.getRepositoryScanning().addInvalidContentConsumer( 
invalidContentConsumer );
+        saveConfiguration( configuration );
+        triggerAuditEvent( "", "", AuditEvent.ENABLE_REPO_CONSUMER, 
auditInformation );
+    }
+
+    public void removeInvalidContentConsumer( String invalidContentConsumer, 
AuditInformation auditInformation )
+        throws RepositoryAdminException
+    {
+        Configuration configuration = 
getArchivaConfiguration().getConfiguration();
+        configuration.getRepositoryScanning().removeInvalidContentConsumer( 
invalidContentConsumer );
+        saveConfiguration( configuration );
+        triggerAuditEvent( "", "", AuditEvent.DISABLE_REPO_CONSUMER, 
auditInformation );
+    }
+
+//-------------------------
+    //
+    //-------------------------
+
+    private org.apache.maven.archiva.configuration.FileType getFileTypeById( 
String id, Configuration configuration )
+    {
+        for ( org.apache.maven.archiva.configuration.FileType fileType : 
configuration.getRepositoryScanning().getFileTypes() )
+        {
+            if ( StringUtils.equals( id, fileType.getId() ) )
+            {
+                return fileType;
+            }
+        }
+        return null;
     }
 }

Modified: 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/admin/FileType.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/admin/FileType.java?rev=1167034&r1=1167033&r2=1167034&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/admin/FileType.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/admin/FileType.java
 Fri Sep  9 08:32:59 2011
@@ -79,6 +79,11 @@ public class FileType
         getPatterns().add( pattern );
     }
 
+    public void removePattern( String pattern )
+    {
+        getPatterns().remove( pattern );
+    }
+
     @Override
     public boolean equals( Object o )
     {
@@ -106,4 +111,15 @@ public class FileType
     {
         return id != null ? 37 + id.hashCode() : 0;
     }
+
+    @Override
+    public String toString()
+    {
+        final StringBuilder sb = new StringBuilder();
+        sb.append( "FileType" );
+        sb.append( "{id='" ).append( id ).append( '\'' );
+        sb.append( ", patterns=" ).append( patterns );
+        sb.append( '}' );
+        return sb.toString();
+    }
 }

Modified: 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/admin/RepositoryScanning.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/admin/RepositoryScanning.java?rev=1167034&r1=1167033&r2=1167034&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/admin/RepositoryScanning.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/admin/RepositoryScanning.java
 Fri Sep  9 08:32:59 2011
@@ -18,8 +18,6 @@ package org.apache.archiva.admin.reposit
  * under the License.
  */
 
-import org.apache.maven.archiva.configuration.FileType;
-
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;

Modified: 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/test/java/org/apache/archiva/admin/repository/admin/ArchivaAdministrationTest.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/test/java/org/apache/archiva/admin/repository/admin/ArchivaAdministrationTest.java?rev=1167034&r1=1167033&r2=1167034&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/test/java/org/apache/archiva/admin/repository/admin/ArchivaAdministrationTest.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/test/java/org/apache/archiva/admin/repository/admin/ArchivaAdministrationTest.java
 Fri Sep  9 08:32:59 2011
@@ -19,9 +19,11 @@ package org.apache.archiva.admin.reposit
  */
 
 import org.apache.archiva.admin.repository.AbstractRepositoryAdminTest;
+import org.apache.archiva.admin.repository.RepositoryAdminException;
 import org.junit.Test;
 
 import javax.inject.Inject;
+import java.util.Arrays;
 
 /**
  * @author Olivier Lamy
@@ -34,7 +36,7 @@ public class ArchivaAdministrationTest
 
 
     @Test
-    public void getAll()
+    public void getAllLegacyPaths()
         throws Exception
     {
         assertNotNull( archivaAdministration.getLegacyArtifactPaths() );
@@ -43,7 +45,7 @@ public class ArchivaAdministrationTest
         log.info( "all legacy paths {}", 
archivaAdministration.getLegacyArtifactPaths() );
     }
 
-    public void addAndDelete()
+    public void addAndDeleteLegacyPath()
         throws Exception
     {
         int initialSize = 
archivaAdministration.getLegacyArtifactPaths().size();
@@ -60,4 +62,44 @@ public class ArchivaAdministrationTest
             archivaAdministration.getLegacyArtifactPaths().contains( new 
LegacyArtifactPath( "foo", "bar" ) ) );
         assertEquals( initialSize, 
archivaAdministration.getLegacyArtifactPaths().size() );
     }
+
+    @Test
+    public void addAndUpdateAndDeleteFileType()
+        throws RepositoryAdminException
+    {
+        int initialSize = 
archivaAdministration.getRepositoryScanning().getFileTypes().size();
+
+        FileType fileType = new FileType();
+        fileType.setId( "foo" );
+        fileType.setPatterns( Arrays.asList( "bar", "toto" ) );
+
+        archivaAdministration.addFileType( fileType, getFakeAuditInformation() 
);
+
+        assertEquals( initialSize + 1, 
archivaAdministration.getRepositoryScanning().getFileTypes().size() );
+
+        archivaAdministration.addFileTypePattern( "foo", "zorro", 
getFakeAuditInformation() );
+
+        assertEquals( initialSize + 1, 
archivaAdministration.getRepositoryScanning().getFileTypes().size() );
+
+        assertEquals( 3, archivaAdministration.getFileType( "foo" 
).getPatterns().size() );
+
+        assertTrue( archivaAdministration.getFileType( "foo" 
).getPatterns().contains( "bar" ) );
+        assertTrue( archivaAdministration.getFileType( "foo" 
).getPatterns().contains( "toto" ) );
+        assertTrue( archivaAdministration.getFileType( "foo" 
).getPatterns().contains( "zorro" ) );
+
+        archivaAdministration.removeFileTypePattern( "foo", "zorro", 
getFakeAuditInformation() );
+
+        assertEquals( initialSize + 1, 
archivaAdministration.getRepositoryScanning().getFileTypes().size() );
+
+        assertEquals( 2, archivaAdministration.getFileType( "foo" 
).getPatterns().size() );
+
+        assertTrue( archivaAdministration.getFileType( "foo" 
).getPatterns().contains( "bar" ) );
+        assertTrue( archivaAdministration.getFileType( "foo" 
).getPatterns().contains( "toto" ) );
+        assertFalse( archivaAdministration.getFileType( "foo" 
).getPatterns().contains( "zorro" ) );
+
+        archivaAdministration.removeFileType( "foo", getFakeAuditInformation() 
);
+
+        assertEquals( initialSize, 
archivaAdministration.getRepositoryScanning().getFileTypes().size() );
+        assertNull( archivaAdministration.getFileType( "foo" ) );
+    }
 }

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/RepositoryScanningAction.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/RepositoryScanningAction.java?rev=1167034&r1=1167033&r2=1167034&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/RepositoryScanningAction.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/RepositoryScanningAction.java
 Fri Sep  9 08:32:59 2011
@@ -140,6 +140,29 @@ public class RepositoryScanningAction
         return saveConfiguration();
     }
 
+    public String removeFiletypePattern()
+    {
+        log.info( "Remove File Type Pattern [" + getFileTypeId() + ":" + 
getPattern() + "]" );
+
+        if ( !isValidFiletypeCommand() )
+        {
+            return INPUT;
+        }
+
+        FileType filetype = findFileType( getFileTypeId() );
+        if ( filetype == null )
+        {
+            addActionError( "Pattern not removed, unable to find filetype " + 
getFileTypeId() );
+            return INPUT;
+        }
+
+        filetype.removePattern( getPattern() );
+
+        triggerAuditEvent( AuditEvent.REMOVE_PATTERN + " " + pattern );
+
+        return saveConfiguration();
+    }
+
     public String getFileTypeId()
     {
         return fileTypeId;
@@ -192,9 +215,8 @@ public class RepositoryScanningAction
         CollectionUtils.forAllDo( reposcanning.getFileTypes(), 
filetypeToMapClosure );
         fileTypeMap = filetypeToMapClosure.getMap();
 
-        AddAdminRepoConsumerClosure addAdminRepoConsumer;
-
-        addAdminRepoConsumer = new AddAdminRepoConsumerClosure( 
reposcanning.getKnownContentConsumers() );
+        AddAdminRepoConsumerClosure addAdminRepoConsumer =
+            new AddAdminRepoConsumerClosure( 
reposcanning.getKnownContentConsumers() );
         CollectionUtils.forAllDo( 
repoconsumerUtil.getAvailableKnownConsumers(), addAdminRepoConsumer );
         this.knownContentConsumers = addAdminRepoConsumer.getList();
         Collections.sort( knownContentConsumers, 
AdminRepositoryConsumerComparator.getInstance() );
@@ -209,29 +231,6 @@ public class RepositoryScanningAction
         Collections.sort( fileTypeIds );
     }
 
-    public String removeFiletypePattern()
-    {
-        log.info( "Remove File Type Pattern [" + getFileTypeId() + ":" + 
getPattern() + "]" );
-
-        if ( !isValidFiletypeCommand() )
-        {
-            return INPUT;
-        }
-
-        FileType filetype = findFileType( getFileTypeId() );
-        if ( filetype == null )
-        {
-            addActionError( "Pattern not removed, unable to find filetype " + 
getFileTypeId() );
-            return INPUT;
-        }
-
-        filetype.removePattern( getPattern() );
-
-        triggerAuditEvent( AuditEvent.REMOVE_PATTERN + " " + pattern );
-
-        return saveConfiguration();
-    }
-
     public void setFileTypeId( String fileTypeId )
     {
         this.fileTypeId = fileTypeId;


Reply via email to