You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by ol...@apache.org on 2008/07/25 00:31:26 UTC

svn commit: r679588 [1/8] - in /continuum/branches/CONTINUUM-782: ./ continuum-api/ continuum-api/src/main/java/org/apache/continuum/purge/ continuum-api/src/main/java/org/apache/continuum/purge/controller/ continuum-api/src/main/java/org/apache/contin...

Author: olamy
Date: Thu Jul 24 15:31:19 2008
New Revision: 679588

URL: http://svn.apache.org/viewvc?rev=679588&view=rev
Log:
[CONTINUUM-782] Add a feature to allow cleaning the m2 local repo once every N days
Submitted by Maria Catherine Tan


Added:
    continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/
    continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/ContinuumPurgeManager.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/ContinuumPurgeManagerException.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/PurgeConfigurationService.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/PurgeConfigurationServiceException.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/controller/
    continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/controller/PurgeController.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/executor/
    continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/executor/ContinuumPurgeExecutor.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/executor/ContinuumPurgeExecutorException.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/repository/
    continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/repository/content/
    continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/repository/content/RepositoryManagedContent.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/repository/scanner/
    continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/repository/scanner/RepositoryScanner.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/repository/
    continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/repository/RepositoryService.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/repository/RepositoryServiceException.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-core/src/main/java/org/apache/continuum/
    continuum/branches/CONTINUUM-782/continuum-core/src/main/java/org/apache/continuum/purge/
    continuum/branches/CONTINUUM-782/continuum-core/src/main/java/org/apache/continuum/purge/DefaultContinuumPurgeManager.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-core/src/main/java/org/apache/continuum/repository/
    continuum/branches/CONTINUUM-782/continuum-core/src/main/java/org/apache/continuum/repository/DefaultRepositoryService.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-core/src/main/java/org/apache/maven/continuum/scheduler/ContinuumPurgeJob.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-core/src/test/java/org/apache/continuum/
    continuum/branches/CONTINUUM-782/continuum-core/src/test/java/org/apache/continuum/purge/
    continuum/branches/CONTINUUM-782/continuum-core/src/test/java/org/apache/continuum/purge/DefaultContinuumPurgeManagerTest.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-core/src/test/java/org/apache/continuum/repository/
    continuum/branches/CONTINUUM-782/continuum-core/src/test/java/org/apache/continuum/repository/DefaultRepositoryServiceTest.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-core/src/test/resources/org/apache/continuum/
    continuum/branches/CONTINUUM-782/continuum-core/src/test/resources/org/apache/continuum/purge/
    continuum/branches/CONTINUUM-782/continuum-core/src/test/resources/org/apache/continuum/purge/DefaultContinuumPurgeManagerTest.xml   (with props)
    continuum/branches/CONTINUUM-782/continuum-core/src/test/resources/org/apache/continuum/repository/
    continuum/branches/CONTINUUM-782/continuum-core/src/test/resources/org/apache/continuum/repository/DefaultRepositoryServiceTest.xml   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/
    continuum/branches/CONTINUUM-782/continuum-purge-07242008.patch   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/pom.xml   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/ContinuumPurgeConstants.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/DefaultPurgeConfigurationService.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/controller/
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/controller/DirectoryPurgeController.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/controller/RepositoryPurgeController.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/executor/
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/executor/AbstractContinuumPurgeExecutor.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/executor/CleanAllPurgeExecutor.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/executor/DaysOldDirectoryPurgeExecutor.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/executor/DaysOldRepositoryPurgeExecutor.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/executor/ReleasedSnapshotsRepositoryPurgeExecutor.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/executor/RetentionCountDirectoryPurgeExecutor.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/executor/RetentionCountRepositoryPurgeExecutor.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/repository/
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/repository/content/
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/repository/content/ManagedDefaultRepositoryContent.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/repository/content/ManagedLegacyRepositoryContent.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/repository/scanner/
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/repository/scanner/DefaultRepositoryScanner.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/repository/scanner/RepositoryScannerInstance.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/repository/utils/
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/repository/utils/FileTypes.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/repository/utils/FilenameParser.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/repository/utils/LegacyPathParser.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/task/
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/task/PurgeTask.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/java/org/apache/continuum/purge/task/PurgeTaskExecutor.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/resources/
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/resources/META-INF/
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/resources/META-INF/plexus/
    continuum/branches/CONTINUUM-782/continuum-purge/src/main/resources/META-INF/plexus/components.xml   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/test/
    continuum/branches/CONTINUUM-782/continuum-purge/src/test/java/
    continuum/branches/CONTINUUM-782/continuum-purge/src/test/java/org/
    continuum/branches/CONTINUUM-782/continuum-purge/src/test/java/org/apache/
    continuum/branches/CONTINUUM-782/continuum-purge/src/test/java/org/apache/continuum/
    continuum/branches/CONTINUUM-782/continuum-purge/src/test/java/org/apache/continuum/purge/
    continuum/branches/CONTINUUM-782/continuum-purge/src/test/java/org/apache/continuum/purge/AbstractPurgeTest.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/test/java/org/apache/continuum/purge/DefaultPurgeConfigurationServiceTest.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/test/java/org/apache/continuum/purge/executor/
    continuum/branches/CONTINUUM-782/continuum-purge/src/test/java/org/apache/continuum/purge/executor/AbstractPurgeExecutorTest.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/test/java/org/apache/continuum/purge/executor/CleanAllPurgeExecutorTest.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/test/java/org/apache/continuum/purge/executor/DaysOldDirectoryPurgeExecutorTest.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/test/java/org/apache/continuum/purge/executor/DaysOldRepositoryPurgeExecutorTest.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/test/java/org/apache/continuum/purge/executor/ReleasedSnapshotsRepositoryPurgeExecutorTest.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/test/java/org/apache/continuum/purge/executor/RetentionCountDirectoryPurgeExecutorTest.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/test/java/org/apache/continuum/purge/executor/RetentionCountRepositoryPurgeExecutorTest.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-purge/src/test/resources/
    continuum/branches/CONTINUUM-782/continuum-purge/src/test/resources/META-INF/
    continuum/branches/CONTINUUM-782/continuum-purge/src/test/resources/META-INF/continuum/
    continuum/branches/CONTINUUM-782/continuum-purge/src/test/resources/META-INF/continuum/continuum-configuration.xml   (with props)
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/java/org/apache/continuum/web/action/
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/java/org/apache/continuum/web/action/admin/
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/java/org/apache/continuum/web/action/admin/LocalRepositoryAction.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/java/org/apache/continuum/web/action/admin/PurgeConfigurationAction.java   (with props)
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/resources/org/apache/continuum/
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/resources/org/apache/continuum/web/
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/resources/org/apache/continuum/web/action/
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/resources/org/apache/continuum/web/action/admin/
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/resources/org/apache/continuum/web/action/admin/LocalRepositoryAction-saveRepository-validation.xml   (with props)
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/resources/org/apache/continuum/web/action/admin/LocalRepositoryAction.properties   (with props)
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/resources/org/apache/continuum/web/action/admin/PurgeConfigurationAction-savePurgeConfig-validation.xml   (with props)
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/resources/org/apache/continuum/web/action/admin/PurgeConfigurationAction.properties   (with props)
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/confirmDeleteLocalRepository.jsp   (with props)
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/editLocalRepository.jsp   (with props)
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/editPurgeConfiguration.jsp   (with props)
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/localRepositoriesList.jsp   (with props)
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/purgeConfigurationsList.jsp   (with props)
Modified:
    continuum/branches/CONTINUUM-782/continuum-api/pom.xml
    continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java
    continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/maven/continuum/release/ContinuumReleaseManager.java
    continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java
    continuum/branches/CONTINUUM-782/continuum-core/pom.xml
    continuum/branches/CONTINUUM-782/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
    continuum/branches/CONTINUUM-782/continuum-core/src/main/java/org/apache/maven/continuum/build/settings/DefaultSchedulesActivator.java
    continuum/branches/CONTINUUM-782/continuum-core/src/main/java/org/apache/maven/continuum/core/action/DeployArtifactContinuumAction.java
    continuum/branches/CONTINUUM-782/continuum-core/src/main/java/org/apache/maven/continuum/execution/maven/m1/MavenOneBuildExecutor.java
    continuum/branches/CONTINUUM-782/continuum-core/src/main/java/org/apache/maven/continuum/execution/maven/m2/DefaultMavenBuilderHelper.java
    continuum/branches/CONTINUUM-782/continuum-core/src/main/java/org/apache/maven/continuum/execution/maven/m2/MavenBuilderHelper.java
    continuum/branches/CONTINUUM-782/continuum-core/src/main/java/org/apache/maven/continuum/execution/maven/m2/MavenTwoBuildExecutor.java
    continuum/branches/CONTINUUM-782/continuum-core/src/main/java/org/apache/maven/continuum/initialization/DefaultContinuumInitializer.java
    continuum/branches/CONTINUUM-782/continuum-core/src/main/java/org/apache/maven/continuum/project/builder/maven/MavenTwoContinuumProjectBuilder.java
    continuum/branches/CONTINUUM-782/continuum-core/src/test/java/org/apache/maven/continuum/DefaultContinuumTest.java
    continuum/branches/CONTINUUM-782/continuum-data-management/data-management-jdo/src/main/java/org/apache/maven/continuum/management/JdoDataManagementTool.java
    continuum/branches/CONTINUUM-782/continuum-data-management/data-management-jdo/src/test/java/org/apache/maven/continuum/management/DataManagementToolTest.java
    continuum/branches/CONTINUUM-782/continuum-data-management/data-management-jdo/src/test/resources/expected.xml
    continuum/branches/CONTINUUM-782/continuum-model/pom.xml
    continuum/branches/CONTINUUM-782/continuum-model/src/main/mdo/continuum.xml
    continuum/branches/CONTINUUM-782/continuum-release/src/main/java/org/apache/maven/continuum/release/DefaultContinuumReleaseManager.java
    continuum/branches/CONTINUUM-782/continuum-release/src/main/java/org/apache/maven/continuum/release/executors/PerformReleaseTaskExecutor.java
    continuum/branches/CONTINUUM-782/continuum-release/src/main/java/org/apache/maven/continuum/release/tasks/PerformReleaseProjectTask.java
    continuum/branches/CONTINUUM-782/continuum-security/src/main/java/org/apache/maven/continuum/security/ContinuumRoleConstants.java
    continuum/branches/CONTINUUM-782/continuum-security/src/main/resources/META-INF/redback/redback.xml
    continuum/branches/CONTINUUM-782/continuum-store/src/main/java/org/apache/maven/continuum/store/JdoContinuumStore.java
    continuum/branches/CONTINUUM-782/continuum-store/src/test/java/org/apache/maven/continuum/store/AbstractContinuumStoreTestCase.java
    continuum/branches/CONTINUUM-782/continuum-store/src/test/java/org/apache/maven/continuum/store/ContinuumStoreTest.java
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/java/org/apache/continuum/web/startup/ContinuumStartup.java
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddProjectGroupAction.java
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/GroupSummaryAction.java
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectGroupAction.java
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleasePerformAction.java
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/mdo/view-models.mdo
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/resources/META-INF/plexus/application.xml
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/resources/localization/Continuum.properties
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/resources/xwork.xml
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/webapp/WEB-INF/jsp/groupSummary.jsp
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/webapp/WEB-INF/jsp/navigations/Menu.jsp
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/webapp/WEB-INF/jsp/projectGroupAdd.jsp
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/webapp/WEB-INF/jsp/projectGroupEdit.jsp
    continuum/branches/CONTINUUM-782/continuum-webapp/src/main/webapp/WEB-INF/jsp/projectGroupSummary.jsp
    continuum/branches/CONTINUUM-782/pom.xml

