You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by br...@apache.org on 2010/12/22 02:53:12 UTC

svn commit: r1051732 [3/4] - in /archiva/trunk/archiva-modules: archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/ archiva-scheduler/archiva-scheduler-repository/src/main/java/org/apache/archiv...

Modified: archiva/trunk/archiva-modules/plugins/audit/src/main/java/org/apache/archiva/audit/DefaultAuditManager.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/audit/src/main/java/org/apache/archiva/audit/DefaultAuditManager.java?rev=1051732&r1=1051731&r2=1051732&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/plugins/audit/src/main/java/org/apache/archiva/audit/DefaultAuditManager.java (original)
+++ archiva/trunk/archiva-modules/plugins/audit/src/main/java/org/apache/archiva/audit/DefaultAuditManager.java Wed Dec 22 01:53:10 2010
@@ -20,6 +20,7 @@ package org.apache.archiva.audit;
  */
 
 import org.apache.archiva.metadata.repository.MetadataRepository;
+import org.apache.archiva.metadata.repository.MetadataRepositoryException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -51,6 +52,7 @@ public class DefaultAuditManager
     private static final TimeZone UTC_TIME_ZONE = TimeZone.getTimeZone( "UTC" );
 
     public List<AuditEvent> getMostRecentAuditEvents( List<String> repositoryIds )
+        throws MetadataRepositoryException
     {
         // TODO: consider a more efficient implementation that directly gets the last ten from the content repository
         List<AuditRecord> records = new ArrayList<AuditRecord>();
@@ -68,15 +70,16 @@ public class DefaultAuditManager
         List<AuditEvent> events = new ArrayList<AuditEvent>( records.size() );
         for ( AuditRecord record : records )
         {
-            AuditEvent auditEvent =
-                (AuditEvent) metadataRepository.getMetadataFacet( record.repositoryId, AuditEvent.FACET_ID,
-                                                                  record.name );
+            AuditEvent auditEvent = (AuditEvent) metadataRepository.getMetadataFacet( record.repositoryId,
+                                                                                      AuditEvent.FACET_ID,
+                                                                                      record.name );
             events.add( auditEvent );
         }
         return events;
     }
 
     public void addAuditEvent( AuditEvent event )
+        throws MetadataRepositoryException
     {
         // ignore those with no repository - they will still be logged to the textual audit log
         if ( event.getRepositoryId() != null )
@@ -86,17 +89,20 @@ public class DefaultAuditManager
     }
 
     public void deleteAuditEvents( String repositoryId )
+        throws MetadataRepositoryException
     {
         metadataRepository.removeMetadataFacets( repositoryId, AuditEvent.FACET_ID );
     }
 
     public List<AuditEvent> getAuditEventsInRange( Collection<String> repositoryIds, Date startTime, Date endTime )
+        throws MetadataRepositoryException
     {
         return getAuditEventsInRange( repositoryIds, null, startTime, endTime );
     }
 
     public List<AuditEvent> getAuditEventsInRange( Collection<String> repositoryIds, String resource, Date startTime,
                                                    Date endTime )
+        throws MetadataRepositoryException
     {
         List<AuditEvent> results = new ArrayList<AuditEvent>();
         for ( String repositoryId : repositoryIds )
@@ -107,11 +113,12 @@ public class DefaultAuditManager
                 try
                 {
                     Date date = createNameFormat().parse( name );
-                    if ( ( startTime == null || !date.before( startTime ) ) &&
-                        ( endTime == null || !date.after( endTime ) ) )
+                    if ( ( startTime == null || !date.before( startTime ) ) && ( endTime == null || !date.after(
+                        endTime ) ) )
                     {
-                        AuditEvent event =
-                            (AuditEvent) metadataRepository.getMetadataFacet( repositoryId, AuditEvent.FACET_ID, name );
+                        AuditEvent event = (AuditEvent) metadataRepository.getMetadataFacet( repositoryId,
+                                                                                             AuditEvent.FACET_ID,
+                                                                                             name );
 
                         if ( resource == null || event.getResource().startsWith( resource ) )
                         {

Modified: archiva/trunk/archiva-modules/plugins/audit/src/main/java/org/apache/archiva/audit/MetadataAuditListener.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/audit/src/main/java/org/apache/archiva/audit/MetadataAuditListener.java?rev=1051732&r1=1051731&r2=1051732&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/plugins/audit/src/main/java/org/apache/archiva/audit/MetadataAuditListener.java (original)
+++ archiva/trunk/archiva-modules/plugins/audit/src/main/java/org/apache/archiva/audit/MetadataAuditListener.java Wed Dec 22 01:53:10 2010
@@ -19,12 +19,18 @@ package org.apache.archiva.audit;
  * under the License.
  */
 
+import org.apache.archiva.metadata.repository.MetadataRepositoryException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 /**
  * @plexus.component role="org.apache.archiva.audit.AuditListener" role-hint="metadata"
  */
 public class MetadataAuditListener
     implements AuditListener
 {
+    private static final Logger log = LoggerFactory.getLogger( MetadataAuditListener.class );
+
     /**
      * @plexus.requirement
      */
@@ -36,7 +42,14 @@ public class MetadataAuditListener
         if ( event.getAction().equals( AuditEvent.CREATE_FILE ) || event.getAction().equals( AuditEvent.UPLOAD_FILE ) ||
             event.getAction().equals( AuditEvent.MERGING_REPOSITORIES ) )
         {
-            auditManager.addAuditEvent( event );
+            try
+            {
+                auditManager.addAuditEvent( event );
+            }
+            catch ( MetadataRepositoryException e )
+            {
+                log.warn( "Unable to write audit event to repository: " + e.getMessage(), e );
+            }
         }
     }
 }

Modified: archiva/trunk/archiva-modules/plugins/audit/src/test/java/org/apache/archiva/audit/AuditManagerTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/audit/src/test/java/org/apache/archiva/audit/AuditManagerTest.java?rev=1051732&r1=1051731&r2=1051732&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/plugins/audit/src/test/java/org/apache/archiva/audit/AuditManagerTest.java (original)
+++ archiva/trunk/archiva-modules/plugins/audit/src/test/java/org/apache/archiva/audit/AuditManagerTest.java Wed Dec 22 01:53:10 2010
@@ -86,7 +86,7 @@ public class AuditManagerTest
     }
 
     public void testGetMostRecentEvents()
-        throws ParseException
+        throws Exception
     {
         int numEvents = 11;
         List<AuditEvent> expectedEvents = new ArrayList<AuditEvent>( numEvents );
@@ -96,14 +96,15 @@ public class AuditManagerTest
             expectedEvents.add( event );
         }
 
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacets( TEST_REPO_ID, AuditEvent.FACET_ID ),
-            getEventNames( expectedEvents ) );
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacets( TEST_REPO_ID,
+                                                                                         AuditEvent.FACET_ID ),
+                                                   getEventNames( expectedEvents ) );
 
         for ( AuditEvent event : expectedEvents.subList( 1, expectedEvents.size() ) )
         {
-            metadataRepositoryControl.expectAndReturn(
-                metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID, event.getName() ), event );
+            metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacet( TEST_REPO_ID,
+                                                                                            AuditEvent.FACET_ID,
+                                                                                            event.getName() ), event );
         }
         metadataRepositoryControl.replay();
 
@@ -122,7 +123,7 @@ public class AuditManagerTest
     }
 
     public void testGetMostRecentEventsLessThan10()
