Author: brett
Date: Fri Nov 27 14:12:01 2009
New Revision: 884882

URL: http://svn.apache.org/viewvc?rev=884882&view=rev
Log:
[MRM-1283] moved browseGroup() functionality over to metadata repository

Modified:
    
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java
    
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/TestMetadataResolver.java
    
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/BrowseActionTest.java

Modified: 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java
URL: 
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java?rev=884882&r1=884881&r2=884882&view=diff
==============================================================================
--- 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java
 (original)
+++ 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java
 Fri Nov 27 14:12:01 2009
@@ -97,11 +97,9 @@
                 namespaces.add( collapseNamespaces( repoId, n ) );
             }
         }
-        ArrayList<String> list = new ArrayList<String>( namespaces );
-        Collections.sort( list );
 
         this.results = new BrowsingResults();
-        results.setGroupIds( list );
+        results.setGroupIds( getSortedList( namespaces ) );
         results.setSelectedRepositoryIds( selectedRepos );
         return SUCCESS;
     }
@@ -142,10 +140,37 @@
             return GlobalResults.ACCESS_TO_NO_REPOS;
         }
 
-        this.results = repoBrowsing.selectGroupId( getPrincipal(), 
selectedRepos, groupId );
+        Set<String> namespaces = new LinkedHashSet<String>();
+        Set<String> projects = new LinkedHashSet<String>();
+        for ( String repoId : selectedRepos )
+        {
+            Collection<String> childNamespaces = 
metadataResolver.getNamespaces( repoId, groupId );
+            // TODO: this logic should be optional, particularly remembering 
we want to keep this code simple
+            //       it is located here to avoid the content repository 
implementation needing to do too much for what
+            //       is essentially presentation code
+            for ( String n : childNamespaces )
+            {
+                // TODO: check performance of this
+                namespaces.add( collapseNamespaces( repoId, groupId + "." + n 
) );
+            }
+
+            projects.addAll( metadataResolver.getProjects( repoId, groupId ) );
+        }
+
+        this.results = new BrowsingResults( groupId );
+        results.setGroupIds( getSortedList( namespaces ) );
+        results.setArtifacts( getSortedList( projects ) );
+        results.setSelectedRepositoryIds( selectedRepos );
         return SUCCESS;
     }
 