Modified: continuum/branches/CONTINUUM-782/continuum-api/pom.xml
URL: http://svn.apache.org/viewvc/continuum/branches/CONTINUUM-782/continuum-api/pom.xml?rev=679588&r1=679587&r2=679588&view=diff
==============================================================================
--- continuum/branches/CONTINUUM-782/continuum-api/pom.xml (original)
+++ continuum/branches/CONTINUUM-782/continuum-api/pom.xml Thu Jul 24 15:31:19 2008
@@ -55,5 +55,15 @@
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-artifact</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.apache.archiva</groupId>
+      <artifactId>archiva-common</artifactId>
+      <version>${archiva.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.archiva</groupId>
+      <artifactId>archiva-repository-layer</artifactId>
+      <version>${archiva.version}</version>
+    </dependency>
   </dependencies>
 </project>
\ No newline at end of file

Added: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/ContinuumPurgeManager.java
URL: http://svn.apache.org/viewvc/continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/ContinuumPurgeManager.java?rev=679588&view=auto
==============================================================================
--- continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/ContinuumPurgeManager.java (added)
+++ continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/ContinuumPurgeManager.java Thu Jul 24 15:31:19 2008
@@ -0,0 +1,105 @@
+package org.apache.continuum.purge;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.continuum.model.repository.DirectoryPurgeConfiguration;
+import org.apache.continuum.model.repository.RepositoryPurgeConfiguration;
+import org.apache.maven.continuum.model.project.Schedule;
+
+/**
+ * @author Maria Catherine Tan
+ */
+public interface ContinuumPurgeManager
+{   
+    String ROLE = ContinuumPurgeManager.class.getName();
+    
+    /**
+     * Purge repositories and directories 
+     * @param schedule
+     * @throws ContinuumPurgeManagerException
+     */
+    void purge( Schedule schedule )
+        throws ContinuumPurgeManagerException;
+    
+    /**
+     * Purge repository
+     * @param repoPurgeConfig
+     * @throws ContinuumPurgeManagerException
+     */
+    void purgeRepository( RepositoryPurgeConfiguration repoPurgeConfig )
+        throws ContinuumPurgeManagerException;
+    
+    /**
+     * Purge directory 
+     * @param dirPurgeConfig
+     * @throws ContinuumPurgeManagerException
+     */
+    void purgeDirectory( DirectoryPurgeConfiguration dirPurgeConfig )
+        throws ContinuumPurgeManagerException;
+    
+    /**
+     * Check if the repository is already in the purging queue
+     * 
+     * @param repositoryId the id of the repository purge configuration
+     * @return true if the repository is in the purging queue, otherwise false
+     * @throws ContinuumPurgeManagerException
+     */
+    boolean isRepositoryInPurgeQueue( int repositoryId )
+        throws ContinuumPurgeManagerException;
+    
+    /**
+     * Check if the repository is being used by a project that is currently building
+     * 
+     * @param repositoryId the id of the local repository
+     * @return true if the repository is in use, otherwise false
+     * @throws ContinuumPurgeManagerException
+     */
+    boolean isRepositoryInUse( int repositoryId )
+        throws ContinuumPurgeManagerException;
+
+    /**
+     * Remove local repository from the purge queue
+     * 
+     * @param repositoryId the id of the local repository
+     * @throws ContinuumPurgeManagerException
+     */
+    void removeRepositoryFromPurgeQueue( int repositoryId )
+        throws ContinuumPurgeManagerException;
+    
+    /**
+     * Remove local repository from the purge queue
+     * 
+     * @param purgeConfigId the id of the purge configuration
+     * @return true if the purge configuration was successfully removed from the purge queue, otherwise false
+     * @throws ContinuumPurgeManagerException
+     */
+    boolean removeFromPurgeQueue( int purgeConfigId )
+        throws ContinuumPurgeManagerException;
+    
+    /**
+     * Remove local repositories from the purge queue
+     * 
+     * @param purgeConfigIds the ids of the purge configuration
+     * @return true if the purge configurations were successfully removed from the purge queue, otherwise false
+     * @throws ContinuumPurgeManagerException
+     */
+    boolean removeFromPurgeQueue( int[] purgeConfigIds )
+        throws ContinuumPurgeManagerException;
+}

Propchange: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/ContinuumPurgeManager.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/ContinuumPurgeManager.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Revision Id

Added: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/ContinuumPurgeManagerException.java
URL: http://svn.apache.org/viewvc/continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/ContinuumPurgeManagerException.java?rev=679588&view=auto
==============================================================================
--- continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/ContinuumPurgeManagerException.java (added)
+++ continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/ContinuumPurgeManagerException.java Thu Jul 24 15:31:19 2008
@@ -0,0 +1,42 @@
+package org.apache.continuum.purge;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * @author Maria Catherine Tan
+ */
+public class ContinuumPurgeManagerException
+    extends Exception
+{
+    public ContinuumPurgeManagerException( String message )
+    {
+        super( message );
+    }
+    
+    public ContinuumPurgeManagerException( Throwable cause )
+    {
+        super( cause );
+    }
+    
+    public ContinuumPurgeManagerException( String message, Throwable cause )
+    {
+        super( message, cause );
+    }
+}
\ No newline at end of file

Propchange: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/ContinuumPurgeManagerException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/ContinuumPurgeManagerException.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Revision Id

Added: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/PurgeConfigurationService.java
URL: http://svn.apache.org/viewvc/continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/PurgeConfigurationService.java?rev=679588&view=auto
==============================================================================
--- continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/PurgeConfigurationService.java (added)
+++ continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/PurgeConfigurationService.java Thu Jul 24 15:31:19 2008
@@ -0,0 +1,96 @@
+package org.apache.continuum.purge;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.List;
+
+import org.apache.continuum.model.repository.AbstractPurgeConfiguration;
+import org.apache.continuum.model.repository.DirectoryPurgeConfiguration;
+import org.apache.continuum.model.repository.RepositoryPurgeConfiguration;
+import org.apache.continuum.purge.repository.content.RepositoryManagedContent;
+
+/**
+ * @author Maria Catherine Tan
+ */
+public interface PurgeConfigurationService
+{
+    String ROLE = PurgeConfigurationService.class.getName();
+    
+    AbstractPurgeConfiguration addPurgeConfiguration( AbstractPurgeConfiguration purgeConfig )
+        throws PurgeConfigurationServiceException;
+    
+    void updatePurgeConfiguration( AbstractPurgeConfiguration purgeConfig )
+        throws PurgeConfigurationServiceException;
+
+    void removePurgeConfiguration( int purgeConfigId )
+        throws PurgeConfigurationServiceException;
+    
+    RepositoryPurgeConfiguration addRepositoryPurgeConfiguration( RepositoryPurgeConfiguration repoPurge )
+        throws PurgeConfigurationServiceException;
+    
+    void updateRepositoryPurgeConfiguration( RepositoryPurgeConfiguration repoPurge )
+        throws PurgeConfigurationServiceException;
+    
+    void removeRepositoryPurgeConfiguration( RepositoryPurgeConfiguration repoPurge )
+        throws PurgeConfigurationServiceException;
+    
+    RepositoryPurgeConfiguration getRepositoryPurgeConfiguration( int repoPurgeId )
+        throws PurgeConfigurationServiceException;
+    
+    RepositoryPurgeConfiguration getDefaultPurgeConfigurationForRepository( int repositoryId );
+    
+    List<RepositoryPurgeConfiguration> getRepositoryPurgeConfigurationsBySchedule( int scheduleId );
+    
+    List<RepositoryPurgeConfiguration> getRepositoryPurgeConfigurationsByRepository( int repositoryId );
+    
+    List<RepositoryPurgeConfiguration> getAllRepositoryPurgeConfigurations();
+    
+    DirectoryPurgeConfiguration addDirectoryPurgeConfiguration( DirectoryPurgeConfiguration dirPurge )
+        throws PurgeConfigurationServiceException;
+    
+    void updateDirectoryPurgeConfiguration( DirectoryPurgeConfiguration dirPurge )
+        throws PurgeConfigurationServiceException;
+    
+    void removeDirectoryPurgeConfiguration( DirectoryPurgeConfiguration dirPurge )
+        throws PurgeConfigurationServiceException;
+    
+    DirectoryPurgeConfiguration getDirectoryPurgeConfiguration( int dirPurgeId )
+        throws PurgeConfigurationServiceException;
+    
+    DirectoryPurgeConfiguration getDefaultPurgeConfigurationForDirectoryType( String directoryType );
+    
+    List<DirectoryPurgeConfiguration> getDirectoryPurgeConfigurationsBySchedule( int scheduleId );
+    
+    List<DirectoryPurgeConfiguration> getDirectoryPurgeConfigurationsByLocation( String location );
+    
+    List<DirectoryPurgeConfiguration> getAllDirectoryPurgeConfigurations();
+    
+    List<AbstractPurgeConfiguration> getAllPurgeConfigurations();
+    
+    AbstractPurgeConfiguration getPurgeConfiguration( int purgeConfigId );
+    
+    /**
+     * @param repositoryId
+     * @return
+     * @throws PurgeConfigurationServiceException
+     */
+    RepositoryManagedContent getManagedRepositoryContent( int repositoryId)
+        throws PurgeConfigurationServiceException;
+}

Propchange: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/PurgeConfigurationService.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/PurgeConfigurationService.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Revision Id

Added: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/PurgeConfigurationServiceException.java
URL: http://svn.apache.org/viewvc/continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/PurgeConfigurationServiceException.java?rev=679588&view=auto
==============================================================================
--- continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/PurgeConfigurationServiceException.java (added)
+++ continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/PurgeConfigurationServiceException.java Thu Jul 24 15:31:19 2008
@@ -0,0 +1,42 @@
+package org.apache.continuum.purge;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * @author Maria Catherine Tan
+ */
+public class PurgeConfigurationServiceException
+    extends Exception
+{
+    public PurgeConfigurationServiceException( String message )
+    {
+        super( message );
+    }
+    
+    public PurgeConfigurationServiceException( Throwable cause )
+    {
+        super( cause );
+    }
+    
+    public PurgeConfigurationServiceException( String message, Throwable cause )
+    {
+        super( message, cause );
+    }
+}

Propchange: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/PurgeConfigurationServiceException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/PurgeConfigurationServiceException.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Revision Id

Added: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/controller/PurgeController.java
URL: http://svn.apache.org/viewvc/continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/controller/PurgeController.java?rev=679588&view=auto
==============================================================================
--- continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/controller/PurgeController.java (added)
+++ continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/controller/PurgeController.java Thu Jul 24 15:31:19 2008
@@ -0,0 +1,36 @@
+package org.apache.continuum.purge.controller;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.continuum.model.repository.AbstractPurgeConfiguration;
+import org.apache.continuum.purge.executor.ContinuumPurgeExecutorException;
+
+/**
+ * @author Maria Catherine Tan
+ */
+public interface PurgeController
+{
+    String ROLE = PurgeController.class.getName();
+    
+    void initializeExecutors( AbstractPurgeConfiguration purgeConfig )
+        throws ContinuumPurgeExecutorException;
+    
+    void doPurge( String path );
+}

Propchange: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/controller/PurgeController.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/controller/PurgeController.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Revision Id

Added: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/executor/ContinuumPurgeExecutor.java
URL: http://svn.apache.org/viewvc/continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/executor/ContinuumPurgeExecutor.java?rev=679588&view=auto
==============================================================================
--- continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/executor/ContinuumPurgeExecutor.java (added)
+++ continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/executor/ContinuumPurgeExecutor.java Thu Jul 24 15:31:19 2008
@@ -0,0 +1,32 @@
+package org.apache.continuum.purge.executor;
+
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * @author Maria Catherine Tan
+ */
+public interface ContinuumPurgeExecutor
+{
+    String ROLE = ContinuumPurgeExecutor.class.getName();
+    
+    void purge( String path )
+        throws ContinuumPurgeExecutorException;
+}
\ No newline at end of file

Propchange: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/executor/ContinuumPurgeExecutor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/executor/ContinuumPurgeExecutor.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Revision Id

Added: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/executor/ContinuumPurgeExecutorException.java
URL: http://svn.apache.org/viewvc/continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/executor/ContinuumPurgeExecutorException.java?rev=679588&view=auto
==============================================================================
--- continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/executor/ContinuumPurgeExecutorException.java (added)
+++ continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/executor/ContinuumPurgeExecutorException.java Thu Jul 24 15:31:19 2008
@@ -0,0 +1,42 @@
+package org.apache.continuum.purge.executor;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * @author Maria Catherine Tan
+ */
+public class ContinuumPurgeExecutorException
+    extends Exception
+{
+    public ContinuumPurgeExecutorException( String message )
+    {
+        super( message );
+    }
+    
+    public ContinuumPurgeExecutorException( Throwable cause )
+    {
+        super( cause );
+    }
+    
+    public ContinuumPurgeExecutorException( String message, Throwable cause )
+    {
+        super( message, cause );
+    }
+}
\ No newline at end of file

Propchange: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/executor/ContinuumPurgeExecutorException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/executor/ContinuumPurgeExecutorException.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Revision Id

Added: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/repository/content/RepositoryManagedContent.java
URL: http://svn.apache.org/viewvc/continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/repository/content/RepositoryManagedContent.java?rev=679588&view=auto
==============================================================================
--- continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/repository/content/RepositoryManagedContent.java (added)
+++ continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/repository/content/RepositoryManagedContent.java Thu Jul 24 15:31:19 2008
@@ -0,0 +1,182 @@
+package org.apache.continuum.purge.repository.content;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.File;
+import java.util.Set;
+
+import org.apache.continuum.model.repository.LocalRepository;
+import org.apache.maven.archiva.model.ArtifactReference;
+import org.apache.maven.archiva.model.ProjectReference;
+import org.apache.maven.archiva.model.VersionedReference;
+import org.apache.maven.archiva.repository.ContentNotFoundException;
+import org.apache.maven.archiva.repository.layout.LayoutException;
+
+/**
+ * Taken from Archiva's ManagedRepositoryContent interface and made some few changes.
+ */
+public interface RepositoryManagedContent
+{
+    /**
+     * Delete from the local repository all files / directories associated with the
+     * provided version reference.
+     * 
+     * @param reference the version reference to delete.
+     * @throws ContentNotFoundException 
+     */
+    public void deleteVersion( VersionedReference reference )
+        throws ContentNotFoundException;
+    
+    /**
+     * <p>
+     * Convenience method to get the repository id.
+     * </p>
+     * 
+     * <p>
+     * Equivalent to calling <code>.getRepository().getId()</code>
+     * </p>
+     * 
+     * @return the repository id.
+     */
+    public int getId();
+    
+    /**
+     * <p>
+     * Gather up the list of related artifacts to the ArtifactReference provided.
+     * This typically inclues the pom files, and those things with 
+     * classifiers (such as doc, source code, test libs, etc...)
+     * </p>
+     * 
+     * <p>
+     * <strong>NOTE:</strong> Some layouts (such as maven 1 "legacy") are not compatible with this query.
+     * </p> 
+     * 
+     * @param reference the reference to work off of.
+     * @return the set of ArtifactReferences for related artifacts.
+     * @throws ContentNotFoundException if the initial artifact reference does not exist within the repository.
+     * @throws LayoutException 
+     */
+    public Set<ArtifactReference> getRelatedArtifacts( ArtifactReference reference )
+        throws ContentNotFoundException, LayoutException;
+
+    /**
+     * <p>
+     * Convenience method to get the repository (on disk) root directory.
+     * </p>
+     * 
+     * <p>
+     * Equivalent to calling <code>.getLocalRepository().getDirectory()</code>
+     * </p>
+     * 
+     * @return the repository (on disk) root directory.
+     */
+    public String getRepoRoot();
+
+    /**
+     * Get the local repository associated with this
+     * repository content.
+     * 
+     * @return the local repository that is associated with this repository content.
+     */
+    public LocalRepository getRepository();
+
+    /**
+     * Given a specific {@link ProjectReference}, return the list of available versions for
+     * that project reference.
+     * 
+     * @param reference the project reference to work off of.
+     * @return the list of versions found for that project reference.
+     * @throws ContentNotFoundException if the project reference does not exist within the repository.
+     * @throws LayoutException 
+     */
+    public Set<String> getVersions( ProjectReference reference )
+        throws ContentNotFoundException, LayoutException;
+
+    /**
+     * <p>
+     * Given a specific {@link VersionedReference}, return the list of available versions for that
+     * versioned reference.
+     * </p>
+     * 
+     * <p>
+     * <strong>NOTE:</strong> This is really only useful when working with SNAPSHOTs.
+     * </p>
+     * 
+     * @param reference the versioned reference to work off of.
+     * @return the set of versions found.
+     * @throws ContentNotFoundException if the versioned reference does not exist within the repository.
+     * @throws LayoutException 
+     */
+    public Set<String> getVersions( VersionedReference reference )
+        throws ContentNotFoundException, LayoutException;
+    
+    /**
+     * Set the local repository to associate with this
+     * repository content.
+     * 
+     * @param repo the repository to associate with this repository content.
+     */
+    public void setRepository( LocalRepository repo );
+
+    /**
+     * Given a repository relative path to a filename, return the {@link VersionedReference} object suitable for the path.
+     *
+     * @param path the path relative to the repository base dir for the artifact.
+     * @return the {@link ArtifactReference} representing the path.  (or null if path cannot be converted to
+     *         a {@link ArtifactReference})
+     * @throws LayoutException if there was a problem converting the path to an artifact.
+     */
+    public ArtifactReference toArtifactReference( String path )
+        throws LayoutException;
+
+    /**
+     * Given an {@link ArtifactReference}, return the file reference to the artifact.
+     *
+     * @param reference the artifact reference to use.
+     * @return the relative path to the artifact.
+     */
+    public File toFile( ArtifactReference reference );
+
+    /**
+     * Given a {@link ProjectReference}, return the path to the metadata for
+     * the project. 
+     * 
+     * @param reference the reference to use.
+     * @return the path to the metadata file, or null if no metadata is appropriate.
+     */
+    public String toMetadataPath( ProjectReference reference );
+
+    /**
+     * Given a {@link VersionedReference}, return the path to the metadata for
+     * the specific version of the project. 
+     * 
+     * @param reference the reference to use.
+     * @return the path to the metadata file, or null if no metadata is appropriate.
+     */
+    public String toMetadataPath( VersionedReference reference );
+
+    /**
+     * Given an {@link ArtifactReference}, return the relative path to the artifact.
+     *
+     * @param reference the artifact reference to use.
+     * @return the relative path to the artifact.
+     */
+    public String toPath( ArtifactReference reference );
+}
\ No newline at end of file

Propchange: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/repository/content/RepositoryManagedContent.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/repository/content/RepositoryManagedContent.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Revision Id

Added: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/repository/scanner/RepositoryScanner.java
URL: http://svn.apache.org/viewvc/continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/repository/scanner/RepositoryScanner.java?rev=679588&view=auto
==============================================================================
--- continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/repository/scanner/RepositoryScanner.java (added)
+++ continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/repository/scanner/RepositoryScanner.java Thu Jul 24 15:31:19 2008
@@ -0,0 +1,62 @@
+package org.apache.continuum.purge.repository.scanner;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.List;
+
+import org.apache.continuum.model.repository.LocalRepository;
+import org.apache.continuum.purge.controller.PurgeController;
+import org.apache.continuum.purge.executor.ContinuumPurgeExecutorException;
+
+/**
+ * Codes were taken from Archiva and made some changes.
+ */
+public interface RepositoryScanner
+{
+    /**
+     * <p>
+     * Typical Ignorable Content patterns.
+     * </p>
+     */
+    public static final String[] IGNORABLE_CONTENT = {
+        "bin/**",
+        "reports/**",
+        ".index",
+        ".reports/**",
+        ".maven/**",
+        "**/.svn/**",
+        "**/*snapshot-version",
+        "*/website/**",
+        "*/licences/**",
+        "**/.htaccess",
+        "**/*.html",
+        "**/*.txt",
+        "**/README*",
+        "**/CHANGELOG*",
+        "**/KEYS*" +
+        "**/*.xml*" };
+    
+    public void scan( LocalRepository repository, PurgeController purgeController )
+        throws ContinuumPurgeExecutorException;
+    
+    public void scan( LocalRepository repository, PurgeController purgeController,
+                      List<String> ignoredContentPatterns )
+        throws ContinuumPurgeExecutorException;
+}
\ No newline at end of file

Propchange: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/repository/scanner/RepositoryScanner.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/purge/repository/scanner/RepositoryScanner.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Revision Id

Added: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/repository/RepositoryService.java
URL: http://svn.apache.org/viewvc/continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/repository/RepositoryService.java?rev=679588&view=auto
==============================================================================
--- continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/repository/RepositoryService.java (added)
+++ continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/repository/RepositoryService.java Thu Jul 24 15:31:19 2008
@@ -0,0 +1,99 @@
+package org.apache.continuum.repository;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.List;
+
+import org.apache.continuum.model.repository.LocalRepository;
+
+/**
+ * @author Maria Catherine Tan
+ */
+public interface RepositoryService
+{
+    String ROLE = RepositoryService.class.getName();
+    
+    // ------------------------------------------------------
+    //  LocalRepository
+    // ------------------------------------------------------
+    
+    /**
+     * Add the local repository
+     * 
+     * @param repository the local repository to add
+     * @return LocalRepository the local repository
+     * @throws RepositoryServiceException
+     */
+    LocalRepository addLocalRepository( LocalRepository repository )
+        throws RepositoryServiceException;
+
+    /**
+     * Update the local repository
+     * 
+     * @param repository the local repository to update
+     * @throws RepositoryServiceException
+     */
+    void updateLocalRepository( LocalRepository repository )
+        throws RepositoryServiceException;
+
+    /**
+     * Remove the local repository
+     * 
+     * @param repositoryId the id of the local repository to remove
+     * @throws RepositoryServiceException
+     */
+    void removeLocalRepository( int repositoryId )
+        throws RepositoryServiceException;
+
+    /**
+     * Retrieve all local repositories
+     * 
+     * @return list of all local repositories
+     */
+    List<LocalRepository> getAllLocalRepositories();
+    
+    /**
+     * Retrieve local repository
+     * 
+     * @param location the system file path of the repository
+     * @return LocalRepository the local repository
+     * @throws RepositoryServiceException
+     */
+    LocalRepository getLocalRepositoryByLocation( String location )
+        throws RepositoryServiceException;
+    
+    /**
+     * Retrieve list of local repositories with the specified layout
+     * @param layout the layout of the repository. "default" or "legacy"
+     * @return List of local repositories
+     * @throws RepositoryServiceException
+     */
+    List<LocalRepository> getLocalRepositoriesByLayout( String layout );
+    
+    /**
+     * Retrieve local repository
+     * 
+     * @param repositoryId the id of the local repository
+     * @return LocalRepository the local repository
+     * @throws RepositoryServiceException
+     */
+    LocalRepository getLocalRepository( int repositoryId )
+        throws RepositoryServiceException;
+}
\ No newline at end of file

Propchange: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/repository/RepositoryService.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/repository/RepositoryService.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Revision Id

Added: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/repository/RepositoryServiceException.java
URL: http://svn.apache.org/viewvc/continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/repository/RepositoryServiceException.java?rev=679588&view=auto
==============================================================================
--- continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/repository/RepositoryServiceException.java (added)
+++ continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/repository/RepositoryServiceException.java Thu Jul 24 15:31:19 2008
@@ -0,0 +1,42 @@
+package org.apache.continuum.repository;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * @author Maria Catherine Tan
+ */
+public class RepositoryServiceException
+    extends Exception
+{
+    public RepositoryServiceException( String message )
+    {
+        super( message );
+    }
+    
+    public RepositoryServiceException( Throwable cause )
+    {
+        super( cause );
+    }
+    
+    public RepositoryServiceException( String message, Throwable cause )
+    {
+        super( message, cause );
+    }
+}

Propchange: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/repository/RepositoryServiceException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/continuum/repository/RepositoryServiceException.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Revision Id

Modified: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java
URL: http://svn.apache.org/viewvc/continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java?rev=679588&r1=679587&r2=679588&view=diff
==============================================================================
--- continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java (original)
+++ continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java Thu Jul 24 15:31:19 2008
@@ -24,6 +24,8 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.continuum.purge.ContinuumPurgeManager;
+import org.apache.continuum.repository.RepositoryService;
 import org.apache.maven.continuum.builddefinition.BuildDefinitionService;
 import org.apache.maven.continuum.buildqueue.BuildProjectTask;
 import org.apache.maven.continuum.configuration.ConfigurationService;
@@ -96,6 +98,8 @@
     public ProjectGroup getProjectGroupByGroupIdWithBuildDetails( String groupId )
         throws ContinuumException;
 
+    public List<ProjectGroup> getAllProjectGroupsWithRepository( int repositoryId );
+    
     // ----------------------------------------------------------------------
     // Project
     // ----------------------------------------------------------------------
@@ -632,6 +636,15 @@
 
     BuildDefinitionService getBuildDefinitionService();
     
+    // ----------------------------------------------------------------------
+    // Continuum Purge
+    // ----------------------------------------------------------------------
+    ContinuumPurgeManager getPurgeManager();
+    
+    // ----------------------------------------------------------------------
+    // Repository Service
+    // ----------------------------------------------------------------------
+    RepositoryService getRepositoryService();
     
     public void startup()
         throws ContinuumException;

Modified: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/maven/continuum/release/ContinuumReleaseManager.java
URL: http://svn.apache.org/viewvc/continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/maven/continuum/release/ContinuumReleaseManager.java?rev=679588&r1=679587&r2=679588&view=diff
==============================================================================
--- continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/maven/continuum/release/ContinuumReleaseManager.java (original)
+++ continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/maven/continuum/release/ContinuumReleaseManager.java Thu Jul 24 15:31:19 2008
@@ -19,6 +19,7 @@
  * under the License.
  */
 
+import org.apache.continuum.model.repository.LocalRepository;
 import org.apache.maven.continuum.model.project.Project;
 
 import java.io.File;
@@ -94,4 +95,8 @@
     Map getReleaseResults();
 
     Map getListeners();
+    
+    void perform( String releaseId, File buildDirectory, String goals, boolean useReleaseProfile,
+                  ContinuumReleaseManagerListener listener, LocalRepository repository )
+        throws ContinuumReleaseException;
 }