-        throws ParseException
+        throws Exception
     {
         int numEvents = 5;
         List<AuditEvent> expectedEvents = new ArrayList<AuditEvent>( numEvents );
@@ -131,14 +132,15 @@ public class AuditManagerTest
             expectedEvents.add( createEvent( AUDIT_EVENT_BASE + MILLIS_FORMAT.format( i ) ) );
         }
 
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacets( TEST_REPO_ID, AuditEvent.FACET_ID ),
-            getEventNames( expectedEvents ) );
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacets( TEST_REPO_ID,
+                                                                                         AuditEvent.FACET_ID ),
+                                                   getEventNames( expectedEvents ) );
 
         for ( AuditEvent event : expectedEvents )
         {
-            metadataRepositoryControl.expectAndReturn(
-                metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID, event.getName() ), event );
+            metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacet( TEST_REPO_ID,
+                                                                                            AuditEvent.FACET_ID,
+                                                                                            event.getName() ), event );
         }
         metadataRepositoryControl.replay();
 
@@ -157,7 +159,7 @@ public class AuditManagerTest
     }
 
     public void testGetMostRecentEventsInterleavedRepositories()
-        throws ParseException
+        throws Exception
     {
         int numEvents = 11;
         Map<String, List<String>> eventNames = new LinkedHashMap<String, List<String>>();
@@ -173,17 +175,18 @@ public class AuditManagerTest
             eventNames.get( repositoryId ).add( event.getName() );
         }
 
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacets( TEST_REPO_ID, AuditEvent.FACET_ID ), eventNames.get( TEST_REPO_ID ) );
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacets( TEST_REPO_ID_2, AuditEvent.FACET_ID ),
-            eventNames.get( TEST_REPO_ID_2 ) );
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacets( TEST_REPO_ID,
+                                                                                         AuditEvent.FACET_ID ),
+                                                   eventNames.get( TEST_REPO_ID ) );
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacets( TEST_REPO_ID_2,
+                                                                                         AuditEvent.FACET_ID ),
+                                                   eventNames.get( TEST_REPO_ID_2 ) );
 
         for ( AuditEvent event : events.subList( 1, events.size() ) )
         {
-            metadataRepositoryControl.expectAndReturn(
-                metadataRepository.getMetadataFacet( event.getRepositoryId(), AuditEvent.FACET_ID, event.getName() ),
-                event );
+            metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacet( event.getRepositoryId(),
+                                                                                            AuditEvent.FACET_ID,
+                                                                                            event.getName() ), event );
         }
         metadataRepositoryControl.replay();
 
@@ -203,9 +206,12 @@ public class AuditManagerTest
     }
 
     public void testGetMostRecentEventsWhenEmpty()
+        throws Exception
+
     {
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacets( TEST_REPO_ID, AuditEvent.FACET_ID ), Collections.emptyList() );
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacets( TEST_REPO_ID,
+                                                                                         AuditEvent.FACET_ID ),
+                                                   Collections.emptyList() );
         metadataRepositoryControl.replay();
 
         assertTrue( auditManager.getMostRecentAuditEvents( Collections.singletonList( TEST_REPO_ID ) ).isEmpty() );
@@ -214,7 +220,8 @@ public class AuditManagerTest
     }
 
     public void testAddAuditEvent()
-        throws ParseException
+        throws Exception
+
     {
         AuditEvent event = createEvent( new Date() );
 
@@ -228,7 +235,7 @@ public class AuditManagerTest
     }
 
     public void testAddAuditEventNoRepositoryId()
-        throws ParseException
+        throws Exception
     {
         AuditEvent event = createEvent( new Date() );
         event.setRepositoryId( null );
@@ -243,6 +250,8 @@ public class AuditManagerTest
     }
 
     public void testDeleteStats()
+        throws Exception
+
     {
         metadataRepository.removeMetadataFacets( TEST_REPO_ID, AuditEvent.FACET_ID );
 
@@ -254,7 +263,8 @@ public class AuditManagerTest
     }
 
     public void testGetEventsRangeInside()
-        throws ParseException
+        throws Exception
+
     {
         Date current = new Date();
 
@@ -263,20 +273,22 @@ public class AuditManagerTest
         AuditEvent expectedEvent = createEvent( expectedTimestamp );
         AuditEvent event3 = createEvent( new Date( current.getTime() - 1000 ) );
 
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacets( TEST_REPO_ID, AuditEvent.FACET_ID ),
-            Arrays.asList( event1.getName(), expectedEvent.getName(), event3.getName() ) );
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacets( TEST_REPO_ID,
+                                                                                         AuditEvent.FACET_ID ),
+                                                   Arrays.asList( event1.getName(), expectedEvent.getName(),
+                                                                  event3.getName() ) );
 
         // only match the middle one
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID, expectedEvent.getName() ),
-            expectedEvent );
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacet( TEST_REPO_ID,
+                                                                                        AuditEvent.FACET_ID,
+                                                                                        expectedEvent.getName() ),
+                                                   expectedEvent );
 
         metadataRepositoryControl.replay();
 
         List<AuditEvent> events = auditManager.getAuditEventsInRange( Collections.singletonList( TEST_REPO_ID ),
-                                                                      new Date( current.getTime() - 4000 ),
-                                                                      new Date( current.getTime() - 2000 ) );
+                                                                      new Date( current.getTime() - 4000 ), new Date(
+                current.getTime() - 2000 ) );
 
         assertEquals( 1, events.size() );
         assertTestEvent( events.get( 0 ), TIMESTAMP_FORMAT.format( expectedTimestamp ), expectedEvent.getResource() );
@@ -285,7 +297,7 @@ public class AuditManagerTest
     }
 
     public void testGetEventsRangeUpperOutside()
-        throws ParseException
+        throws Exception
     {
         Date current = new Date();
 
@@ -295,16 +307,19 @@ public class AuditManagerTest
         Date ts3 = new Date( current.getTime() - 1000 );
         AuditEvent expectedEvent3 = createEvent( ts3 );
 
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacets( TEST_REPO_ID, AuditEvent.FACET_ID ),
-            Arrays.asList( event1.getName(), expectedEvent2.getName(), expectedEvent3.getName() ) );
-
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID, expectedEvent2.getName() ),
-            expectedEvent2 );
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID, expectedEvent3.getName() ),
-            expectedEvent3 );
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacets( TEST_REPO_ID,
+                                                                                         AuditEvent.FACET_ID ),
+                                                   Arrays.asList( event1.getName(), expectedEvent2.getName(),
+                                                                  expectedEvent3.getName() ) );
+
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacet( TEST_REPO_ID,
+                                                                                        AuditEvent.FACET_ID,
+                                                                                        expectedEvent2.getName() ),
+                                                   expectedEvent2 );
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacet( TEST_REPO_ID,
+                                                                                        AuditEvent.FACET_ID,
+                                                                                        expectedEvent3.getName() ),
+                                                   expectedEvent3 );
 
         metadataRepositoryControl.replay();
 
@@ -319,7 +334,7 @@ public class AuditManagerTest
     }
 
     public void testGetEventsRangeLowerOutside()
-        throws ParseException
+        throws Exception
     {
         Date current = new Date();
 
@@ -329,22 +344,25 @@ public class AuditManagerTest
         AuditEvent expectedEvent2 = createEvent( expectedTimestamp );
         AuditEvent event3 = createEvent( new Date( current.getTime() - 1000 ) );
 
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacets( TEST_REPO_ID, AuditEvent.FACET_ID ),
-            Arrays.asList( expectedEvent1.getName(), expectedEvent2.getName(), event3.getName() ) );
-
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID, expectedEvent1.getName() ),
-            expectedEvent1 );
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID, expectedEvent2.getName() ),
-            expectedEvent2 );
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacets( TEST_REPO_ID,
+                                                                                         AuditEvent.FACET_ID ),
+                                                   Arrays.asList( expectedEvent1.getName(), expectedEvent2.getName(),
+                                                                  event3.getName() ) );
+
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacet( TEST_REPO_ID,
+                                                                                        AuditEvent.FACET_ID,
+                                                                                        expectedEvent1.getName() ),
+                                                   expectedEvent1 );
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacet( TEST_REPO_ID,
+                                                                                        AuditEvent.FACET_ID,
+                                                                                        expectedEvent2.getName() ),
+                                                   expectedEvent2 );
 
         metadataRepositoryControl.replay();
 
         List<AuditEvent> events = auditManager.getAuditEventsInRange( Collections.singletonList( TEST_REPO_ID ),
-                                                                      new Date( current.getTime() - 20000 ),
-                                                                      new Date( current.getTime() - 2000 ) );
+                                                                      new Date( current.getTime() - 20000 ), new Date(
+                current.getTime() - 2000 ) );
 
         assertEquals( 2, events.size() );
         assertTestEvent( events.get( 0 ), TIMESTAMP_FORMAT.format( expectedTimestamp ), expectedEvent2.getResource() );