+    private ArrayList<String> getSortedList( Set<String> set )
+    {
+        ArrayList<String> list = new ArrayList<String>( set );
+        Collections.sort( list );
+        return list;
+    }
+
     public String browseArtifact()
     {
         if ( StringUtils.isEmpty( groupId ) )

Modified: 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/TestMetadataResolver.java
URL: 
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/TestMetadataResolver.java?rev=884882&r1=884881&r2=884882&view=diff
==============================================================================
--- 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/TestMetadataResolver.java
 (original)
+++ 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/TestMetadataResolver.java
 Fri Nov 27 14:12:01 2009
@@ -107,7 +107,8 @@
 
     public Collection<String> getProjects( String repoId, String namespace )
     {
-        return projectsInNamespace.get( namespace );
+        Collection<String> list = projectsInNamespace.get( namespace );
+        return list != null ? list : Collections.<String>emptyList();
     }
 
     public void setProjectVersion( String repoId, String namespace, String 
projectId,

Modified: 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/BrowseActionTest.java
URL: 
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/BrowseActionTest.java?rev=884882&r1=884881&r2=884882&view=diff
==============================================================================
--- 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/BrowseActionTest.java
 (original)
+++ 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/BrowseActionTest.java
 Fri Nov 27 14:12:01 2009
@@ -55,7 +55,7 @@
 
     private static final List<String> GROUPS =
         Arrays.asList( "org.apache.archiva", "commons-lang", 
"org.apache.maven", "com.sun", "com.oracle",
-                       "repeat.repeat", "org.apache", "single.group" );
+                       "repeat.repeat" );
 
     public void testInstantiation()
     {
@@ -65,8 +65,6 @@
     public void testBrowse()
     {
         metadataResolver.setNamespaces( GROUPS );
-        // add an artifact in the tree to make sure "single" is not collapsed
-        metadataResolver.setProjectVersion( TEST_REPO, "single", "single", new 
ProjectVersionMetadata() );
 
         String result = action.browse();
         assertSuccessResult( result );
@@ -74,8 +72,7 @@
         BrowsingResults results = action.getResults();
         assertNotNull( results );
         assertEquals( Arrays.asList( TEST_REPO ), 
results.getSelectedRepositoryIds() );
-        assertEquals( Arrays.asList( "com", "commons-lang", "org.apache", 
"repeat.repeat", "single" ),
-                      results.getGroupIds() );
+        assertEquals( Arrays.asList( "com", "commons-lang", "org.apache", 
"repeat.repeat" ), results.getGroupIds() );
         assertNull( results.getArtifacts() );
         assertNull( results.getSelectedArtifactId() );
         assertNull( results.getSelectedGroupId() );
@@ -141,10 +138,9 @@
     public void testBrowseGroupNoArtifacts()
     {
         String selectedGroupId = "org";
-        List<String> groups = Arrays.asList( "apache.archiva", "apache.maven" 
);
+        List<String> groups = Arrays.asList( "org.apache.archiva", 
"org.apache.maven" );
 
-        archivaDao.setGroups( groups );
-        archivaDao.setArtifacts( Collections.<String>emptyList() );
+        metadataResolver.setNamespaces( groups );
         action.setGroupId( selectedGroupId );
         String result = action.browseGroup();
         assertSuccessResult( result );
@@ -152,7 +148,7 @@
         BrowsingResults results = action.getResults();
         assertNotNull( results );
         assertEquals( Arrays.asList( TEST_REPO ), 
results.getSelectedRepositoryIds() );
-        assertEquals( groups, results.getGroupIds() );
+        assertEquals( Collections.singletonList( "org.apache" ), 
results.getGroupIds() );
         assertEquals( Collections.<String>emptyList(), results.getArtifacts() 
);
         assertNull( results.getSelectedArtifactId() );
         assertEquals( selectedGroupId, results.getSelectedGroupId() );
@@ -168,10 +164,10 @@
     {
         String artifacts = "apache";
         String selectedGroupId = "org.apache";
-        List<String> groups = Arrays.asList( "archiva", "maven" );
+        List<String> groups = Arrays.asList( "org.apache.archiva", 
"org.apache.maven" );
 
-        archivaDao.setGroups( groups );
-        archivaDao.setArtifacts( Collections.singletonList( artifacts ) );
+        metadataResolver.setNamespaces( groups );
+        metadataResolver.setProjectVersion( TEST_REPO, selectedGroupId, 
artifacts, new ProjectVersionMetadata() );
         action.setGroupId( selectedGroupId );
         String result = action.browseGroup();
         assertSuccessResult( result );
@@ -191,6 +187,61 @@
         assertNull( action.getSharedModel() );
     }
 
+    public void testBrowseWithCollapsedGroupsAndArtifacts()
+    {
+        List<String> groups = Arrays.asList( "org.apache.archiva", 
"org.apache" );
+
+        metadataResolver.setNamespaces( groups );
+        // add an artifact in the tree to make sure "single" is not collapsed
+        metadataResolver.setProjectVersion( TEST_REPO, "org.apache", "apache", 
new ProjectVersionMetadata() );
+
+        String result = action.browse();
+        assertSuccessResult( result );
+
+        BrowsingResults results = action.getResults();
+        assertNotNull( results );
+        assertEquals( Arrays.asList( TEST_REPO ), 
results.getSelectedRepositoryIds() );
+        assertEquals( Collections.singletonList( "org.apache" ), 
results.getGroupIds() );
+        assertNull( results.getArtifacts() );
+        assertNull( results.getSelectedArtifactId() );
+        assertNull( results.getSelectedGroupId() );
+        assertNull( results.getVersions() );
+
+        assertNull( action.getGroupId() );
+        assertNull( action.getArtifactId() );
+        assertNull( action.getRepositoryId() );
+        assertNull( action.getSharedModel() );
+    }
+
+    public void testBrowseGroupWithCollapsedGroupsAndArtifacts()
+    {
+        String artifacts = "apache";
+        String selectedGroupId = "org.apache";
+        List<String> groups = Arrays.asList( "org.apache.archiva", 
"org.apache" );
+
+        metadataResolver.setNamespaces( groups );
+        // add an artifact in the tree to make sure "single" is not collapsed
+        metadataResolver.setProjectVersion( TEST_REPO, "org.apache", "apache", 
new ProjectVersionMetadata() );
+
+        action.setGroupId( selectedGroupId );
+        String result = action.browseGroup();
+        assertSuccessResult( result );
+
+        BrowsingResults results = action.getResults();
+        assertNotNull( results );
+        assertEquals( Arrays.asList( TEST_REPO ), 
results.getSelectedRepositoryIds() );
+        assertEquals( Collections.singletonList( "org.apache.archiva" ), 
results.getGroupIds() );
+        assertEquals( Collections.singletonList( artifacts ), 
results.getArtifacts() );
+        assertNull( results.getSelectedArtifactId() );
+        assertEquals( selectedGroupId, results.getSelectedGroupId() );
+        assertNull( results.getVersions() );
+
+        assertEquals( selectedGroupId, action.getGroupId() );
+        assertNull( action.getArtifactId() );
+        assertNull( action.getRepositoryId() );
+        assertNull( action.getSharedModel() );
+    }
+
     public void testBrowseArtifactNoGroupId()
     {
         String selectedArtifactId = "apache";


Reply via email to