Modified: continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java
URL: http://svn.apache.org/viewvc/continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java?rev=679588&r1=679587&r2=679588&view=diff
==============================================================================
--- continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java (original)
+++ continuum/branches/CONTINUUM-782/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java Thu Jul 24 15:31:19 2008
@@ -19,6 +19,9 @@
  * under the License.
  */
 
+import org.apache.continuum.model.repository.DirectoryPurgeConfiguration;
+import org.apache.continuum.model.repository.LocalRepository;
+import org.apache.continuum.model.repository.RepositoryPurgeConfiguration;
 import org.apache.maven.continuum.model.project.BuildDefinition;
 import org.apache.maven.continuum.model.project.BuildDefinitionTemplate;
 import org.apache.maven.continuum.model.project.BuildResult;
@@ -109,6 +112,8 @@
 
     List<BuildDefinition> getAllTemplates()
         throws ContinuumStoreException;
+    
+    List<BuildDefinition> getBuildDefinitionsBySchedule ( int scheduleId );
 
     // ------------------------------------------------------
     //  BuildDefinitionTemplate
@@ -163,7 +168,9 @@
 
     public ProjectGroup getProjectGroupByProjectId( int projectId )
         throws ContinuumObjectNotFoundException;
-
+    
+    public List<ProjectGroup> getProjectGroupByRepository( int repositoryId );
+    
     void updateProjectGroup( ProjectGroup group )
         throws ContinuumStoreException;
 