@@ -354,7 +372,7 @@ public class AuditManagerTest
     }
 
     public void testGetEventsRangeLowerAndUpperOutside()
-        throws ParseException
+        throws Exception
     {
         Date current = new Date();
 
@@ -365,19 +383,23 @@ public class AuditManagerTest
         Date ts3 = new Date( current.getTime() - 1000 );
         AuditEvent expectedEvent3 = createEvent( ts3 );
 
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacets( TEST_REPO_ID, AuditEvent.FACET_ID ),
-            Arrays.asList( expectedEvent1.getName(), expectedEvent2.getName(), expectedEvent3.getName() ) );
-
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID, expectedEvent1.getName() ),
-            expectedEvent1 );
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID, expectedEvent2.getName() ),
-            expectedEvent2 );
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID, expectedEvent3.getName() ),
-            expectedEvent3 );
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacets( TEST_REPO_ID,
+                                                                                         AuditEvent.FACET_ID ),
+                                                   Arrays.asList( expectedEvent1.getName(), expectedEvent2.getName(),
+                                                                  expectedEvent3.getName() ) );
+
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacet( TEST_REPO_ID,
+                                                                                        AuditEvent.FACET_ID,
+                                                                                        expectedEvent1.getName() ),
+                                                   expectedEvent1 );
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacet( TEST_REPO_ID,
+                                                                                        AuditEvent.FACET_ID,
+                                                                                        expectedEvent2.getName() ),
+                                                   expectedEvent2 );
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacet( TEST_REPO_ID,
+                                                                                        AuditEvent.FACET_ID,
+                                                                                        expectedEvent3.getName() ),
+                                                   expectedEvent3 );
 
         metadataRepositoryControl.replay();
 
@@ -393,7 +415,7 @@ public class AuditManagerTest
     }
 
     public void testGetEventsWithResource()
-        throws ParseException
+        throws Exception
     {
         Date current = new Date();
 
@@ -405,25 +427,29 @@ public class AuditManagerTest
         Date ts3 = new Date( current.getTime() - 1000 );
         AuditEvent expectedEvent3 = createEvent( ts3 );
 
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacets( TEST_REPO_ID, AuditEvent.FACET_ID ),
-            Arrays.asList( expectedEvent1.getName(), expectedEvent2.getName(), expectedEvent3.getName() ) );
-
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID, expectedEvent1.getName() ),
-            expectedEvent1 );
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID, expectedEvent2.getName() ),
-            expectedEvent2 );
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID, expectedEvent3.getName() ),
-            expectedEvent3 );
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacets( TEST_REPO_ID,
+                                                                                         AuditEvent.FACET_ID ),
+                                                   Arrays.asList( expectedEvent1.getName(), expectedEvent2.getName(),
+                                                                  expectedEvent3.getName() ) );
+
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacet( TEST_REPO_ID,
+                                                                                        AuditEvent.FACET_ID,
+                                                                                        expectedEvent1.getName() ),
+                                                   expectedEvent1 );
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacet( TEST_REPO_ID,
+                                                                                        AuditEvent.FACET_ID,
+                                                                                        expectedEvent2.getName() ),
+                                                   expectedEvent2 );
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacet( TEST_REPO_ID,
+                                                                                        AuditEvent.FACET_ID,
+                                                                                        expectedEvent3.getName() ),
+                                                   expectedEvent3 );
 
         metadataRepositoryControl.replay();
 
-        List<AuditEvent> events =
-            auditManager.getAuditEventsInRange( Collections.singletonList( TEST_REPO_ID ), TEST_RESOURCE_BASE,
-                                                new Date( current.getTime() - 20000 ), current );
+        List<AuditEvent> events = auditManager.getAuditEventsInRange( Collections.singletonList( TEST_REPO_ID ),
+                                                                      TEST_RESOURCE_BASE, new Date(
+                current.getTime() - 20000 ), current );
 
         assertEquals( 2, events.size() );
         assertTestEvent( events.get( 0 ), TIMESTAMP_FORMAT.format( ts3 ), expectedEvent3.getResource() );
@@ -433,7 +459,7 @@ public class AuditManagerTest
     }
 
     public void testGetEventsWithNonExistantResource()
-        throws ParseException
+        throws Exception
     {
         Date current = new Date();
 
@@ -443,19 +469,23 @@ public class AuditManagerTest
         expectedEvent2.setResource( "different-resource" );
         AuditEvent expectedEvent3 = createEvent( new Date( current.getTime() - 1000 ) );
 
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacets( TEST_REPO_ID, AuditEvent.FACET_ID ),
-            Arrays.asList( expectedEvent1.getName(), expectedEvent2.getName(), expectedEvent3.getName() ) );
-
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID, expectedEvent1.getName() ),
-            expectedEvent1 );
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID, expectedEvent2.getName() ),
-            expectedEvent2 );
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID, expectedEvent3.getName() ),
-            expectedEvent3 );
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacets( TEST_REPO_ID,
+                                                                                         AuditEvent.FACET_ID ),
+                                                   Arrays.asList( expectedEvent1.getName(), expectedEvent2.getName(),
+                                                                  expectedEvent3.getName() ) );
+
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacet( TEST_REPO_ID,
+                                                                                        AuditEvent.FACET_ID,
+                                                                                        expectedEvent1.getName() ),
+                                                   expectedEvent1 );
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacet( TEST_REPO_ID,
+                                                                                        AuditEvent.FACET_ID,
+                                                                                        expectedEvent2.getName() ),
+                                                   expectedEvent2 );
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacet( TEST_REPO_ID,
+                                                                                        AuditEvent.FACET_ID,
+                                                                                        expectedEvent3.getName() ),
+                                                   expectedEvent3 );
 
         metadataRepositoryControl.replay();
 
@@ -468,7 +498,7 @@ public class AuditManagerTest
     }
 
     public void testGetEventsRangeMultipleRepositories()
-        throws ParseException
+        throws Exception
     {
         Date current = new Date();
 
@@ -480,22 +510,26 @@ public class AuditManagerTest
         Date ts3 = new Date( current.getTime() - 1000 );
         AuditEvent expectedEvent3 = createEvent( ts3 );
 
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacets( TEST_REPO_ID, AuditEvent.FACET_ID ),
-            Arrays.asList( expectedEvent1.getName(), expectedEvent3.getName() ) );
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacets( TEST_REPO_ID_2, AuditEvent.FACET_ID ),
-            Arrays.asList( expectedEvent2.getName() ) );
-
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID, expectedEvent1.getName() ),
-            expectedEvent1 );
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacet( TEST_REPO_ID_2, AuditEvent.FACET_ID, expectedEvent2.getName() ),
-            expectedEvent2 );
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID, expectedEvent3.getName() ),
-            expectedEvent3 );
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacets( TEST_REPO_ID,
+                                                                                         AuditEvent.FACET_ID ),
+                                                   Arrays.asList( expectedEvent1.getName(),
+                                                                  expectedEvent3.getName() ) );
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacets( TEST_REPO_ID_2,
+                                                                                         AuditEvent.FACET_ID ),
+                                                   Arrays.asList( expectedEvent2.getName() ) );
+
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacet( TEST_REPO_ID,
+                                                                                        AuditEvent.FACET_ID,
+                                                                                        expectedEvent1.getName() ),
+                                                   expectedEvent1 );
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacet( TEST_REPO_ID_2,
+                                                                                        AuditEvent.FACET_ID,
+                                                                                        expectedEvent2.getName() ),
+                                                   expectedEvent2 );
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacet( TEST_REPO_ID,
+                                                                                        AuditEvent.FACET_ID,
+                                                                                        expectedEvent3.getName() ),
+                                                   expectedEvent3 );
 
         metadataRepositoryControl.replay();
 
