You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ol...@apache.org on 2012/03/16 15:01:33 UTC
svn commit: r1301522 - in /archiva/trunk/archiva-modules:
archiva-base/archiva-repository-admin/archiva-repository-admin-default/
archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/
archiva-web/archiva-rest/arc...
Author: olamy
Date: Fri Mar 16 14:01:33 2012
New Revision: 1301522
URL: http://svn.apache.org/viewvc?rev=1301522&view=rev
Log:
start working on browsing only one repository to avoid merging incomplete metadata
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/pom.xml
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/BrowseService.java
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java
archiva/trunk/archiva-modules/archiva-web/archiva-security/pom.xml
archiva/trunk/archiva-modules/archiva-web/archiva-security/src/main/java/org/apache/archiva/security/DefaultUserRepositories.java
archiva/trunk/archiva-modules/archiva-web/archiva-security/src/main/java/org/apache/archiva/security/UserRepositories.java
archiva/trunk/archiva-modules/archiva-web/archiva-security/src/test/resources/spring-context.xml
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/search.js
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/templates/search.html
Modified: archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/pom.xml
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/pom.xml?rev=1301522&r1=1301521&r2=1301522&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/pom.xml (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/pom.xml Fri Mar 16 14:01:33 2012
@@ -165,20 +165,17 @@
<groupId>org.codehaus.redback</groupId>
<artifactId>redback-users-memory</artifactId>
<scope>test</scope>
- <version>${redback.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.redback</groupId>
<artifactId>redback-keys-memory</artifactId>
<scope>test</scope>
- <version>${redback.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.redback</groupId>
<artifactId>redback-rbac-cached</artifactId>
- <version>${redback.version}</version>
<scope>test</scope>
<exclusions>
<exclusion>
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/BrowseService.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/BrowseService.java?rev=1301522&r1=1301521&r2=1301522&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/BrowseService.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/BrowseService.java Fri Mar 16 14:01:33 2012
@@ -28,6 +28,7 @@ import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
+import java.util.List;
/**
* @author Olivier Lamy
@@ -64,4 +65,11 @@ public interface BrowseService
ProjectVersionMetadata getProjectVersionMetadata( @PathParam( "g" ) String groupId,
@PathParam( "a" ) String artifactId )
throws ArchivaRestServiceException;
+
+ @Path( "userRepositories" )
+ @GET
+ @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
+ @RedbackAuthorization( noPermission = true, noRestriction = true )
+ List<String> getUserRepositories()
+ throws ArchivaRestServiceException;
}
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java?rev=1301522&r1=1301521&r2=1301522&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java Fri Mar 16 14:01:33 2012
@@ -350,6 +350,12 @@ public class DefaultBrowseService
}
}
+ public List<String> getUserRepositories()
+ throws ArchivaRestServiceException
+ {
+ return getObservableRepos();
+ }
+
//---------------------------
// internals
//---------------------------
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-security/pom.xml
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-security/pom.xml?rev=1301522&r1=1301521&r2=1301522&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-security/pom.xml (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-security/pom.xml Fri Mar 16 14:01:33 2012
@@ -35,9 +35,17 @@
</dependency>
<dependency>
<groupId>org.apache.archiva</groupId>
+ <artifactId>archiva-repository-admin-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.archiva</groupId>
<artifactId>archiva-security-common</artifactId>
</dependency>
<dependency>
+ <groupId>javax.inject</groupId>
+ <artifactId>javax.inject</artifactId>
+ </dependency>
+ <dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<scope>provided</scope>
@@ -153,6 +161,31 @@
<artifactId>redback-common-test-resources</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.archiva</groupId>
+ <artifactId>archiva-repository-admin-default</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.wagon</groupId>
+ <artifactId>wagon-http</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.wagon</groupId>
+ <artifactId>wagon-http-lightweight</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.archiva</groupId>
+ <artifactId>metadata-repository-api</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.archiva</groupId>
+ <artifactId>metadata-store-file</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
<plugins>
@@ -190,6 +223,9 @@
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertyVariables>
+ <basedir>${basedir}</basedir>
+ <appserver.base>${project.build.directory}/appserver-base</appserver.base>
+ <plexus.home>${project.build.directory}/appserver-base</plexus.home>
<derby.system.home>${project.build.directory}/appserver-base</derby.system.home>
<redback.jdbc.url>${redbackTestJdbcUrl}</redback.jdbc.url>
<redback.jdbc.driver.name>${redbackTestJdbcDriver}</redback.jdbc.driver.name>
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-security/src/main/java/org/apache/archiva/security/DefaultUserRepositories.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-security/src/main/java/org/apache/archiva/security/DefaultUserRepositories.java?rev=1301522&r1=1301521&r2=1301522&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-security/src/main/java/org/apache/archiva/security/DefaultUserRepositories.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-security/src/main/java/org/apache/archiva/security/DefaultUserRepositories.java Fri Mar 16 14:01:33 2012
@@ -20,8 +20,9 @@ package org.apache.archiva.security;
*/
import com.google.common.collect.Lists;
-import org.apache.archiva.configuration.ArchivaConfiguration;
-import org.apache.archiva.configuration.ManagedRepositoryConfiguration;
+import org.apache.archiva.admin.model.RepositoryAdminException;
+import org.apache.archiva.admin.model.beans.ManagedRepository;
+import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin;
import org.apache.archiva.security.common.ArchivaRoleConstants;
import org.codehaus.plexus.redback.authentication.AuthenticationResult;
import org.codehaus.plexus.redback.authorization.AuthorizationException;
@@ -57,9 +58,9 @@ public class DefaultUserRepositories
private RoleManager roleManager;
@Inject
- private ArchivaConfiguration archivaConfiguration;
+ private ManagedRepositoryAdmin managedRepositoryAdmin;
- private Logger log = LoggerFactory.getLogger( DefaultUserRepositories.class );
+ private Logger log = LoggerFactory.getLogger( getClass() );
public List<String> getObservableRepositoryIds( String principal )
throws PrincipalNotFoundException, AccessDeniedException, ArchivaSecurityException
@@ -80,34 +81,55 @@ public class DefaultUserRepositories
private List<String> getAccessibleRepositoryIds( String principal, String operation )
throws ArchivaSecurityException, AccessDeniedException, PrincipalNotFoundException
{
- SecuritySession securitySession = createSession( principal );
- List<String> repoIds = new ArrayList<String>();
+ List<ManagedRepository> managedRepositories = getAccessibleRepositories( principal, operation );
+ List<String> repoIds = new ArrayList<String>( managedRepositories.size() );
+ for ( ManagedRepository managedRepository : managedRepositories )
+ {
+ repoIds.add( managedRepository.getId() );
+ }
- List<ManagedRepositoryConfiguration> repos = archivaConfiguration.getConfiguration().getManagedRepositories();
+ return repoIds;
+ }
- for ( ManagedRepositoryConfiguration repo : repos )
+ public List<ManagedRepository> getAccessibleRepositories( String principal, String operation )
+ throws ArchivaSecurityException, AccessDeniedException, PrincipalNotFoundException
+ {
+ SecuritySession securitySession = createSession( principal );
+
+ List<ManagedRepository> managedRepositories = new ArrayList<ManagedRepository>();
+
+ try
{
- try
+ List<ManagedRepository> repos = managedRepositoryAdmin.getManagedRepositories();
+
+ for ( ManagedRepository repo : repos )
{
- String repoId = repo.getId();
- if ( securitySystem.isAuthorized( securitySession, operation, repoId ) )
+ try
{
- repoIds.add( repoId );
+ String repoId = repo.getId();
+ if ( securitySystem.isAuthorized( securitySession, operation, repoId ) )
+ {
+ managedRepositories.add( repo );
+ }
}
- }
- catch ( AuthorizationException e )
- {
- // swallow.
- if ( log.isDebugEnabled() )
+ catch ( AuthorizationException e )
{
- log.debug( "Not authorizing '{}' for repository '{}': {}",
- Lists.<Object>newArrayList( principal, repo.getId(), e.getMessage() ) );
+ // swallow.
+ if ( log.isDebugEnabled() )
+ {
+ log.debug( "Not authorizing '{}' for repository '{}': {}",
+ Lists.<Object>newArrayList( principal, repo.getId(), e.getMessage() ) );
+ }
}
}
- }
- return repoIds;
+ return managedRepositories;
+ }
+ catch ( RepositoryAdminException e )
+ {
+ throw new ArchivaSecurityException( e.getMessage(), e );
+ }
}
private SecuritySession createSession( String principal )
@@ -212,14 +234,4 @@ public class DefaultUserRepositories
{
this.roleManager = roleManager;
}
-
- public ArchivaConfiguration getArchivaConfiguration()
- {
- return archivaConfiguration;
- }
-
- public void setArchivaConfiguration( ArchivaConfiguration archivaConfiguration )
- {
- this.archivaConfiguration = archivaConfiguration;
- }
}
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-security/src/main/java/org/apache/archiva/security/UserRepositories.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-security/src/main/java/org/apache/archiva/security/UserRepositories.java?rev=1301522&r1=1301521&r2=1301522&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-security/src/main/java/org/apache/archiva/security/UserRepositories.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-security/src/main/java/org/apache/archiva/security/UserRepositories.java Fri Mar 16 14:01:33 2012
@@ -19,6 +19,8 @@ package org.apache.archiva.security;
* under the License.
*/
+import org.apache.archiva.admin.model.beans.ManagedRepository;
+
import java.util.List;
/**
@@ -84,5 +86,18 @@ public interface UserRepositories
*/
boolean isAuthorizedToDeleteArtifacts( String principal, String repoId )
throws AccessDeniedException, ArchivaSecurityException;
+
+ /**
+ *
+ * @param principal
+ * @param operation
+ * @since 1.4-M3
+ * @return
+ * @throws ArchivaSecurityException
+ * @throws AccessDeniedException
+ * @throws PrincipalNotFoundException
+ */
+ List<ManagedRepository> getAccessibleRepositories( String principal, String operation )
+ throws ArchivaSecurityException, AccessDeniedException, PrincipalNotFoundException;
}
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-security/src/test/resources/spring-context.xml
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-security/src/test/resources/spring-context.xml?rev=1301522&r1=1301521&r2=1301522&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-security/src/test/resources/spring-context.xml (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-security/src/test/resources/spring-context.xml Fri Mar 16 14:01:33 2012
@@ -37,9 +37,10 @@
<bean name="userRepositories" class="org.apache.archiva.security.DefaultUserRepositories">
<property name="securitySystem" ref="securitySystem#testable"/>
<property name="roleManager" ref="roleManager"/>
- <property name="archivaConfiguration" ref="archivaConfiguration"/>
</bean>
+
+
<bean name="authorizer#rbac" class="org.codehaus.plexus.redback.authorization.rbac.RbacAuthorizer">
<property name="manager" ref="rBACManager#memory"/>
<property name="userManager" ref="userManager#memory"/>
@@ -83,7 +84,9 @@
</bean>
<alias name="archivaConfiguration#default" alias="archivaConfiguration"/>
- <bean name="registry#test" class="org.codehaus.redback.components.registry.commons.CommonsConfigurationRegistry">
+ <alias name="commons-configuration" alias="registry#test"/>
+
+ <bean name="commons-configuration" class="org.codehaus.redback.components.registry.commons.CommonsConfigurationRegistry">
<property name="properties">
<value>
<![CDATA[
@@ -98,38 +101,16 @@
</property>
</bean>
- <!--
- partially configured
-
- <component>
- <role>org.codehaus.plexus.redback.role.RoleManager</role>
- <role-hint>default</role-hint>
- <implementation>org.codehaus.plexus.redback.role.DefaultRoleManager</implementation>
- <description>RoleProfileManager:</description>
- <requirements>
- <requirement>
- <role>org.codehaus.plexus.redback.role.validator.RoleModelValidator</role>
- <role-hint>default</role-hint>
- <field-name>modelValidator</field-name>
- </requirement>
- <requirement>
- <role>org.codehaus.plexus.redback.role.processor.RoleModelProcessor</role>
- <role-hint>default</role-hint>
- <field-name>modelProcessor</field-name>
- </requirement>
- <requirement>
- <role>org.codehaus.plexus.redback.role.template.RoleTemplateProcessor</role>
- <role-hint>default</role-hint>
- <field-name>templateProcessor</field-name>
- </requirement>
- <requirement>
- <role>org.codehaus.plexus.redback.rbac.RBACManager</role>
- <role-hint>memory</role-hint>
- <field-name>rbacManager</field-name>
- </requirement>
- </requirements>
- </component>
-
+ <bean name="scheduler" class="org.codehaus.redback.components.scheduler.DefaultScheduler">
+ <property name="properties">
+ <props>
+ <prop key="org.quartz.scheduler.instanceName">scheduler1</prop>
+ <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>
+ <prop key="org.quartz.threadPool.threadCount">2</prop>
+ <prop key="org.quartz.threadPool.threadPriority">4</prop>
+ <prop key="org.quartz.jobStore.class">org.quartz.simpl.RAMJobStore</prop>
+ </props>
+ </property>
+ </bean>
- -->
</beans>
\ No newline at end of file
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/search.js
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/search.js?rev=1301522&r1=1301521&r2=1301522&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/search.js (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/search.js Fri Mar 16 14:01:33 2012
@@ -170,19 +170,29 @@ $(function() {
var mainContent = $("#main-content");
mainContent.html($("#browse-tmpl" ).tmpl());
mainContent.find("#browse_result").html(mediumSpinnerImg());
- $.ajax("restServices/archivaServices/browseService/rootGroups", {
+
+ $.ajax("restServices/archivaServices/browseService/userRepositories", {
type: "GET",
dataType: 'json',
success: function(data) {
- var browseResultEntries = mapbrowseResultEntries(data);
- $.log("size:"+browseResultEntries.length);
- var browseViewModel = new BrowseViewModel(browseResultEntries,null,null);
- ko.applyBindings(browseViewModel,mainContent.find("#browse_breadcrumb").get(0));
- ko.applyBindings(browseViewModel,mainContent.find("#browse_result").get(0));
- enableAutocompleBrowse();
+ mainContent.find("#selected_repository" ).html($("#selected_repository_tmpl" ).tmpl({repositories:data}));// selected_repository_tmpl
+ $.ajax("restServices/archivaServices/browseService/rootGroups", {
+ type: "GET",
+ dataType: 'json',
+ success: function(data) {
+ var browseResultEntries = mapbrowseResultEntries(data);
+ $.log("size:"+browseResultEntries.length);
+ var browseViewModel = new BrowseViewModel(browseResultEntries,null,null);
+ ko.applyBindings(browseViewModel,mainContent.find("#browse_breadcrumb").get(0));
+ ko.applyBindings(browseViewModel,mainContent.find("#browse_result").get(0));
+ enableAutocompleBrowse();
+ }
+ });
}
});
+
+
}
enableAutocompleBrowse=function(groupId){
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/templates/search.html
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/templates/search.html?rev=1301522&r1=1301521&r2=1301522&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/templates/search.html (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/templates/search.html Fri Mar 16 14:01:33 2012
@@ -25,6 +25,7 @@
</div>
<div id="main_browse_result">
<div id="main_browse_result_content" class="well">
+ <div id="selected_repository"></div>
<div id="browse_breadcrumb" data-bind='template:{name:"browse-breadcrumb-tmpl"}'></div>
<div id="browse_result" class="well" data-bind='template:{name:"browse-groups-tmpl"}'></div>
<div id="browse_artifact" class="well" data-bind='template:{name:"browse-artifact-tmpl"}'></div>
@@ -377,3 +378,12 @@
{{/each}}
</tbody>
</script>
+
+
+<script id="selected_repository_tmpl" type="text/html">
+ <select id="repository">
+ {{each(i,repository) repositories}}
+ <option value="${repository}">${repository}</option>
+ {{/each}}
+ </select>
+</script>
\ No newline at end of file