@@ -348,4 +355,77 @@
     Collection<ProjectGroup> getAllProjectGroupsWithTheLot();
 
     void eraseDatabase();
+    
+    // ----------------------------------------------------------------
+    // LocalRepository
+    // ----------------------------------------------------------------
+    
+    List<LocalRepository> getAllLocalRepositories();
+
+    List<LocalRepository> getLocalRepositoriesByLayout( String layout );
+
+    LocalRepository getLocalRepository( int repositoryId )
+        throws ContinuumStoreException, ContinuumObjectNotFoundException;
+
+    LocalRepository getLocalRepositoryByName( String repositoryName )
+        throws ContinuumStoreException, ContinuumObjectNotFoundException;
+    
+    LocalRepository getLocalRepositoryByLocation( String location )
+        throws ContinuumStoreException, ContinuumObjectNotFoundException;
+    
+    LocalRepository addLocalRepository( LocalRepository repository )
+        throws ContinuumStoreException;
+    
+    void updateLocalRepository( LocalRepository repository )
+        throws ContinuumStoreException;
+    
+    void removeLocalRepository( LocalRepository repository )
+        throws ContinuumStoreException;
+    
+    // ----------------------------------------------------------------
+    // RepositoryPurgeConfiguration
+    // ----------------------------------------------------------------
+    
+    List<RepositoryPurgeConfiguration> getAllRepositoryPurgeConfigurations();
+    
+    List<RepositoryPurgeConfiguration> getRepositoryPurgeConfigurationsBySchedule( int scheduleId );
+
+    List<RepositoryPurgeConfiguration> getRepositoryPurgeConfigurationsByLocalRepository( int repositoryId );
+    
+    RepositoryPurgeConfiguration getRepositoryPurgeConfiguration( int configurationId )
+        throws ContinuumStoreException, ContinuumObjectNotFoundException;
+    
+    RepositoryPurgeConfiguration addRepositoryPurgeConfiguration( RepositoryPurgeConfiguration purgeConfiguration )
+        throws ContinuumStoreException;
+    
+    void updateRepositoryPurgeConfiguration( RepositoryPurgeConfiguration purgeConfiguration )
+        throws ContinuumStoreException;
+    
+    void removeRepositoryPurgeConfiguration( RepositoryPurgeConfiguration purgeConfiguration )
+        throws ContinuumStoreException;
+
+    
+    // ----------------------------------------------------------------
+    // DirectoryPurgeConfiguration
+    // ----------------------------------------------------------------
+    
+    List<DirectoryPurgeConfiguration> getAllDirectoryPurgeConfigurations();
+    
+    List<DirectoryPurgeConfiguration> getDirectoryPurgeConfigurationsBySchedule( int scheduleId );
+    
+    List<DirectoryPurgeConfiguration> getDirectoryPurgeConfigurationsByLocation( String location );
+    
+    List<DirectoryPurgeConfiguration> getDirectoryPurgeConfigurationsByType( String type );
+    
+    DirectoryPurgeConfiguration getDirectoryPurgeConfiguration( int configurationId )
+        throws ContinuumStoreException, ContinuumObjectNotFoundException;
+    
+    DirectoryPurgeConfiguration addDirectoryPurgeConfiguration( DirectoryPurgeConfiguration purgeConfiguration )
+        throws ContinuumStoreException;
+    
+    void updateDirectoryPurgeConfiguration( DirectoryPurgeConfiguration purgeConfiguration )
+        throws ContinuumStoreException;
+    
+    void removeDirectoryPurgeConfiguration( DirectoryPurgeConfiguration purgeConfiguration )
+        throws ContinuumStoreException;
 }