@@ -512,7 +546,7 @@ public class AuditManagerTest
     }
 
     public void testGetEventsRangeNotInside()
-        throws ParseException
+        throws Exception
     {
         Date current = new Date();
 
@@ -521,15 +555,15 @@ public class AuditManagerTest
         String name2 = createEvent( expectedTimestamp ).getName();
         String name3 = createEvent( new Date( current.getTime() - 1000 ) ).getName();
 
-        metadataRepositoryControl.expectAndReturn(
-            metadataRepository.getMetadataFacets( TEST_REPO_ID, AuditEvent.FACET_ID ),
-            Arrays.asList( name1, name2, name3 ) );
+        metadataRepositoryControl.expectAndReturn( metadataRepository.getMetadataFacets( TEST_REPO_ID,
+                                                                                         AuditEvent.FACET_ID ),
+                                                   Arrays.asList( name1, name2, name3 ) );
 
         metadataRepositoryControl.replay();
 
         List<AuditEvent> events = auditManager.getAuditEventsInRange( Collections.singletonList( TEST_REPO_ID ),
-                                                                      new Date( current.getTime() - 20000 ),
-                                                                      new Date( current.getTime() - 16000 ) );
+                                                                      new Date( current.getTime() - 20000 ), new Date(
+                current.getTime() - 16000 ) );
 
         assertEquals( 0, events.size() );
 
@@ -550,8 +584,9 @@ public class AuditManagerTest
     private static AuditEvent createEvent( String ts )
         throws ParseException
     {
-        return createEvent( TEST_REPO_ID, ts, getDefaultTestResourceName(
-            ts.substring( AUDIT_EVENT_BASE.length(), AUDIT_EVENT_BASE.length() + 3 ) ) );
+        return createEvent( TEST_REPO_ID, ts, getDefaultTestResourceName( ts.substring( AUDIT_EVENT_BASE.length(),
+                                                                                        AUDIT_EVENT_BASE.length() +
+                                                                                            3 ) ) );
     }
 
     private static AuditEvent createEvent( String repositoryId, String timestamp, String resource )

Modified: archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/DefaultDependencyTreeBuilder.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/DefaultDependencyTreeBuilder.java?rev=1051732&r1=1051731&r2=1051732&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/DefaultDependencyTreeBuilder.java (original)
+++ archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/DefaultDependencyTreeBuilder.java Wed Dec 22 01:53:10 2010
@@ -19,16 +19,7 @@ package org.apache.archiva.dependency.tr
  * under the License.
  */
 
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
+import org.apache.archiva.metadata.repository.MetadataResolutionException;
 import org.apache.archiva.metadata.repository.MetadataResolver;
 import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator;
 import org.apache.archiva.metadata.repository.storage.maven2.RepositoryModelResolver;
@@ -72,6 +63,16 @@ import org.apache.maven.shared.dependenc
 import org.apache.maven.shared.dependency.tree.traversal.FilteringDependencyNodeVisitor;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
 /**
  * Default implementation of <code>DependencyTreeBuilder</code>. Customized wrapper for maven-dependency-tree to use
  * maven-model-builder instead of maven-project. Note that the role must differ to avoid conflicting with the
@@ -130,8 +131,8 @@ public class DefaultDependencyTreeBuilde
 
         try
         {
-            Model model =
-                buildProject( new RepositoryModelResolver( basedir, pathTranslator ), groupId, artifactId, version );
+            Model model = buildProject( new RepositoryModelResolver( basedir, pathTranslator ), groupId, artifactId,
+                                        version );
 
             Map managedVersions = createManagedVersionMap( model );
 
@@ -150,12 +151,12 @@ public class DefaultDependencyTreeBuilde
             DependencyNodeVisitor visitor = new BuildingDependencyNodeVisitor( nodeVisitor );
 
             CollectingDependencyNodeVisitor collectingVisitor = new CollectingDependencyNodeVisitor();
-            DependencyNodeVisitor firstPassVisitor =
-                new FilteringDependencyNodeVisitor( collectingVisitor, StateDependencyNodeFilter.INCLUDED );
+            DependencyNodeVisitor firstPassVisitor = new FilteringDependencyNodeVisitor( collectingVisitor,
+                                                                                         StateDependencyNodeFilter.INCLUDED );
             rootNode.accept( firstPassVisitor );
 
-            DependencyNodeFilter secondPassFilter =
-                new AncestorOrSelfDependencyNodeFilter( collectingVisitor.getNodes() );
+            DependencyNodeFilter secondPassFilter = new AncestorOrSelfDependencyNodeFilter(
+                collectingVisitor.getNodes() );
             visitor = new FilteringDependencyNodeVisitor( visitor, secondPassFilter );
 
             rootNode.accept( visitor );
@@ -231,10 +232,10 @@ public class DefaultDependencyTreeBuilde
             }
 
             VersionRange versionRange = VersionRange.createFromVersionSpec( dependency.getVersion() );
-            Artifact artifact =
-                factory.createDependencyArtifact( dependency.getGroupId(), dependency.getArtifactId(), versionRange,
-                                                  dependency.getType(), dependency.getClassifier(), scope, null,
-                                                  dependency.isOptional() );
+            Artifact artifact = factory.createDependencyArtifact( dependency.getGroupId(), dependency.getArtifactId(),
+                                                                  versionRange, dependency.getType(),
+                                                                  dependency.getClassifier(), scope, null,
+                                                                  dependency.isOptional() );
 
             if ( Artifact.SCOPE_SYSTEM.equals( scope ) )
             {
@@ -303,10 +304,10 @@ public class DefaultDependencyTreeBuilde
 
                 VersionRange versionRange = VersionRange.createFromVersionSpec( dependency.getVersion() );
 
-                Artifact artifact =
-                    factory.createDependencyArtifact( dependency.getGroupId(), dependency.getArtifactId(), versionRange,
-                                                      dependency.getType(), dependency.getClassifier(),
-                                                      dependency.getScope(), dependency.isOptional() );
+                Artifact artifact = factory.createDependencyArtifact( dependency.getGroupId(),
+                                                                      dependency.getArtifactId(), versionRange,
+                                                                      dependency.getType(), dependency.getClassifier(),
+                                                                      dependency.getScope(), dependency.isOptional() );
                 if ( getLogger().isDebugEnabled() )
                 {
                     getLogger().debug( "  " + artifact );
@@ -359,9 +360,8 @@ public class DefaultDependencyTreeBuilde
             // TODO: we removed relocation support here. This is something that might need to be generically handled
             //       throughout this module
 
-            Artifact pomArtifact =
-                factory.createProjectArtifact( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(),
-                                               artifact.getScope() );
+            Artifact pomArtifact = factory.createProjectArtifact( artifact.getGroupId(), artifact.getArtifactId(),
+                                                                  artifact.getVersion(), artifact.getScope() );
 
             File basedir = findArtifactInRepositories( repositoryIds, pomArtifact );
 
@@ -370,9 +370,8 @@ public class DefaultDependencyTreeBuilde
             {
                 try
                 {
-                    project =
-                        buildProject( new RepositoryModelResolver( basedir, pathTranslator ), artifact.getGroupId(),
-                                      artifact.getArtifactId(), artifact.getVersion() );
+                    project = buildProject( new RepositoryModelResolver( basedir, pathTranslator ),
+                                            artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion() );
                 }
                 catch ( ModelBuildingException e )
                 {
@@ -423,8 +422,16 @@ public class DefaultDependencyTreeBuilde
             Set<ArtifactVersion> versions = new HashSet<ArtifactVersion>();
             for ( String repoId : repositoryIds )
             {
-                Collection<String> projectVersions =
-                    metadataResolver.getProjectVersions( repoId, artifact.getGroupId(), artifact.getArtifactId() );
+                Collection<String> projectVersions;
+                try
+                {
+                    projectVersions = metadataResolver.getProjectVersions( repoId, artifact.getGroupId(),
+                                                                           artifact.getArtifactId() );
+                }
+                catch ( MetadataResolutionException e )
+                {
+                    throw new ArtifactMetadataRetrievalException( e.getMessage(), e, artifact );
+                }
                 for ( String version : projectVersions )
                 {
                     versions.add( new DefaultArtifactVersion( version ) );

Modified: archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolver.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolver.java?rev=1051732&r1=1051731&r2=1051732&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolver.java (original)
+++ archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolver.java Wed Dec 22 01:53:10 2010
@@ -26,6 +26,7 @@ import org.apache.archiva.metadata.model
 import org.apache.archiva.metadata.model.ProjectVersionMetadata;
 import org.apache.archiva.metadata.model.ProjectVersionReference;
 import org.apache.archiva.metadata.repository.MetadataRepository;
+import org.apache.archiva.metadata.repository.MetadataRepositoryException;
 import org.apache.archiva.metadata.repository.MetadataResolutionException;
 import org.apache.archiva.metadata.repository.filter.AllFilter;
 import org.apache.archiva.metadata.repository.filter.Filter;
@@ -116,7 +117,15 @@ public class Maven2RepositoryMetadataRes
         // TODO: an event mechanism would remove coupling to the problem reporting plugin
         // TODO: this removes all problems - do we need something that just removes the problems created by this resolver?
         String name = RepositoryProblemFacet.createName( namespace, projectId, projectVersion, null );
-        metadataRepository.removeMetadataFacet( repoId, RepositoryProblemFacet.FACET_ID, name );
+        try
+        {
+            metadataRepository.removeMetadataFacet( repoId, RepositoryProblemFacet.FACET_ID, name );
+        }
+        catch ( MetadataRepositoryException e )
+        {
+            log.warn( "Unable to remove repository problem facets for the version being removed: " + e.getMessage(),
+                      e );
+        }
 
         ManagedRepositoryConfiguration repositoryConfiguration =
             archivaConfiguration.getConfiguration().findManagedRepositoryById( repoId );
@@ -251,7 +260,14 @@ public class Maven2RepositoryMetadataRes
         problem.setRepositoryId( repoId );
         problem.setVersion( projectVersion );
 
-        metadataRepository.addMetadataFacet( repoId, problem );
+        try
+        {
+            metadataRepository.addMetadataFacet( repoId, problem );
+        }
+        catch ( MetadataRepositoryException e )
+        {
+            log.warn( "Unable to add repository problem facets for the version being removed: " + e.getMessage(), e );
+        }
     }
 
     private List<org.apache.archiva.metadata.model.Dependency> convertDependencies( List<Dependency> dependencies )

Modified: archiva/trunk/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java?rev=1051732&r1=1051731&r2=1051732&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java (original)
+++ archiva/trunk/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java Wed Dec 22 01:53:10 2010
@@ -33,6 +33,7 @@ import org.apache.archiva.metadata.model
 import org.apache.archiva.metadata.model.ProjectVersionReference;
 import org.apache.archiva.metadata.model.Scm;
 import org.apache.archiva.metadata.repository.MetadataRepository;
+import org.apache.archiva.metadata.repository.MetadataRepositoryException;
 import org.apache.archiva.metadata.repository.MetadataResolutionException;
 import org.apache.jackrabbit.commons.JcrUtils;
 import org.apache.jackrabbit.core.TransientRepository;
@@ -69,7 +70,6 @@ import javax.jcr.query.QueryResult;
 
 /**
  * @plexus.component role="org.apache.archiva.metadata.repository.MetadataRepository"
- * @todo below: exception handling
  * @todo below: revise storage format for project version metadata
  * @todo revise reference storage
  */
