Author: joakime
Date: Thu Jun 21 11:22:48 2007
New Revision: 549578

URL: http://svn.apache.org/viewvc?view=rev&rev=549578
Log:
[MRM-403]: when browsing, groups list incorrect sub-groups 

Modified:
    
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/browsing/DefaultRepositoryBrowsing.java
    
maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/browsing/RepositoryBrowsingTest.java

Modified: 
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/browsing/DefaultRepositoryBrowsing.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/browsing/DefaultRepositoryBrowsing.java?view=diff&rev=549578&r1=549577&r2=549578
==============================================================================
--- 
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/browsing/DefaultRepositoryBrowsing.java
 (original)
+++ 
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/browsing/DefaultRepositoryBrowsing.java
 Thu Jun 21 11:22:48 2007
@@ -19,6 +19,9 @@
  * under the License.
  */
 
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections.PredicateUtils;
+import org.apache.commons.collections.functors.NotPredicate;
 import org.apache.maven.archiva.database.ArchivaDAO;
 import org.apache.maven.archiva.database.ArchivaDatabaseException;
 import org.apache.maven.archiva.database.ObjectNotFoundException;
@@ -69,14 +72,11 @@
 
     public BrowsingResults selectArtifactId( String groupId, String artifactId 
)
     {
-        // List groups = dao.query( new UniqueGroupIdConstraint( groupId ) );
-        // List artifacts = dao.query( new UniqueArtifactIdConstraint( groupId 
) );
+        // NOTE: No group Id or artifact Id's should be returned here. 
         List versions = dao.query( new UniqueVersionConstraint( groupId, 
artifactId ) );
 
         BrowsingResults results = new BrowsingResults( groupId, artifactId );
 
-        // results.setGroupIds( groups );
-        // results.setArtifacts( artifacts );
         results.setVersions( versions );
 
         return results;
@@ -88,6 +88,11 @@
         List artifacts = dao.query( new UniqueArtifactIdConstraint( groupId ) 
);
 
         BrowsingResults results = new BrowsingResults( groupId );
+
+        // Remove searched for groupId from groups list.
+        // Easier to do this here, vs doing it in the SQL query.
+        CollectionUtils.filter( groups, NotPredicate.getInstance( 
PredicateUtils.equalPredicate( groupId ) ) );
+
         results.setGroupIds( groups );
         results.setArtifacts( artifacts );
 

Modified: 
maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/browsing/RepositoryBrowsingTest.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/browsing/RepositoryBrowsingTest.java?view=diff&rev=549578&r1=549577&r2=549578
==============================================================================
--- 
maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/browsing/RepositoryBrowsingTest.java
 (original)
+++ 
maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/browsing/RepositoryBrowsingTest.java
 Thu Jun 21 11:22:48 2007
@@ -25,6 +25,7 @@
 import org.apache.maven.archiva.model.ArchivaArtifact;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * RepositoryBrowsingTest 
@@ -37,15 +38,6 @@
 {
     private ArtifactDAO artifactDao;
 
-    protected void setUp()
-        throws Exception
-    {
-        super.setUp();
-
-        ArchivaDAO dao = (ArchivaDAO) lookup( ArchivaDAO.ROLE, "jdo" );
-        artifactDao = dao.getArtifactDAO();
-    }
-
     public ArchivaArtifact createArtifact( String groupId, String artifactId, 
String version )
     {
         ArchivaArtifact artifact = artifactDao.createArtifact( groupId, 
artifactId, version, "", "jar" );
@@ -54,6 +46,14 @@
         return artifact;
     }
 
+    public RepositoryBrowsing lookupBrowser()
+        throws Exception
+    {
+        RepositoryBrowsing browser = (RepositoryBrowsing) lookup( 
RepositoryBrowsing.class.getName() );
+        assertNotNull( "RepositoryBrowsing should not be null.", browser );
+        return browser;
+    }
+
     public void saveTestData()
         throws Exception
     {
@@ -91,12 +91,17 @@
         artifactDao.saveArtifact( artifact );
     }
 
-    public RepositoryBrowsing lookupBrowser()
+    public void testBrowseIntoGroupWithSubgroups()
         throws Exception
     {
-        RepositoryBrowsing browser = (RepositoryBrowsing) lookup( 
RepositoryBrowsing.class.getName() );
-        assertNotNull( "RepositoryBrowsing should not be null.", browser );
-        return browser;
+        saveTestData();
+
+        RepositoryBrowsing browser = lookupBrowser();
+        BrowsingResults results = browser.selectGroupId( 
"org.apache.maven.test" );
+        assertNotNull( "Browsing Results should not be null.", results );
+
+        String expectedSubGroupIds[] = new String[] { 
"org.apache.maven.test.foo" };
+        assertGroupIds( "Browsing Results (subgroup org.apache.maven.test)", 
results.getGroupIds(), expectedSubGroupIds );
     }
 
     public void testSimpleBrowse()
@@ -110,6 +115,27 @@
 
         String expectedRootGroupIds[] = new String[] { "commons-lang", "org" };
 
-        assertEquals( "Browsing Results: groupIds on root.", 
expectedRootGroupIds.length, results.getGroupIds().size() );
+        assertGroupIds( "Browsing Results (root)", results.getGroupIds(), 
expectedRootGroupIds );
+    }
+
+    private void assertGroupIds( String msg, List actualGroupIds, String[] 
expectedGroupIds )
+    {
+        assertEquals( msg + ": groupIds.length", expectedGroupIds.length, 
actualGroupIds.size() );
+
+        for ( int i = 0; i < expectedGroupIds.length; i++ )
+        {
+            String expectedGroupId = expectedGroupIds[i];
+            assertTrue( msg + ": actual groupIds.contains(" + expectedGroupId 
+ ")", actualGroupIds
+                .contains( expectedGroupId ) );
+        }
+    }
+
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+
+        ArchivaDAO dao = (ArchivaDAO) lookup( ArchivaDAO.ROLE, "jdo" );
+        artifactDao = dao.getArtifactDAO();
     }
 }


Reply via email to