Modified: continuum/branches/CONTINUUM-782/continuum-core/pom.xml
URL: http://svn.apache.org/viewvc/continuum/branches/CONTINUUM-782/continuum-core/pom.xml?rev=679588&r1=679587&r2=679588&view=diff
==============================================================================
--- continuum/branches/CONTINUUM-782/continuum-core/pom.xml (original)
+++ continuum/branches/CONTINUUM-782/continuum-core/pom.xml Thu Jul 24 15:31:19 2008
@@ -150,6 +150,20 @@
       <groupId>org.codehaus.plexus.redback</groupId>
       <artifactId>redback-rbac-role-manager</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.apache.continuum</groupId>
+      <artifactId>continuum-purge</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.archiva</groupId>
+      <artifactId>archiva-common</artifactId>
+      <version>${archiva.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.archiva</groupId>
+      <artifactId>archiva-repository-layer</artifactId>
+      <version>${archiva.version}</version>
+    </dependency>
     <!-- === Testing Dependencies === -->
     <dependency>
       <groupId>hsqldb</groupId>
@@ -231,7 +245,7 @@
       <groupId>commons-collections</groupId>
       <artifactId>commons-collections</artifactId>
       <scope>test</scope>
-    </dependency>            
+    </dependency>
   </dependencies>
   <build>
     <plugins>

Added: continuum/branches/CONTINUUM-782/continuum-core/src/main/java/org/apache/continuum/purge/DefaultContinuumPurgeManager.java
URL: http://svn.apache.org/viewvc/continuum/branches/CONTINUUM-782/continuum-core/src/main/java/org/apache/continuum/purge/DefaultContinuumPurgeManager.java?rev=679588&view=auto
==============================================================================
--- continuum/branches/CONTINUUM-782/continuum-core/src/main/java/org/apache/continuum/purge/DefaultContinuumPurgeManager.java (added)
+++ continuum/branches/CONTINUUM-782/continuum-core/src/main/java/org/apache/continuum/purge/DefaultContinuumPurgeManager.java Thu Jul 24 15:31:19 2008
@@ -0,0 +1,330 @@
+package org.apache.continuum.purge;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.lang.ArrayUtils;
+import org.apache.continuum.model.repository.DirectoryPurgeConfiguration;
+import org.apache.continuum.model.repository.LocalRepository;
+import org.apache.continuum.model.repository.RepositoryPurgeConfiguration;
+import org.apache.continuum.purge.ContinuumPurgeManager;
+import org.apache.continuum.purge.ContinuumPurgeManagerException;
+import org.apache.continuum.purge.PurgeConfigurationService;
+import org.apache.continuum.purge.task.PurgeTask;
+import org.apache.maven.continuum.buildqueue.BuildProjectTask;
+import org.apache.maven.continuum.model.project.Project;
+import org.apache.maven.continuum.model.project.Schedule;
+import org.apache.maven.continuum.release.tasks.PerformReleaseProjectTask;
+import org.apache.maven.continuum.store.ContinuumStore;
+import org.apache.maven.continuum.store.ContinuumStoreException;
+import org.codehaus.plexus.PlexusConstants;
+import org.codehaus.plexus.PlexusContainer;
+import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+import org.codehaus.plexus.context.Context;
+import org.codehaus.plexus.context.ContextException;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
+import org.codehaus.plexus.taskqueue.Task;
+import org.codehaus.plexus.taskqueue.TaskQueue;
+import org.codehaus.plexus.taskqueue.TaskQueueException;
+import org.codehaus.plexus.taskqueue.execution.TaskQueueExecutor;
+
+/**
+ * DefaultContinuumPurgeManager
+ * 
+ * @author Maria Catherine Tan
+ * @plexus.component role="org.apache.continuum.purge.ContinuumPurgeManager" role-hint="default"
+ */
+public class DefaultContinuumPurgeManager
+    implements ContinuumPurgeManager, Contextualizable
+{
+    /**
+     * @plexus.requirement role-hint="jdo"
+     */
+    private ContinuumStore store;
+    
+    /**
+     * @plexus.requirement role-hint="purge"
+     */
+    private TaskQueue purgeQueue;
+    
+    /**
+     * @plexus.requirement
+     */
+    private PurgeConfigurationService purgeConfigurationService;
+    
+    private PlexusContainer container;
+    
+    public void purge( Schedule schedule )
+        throws ContinuumPurgeManagerException
+    {
+        List<RepositoryPurgeConfiguration> repoPurgeList = null;
+        List<DirectoryPurgeConfiguration> dirPurgeList = null;
+        
+        repoPurgeList = purgeConfigurationService.getRepositoryPurgeConfigurationsBySchedule( schedule.getId() );
+        dirPurgeList = purgeConfigurationService.getDirectoryPurgeConfigurationsBySchedule( schedule.getId() );
+
+        if ( repoPurgeList != null && repoPurgeList.size() > 0 )
+        {
+            for ( RepositoryPurgeConfiguration repoPurge : repoPurgeList )
+            {
+                purgeRepository( repoPurge );
+            }
+        }
+        
+        if ( dirPurgeList != null && dirPurgeList.size() > 0 )
+        {
+            for ( DirectoryPurgeConfiguration dirPurge : dirPurgeList )
+            {
+                purgeDirectory( dirPurge );
+            }
+        }
+    }
+    
+    public boolean isRepositoryInPurgeQueue( int repositoryId )
+        throws ContinuumPurgeManagerException
+    {
+        List<RepositoryPurgeConfiguration> repoPurgeConfigs = 
+            purgeConfigurationService.getRepositoryPurgeConfigurationsByRepository( repositoryId );
+            
+        for ( RepositoryPurgeConfiguration repoPurge : repoPurgeConfigs )
+        {
+            if ( isInPurgeQueue( repoPurge.getId() ) )
+            {
+                return true;
+            }
+        }
+        return false;
+    }
+    
+    public boolean isRepositoryInUse( int repositoryId )
+        throws ContinuumPurgeManagerException
+    {
+        try
+        {
+            Task task = getCurrentTask( "build-project" );
+        
+            if ( task != null && task instanceof BuildProjectTask )
+            {
+                int projectId = ((BuildProjectTask) task).getProjectId();
+        
+                Project project = store.getProject( projectId );
+                LocalRepository repository = project.getProjectGroup().getLocalRepository();
+                
+                if ( repository != null && repository.getId() == repositoryId )
+                {
+                    return true;
+                }
+            }
+            return false;
+        }
+        catch ( ContinuumStoreException e )
+        {
+            throw new ContinuumPurgeManagerException( e.getMessage(), e );
+        }
+    }
+
+    public void removeRepositoryFromPurgeQueue( int repositoryId )
+        throws ContinuumPurgeManagerException
+    {
+        List<RepositoryPurgeConfiguration> repoPurgeConfigs = 
+            purgeConfigurationService.getRepositoryPurgeConfigurationsByRepository( repositoryId );
+            
+        for ( RepositoryPurgeConfiguration repoPurge : repoPurgeConfigs )
+        {
+            removeFromPurgeQueue( repoPurge.getId() );
+        }
+    }
+    
+    public boolean removeFromPurgeQueue( int[] purgeConfigIds )
+        throws ContinuumPurgeManagerException
+    {
+        if ( purgeConfigIds == null )
+        {
+            return false;
+        }
+        
+        if ( purgeConfigIds.length < 1 )
+        {
+            return false;
+        }
+        
+        List<PurgeTask> queue = getAllPurgeConfigurationsInPurgeQueue();
+        
+        List<PurgeTask> tasks = new ArrayList<PurgeTask>();
+        
+        for ( PurgeTask task : queue )
+        {
+            if ( task != null )
+            {
+                if ( ArrayUtils.contains( purgeConfigIds, task.getPurgeConfigurationId() ) )
+                {
+                    tasks.add( task );
+                }
+            }
+        }
+        
+        if ( !tasks.isEmpty() )
+        {
+            return purgeQueue.removeAll( tasks );
+        }
+    
+        return false;
+    }
+    
+    public boolean removeFromPurgeQueue( int purgeConfigId )
+        throws ContinuumPurgeManagerException
+    {
+        List<PurgeTask> queue = getAllPurgeConfigurationsInPurgeQueue();
+        
+        for ( PurgeTask task : queue )
+        {
+            if ( task != null && task.getPurgeConfigurationId() == purgeConfigId )
+            {
+                return purgeQueue.remove( task );
+            }
+        }
+        return false;
+    }
+
+    public void purgeRepository( RepositoryPurgeConfiguration repoPurge )
+        throws ContinuumPurgeManagerException
+    {
+        try
+        {
+            LocalRepository repository = repoPurge.getRepository();
+            
+            // do not purge if repository is in use and if repository is already in purge queue
+            if ( !isRepositoryInUse( repository.getId() ) && 
+                 !isInPurgeQueue( repoPurge.getId() ) )
+            {
+                purgeQueue.put( new PurgeTask( repoPurge.getId() ) );
+            }
+        }
+        catch ( TaskQueueException e )
+        {
+            throw new ContinuumPurgeManagerException( "Error while enqueuing repository", e );
+        }
+    }
+    
+    public void purgeDirectory( DirectoryPurgeConfiguration dirPurge )
+        throws ContinuumPurgeManagerException
+    {
+        try
+        {
+            if ( "releases".equals( dirPurge.getDirectoryType() ) )
+            {
+                // do not purge if release in progress
+                if ( !releaseInProgress() && !isInPurgeQueue( dirPurge.getId() ) )
+                {
+                    purgeQueue.put( new PurgeTask( dirPurge.getId() ) );
+                }
+            }
+            else if ( "buildOutput".equals( dirPurge.getDirectoryType() ) )
+            {
+                // do not purge if build in progress
+                if ( !buildInProgress() && !isInPurgeQueue( dirPurge.getId() ) )
+                {
+                    purgeQueue.put(  new PurgeTask( dirPurge.getId() ) );
+                }
+            }
+            
+        }
+        catch ( TaskQueueException e )
+        {
+            throw new ContinuumPurgeManagerException( "Error while enqueuing repository", e );
+        }
+    }
+    
+    public void contextualize( Context context )
+        throws ContextException
+    {
+        container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
+    }
+
+    private boolean isInPurgeQueue( int purgeConfigId )
+        throws ContinuumPurgeManagerException
+    {
+        List<PurgeTask> queue = getAllPurgeConfigurationsInPurgeQueue();
+        
+        for ( PurgeTask task : queue )
+        {
+            if ( task != null && task.getPurgeConfigurationId() == purgeConfigId)
+            {
+                return true;
+            }
+        }
+        return false;
+    }
+    
+    private List<PurgeTask> getAllPurgeConfigurationsInPurgeQueue()
+        throws ContinuumPurgeManagerException
+    {
+        try
+        {
+            return purgeQueue.getQueueSnapshot();
+        }
+        catch ( TaskQueueException e )
+        {
+            throw new ContinuumPurgeManagerException( "Error while getting the purge configs in purge queue", e );
+        }
+    }
+    
+    private Task getCurrentTask( String task )
+        throws ContinuumPurgeManagerException
+    {
+        try
+        {
+            TaskQueueExecutor executor = (TaskQueueExecutor) container.lookup( TaskQueueExecutor.class, task );
+            return executor.getCurrentTask();
+        }
+        catch ( ComponentLookupException e )
+        {
+            throw new ContinuumPurgeManagerException( "Unable to lookup current task", e );
+        }
+    }
+    
+    private boolean buildInProgress() 
+        throws ContinuumPurgeManagerException
+    {
+        Task task = getCurrentTask( "build-project" );
+        
+        if ( task != null && task instanceof BuildProjectTask )
+        {
+            return true;
+        }
+        
+        return false;
+    }
+    
+    private boolean releaseInProgress()
+        throws ContinuumPurgeManagerException
+    {
+        Task task = getCurrentTask( "perform-release" );
+        
+        if ( task != null && task instanceof PerformReleaseProjectTask )
+        {
+            return true;
+        }
+        
+        return false;
+    }
+}
\ No newline at end of file

Propchange: continuum/branches/CONTINUUM-782/continuum-core/src/main/java/org/apache/continuum/purge/DefaultContinuumPurgeManager.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: continuum/branches/CONTINUUM-782/continuum-core/src/main/java/org/apache/continuum/purge/DefaultContinuumPurgeManager.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Revision Id