@@ -109,6 +109,7 @@ public class JcrMetadataRepository
             // TODO: shouldn't do this in constructor since it's a singleton
             session = repository.login( new SimpleCredentials( "username", "password".toCharArray() ) );
 
+            // TODO: try moving this into the repo instantiation
             Workspace workspace = session.getWorkspace();
             workspace.getNamespaceRegistry().registerNamespace( "archiva", "http://archiva.apache.org/jcr/" );
 
@@ -138,11 +139,13 @@ public class JcrMetadataRepository
     }
 
     public void updateProject( String repositoryId, ProjectMetadata project )
+        throws MetadataRepositoryException
     {
         updateProject( repositoryId, project.getNamespace(), project.getId() );
     }
 
     private void updateProject( String repositoryId, String namespace, String projectId )
+        throws MetadataRepositoryException
     {
         updateNamespace( repositoryId, namespace );
 
@@ -152,13 +155,13 @@ public class JcrMetadataRepository
         }
         catch ( RepositoryException e )
         {
-            // TODO
-            throw new RuntimeException( e );
+            throw new MetadataRepositoryException( e.getMessage(), e );
         }
     }
 
     public void updateArtifact( String repositoryId, String namespace, String projectId, String projectVersion,
                                 ArtifactMetadata artifactMeta )
+        throws MetadataRepositoryException
     {
         updateNamespace( repositoryId, namespace );
 
@@ -202,13 +205,13 @@ public class JcrMetadataRepository
         }
         catch ( RepositoryException e )
         {
-            // TODO
-            throw new RuntimeException( e );
+            throw new MetadataRepositoryException( e.getMessage(), e );
         }
     }
 
     public void updateProjectVersion( String repositoryId, String namespace, String projectId,
                                       ProjectVersionMetadata versionMetadata )
+        throws MetadataRepositoryException
     {
         updateProject( repositoryId, namespace, projectId );
 
@@ -294,13 +297,13 @@ public class JcrMetadataRepository
         }
         catch ( RepositoryException e )
         {
-            // TODO
-            throw new RuntimeException( e );
+            throw new MetadataRepositoryException( e.getMessage(), e );
         }
     }
 
     public void updateProjectReference( String repositoryId, String namespace, String projectId, String projectVersion,
                                         ProjectVersionReference reference )
+        throws MetadataRepositoryException
     {
         // not using weak references, since they still need to exist upfront to be referred to
         try
@@ -317,12 +320,12 @@ public class JcrMetadataRepository
         }
         catch ( RepositoryException e )
         {
-            // TODO
-            throw new RuntimeException( e );
+            throw new MetadataRepositoryException( e.getMessage(), e );
         }
     }
 
     public void updateNamespace( String repositoryId, String namespace )
+        throws MetadataRepositoryException
     {
         try
         {
@@ -331,12 +334,12 @@ public class JcrMetadataRepository
         }
         catch ( RepositoryException e )
         {
-            // TODO
-            throw new RuntimeException( e );
+            throw new MetadataRepositoryException( e.getMessage(), e );
         }
     }
 
     public List<String> getMetadataFacets( String repositoryId, String facetId )
+        throws MetadataRepositoryException
     {
         List<String> facets = new ArrayList<String>();
 
@@ -356,8 +359,7 @@ public class JcrMetadataRepository
         }
         catch ( RepositoryException e )
         {
-            // TODO
-            throw new RuntimeException( e );
+            throw new MetadataRepositoryException( e.getMessage(), e );
         }
         return facets;
     }
@@ -381,6 +383,7 @@ public class JcrMetadataRepository
     }
 
     public MetadataFacet getMetadataFacet( String repositoryId, String facetId, String name )
