Author: brett
Date: Wed Jun 29 08:41:07 2011
New Revision: 1141002
URL: http://svn.apache.org/viewvc?rev=1141002&view=rev
Log:
some low hanging fruit in the quest to improve the staging repository
implementation
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-security/src/main/resources/META-INF/redback/redback.xml
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/MergeAction.java
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryAction.java
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/RepositoriesAction.java
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRepository.jsp
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java
archiva/trunk/archiva-modules/plugins/stage-repository-merge/src/main/java/org/apache/archiva/stagerepository/merge/Maven2RepositoryMerger.java
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-security/src/main/resources/META-INF/redback/redback.xml
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-security/src/main/resources/META-INF/redback/redback.xml?rev=1141002&r1=1141001&r2=1141002&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-security/src/main/resources/META-INF/redback/redback.xml
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-security/src/main/resources/META-INF/redback/redback.xml
Wed Jun 29 08:41:07 2011
@@ -25,6 +25,11 @@
<name>archiva-run-indexer</name>
<description>Run Archiva Indexer</description>
</operation>
+ <operation>
+ <id>archiva-merge-stage</id>
+ <name>archiva-merge-stage</name>
+ <description>Merge Stage Repository</description>
+ </operation>
<operation>
<id>archiva-delete-artifact</id>
<name>archiva-delete-artifact</name>
@@ -252,6 +257,12 @@
<operation>archiva-delete-metadata</operation>
<resource>${resource}</resource>
</permission>
+ <permission>
+ <id>archiva-merge-repository</id>
+ <name>Archiva Merge Repository</name>
+ <operation>archiva-merge-repository</operation>
+ <resource>${resource}</resource>
+ </permission>
</permissions>
<childTemplates>
<childTemplate>archiva-repository-observer</childTemplate>
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/MergeAction.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/MergeAction.java?rev=1141002&r1=1141001&r2=1141002&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/MergeAction.java
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/MergeAction.java
Wed Jun 29 08:41:07 2011
@@ -38,12 +38,11 @@ import org.codehaus.plexus.taskqueue.Tas
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
-import javax.inject.Inject;
-import javax.inject.Named;
import java.util.ArrayList;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
+import javax.inject.Inject;
+import javax.inject.Named;
/**
* plexus.component role="com.opensymphony.xwork2.Action"
role-hint="mergeAction" instantiation-strategy="per-lookup"
@@ -104,7 +103,6 @@ public class MergeAction
}
public String doMerge()
- throws Exception
{
RepositorySession repositorySession =
repositorySessionFactory.createSession();
try
@@ -132,10 +130,10 @@ public class MergeAction
return SUCCESS;
}
- catch ( Exception ex )
+ catch ( Exception e )
{
- ex.printStackTrace();
- addActionError( "Error occurred while merging the repositories." );
+ log.error( e.getMessage(), e );
+ addActionError( "Error occurred while merging the repositories: "
+ e.getMessage() );
return ERROR;
}
finally
@@ -175,10 +173,10 @@ public class MergeAction
return SUCCESS;
}
- catch ( Exception ex )
+ catch ( Exception e )
{
- ex.printStackTrace();
- addActionError( "Error occurred while merging the repositories." );
+ log.error( e.getMessage(), e );
+ addActionError( "Error occurred while merging the repositories: "
+ e.getMessage() );
return ERROR;
}
finally
@@ -288,12 +286,7 @@ public class MergeAction
metadata.getNamespace() + metadata.getProject() +
metadata.getProjectVersion() + metadata.getVersion();
map.put( metadataId, metadata );
}
- Iterator iterator = map.keySet().iterator();
-
- while ( iterator.hasNext() )
- {
- conflictSourceArtifactsToBeDisplayed.add( map.get( iterator.next()
) );
- }
+ conflictSourceArtifactsToBeDisplayed.addAll( map.values() );
}
private void mergeWithOutSnapshots( MetadataRepository metadataRepository,
List<ArtifactMetadata> sourceArtifacts,
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryAction.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryAction.java?rev=1141002&r1=1141001&r2=1141002&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryAction.java
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryAction.java
Wed Jun 29 08:41:07 2011
@@ -196,7 +196,7 @@ public class AddManagedRepositoryAction
else if ( repoId.toLowerCase().contains( "stage" ) )
{
addFieldError( "repository.id", "Unable to add new repository with
id [" + repoId
- + "], rpository id cannot contains word stage" );
+ + "], repository id cannot contains word stage" );
}
if ( !validator.validate( repository.getRefreshCronExpression() ) )
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/RepositoriesAction.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/RepositoriesAction.java?rev=1141002&r1=1141001&r2=1141002&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/RepositoriesAction.java
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/RepositoriesAction.java
Wed Jun 29 08:41:07 2011
@@ -41,13 +41,13 @@ import org.codehaus.redback.integration.
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
-import javax.inject.Inject;
-import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import javax.inject.Inject;
+import javax.servlet.http.HttpServletRequest;
/**
* Shows the Repositories Tab for the administrator.
@@ -150,7 +150,7 @@ public class RepositoriesAction
List<ManagedRepositoryConfiguration> managedRepositoriesList = new
ArrayList<ManagedRepositoryConfiguration>();
for ( ManagedRepositoryConfiguration repoConfig : managedRepositories )
{
- if ( !repoConfig.getId().contains( "stage" ) )
+ if ( !repoConfig.getId().endsWith( "-stage" ) )
{
managedRepositoriesList.add( repoConfig );
}
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRepository.jsp
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRepository.jsp?rev=1141002&r1=1141001&r2=1141002&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRepository.jsp
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRepository.jsp
Wed Jun 29 08:41:07 2011
@@ -53,16 +53,14 @@
<s:label label="ID" name="repository.id" />
<%@ include file="/WEB-INF/jsp/admin/include/repositoryForm.jspf" %>
- <c:set var="stats" value="${stagingRepository == null}"/>
- <jsp:useBean id="stats" type="java.lang.Boolean" scope="page"/>
- <c:if
- test='<%= !stats.booleanValue() %>'>
- <s:checkbox name="stageNeeded" value="true" label="Create stage
repository"/>
- </c:if>
- <c:if
- test='<%= stats.booleanValue() %>'>
- <s:checkbox id="stageNeeded" name="stageNeeded" value="false"
label="Create stage repository"/>
- </c:if>
+ <c:choose>
+ <c:when test="${empty(stagingRepository)}">
+ <s:checkbox id="stageNeeded" name="stageNeeded" value="false"
label="Create stage repository"/>
+ </c:when>
+ <c:otherwise>
+ <s:checkbox name="stageNeeded" value="true" label="Create stage
repository"/>
+ </c:otherwise>
+ </c:choose>
<s:submit value="Update Repository"/>
</s:form>
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp?rev=1141002&r1=1141001&r2=1141002&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp
Wed Jun 29 08:41:07 2011
@@ -278,9 +278,8 @@
<c:set var="location" value="${repository.location}"/>
<jsp:useBean id="location" type="java.lang.String" scope="page"/>
- <c:if
- test='<%= !( (str.equalsIgnoreCase("internal") ) ||
(str.equalsIgnoreCase( "snapshots" )) ) &&
- new File (new File(location ).getParent() ,str + "-stage" ).exists()%>'>
+ <%-- TODO: fix this hard coding - make stage repository configuration more
transparent than the actual ManagedRepositoryConfiguration --%>
+ <c:if test='<%= new File (new File(location ).getParent() ,str + "-stage"
).exists()%>'>
<tr>
<th>
stage repository location
@@ -289,23 +288,22 @@
${repository.location}${'-stage'}
</td>
</tr>
- <tr>
- <th>Merge Actions</th>
- <td>
- <redback:ifAuthorized permission="archiva-run-indexer">
- <s:form action="merge" theme="simple">
- <s:hidden name="repoid" value="%{#attr.repository.id}"/>
- <%--<s:hidden name="repository" value="%{repository}"/>--%>
- <table>
- <tr>
- <td><s:submit id="Merge" value="Merge"/></td>
- </tr>
-
- </table>
- </s:form>
- </redback:ifAuthorized>
- </td>
- </tr>
+ <redback:ifAuthorized permission="archiva-merge-repository"
resource="${repository.id}">
+ <tr>
+ <th>Merge Actions</th>
+ <td>
+ <s:form action="merge" theme="simple">
+ <s:hidden name="repoid" value="%{#attr.repository.id}"/>
+ <%--<s:hidden name="repository" value="%{repository}"/>--%>
+ <table>
+ <tr>
+ <td><s:submit id="Merge" value="Merge"/></td>
+ </tr>
+ </table>
+ </s:form>
+ </td>
+ </tr>
+ </redback:ifAuthorized>
</c:if>
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java?rev=1141002&r1=1141001&r2=1141002&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java
Wed Jun 29 08:41:07 2011
@@ -44,6 +44,7 @@ import org.codehaus.redback.integration.
import org.easymock.MockControl;
import java.io.File;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@@ -131,6 +132,36 @@ public class DeleteManagedRepositoryActi
assertEquals( 1, bundle.getAuthorizationTuples().size() );
}
+ public void testDeleteRepositoryAndReposUnderRepoGroup()
+ throws Exception
+ {
+ repositoryStatisticsManager.deleteStatistics( metadataRepository,
REPO_ID );
+ repositoryStatisticsManagerControl.replay();
+
+ Configuration configuration = prepDeletionTest( createRepository(), 6
);
+ List<String> repoIds = new ArrayList<String>();
+ repoIds.add( REPO_ID );
+ configuration.addRepositoryGroup( createRepoGroup( repoIds,
"repo.group" ) );
+
+ prepareRoleManagerMock();
+
+ assertEquals( 1, configuration.getRepositoryGroups().size() );
+
+ MockControl control = mockAuditListeners();
+ when( respositorySession.getRepository() ).thenReturn(
metadataRepository );
+ String status = action.deleteContents();
+ assertEquals( Action.SUCCESS, status );
+
+ assertTrue( configuration.getManagedRepositories().isEmpty() );
+ assertEquals( 0, configuration.getRepositoryGroups().get( 0
).getRepositories().size() );
+
+ assertFalse( location.exists() );
+
+ repositoryStatisticsManagerControl.verify();
+ control.verify();
+ metadataRepositoryControl.verify();
+ }
+
public void testDeleteRepositoryConfirmation()
throws Exception
{
@@ -141,7 +172,7 @@ public class DeleteManagedRepositoryActi
archivaConfigurationControl.setReturnValue( configuration );
Configuration stageRepoConfiguration = new Configuration();
- stageRepoConfiguration.addManagedRepository( createSatingRepository()
);
+ stageRepoConfiguration.addManagedRepository( createStagingRepository()
);
archivaConfigurationControl.setReturnValue( stageRepoConfiguration );
archivaConfigurationControl.replay();
@@ -292,7 +323,7 @@ public class DeleteManagedRepositoryActi
archivaConfigurationControl.setReturnValue( configuration,
expectCountGetConfig );
Configuration stageRepoConfiguration = new Configuration();
- stageRepoConfiguration.addManagedRepository( createSatingRepository()
);
+ stageRepoConfiguration.addManagedRepository( createStagingRepository()
);
archivaConfigurationControl.setReturnValue( stageRepoConfiguration );
archivaConfiguration.save( configuration );
@@ -351,7 +382,7 @@ public class DeleteManagedRepositoryActi
return r;
}
- private ManagedRepositoryConfiguration createSatingRepository()
+ private ManagedRepositoryConfiguration createStagingRepository()
{
ManagedRepositoryConfiguration r = new
ManagedRepositoryConfiguration();
r.setId( REPO_ID + "-stage" );
Modified:
archiva/trunk/archiva-modules/plugins/stage-repository-merge/src/main/java/org/apache/archiva/stagerepository/merge/Maven2RepositoryMerger.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/stage-repository-merge/src/main/java/org/apache/archiva/stagerepository/merge/Maven2RepositoryMerger.java?rev=1141002&r1=1141001&r2=1141002&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/plugins/stage-repository-merge/src/main/java/org/apache/archiva/stagerepository/merge/Maven2RepositoryMerger.java
(original)
+++
archiva/trunk/archiva-modules/plugins/stage-repository-merge/src/main/java/org/apache/archiva/stagerepository/merge/Maven2RepositoryMerger.java
Wed Jun 29 08:41:07 2011
@@ -37,8 +37,6 @@ import org.apache.maven.archiva.reposito
import org.apache.maven.archiva.repository.metadata.RepositoryMetadataWriter;
import org.springframework.stereotype.Service;
-import javax.inject.Inject;
-import javax.inject.Named;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
@@ -51,6 +49,8 @@ import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;
+import javax.inject.Inject;
+import javax.inject.Named;
/**
* plexus.component
role="org.apache.archiva.stagerepository.merge.RepositoryMerger"
role-hint="maven2"