+        throws MetadataRepositoryException
     {
         MetadataFacet metadataFacet = null;
         try
@@ -410,13 +413,13 @@ public class JcrMetadataRepository
         }
         catch ( RepositoryException e )
         {
-            // TODO
-            throw new RuntimeException( e );
+            throw new MetadataRepositoryException( e.getMessage(), e );
         }
         return metadataFacet;
     }
 
     public void addMetadataFacet( String repositoryId, MetadataFacet metadataFacet )
+        throws MetadataRepositoryException
     {
         try
         {
@@ -435,12 +438,12 @@ public class JcrMetadataRepository
         }
         catch ( RepositoryException e )
         {
-            // TODO
-            throw new RuntimeException( e );
+            throw new MetadataRepositoryException( e.getMessage(), e );
         }
     }
 
     public void removeMetadataFacets( String repositoryId, String facetId )
+        throws MetadataRepositoryException
     {
         try
         {
@@ -453,12 +456,12 @@ public class JcrMetadataRepository
         }
         catch ( RepositoryException e )
         {
-            // TODO
-            throw new RuntimeException( e );
+            throw new MetadataRepositoryException( e.getMessage(), e );
         }
     }
 
     public void removeMetadataFacet( String repositoryId, String facetId, String name )
+        throws MetadataRepositoryException
     {
         try
         {
@@ -479,12 +482,12 @@ public class JcrMetadataRepository
         }
         catch ( RepositoryException e )
         {
-            // TODO
-            throw new RuntimeException( e );
+            throw new MetadataRepositoryException( e.getMessage(), e );
         }
     }
 
     public List<ArtifactMetadata> getArtifactsByDateRange( String repoId, Date startTime, Date endTime )
+        throws MetadataRepositoryException
     {
         List<ArtifactMetadata> artifacts;
 
@@ -523,13 +526,13 @@ public class JcrMetadataRepository
         }
         catch ( RepositoryException e )
         {
-            // TODO
-            throw new RuntimeException( e );
+            throw new MetadataRepositoryException( e.getMessage(), e );
         }
         return artifacts;
     }
 
     public Collection<String> getRepositories()
+        throws MetadataRepositoryException
     {
         List<String> repositories;
 
@@ -555,13 +558,13 @@ public class JcrMetadataRepository
         }
         catch ( RepositoryException e )
         {
-            // TODO
-            throw new RuntimeException( e );
+            throw new MetadataRepositoryException( e.getMessage(), e );
         }
         return repositories;
     }
 
     public List<ArtifactMetadata> getArtifactsByChecksum( String repositoryId, String checksum )
+        throws MetadataRepositoryException
     {
         List<ArtifactMetadata> artifacts;
 
@@ -582,14 +585,14 @@ public class JcrMetadataRepository
         }
         catch ( RepositoryException e )
         {
-            // TODO
-            throw new RuntimeException( e );
+            throw new MetadataRepositoryException( e.getMessage(), e );
         }
         return artifacts;
     }
 
     public void deleteArtifact( String repositoryId, String namespace, String projectId, String projectVersion,
                                 String id )
+        throws MetadataRepositoryException
     {
         try
         {
@@ -602,12 +605,12 @@ public class JcrMetadataRepository
         }
         catch ( RepositoryException e )
         {
-            // TODO
-            throw new RuntimeException( e );
+            throw new MetadataRepositoryException( e.getMessage(), e );
         }
     }
 
     public void deleteRepository( String repositoryId )
+        throws MetadataRepositoryException
     {
         try
         {
@@ -620,12 +623,12 @@ public class JcrMetadataRepository
         }
         catch ( RepositoryException e )
         {
-            // TODO
-            throw new RuntimeException( e );
+            throw new MetadataRepositoryException( e.getMessage(), e );
         }
     }
 
     public List<ArtifactMetadata> getArtifacts( String repositoryId )
+        throws MetadataRepositoryException
     {
         List<ArtifactMetadata> artifacts;
 
@@ -644,13 +647,13 @@ public class JcrMetadataRepository
         }
         catch ( RepositoryException e )
         {
-            // TODO
-            throw new RuntimeException( e );
+            throw new MetadataRepositoryException( e.getMessage(), e );
         }
         return artifacts;
     }
 
     public ProjectMetadata getProject( String repositoryId, String namespace, String projectId )
+        throws MetadataResolutionException
     {
         ProjectMetadata metadata = null;
 
@@ -669,8 +672,7 @@ public class JcrMetadataRepository
         }
         catch ( RepositoryException e )
         {
-            // TODO
-            throw new RuntimeException( e );
+            throw new MetadataResolutionException( e.getMessage(), e );
         }
 
         return metadata;
@@ -852,8 +854,7 @@ public class JcrMetadataRepository
         }
         catch ( RepositoryException e )
         {
-            // TODO
-            throw new RuntimeException( e );
+            throw new MetadataResolutionException( e.getMessage(), e );
         }
 
         return versionMetadata;
@@ -861,6 +862,7 @@ public class JcrMetadataRepository
 
     public Collection<String> getArtifactVersions( String repositoryId, String namespace, String projectId,
                                                    String projectVersion )
+        throws MetadataResolutionException
     {
         Set<String> versions = new LinkedHashSet<String>();
 
@@ -878,12 +880,10 @@ public class JcrMetadataRepository
         catch ( PathNotFoundException e )
         {
             // ignore repo not found for now
-            // TODO: throw specific exception if repo doesn't exist
         }
         catch ( RepositoryException e )
         {
-            // TODO
-            throw new RuntimeException( e );
+            throw new MetadataResolutionException( e.getMessage(), e );
         }
 
         return versions;
@@ -891,6 +891,7 @@ public class JcrMetadataRepository
 
     public Collection<ProjectVersionReference> getProjectReferences( String repositoryId, String namespace,
                                                                      String projectId, String projectVersion )
+        throws MetadataResolutionException
     {
         List<ProjectVersionReference> references = new ArrayList<ProjectVersionReference>();
 
@@ -934,19 +935,20 @@ public class JcrMetadataRepository
         }
         catch ( RepositoryException e )
         {
-            // TODO
-            throw new RuntimeException( e );
+            throw new MetadataResolutionException( e.getMessage(), e );
         }
 
         return references;
     }
 
     public Collection<String> getRootNamespaces( String repositoryId )
+        throws MetadataResolutionException
     {
         return getNamespaces( repositoryId, null );
     }
 
     public Collection<String> getNamespaces( String repositoryId, String baseNamespace )
+        throws MetadataResolutionException
     {
         String path = baseNamespace != null
             ? getNamespacePath( repositoryId, baseNamespace )
@@ -956,17 +958,20 @@ public class JcrMetadataRepository
     }
 
     public Collection<String> getProjects( String repositoryId, String namespace )
+        throws MetadataResolutionException
     {
         return getNodeNames( getNamespacePath( repositoryId, namespace ) );
     }
 
     public Collection<String> getProjectVersions( String repositoryId, String namespace, String projectId )
+        throws MetadataResolutionException
     {
         return getNodeNames( getProjectPath( repositoryId, namespace, projectId ) );
     }
 
     public Collection<ArtifactMetadata> getArtifacts( String repositoryId, String namespace, String projectId,
                                                       String projectVersion )
+        throws MetadataResolutionException
     {
         List<ArtifactMetadata> artifacts = new ArrayList<ArtifactMetadata>();
 
@@ -987,8 +992,7 @@ public class JcrMetadataRepository
         }
         catch ( RepositoryException e )
         {
-            // TODO
-            throw new RuntimeException( e );
+            throw new MetadataResolutionException( e.getMessage(), e );
         }
 
         return artifacts;
@@ -1104,6 +1108,7 @@ public class JcrMetadataRepository
     }
 
     private Collection<String> getNodeNames( String path )
+        throws MetadataResolutionException
     {
         List<String> names = new ArrayList<String>();
 
@@ -1123,12 +1128,10 @@ public class JcrMetadataRepository
         catch ( PathNotFoundException e )
         {
             // ignore repo not found for now
-            // TODO: throw specific exception if repo doesn't exist
         }
         catch ( RepositoryException e )
         {
-            // TODO
-            throw new RuntimeException( e );
+            throw new MetadataResolutionException( e.getMessage(), e );
         }
 
         return names;

Modified: archiva/trunk/archiva-modules/plugins/problem-reports/src/main/java/org/apache/archiva/reports/RepositoryProblemEventListener.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/problem-reports/src/main/java/org/apache/archiva/reports/RepositoryProblemEventListener.java?rev=1051732&r1=1051731&r2=1051732&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/plugins/problem-reports/src/main/java/org/apache/archiva/reports/RepositoryProblemEventListener.java (original)
+++ archiva/trunk/archiva-modules/plugins/problem-reports/src/main/java/org/apache/archiva/reports/RepositoryProblemEventListener.java Wed Dec 22 01:53:10 2010
@@ -20,7 +20,10 @@ package org.apache.archiva.reports;
  */
 
 import org.apache.archiva.metadata.repository.MetadataRepository;
+import org.apache.archiva.metadata.repository.MetadataRepositoryException;
 import org.apache.archiva.repository.events.RepositoryListener;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Process repository management events and respond appropriately.
@@ -30,6 +33,8 @@ import org.apache.archiva.repository.eve
 public class RepositoryProblemEventListener
     implements RepositoryListener
 {
+    private Logger log = LoggerFactory.getLogger( RepositoryProblemEventListener.class );
+
     /**
      * @plexus.requirement
      */
@@ -39,6 +44,13 @@ public class RepositoryProblemEventListe
     {
         String name = RepositoryProblemFacet.createName( namespace, project, version, id );
 
-        metadataRepository.removeMetadataFacet( repositoryId, RepositoryProblemFacet.FACET_ID, name );
+        try
+        {
+            metadataRepository.removeMetadataFacet( repositoryId, RepositoryProblemFacet.FACET_ID, name );
+        }
+        catch ( MetadataRepositoryException e )
+        {
+            log.warn( "Unable to remove metadata facet as part of delete event: " + e.getMessage(), e );
+        }
     }
 }
\ No newline at end of file

Modified: archiva/trunk/archiva-modules/plugins/problem-reports/src/main/java/org/apache/archiva/reports/consumers/DuplicateArtifactsConsumer.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/problem-reports/src/main/java/org/apache/archiva/reports/consumers/DuplicateArtifactsConsumer.java?rev=1051732&r1=1051731&r2=1051732&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/plugins/problem-reports/src/main/java/org/apache/archiva/reports/consumers/DuplicateArtifactsConsumer.java (original)
+++ archiva/trunk/archiva-modules/plugins/problem-reports/src/main/java/org/apache/archiva/reports/consumers/DuplicateArtifactsConsumer.java Wed Dec 22 01:53:10 2010
@@ -23,6 +23,7 @@ import org.apache.archiva.checksum.Check
 import org.apache.archiva.checksum.ChecksummedFile;
 import org.apache.archiva.metadata.model.ArtifactMetadata;
 import org.apache.archiva.metadata.repository.MetadataRepository;
+import org.apache.archiva.metadata.repository.MetadataRepositoryException;
 import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator;
 import org.apache.archiva.reports.RepositoryProblemFacet;
 import org.apache.commons.collections.CollectionUtils;
@@ -96,6 +97,7 @@ public class DuplicateArtifactsConsumer
 
     /**
      * FIXME: needs to be selected based on the repository in question
+     *
      * @plexus.requirement role-hint="maven2"
      */
     private RepositoryPathTranslator pathTranslator;
@@ -135,7 +137,7 @@ public class DuplicateArtifactsConsumer
     public void beginScan( ManagedRepositoryConfiguration repo, Date whenGathered, boolean executeOnEntireRepo )
         throws ConsumerException
     {
-        beginScan( repo, whenGathered );   
+        beginScan( repo, whenGathered );
     }
 
     public void processFile( String path )
@@ -158,7 +160,15 @@ public class DuplicateArtifactsConsumer
             throw new ConsumerException( e.getMessage(), e );
         }
 
-        List<ArtifactMetadata> results = metadataRepository.getArtifactsByChecksum( repoId, checksumSha1 );
+        List<ArtifactMetadata> results;
+        try
+        {
+            results = metadataRepository.getArtifactsByChecksum( repoId, checksumSha1 );
+        }
+        catch ( MetadataRepositoryException e )
+        {
+            throw new ConsumerException( e.getMessage(), e );
+        }
 
         if ( CollectionUtils.isNotEmpty( results ) )
         {
@@ -203,7 +213,14 @@ public class DuplicateArtifactsConsumer
                     dupArtifact.getId() ) );
                 problem.setProblem( "duplicate-artifact" );
 
-                metadataRepository.addMetadataFacet( repoId, problem );
+                try
+                {
+                    metadataRepository.addMetadataFacet( repoId, problem );
+                }
+                catch ( MetadataRepositoryException e )
+                {
+                    throw new ConsumerException( e.getMessage(), e );
+                }
             }
         }
     }
@@ -211,7 +228,7 @@ public class DuplicateArtifactsConsumer
     public void processFile( String path, boolean executeOnEntireRepo )
         throws ConsumerException
     {
-        processFile( path );     
+        processFile( path );
     }
 
     public void completeScan()

Modified: archiva/trunk/archiva-modules/plugins/problem-reports/src/test/java/org/apache/archiva/reports/consumers/DuplicateArtifactsConsumerTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/problem-reports/src/test/java/org/apache/archiva/reports/consumers/DuplicateArtifactsConsumerTest.java?rev=1051732&r1=1051731&r2=1051732&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/plugins/problem-reports/src/test/java/org/apache/archiva/reports/consumers/DuplicateArtifactsConsumerTest.java (original)
+++ archiva/trunk/archiva-modules/plugins/problem-reports/src/test/java/org/apache/archiva/reports/consumers/DuplicateArtifactsConsumerTest.java Wed Dec 22 01:53:10 2010
@@ -83,7 +83,7 @@ public class DuplicateArtifactsConsumerT
     }
 
     public void testConsumerArtifactNotDuplicated()
-        throws ConsumerException
+        throws Exception
     {
         when( metadataRepository.getArtifactsByChecksum( TEST_REPO, TEST_CHECKSUM ) ).thenReturn( Arrays.asList(
             TEST_METADATA ) );
@@ -110,7 +110,7 @@ public class DuplicateArtifactsConsumerT
 //    }
 
     public void testConsumerArtifactDuplicated()
-        throws ConsumerException
+        throws Exception
     {
         when( metadataRepository.getArtifactsByChecksum( TEST_REPO, TEST_CHECKSUM ) ).thenReturn( Arrays.asList(
             TEST_METADATA, createMetadata( "1.0" ) ) );
@@ -126,7 +126,7 @@ public class DuplicateArtifactsConsumerT
     }
 
     public void testConsumerArtifactDuplicatedButSelfNotInMetadataRepository()
-        throws ConsumerException
+        throws Exception
     {
         when( metadataRepository.getArtifactsByChecksum( TEST_REPO, TEST_CHECKSUM ) ).thenReturn( Arrays.asList(
             createMetadata( "1.0" ) ) );
@@ -142,7 +142,7 @@ public class DuplicateArtifactsConsumerT
     }
 
     public void testConsumerArtifactFileNotExist()
-        throws ConsumerException
+        throws Exception
     {
         consumer.beginScan( config, new Date() );
         try
@@ -163,7 +163,7 @@ public class DuplicateArtifactsConsumerT
     }
 
     public void testConsumerArtifactNotAnArtifactPathNoResults()
-        throws ConsumerException
+        throws Exception
     {
         consumer.beginScan( config, new Date() );
         // No exception unnecessarily for something we can't report on
@@ -174,7 +174,7 @@ public class DuplicateArtifactsConsumerT
     }
 
     public void testConsumerArtifactNotAnArtifactPathResults()
-        throws ConsumerException
+        throws Exception
     {
         when( metadataRepository.getArtifactsByChecksum( eq( TEST_REPO ), anyString() ) ).thenReturn( Arrays.asList(
             TEST_METADATA, createMetadata( "1.0" ) ) );

Modified: archiva/trunk/archiva-modules/plugins/repository-statistics/src/main/java/org/apache/archiva/metadata/repository/stats/DefaultRepositoryStatisticsManager.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/repository-statistics/src/main/java/org/apache/archiva/metadata/repository/stats/DefaultRepositoryStatisticsManager.java?rev=1051732&r1=1051731&r2=1051732&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/plugins/repository-statistics/src/main/java/org/apache/archiva/metadata/repository/stats/DefaultRepositoryStatisticsManager.java (original)
+++ archiva/trunk/archiva-modules/plugins/repository-statistics/src/main/java/org/apache/archiva/metadata/repository/stats/DefaultRepositoryStatisticsManager.java Wed Dec 22 01:53:10 2010
@@ -21,6 +21,8 @@ package org.apache.archiva.metadata.repo
 
 import org.apache.archiva.metadata.model.ArtifactMetadata;
 import org.apache.archiva.metadata.repository.MetadataRepository;
+import org.apache.archiva.metadata.repository.MetadataRepositoryException;
+import org.apache.archiva.metadata.repository.MetadataResolutionException;
 import org.apache.archiva.metadata.repository.storage.maven2.MavenArtifactFacet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -50,6 +52,7 @@ public class DefaultRepositoryStatistics
     private static final TimeZone UTC_TIME_ZONE = TimeZone.getTimeZone( "UTC" );
 
     public RepositoryStatistics getLastStatistics( String repositoryId )
+        throws MetadataRepositoryException
     {
         // TODO: consider a more efficient implementation that directly gets the last one from the content repository
         List<String> scans = metadataRepository.getMetadataFacets( repositoryId, RepositoryStatistics.FACET_ID );
@@ -67,6 +70,7 @@ public class DefaultRepositoryStatistics
     }
 
     private void walkRepository( RepositoryStatistics stats, String repositoryId, String ns )
+        throws MetadataResolutionException
     {
         for ( String namespace : metadataRepository.getNamespaces( repositoryId, ns ) )
         {
@@ -89,7 +93,8 @@ public class DefaultRepositoryStatistics
                         stats.setTotalArtifactCount( stats.getTotalArtifactCount() + 1 );
                         stats.setTotalArtifactFileSize( stats.getTotalArtifactFileSize() + artifact.getSize() );
 
-                        MavenArtifactFacet facet = (MavenArtifactFacet) artifact.getFacet( MavenArtifactFacet.FACET_ID );
+                        MavenArtifactFacet facet = (MavenArtifactFacet) artifact.getFacet(
+                            MavenArtifactFacet.FACET_ID );
                         if ( facet != null )
                         {
                             String type = facet.getType();
@@ -104,6 +109,7 @@ public class DefaultRepositoryStatistics
 
     public void addStatisticsAfterScan( String repositoryId, Date startTime, Date endTime, long totalFiles,
                                         long newFiles )
+        throws MetadataRepositoryException
     {
         RepositoryStatistics repositoryStatistics = new RepositoryStatistics();
         repositoryStatistics.setScanStartTime( startTime );
@@ -121,9 +127,16 @@ public class DefaultRepositoryStatistics
         // TODO: we can probably get a more efficient implementation directly from the metadata repository, but for now
         //       we just walk it. Alternatively, we could build an index, or store the aggregate information and update
         //       it on the fly
-        for ( String ns : metadataRepository.getRootNamespaces( repositoryId ) )
+        try
         {
-            walkRepository( repositoryStatistics, repositoryId, ns );
+            for ( String ns : metadataRepository.getRootNamespaces( repositoryId ) )
+            {
+                walkRepository( repositoryStatistics, repositoryId, ns );
+            }
+        }
+        catch ( MetadataResolutionException e )
+        {
+            throw new MetadataRepositoryException( e.getMessage(), e );
         }
         log.info( "Repository walk for statistics executed in " + ( System.currentTimeMillis() - startWalk ) + "ms" );
 
@@ -131,11 +144,13 @@ public class DefaultRepositoryStatistics
     }
 
     public void deleteStatistics( String repositoryId )
+        throws MetadataRepositoryException
     {
         metadataRepository.removeMetadataFacets( repositoryId, RepositoryStatistics.FACET_ID );
     }
 
     public List<RepositoryStatistics> getStatisticsInRange( String repositoryId, Date startTime, Date endTime )
+        throws MetadataRepositoryException
     {
         List<RepositoryStatistics> results = new ArrayList<RepositoryStatistics>();
         List<String> list = metadataRepository.getMetadataFacets( repositoryId, RepositoryStatistics.FACET_ID );
@@ -145,13 +160,11 @@ public class DefaultRepositoryStatistics
             try
             {
                 Date date = createNameFormat().parse( name );
-                if ( ( startTime == null || !date.before( startTime ) ) &&
-                    ( endTime == null || !date.after( endTime ) ) )
+                if ( ( startTime == null || !date.before( startTime ) ) && ( endTime == null || !date.after(
+                    endTime ) ) )
                 {
-                    RepositoryStatistics stats =
-                        (RepositoryStatistics) metadataRepository.getMetadataFacet( repositoryId,
-                                                                                    RepositoryStatistics.FACET_ID,
-                                                                                    name );
+                    RepositoryStatistics stats = (RepositoryStatistics) metadataRepository.getMetadataFacet(
+                        repositoryId, RepositoryStatistics.FACET_ID, name );
                     results.add( stats );
                 }
             }

Modified: archiva/trunk/archiva-modules/plugins/repository-statistics/src/main/java/org/apache/archiva/metadata/repository/stats/RepositoryStatisticsManager.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/repository-statistics/src/main/java/org/apache/archiva/metadata/repository/stats/RepositoryStatisticsManager.java?rev=1051732&r1=1051731&r2=1051732&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/plugins/repository-statistics/src/main/java/org/apache/archiva/metadata/repository/stats/RepositoryStatisticsManager.java (original)
+++ archiva/trunk/archiva-modules/plugins/repository-statistics/src/main/java/org/apache/archiva/metadata/repository/stats/RepositoryStatisticsManager.java Wed Dec 22 01:53:10 2010
@@ -19,16 +19,22 @@ package org.apache.archiva.metadata.repo
  * under the License.
  */
 
+import org.apache.archiva.metadata.repository.MetadataRepositoryException;
+
 import java.util.Date;
 import java.util.List;
 
 public interface RepositoryStatisticsManager
 {
-    RepositoryStatistics getLastStatistics( String repositoryId );
+    RepositoryStatistics getLastStatistics( String repositoryId )
+        throws MetadataRepositoryException;
 
-    void addStatisticsAfterScan( String repositoryId, Date startTime, Date endTime, long totalFiles, long newFiles );
+    void addStatisticsAfterScan( String repositoryId, Date startTime, Date endTime, long totalFiles, long newFiles )
+        throws MetadataRepositoryException;
 
-    void deleteStatistics( String repositoryId );
+    void deleteStatistics( String repositoryId )
+        throws MetadataRepositoryException;
 
-    List<RepositoryStatistics> getStatisticsInRange( String repositoryId, Date startTime, Date endTime );
+    List<RepositoryStatistics> getStatisticsInRange( String repositoryId, Date startTime, Date endTime )
+        throws MetadataRepositoryException;
 }