* under the License.
*/
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.collections.Predicate;
-import org.apache.commons.configuration.CombinedConfiguration;
import org.apache.archiva.common.FileTypeUtils;
import org.apache.archiva.configuration.functors.FiletypeSelectionPredicate;
import org.apache.archiva.configuration.io.registry.ConfigurationRegistryReader;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections.Predicate;
+import org.apache.commons.configuration.CombinedConfiguration;
import org.codehaus.plexus.registry.Registry;
import org.codehaus.plexus.registry.RegistryException;
import org.codehaus.plexus.registry.RegistryListener;
import org.codehaus.redback.components.registry.commons.CommonsConfigurationRegistry;
import org.springframework.stereotype.Service;
-import javax.annotation.PostConstruct;
-import javax.inject.Inject;
-import javax.inject.Named;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+import javax.inject.Named;
/**
* FileTypes
The repository scanning configuration.
</description>
</field>
+ <!-- TODO: remove? can't seem to use ranges to not generate above 1.3.0 -->
<field>
<name>webapp</name>
<version>1.0.0+</version>
The file system location for this repository.
</description>
</field>
+ <field>
+ <name>stagingLocation</name>
+ <version>1.4.0+</version>
+ <type>String</type>
+ <required>false</required>
+ <description>
+ The file system location for any attached staging repositories.
+ </description>
+ </field>
<field>
<name>releases</name>
<version>1.0.0+</version>
<description>True if this repository should be scanned and processed.</description>
<defaultValue>true</defaultValue>
</field>
+ <field>
+ <name>stagingRequired</name>
+ <version>1.4.0+</version>
+ <type>boolean</type>
+ <description>
+ Whether staging repositories can be created for this repository.
+ </description>
+ </field>
<field>
<name>refreshCronExpression</name>
<version>1.0.0+</version>
applicationContext.getBean( ManagedRepositoryAdmin.class ).deleteManagedRepository( TEST_REPO_ID, null, false );
applicationContext.getBean( ManagedRepositoryAdmin.class ).addManagedRepository(
- getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ), false, null );
+ getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ), null );
String repoRoot = prepareTestRepos();
applicationContext.getBean( ManagedRepositoryAdmin.class ).deleteManagedRepository( TEST_REPO_ID, null, false );
applicationContext.getBean( ManagedRepositoryAdmin.class ).addManagedRepository(
- getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ), false, null );
+ getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ), null );
String repoRoot = prepareTestRepos();
*/
applicationContext.getBean( ManagedRepositoryAdmin.class ).deleteManagedRepository( TEST_REPO_ID, null, false );
applicationContext.getBean( ManagedRepositoryAdmin.class ).addManagedRepository(
- getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ), false, null );
+ getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ), null );
applicationContext.getBean( ManagedRepositoryAdmin.class ).addManagedRepository(
- getRepoConfiguration( RELEASES_TEST_REPO_ID, RELEASES_TEST_REPO_NAME ), false, null );
+ getRepoConfiguration( RELEASES_TEST_REPO_ID, RELEASES_TEST_REPO_NAME ), null );
String repoRoot = prepareTestRepos();
*/
applicationContext.getBean( ManagedRepositoryAdmin.class ).deleteManagedRepository( TEST_REPO_ID, null, false );
applicationContext.getBean( ManagedRepositoryAdmin.class ).addManagedRepository(
- getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ), false, null );
+ getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ), null );
String repoRoot = prepareTestRepos();
{
managedRepositoryAdmin.deleteManagedRepository( repoConfiguration.getId(), null, false );
}
- managedRepositoryAdmin.addManagedRepository( repoConfiguration, false, null );
+ managedRepositoryAdmin.addManagedRepository( repoConfiguration, null );
}
private void removeRepoFromConfiguration( String configHint, ManagedRepository repoConfiguration )
( (DefaultManagedRepositoryAdmin) applicationContext.getBean(
ManagedRepositoryAdmin.class ) ).setArchivaConfiguration( config );
- applicationContext.getBean( ManagedRepositoryAdmin.class ).addManagedRepository( repoConfig, false, null );
+ applicationContext.getBean( ManagedRepositoryAdmin.class ).addManagedRepository( repoConfig, null );
//config.getConfiguration().addManagedRepository( repoConfig );
// Setup source repository (using legacy layout)
repoConfig = managedLegacyRepository.getRepository();
//config.getConfiguration().addManagedRepository( repoConfig );
- applicationContext.getBean( ManagedRepositoryAdmin.class ).addManagedRepository( repoConfig, false, null );
+ applicationContext.getBean( ManagedRepositoryAdmin.class ).addManagedRepository( repoConfig, null );
// Setup target (proxied to) repository.
saveRemoteRepositoryConfig( ID_PROXIED1, "Proxied Repository 1",
ManagedRepositoryAdmin managedRepositoryAdmin = applicationContext.getBean( ManagedRepositoryAdmin.class );
if ( managedRepositoryAdmin.getManagedRepository( repo.getId() ) == null )
{
- managedRepositoryAdmin.addManagedRepository( repo, false, null );
+ managedRepositoryAdmin.addManagedRepository( repo, null );
}
//config.getConfiguration().addManagedRepository( repo );
*/
private String cronExpression = "0 0 * * * ?";
-
- /**
- * not need when creating the repo : only available when reading
- */
- private ManagedRepository stagingRepository;
-
private boolean scanned = false;
-
/**
* default model value
*/
private boolean deleteReleasedSnapshots;
- private boolean stageRepoNeeded;
+ // TODO: move to staging plugin and allow custom per-repository configuration from plugins
+ private boolean stagingRequired;
private boolean resetStats;
public ManagedRepository( String id, String name, String location, String layout, boolean snapshots,
boolean releases, boolean blockRedeployments, String cronExpression, String indexDir,
boolean scanned, int daysOlder, int retentionCount, boolean deleteReleasedSnapshots,
- boolean stageRepoNeeded )
+ boolean stagingRequired )
{
super( id, name, layout );
this.daysOlder = daysOlder;
this.retentionCount = retentionCount;
this.deleteReleasedSnapshots = deleteReleasedSnapshots;
- this.stageRepoNeeded = stageRepoNeeded;
+ this.stagingRequired = stagingRequired;
}
public String getCronExpression()
}
- public ManagedRepository getStagingRepository()
- {
- return stagingRepository;
- }
-
-
- public void setStagingRepository( ManagedRepository stagingRepository )
- {
- this.stagingRepository = stagingRepository;
- }
public boolean isScanned()
{
this.deleteReleasedSnapshots = deleteReleasedSnapshots;
}
- public boolean isStageRepoNeeded()
+ public boolean isStagingRequired()
{
- return stageRepoNeeded;
+ return stagingRequired;
}
- public void setStageRepoNeeded( boolean stageRepoNeeded )
+ public void setStagingRequired( boolean stagingRequired )
{
- this.stageRepoNeeded = stageRepoNeeded;
+ this.stagingRequired = stagingRequired;
}
public boolean isResetStats()
sb.append( ", snapshots=" ).append( snapshots );
sb.append( ", releases=" ).append( releases );
sb.append( ", blockRedeployments=" ).append( blockRedeployments );
+ sb.append( ", stagingRequired=" ).append( stagingRequired );
sb.append( ", cronExpression='" ).append( cronExpression ).append( '\'' );
- sb.append( ", stagingRepository=" ).append( stagingRepository );
sb.append( ", scanned=" ).append( scanned );
sb.append( ", daysOlder=" ).append( daysOlder );
sb.append( ", retentionCount=" ).append( retentionCount );
sb.append( ", deleteReleasedSnapshots=" ).append( deleteReleasedSnapshots );
- sb.append( ", stageRepoNeeded=" ).append( stageRepoNeeded );
+ sb.append( ", stagingRequired=" ).append( stagingRequired );
sb.append( ", resetStats=" ).append( resetStats );
sb.append( '}' );
return sb.toString();
}
-
-
-}
\ No newline at end of file
+}
Boolean deleteManagedRepository( String repositoryId, AuditInformation auditInformation, boolean deleteContent )
throws RepositoryAdminException;
- Boolean addManagedRepository( ManagedRepository managedRepository, boolean needStageRepo,
- AuditInformation auditInformation )
+ Boolean addManagedRepository( ManagedRepository managedRepository, AuditInformation auditInformation )
throws RepositoryAdminException;
- Boolean updateManagedRepository( ManagedRepository managedRepository, boolean needStageRepo,
- AuditInformation auditInformation, boolean resetStats )
+ Boolean updateManagedRepository( ManagedRepository managedRepository, AuditInformation auditInformation,
+ boolean resetStats )
throws RepositoryAdminException;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
-import javax.inject.Inject;
-import javax.inject.Named;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import javax.inject.Inject;
+import javax.inject.Named;
/**
* FIXME remove all generic Exception to have usefull ones
private Logger log = LoggerFactory.getLogger( getClass() );
- public static final String STAGE_REPO_ID_END = "-stage";
-
@Inject
@Named( value = "archivaTaskScheduler#repository" )
for ( ManagedRepositoryConfiguration repoConfig : managedRepoConfigs )
{
- // TODO add staging repo information back too
ManagedRepository repo =
new ManagedRepository( repoConfig.getId(), repoConfig.getName(), repoConfig.getLocation(),
repoConfig.getLayout(), repoConfig.isSnapshots(), repoConfig.isReleases(),
repoConfig.isBlockRedeployments(), repoConfig.getRefreshCronExpression(),
repoConfig.getIndexDir(), repoConfig.isScanned(), repoConfig.getDaysOlder(),
- repoConfig.getRetentionCount(), repoConfig.isDeleteReleasedSnapshots(), false );
+ repoConfig.getRetentionCount(), repoConfig.isDeleteReleasedSnapshots(),
+ repoConfig.isStagingRequired() );
managedRepos.add( repo );
}
return null;
}
- public Boolean addManagedRepository( ManagedRepository managedRepository, boolean needStageRepo,
- AuditInformation auditInformation )
+ public Boolean addManagedRepository( ManagedRepository managedRepository, AuditInformation auditInformation )
throws RepositoryAdminException
{
return
addManagedRepository( managedRepository.getId(), managedRepository.getLayout(), managedRepository.getName(),
managedRepository.getLocation(), managedRepository.isBlockRedeployments(),
- managedRepository.isReleases(), managedRepository.isSnapshots(), needStageRepo,
- managedRepository.getCronExpression(), managedRepository.getIndexDirectory(),
- managedRepository.getDaysOlder(), managedRepository.getRetentionCount(),
- managedRepository.isDeleteReleasedSnapshots(), auditInformation,
- getArchivaConfiguration().getConfiguration() ) != null;
+ managedRepository.isReleases(), managedRepository.isSnapshots(),
+ managedRepository.isStagingRequired(), managedRepository.getCronExpression(),
+ managedRepository.getIndexDirectory(), managedRepository.getDaysOlder(),
+ managedRepository.getRetentionCount(), managedRepository.isDeleteReleasedSnapshots(),
+ auditInformation, getArchivaConfiguration().getConfiguration() ) != null;
}
private ManagedRepositoryConfiguration addManagedRepository( String repoId, String layout, String name,
String location, boolean blockRedeployments,
boolean releasesIncluded, boolean snapshotsIncluded,
- boolean stageRepoNeeded, String cronExpression,
+ boolean stagingRequired, String cronExpression,
String indexDir, int daysOlder, int retentionCount,
boolean deteleReleasedSnapshots,
AuditInformation auditInformation,
repository.setId( repoId );
repository.setBlockRedeployments( blockRedeployments );
+ repository.setStagingRequired( stagingRequired );
repository.setReleases( releasesIncluded );
repository.setSnapshots( snapshotsIncluded );
repository.setName( name );
{
addRepository( repository, config );
addRepositoryRoles( repository );
-
- if ( stageRepoNeeded )
- {
- ManagedRepositoryConfiguration stagingRepository = getStageRepoConfig( repository );
- addRepository( stagingRepository, config );
- addRepositoryRoles( stagingRepository );
- triggerAuditEvent( stagingRepository.getId(), null, AuditEvent.ADD_MANAGED_REPO, auditInformation );
- }
}
catch ( RoleManagerException e )
{
try
{
scanRepository( repoId, true );
- // olamy no need of scanning staged repo
- /*
- if ( stageRepoNeeded )
- {
- ManagedRepositoryConfiguration stagingRepository = getStageRepoConfig( repository );
- scanRepository( stagingRepository.getId(), true );
- }*/
}
catch ( Exception e )
{
deleteManagedRepository( repository, deleteContent, config, false );
- // stage repo exists ?
- ManagedRepositoryConfiguration stagingRepository =
- getArchivaConfiguration().getConfiguration().findManagedRepositoryById( repositoryId + STAGE_REPO_ID_END );
- if ( stagingRepository != null )
- {
- // do not trigger event when deleting the staged one
- deleteManagedRepository( stagingRepository, deleteContent, config, true );
- }
+ // STAGE FIXME: delete staging location too
try
{
}
- public Boolean updateManagedRepository( ManagedRepository managedRepository, boolean needStageRepo,
- AuditInformation auditInformation, boolean resetStats )
+ public Boolean updateManagedRepository( ManagedRepository managedRepository, AuditInformation auditInformation,
+ boolean resetStats )
throws RepositoryAdminException
{
-
- log.debug( "updateManagedConfiguration repo {} needStage {} resetStats {} ",
- Arrays.asList( managedRepository, needStageRepo, resetStats ).toArray() );
+ if ( log.isDebugEnabled() )
+ {
+ log.debug( "updateManagedConfiguration repo {} resetStats {} ", Arrays.asList( managedRepository, resetStats ).toArray() );
+ }
// Ensure that the fields are valid.
configuration.removeManagedRepository( toremove );
}
- ManagedRepositoryConfiguration stagingRepository = getStageRepoConfig( toremove );
-
// TODO remove content from old if path has changed !!!!!
- if ( stagingRepository != null )
- {
- configuration.removeManagedRepository( stagingRepository );
- }
-
ManagedRepositoryConfiguration managedRepositoryConfiguration =
addManagedRepository( managedRepository.getId(), managedRepository.getLayout(), managedRepository.getName(),
managedRepository.getLocation(), managedRepository.isBlockRedeployments(),
- managedRepository.isReleases(), managedRepository.isSnapshots(), needStageRepo,
- managedRepository.getCronExpression(), managedRepository.getIndexDirectory(),
- managedRepository.getDaysOlder(), managedRepository.getRetentionCount(),
- managedRepository.isDeleteReleasedSnapshots(), auditInformation,
- getArchivaConfiguration().getConfiguration() );
+ managedRepository.isReleases(), managedRepository.isSnapshots(),
+ managedRepository.isStagingRequired(), managedRepository.getCronExpression(),
+ managedRepository.getIndexDirectory(), managedRepository.getDaysOlder(),
+ managedRepository.getRetentionCount(), managedRepository.isDeleteReleasedSnapshots(),
+ auditInformation, getArchivaConfiguration().getConfiguration() );
// Save the repository configuration.
RepositorySession repositorySession = getRepositorySessionFactory().createSession();
configuration.addManagedRepository( repository );
}
- private ManagedRepositoryConfiguration getStageRepoConfig( ManagedRepositoryConfiguration repository )
- {
- ManagedRepositoryConfiguration stagingRepository = new ManagedRepositoryConfiguration();
- stagingRepository.setId( repository.getId() + STAGE_REPO_ID_END );
- stagingRepository.setLayout( repository.getLayout() );
- stagingRepository.setName( repository.getName() + STAGE_REPO_ID_END );
- stagingRepository.setBlockRedeployments( repository.isBlockRedeployments() );
- stagingRepository.setDaysOlder( repository.getDaysOlder() );
- stagingRepository.setDeleteReleasedSnapshots( repository.isDeleteReleasedSnapshots() );
- stagingRepository.setIndexDir( repository.getIndexDir() );
- String path = repository.getLocation();
- int lastIndex = path.lastIndexOf( '/' );
- stagingRepository.setLocation( path.substring( 0, lastIndex ) + "/" + stagingRepository.getId() );
- stagingRepository.setRefreshCronExpression( repository.getRefreshCronExpression() );
- stagingRepository.setReleases( repository.isReleases() );
- stagingRepository.setRetentionCount( repository.getRetentionCount() );
- stagingRepository.setScanned( repository.isScanned() );
- stagingRepository.setSnapshots( repository.isSnapshots() );
- return stagingRepository;
- }
-
public Boolean scanRepository( String repositoryId, boolean fullScan )
{
if ( getRepositoryTaskScheduler().isProcessingRepositoryTask( repositoryId ) )
protected ManagedRepository getTestManagedRepository( String repoId, String repoLocation )
{
- return new ManagedRepository( repoId, "test repo", repoLocation, "default", false, true, true, "0 0 * * * ?",
- repoLocation + "/.index", false, 1, 2, true, false );
+ return new ManagedRepository( repoId, "test repo", repoLocation, "default", false, true, true,
+ "0 0 * * * ?", repoLocation + "/.index", false, 1, 2, true, false );
}
protected File clearRepoLocation( String path )
ManagedRepository managedRepositoryTwo =
getTestManagedRepository( "test-new-two", APPSERVER_BASE_PATH + File.separator + "test-new-two" );
- managedRepositoryAdmin.addManagedRepository( managedRepositoryOne, false, getFakeAuditInformation() );
+ managedRepositoryAdmin.addManagedRepository( managedRepositoryOne, getFakeAuditInformation() );
- managedRepositoryAdmin.addManagedRepository( managedRepositoryTwo, false, getFakeAuditInformation() );
+ managedRepositoryAdmin.addManagedRepository( managedRepositoryTwo, getFakeAuditInformation() );
RepositoryGroup repositoryGroup =
new RepositoryGroup( "repo-group-one", Arrays.asList( "test-new-one", "test-new-two" ) );
ManagedRepository managedRepositoryTwo =
getTestManagedRepository( "test-new-two", APPSERVER_BASE_PATH + File.separator + "test-new-two" );
- managedRepositoryAdmin.addManagedRepository( managedRepositoryOne, false, getFakeAuditInformation() );
+ managedRepositoryAdmin.addManagedRepository( managedRepositoryOne, getFakeAuditInformation() );
- managedRepositoryAdmin.addManagedRepository( managedRepositoryTwo, false, getFakeAuditInformation() );
+ managedRepositoryAdmin.addManagedRepository( managedRepositoryTwo, getFakeAuditInformation() );
RepositoryGroup repositoryGroup = new RepositoryGroup( "repo-group-one", Arrays.asList( "test-new-one" ) );
ManagedRepository managedRepositoryTwo =
getTestManagedRepository( "test-new-two", APPSERVER_BASE_PATH + File.separator + "test-new-two" );
- managedRepositoryAdmin.addManagedRepository( managedRepositoryOne, false, getFakeAuditInformation() );
+ managedRepositoryAdmin.addManagedRepository( managedRepositoryOne, getFakeAuditInformation() );
- managedRepositoryAdmin.addManagedRepository( managedRepositoryTwo, false, getFakeAuditInformation() );
+ managedRepositoryAdmin.addManagedRepository( managedRepositoryTwo, getFakeAuditInformation() );
RepositoryGroup repositoryGroup =
new RepositoryGroup( "repo-group-one", Arrays.asList( "test-new-one", "test-new-two" ) );
public class ManagedRepositoryAdminTest
extends AbstractRepositoryAdminTest
{
- public static final String STAGE_REPO_ID_END = DefaultManagedRepositoryAdmin.STAGE_REPO_ID_END;
@Test
public void getAllManagedRepos()
repo.setName( "test repo" );
repo.setLocation( repoLocation );
repo.setCronExpression( "0 0 * * * ?" );
- managedRepositoryAdmin.addManagedRepository( repo, false, getFakeAuditInformation() );
+ managedRepositoryAdmin.addManagedRepository( repo, getFakeAuditInformation() );
repos = managedRepositoryAdmin.getManagedRepositories();
assertNotNull( repos );
assertEquals( initialSize + 1, repos.size() );
repo.setName( "test repo" );
repo.setLocation( repoLocation );
repo.setCronExpression( "0 0 * * * ?" );
- managedRepositoryAdmin.addManagedRepository( repo, false, getFakeAuditInformation() );
+ managedRepositoryAdmin.addManagedRepository( repo, getFakeAuditInformation() );
assertTemplateRoleExists( repoId );
repo.setLocation( repoLocation );
repo.setCronExpression( "0 0 * * * ?" );
- managedRepositoryAdmin.updateManagedRepository( repo, false, getFakeAuditInformation(), false );
+ managedRepositoryAdmin.updateManagedRepository( repo, getFakeAuditInformation(), false );
repo = managedRepositoryAdmin.getManagedRepository( repoId );
assertNotNull( repo );
repo.setName( "test repo" );
repo.setLocation( repoLocation );
repo.setCronExpression( "0 0 * * * ?" );
- managedRepositoryAdmin.addManagedRepository( repo, true, getFakeAuditInformation() );
+ repo.setStagingRequired( true );
+ managedRepositoryAdmin.addManagedRepository( repo, getFakeAuditInformation() );
repos = managedRepositoryAdmin.getManagedRepositories();
assertNotNull( repos );
assertEquals( initialSize + 2, repos.size() );
assertTrue( repoDir.exists() );
+ // STAGE FIXME: check the things that should exist here
+ /*
assertNotNull( managedRepositoryAdmin.getManagedRepository( repoId + STAGE_REPO_ID_END ) );
assertTemplateRoleExists( repoId + STAGE_REPO_ID_END );
assertTrue( new File( repoLocation + STAGE_REPO_ID_END ).exists() );
-
+*/
managedRepositoryAdmin.deleteManagedRepository( repoId, getFakeAuditInformation(), true );
assertFalse( repoDir.exists() );
+ // STAGE FIXME: check the things that should have been removed
+/*
assertFalse( new File( repoLocation + STAGE_REPO_ID_END ).exists() );
assertTemplateRoleNotExists( repoId + STAGE_REPO_ID_END );
-
+*/
repos = managedRepositoryAdmin.getManagedRepositories();
assertNotNull( repos );
assertEquals( initialSize, repos.size() );
assertTemplateRoleNotExists( repoId );
- assertTemplateRoleNotExists( repoId + STAGE_REPO_ID_END );
+ // STAGE FIXME: check the things that should have been removed
+// assertTemplateRoleNotExists( repoId + STAGE_REPO_ID_END );
mockAuditListener.clearEvents();
ManagedRepository repo = getTestManagedRepository( repoId, repoLocation );
- managedRepositoryAdmin.addManagedRepository( repo, false, getFakeAuditInformation() );
+ managedRepositoryAdmin.addManagedRepository( repo, getFakeAuditInformation() );
assertTemplateRoleExists( repoId );
+ // STAGE FIXME: check the things that should have been removed
+ /*
assertFalse( new File( repoLocation + STAGE_REPO_ID_END ).exists() );
assertTemplateRoleNotExists( repoId + STAGE_REPO_ID_END );
+ */
repos = managedRepositoryAdmin.getManagedRepositories();
assertNotNull( repos );
repo.setLocation( repoLocation );
- managedRepositoryAdmin.updateManagedRepository( repo, true, getFakeAuditInformation(), false );
+ repo.setStagingRequired( true );
+
+ managedRepositoryAdmin.updateManagedRepository( repo, getFakeAuditInformation(), false );
repo = managedRepositoryAdmin.getManagedRepository( repoId );
assertNotNull( repo );
assertTemplateRoleExists( repoId );
+ // STAGE FIXME: check the things that should have been removed
+ /*
assertTrue( new File( stageRepoLocation + STAGE_REPO_ID_END ).exists() );
assertTemplateRoleExists( repoId + STAGE_REPO_ID_END );
+ */
managedRepositoryAdmin.deleteManagedRepository( repo.getId(), getFakeAuditInformation(), false );
assertTemplateRoleNotExists( repoId );
+ // STAGE FIXME: check the things that should have been removed
+ /*
assertTrue( new File( stageRepoLocation + STAGE_REPO_ID_END ).exists() );
assertTemplateRoleNotExists( repoId + STAGE_REPO_ID_END );
+ */
assertAuditListenerCallAndUpdateAddAndDelete( true );
for ( ManagedRepositoryConfiguration repoConfig : managedRepoConfigs )
{
- // TODO add staging repo information back too
ManagedRepository repo =
- new ManagedRepository( repoConfig.getId(), repoConfig.getName(), repoConfig.getLocation(),
- repoConfig.getLayout(), repoConfig.isSnapshots(), repoConfig.isReleases(),
- repoConfig.isBlockRedeployments(), repoConfig.getRefreshCronExpression(),
- repoConfig.getIndexDir(), repoConfig.isScanned(), repoConfig.getDaysOlder(),
- repoConfig.getRetentionCount(), repoConfig.isDeleteReleasedSnapshots(), true );
+ new ManagedRepository( repoConfig.getId(), repoConfig.getName(),
+ repoConfig.getLocation(), repoConfig.getLayout(), repoConfig.isSnapshots(),
+ repoConfig.isReleases(), repoConfig.isBlockRedeployments(),
+ repoConfig.getRefreshCronExpression(), repoConfig.getIndexDir(),
+ repoConfig.isScanned(), repoConfig.getDaysOlder(),
+ repoConfig.getRetentionCount(), repoConfig.isDeleteReleasedSnapshots(),
+ repoConfig.isStagingRequired() );
managedRepos.add( repo );
}
return null;
}
- public Boolean addManagedRepository( ManagedRepository managedRepository, boolean needStageRepo,
- AuditInformation auditInformation )
+ public Boolean addManagedRepository( ManagedRepository managedRepository, AuditInformation auditInformation )
throws RepositoryAdminException
{
return null;
}
- public Boolean updateManagedRepository( ManagedRepository managedRepository, boolean needStageRepo,
- AuditInformation auditInformation, boolean resetStats )
+ public Boolean updateManagedRepository( ManagedRepository managedRepository, AuditInformation auditInformation,
+ boolean resetStats )
throws RepositoryAdminException
{
return null;
try
{
- return managedRepositoryAdmin.addManagedRepository( managedRepository,
- managedRepository.isStageRepoNeeded(),
- getAuditInformation() );
+ return managedRepositoryAdmin.addManagedRepository( managedRepository, getAuditInformation() );
}
catch ( RepositoryAdminException e )
{
try
{
- return managedRepositoryAdmin.updateManagedRepository( managedRepository,
- managedRepository.isStageRepoNeeded(),
- getAuditInformation(),
+ return managedRepositoryAdmin.updateManagedRepository( managedRepository, getAuditInformation(),
managedRepository.isResetStats() );
}
catch ( RepositoryAdminException e )
public void testAddArtifactToStagingRepository()
{
addArtifact( getGroupId(), getArtifactId(), getVersion(), getPackaging(), getValidArtifactFilePath(),
- "merging-repo-stage", true );
+ "merging-repo", true );
assertTextPresent( "Artifact '" + getGroupId() + ":" + getArtifactId() + ":" + getVersion() +
- "' was successfully deployed to repository 'merging-repo-stage'" );
+ "' was successfully staged for repository 'merging-repo'" );
}
// here we test the merging (no conflicts artifacts are available)
@Test(dependsOnMethods = {"testAddArtifactToStagingRepository"})
public void testConfigurationChangesOfStagingRepository()
{
+ // STAGE FIXME: hardcoded ID
editManagedRepository();
addArtifact( getGroupId(), getArtifactId(), getVersion(), getPackaging(), getValidArtifactFilePath(),
"merging-repo-stage", true );
setFieldValue( "repository.cronExpression", cron );
setFieldValue( "repository.daysOlder", daysOlder );
setFieldValue( "repository.retentionCount", retentionCount );
- checkField( "stageNeeded" );
+ checkField( "repository.stagingRequired" );
clickButtonWithValue( "Add Repository" );
}
import com.opensymphony.xwork2.Preparable;
import com.opensymphony.xwork2.Validateable;
-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.audit.AuditEvent;
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.Collection;
import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
import java.util.List;
+import javax.inject.Inject;
+import javax.inject.Named;
/**
*
private String repoid;
- private String sourceRepoId;
+ private Collection<ArtifactMetadata> conflictSourceArtifactsToBeDisplayed;
- private final String action = "merge";
+ private static String SESSION_KEY = "default";
- private final String hasConflicts = "CONFLICTS";
-
- private List<ArtifactMetadata> conflictSourceArtifacts;
-
- private List<ArtifactMetadata> conflictSourceArtifactsToBeDisplayed;
-
- public String getConflicts()
+ public String requestMerge()
+ throws Exception
{
- try
+ if ( !repository.isStagingRequired() )
{
- sourceRepoId = repoid + "-stage";
- ManagedRepository targetRepoConfig = managedRepositoryAdmin.getManagedRepository( sourceRepoId );
-
- if ( targetRepoConfig != null )
- {
- return hasConflicts;
- }
- else
- {
- return ERROR;
- }
+ addActionError( "Repository [" + repository.getId() + "] is not configured for staging" );
+ return ERROR;
}
- catch ( RepositoryAdminException e )
+
+ // check for conflicts to display
+ HashMap<String, ArtifactMetadata> map = new LinkedHashMap<String, ArtifactMetadata>();
+ for ( ArtifactMetadata metadata : getConflictSourceArtifacts() )
{
- addActionError( "RepositoryAdminException " + e.getMessage() );
- return ERROR;
+ String metadataId = metadata.getNamespace() + ":" + metadata.getProject() + ":" + metadata.getVersion();
+ map.put( metadataId, metadata );
}
+ conflictSourceArtifactsToBeDisplayed = map.values();
+
+ return "confirm";
}
public String doMerge()
{
- RepositorySession repositorySession = repositorySessionFactory.createSession();
- try
- {
- MetadataRepository metadataRepository = repositorySession.getRepository();
- List<ArtifactMetadata> sourceArtifacts = metadataRepository.getArtifacts( sourceRepoId );
-
- if ( repository.isReleases() && !repository.isSnapshots() )
- {
- mergeWithOutSnapshots( metadataRepository, sourceArtifacts, sourceRepoId, repoid );
- }
- else
- {
- repositoryMerger.merge( metadataRepository, sourceRepoId, repoid );
-
- for ( ArtifactMetadata metadata : sourceArtifacts )
- {
- triggerAuditEvent( repoid, metadata.getId(), AuditEvent.MERGING_REPOSITORIES );
- }
- }
-
- scanRepository();
-
- addActionMessage( "Repository '" + sourceRepoId + "' successfully merged to '" + repoid + "'." );
-
- return SUCCESS;
- }
- catch ( Exception e )
- {
- log.error( e.getMessage(), e );
- addActionError( "Error occurred while merging the repositories: " + e.getMessage() );
- return ERROR;
- }
- finally
- {
- repositorySession.close();
- }
+ return merge( true );
}
public String mergeBySkippingConflicts()
{
+ return merge( false );
+ }
+
+ private String merge( boolean overwriteConflicts )
+ {
+ // FIXME: stage repo should only need the repoid
+ String sourceRepoId = null;
+
RepositorySession repositorySession = repositorySessionFactory.createSession();
try
{
MetadataRepository metadataRepository = repositorySession.getRepository();
List<ArtifactMetadata> sourceArtifacts = metadataRepository.getArtifacts( sourceRepoId );
- sourceArtifacts.removeAll( conflictSourceArtifacts );
-
- if ( repository.isReleases() && !repository.isSnapshots() )
+ if ( !overwriteConflicts )
{
- mergeWithOutSnapshots( metadataRepository, sourceArtifacts, sourceRepoId, repoid );
+ sourceArtifacts.removeAll( getConflictSourceArtifacts() );
+
+ Filter<ArtifactMetadata> artifactsWithOutConflicts = new IncludesFilter<ArtifactMetadata>(
+ sourceArtifacts );
+ repositoryMerger.merge( metadataRepository, sourceRepoId, repoid, artifactsWithOutConflicts );
}
else
{
+ repositoryMerger.merge( metadataRepository, sourceRepoId, repoid );
+ }
- Filter<ArtifactMetadata> artifactsWithOutConflicts =
- new IncludesFilter<ArtifactMetadata>( sourceArtifacts );
- repositoryMerger.merge( metadataRepository, sourceRepoId, repoid, artifactsWithOutConflicts );
- for ( ArtifactMetadata metadata : sourceArtifacts )
- {
- triggerAuditEvent( repoid, metadata.getId(), AuditEvent.MERGING_REPOSITORIES );
- }
+ // FIXME: this should happen in the merge itself
+ for ( ArtifactMetadata metadata : sourceArtifacts )
+ {
+ triggerAuditEvent( repoid, metadata.getId(), AuditEvent.MERGING_REPOSITORIES );
}
+ // FIXME: this should happen in the merge itself, don't re-scan the whole thing. Make sure we test the
+ // results
scanRepository();
addActionMessage( "Repository '" + sourceRepoId + "' successfully merged to '" + repoid + "'." );
}
}
- public String mergeWithOutConlficts()
- {
- sourceRepoId = repoid + "-stage";
-
- RepositorySession repositorySession = repositorySessionFactory.createSession();
- try
- {
- conflictSourceArtifacts =
- repositoryMerger.getConflictingArtifacts( repositorySession.getRepository(), sourceRepoId, repoid );
- }
- catch ( Exception e )
- {
- addActionError( "Error occurred while merging the repositories." );
- return ERROR;
- }
- finally
- {
- repositorySession.close();
- }
-
- addActionMessage( "Repository '" + sourceRepoId + "' successfully merged to '" + repoid + "'." );
-
- return SUCCESS;
- }
-
public ManagedRepository getRepository()
{
return repository;
public void prepare()
throws Exception
{
- sourceRepoId = repoid + "-stage";
- RepositorySession repositorySession = repositorySessionFactory.createSession();
- try
- {
- conflictSourceArtifacts =
- repositoryMerger.getConflictingArtifacts( repositorySession.getRepository(), sourceRepoId, repoid );
- }
- finally
- {
- repositorySession.close();
- }
-
this.repository = managedRepositoryAdmin.getManagedRepository( repoid );
- setConflictSourceArtifactsToBeDisplayed( conflictSourceArtifacts );
- }
-
- public String getSourceRepoId()
- {
- return sourceRepoId;
- }
-
- public void setSourceRepoId( String sourceRepoId )
- {
- this.sourceRepoId = sourceRepoId;
}
public String getRepoid()
}
public List<ArtifactMetadata> getConflictSourceArtifacts()
+ throws Exception
{
- return conflictSourceArtifacts;
- }
-
- public void setConflictSourceArtifacts( List<ArtifactMetadata> conflictSourceArtifacts )
- {
- this.conflictSourceArtifacts = conflictSourceArtifacts;
+ RepositorySession repositorySession = repositorySessionFactory.createSession();
+ try
+ {
+ return repositoryMerger.getConflictingArtifacts( repositorySession.getRepository(), repoid );
+ }
+ finally
+ {
+ repositorySession.close();
+ }
}
- public List<ArtifactMetadata> getConflictSourceArtifactsToBeDisplayed()
+ public Collection<ArtifactMetadata> getConflictSourceArtifactsToBeDisplayed()
{
return conflictSourceArtifactsToBeDisplayed;
}
- public void setConflictSourceArtifactsToBeDisplayed( List<ArtifactMetadata> conflictSourceArtifacts )
- throws Exception
- {
- this.conflictSourceArtifactsToBeDisplayed = new ArrayList<ArtifactMetadata>();
- HashMap<String, ArtifactMetadata> map = new HashMap<String, ArtifactMetadata>();
- for ( ArtifactMetadata metadata : conflictSourceArtifacts )
- {
- String metadataId =
- metadata.getNamespace() + metadata.getProject() + metadata.getProjectVersion() + metadata.getVersion();
- map.put( metadataId, metadata );
- }
- conflictSourceArtifactsToBeDisplayed.addAll( map.values() );
- }
-
- private void mergeWithOutSnapshots( MetadataRepository metadataRepository, List<ArtifactMetadata> sourceArtifacts,
- String sourceRepoId, String repoid )
- throws Exception
+ private Filter<ArtifactMetadata> filterOutSnapshots( List<ArtifactMetadata> sourceArtifacts, String repoid )
{
- List<ArtifactMetadata> artifactsWithOutSnapshots = new ArrayList<ArtifactMetadata>();
- for ( ArtifactMetadata metadata : sourceArtifacts )
+ for ( Iterator<ArtifactMetadata> i = sourceArtifacts.iterator(); i.hasNext(); )
{
-
+ ArtifactMetadata metadata = i.next();
if ( metadata.getProjectVersion().contains( "SNAPSHOT" ) )
{
- artifactsWithOutSnapshots.add( metadata );
+ i.remove();
}
else
{
triggerAuditEvent( repoid, metadata.getId(), AuditEvent.MERGING_REPOSITORIES );
}
-
}
- sourceArtifacts.removeAll( artifactsWithOutSnapshots );
-
- Filter<ArtifactMetadata> artifactListWithOutSnapShots = new IncludesFilter<ArtifactMetadata>( sourceArtifacts );
- repositoryMerger.merge( metadataRepository, sourceRepoId, repoid, artifactListWithOutSnapShots );
+ return new IncludesFilter<ArtifactMetadata>( sourceArtifacts );
}
private void scanRepository()
{
this.managedRepositoryAdmin = managedRepositoryAdmin;
}
-}
\ No newline at end of file
+}
{
try
{
+ // STAGE FIXME: handle staging, reduce external duplication - should be a wrapper like block redeployment
ManagedRepository repoConfig = managedRepositoryAdmin.getManagedRepository( repositoryId );
ArtifactReference artifactReference = new ArtifactReference();
}
}
+ // STAGE FIXME: if it was staged, say "staged for"
String msg = "Artifact \'" + groupId + ":" + artifactId + ":" + version
+ "\' was successfully deployed to repository \'" + repositoryId + "\'";
private ManagedRepository repository;
- private boolean stageNeeded;
-
private String action = "addRepository";
public void prepare()
this.repository.setReleases( false );
this.repository.setScanned( false );
this.repository.setBlockRedeployments( false );
+ this.repository.setStagingRequired( false );
}
public String input()
String result = SUCCESS;
try
{
- getManagedRepositoryAdmin().addManagedRepository( repository, stageNeeded, getAuditInformation() );
+ getManagedRepositoryAdmin().addManagedRepository( repository, getAuditInformation() );
}
catch ( RepositoryAdminException e )
{
this.repository = repository;
}
-
- public void setStageNeeded( boolean stageNeeded )
- {
- this.stageNeeded = stageNeeded;
- }
-
public String getAction()
{
return action;
private ManagedRepository repository;
- private ManagedRepository stagingRepository;
-
private String repoid;
public void prepare()
if ( StringUtils.isNotBlank( repoid ) )
{
this.repository = getManagedRepositoryAdmin().getManagedRepository( repoid );
- this.stagingRepository = getManagedRepositoryAdmin().getManagedRepository( repoid + "-stage" );
}
}
private ManagedRepository repository;
- private ManagedRepository stagingRepository;
-
private String repoid;
private final String action = "editRepository";
- private boolean stageNeeded;
-
-
// FIXME better error message
public void prepare()
throws RepositoryAdminException
if ( StringUtils.isNotBlank( repoid ) )
{
repository = getManagedRepositoryAdmin().getManagedRepository( repoid );
- stagingRepository = getManagedRepositoryAdmin().getManagedRepository( repoid + "-stage" );
}
else if ( repository != null )
{
repository.setReleases( false );
repository.setScanned( false );
+ repository.setStagingRequired( false );
}
}
String result = SUCCESS;
try
{
- getManagedRepositoryAdmin().updateManagedRepository( repository, stageNeeded, getAuditInformation(),
+ getManagedRepositoryAdmin().updateManagedRepository( repository, getAuditInformation(),
resetStats );
}
catch ( RepositoryAdminException e )
}
- public boolean isStageNeeded()
- {
- return stageNeeded;
- }
-
- public void setStageNeeded( boolean stageNeeded )
- {
-
- this.stageNeeded = stageNeeded;
- }
-
public String getAction()
{
return action;
{
this.repository = repository;
}
-
- public ManagedRepository getStagingRepository()
- {
- return stagingRepository;
- }
-
- public void setStagingRepository( ManagedRepository stagingRepository )
- {
- this.stagingRepository = stagingRepository;
- }
}
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.
List<ManagedRepository> managedRepositoriesList = new ArrayList<ManagedRepository>();
for ( ManagedRepository repoConfig : managedRepositories )
{
- if ( !repoConfig.getId().endsWith( "-stage" ) )
- {
- managedRepositoriesList.add( repoConfig );
- }
+ managedRepositoriesList.add( repoConfig );
}
return managedRepositoriesList;
}
</action>
- <action name="merge" class="mergeAction" method="getConflicts">
- <result name="CONFLICTS">/WEB-INF/jsp/admin/mergeExcludeConflicts.jsp</result>
+ <action name="merge" class="mergeAction" method="requestMerge">
+ <result name="confirm">/WEB-INF/jsp/admin/mergeExcludeConflicts.jsp</result>
<result name="success">/WEB-INF/jsp/admin/mergeResults.jsp</result>
<interceptor-ref name="configuredPrepareParamsStack"/>
</action>
<s:form method="post" action="addRepository!commit" namespace="/admin" validate="true">
<s:textfield name="repository.id" label="Identifier" size="10" required="true"/>
<%@ include file="/WEB-INF/jsp/admin/include/repositoryForm.jspf" %>
- <s:checkbox name="stageNeeded" value="stageNeeded" label="Create stage repository"/>
<s:submit value="Add Repository"/>
</s:form>
<s:hidden name="repository.id"/>
<s:label label="ID" name="repository.id" />
<%@ include file="/WEB-INF/jsp/admin/include/repositoryForm.jspf" %>
-
- <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>
<s:checkbox name="repository.scanned" value="repository.scanned" label="Scannable"/>
<s:checkbox name="repository.deleteReleasedSnapshots" value="repository.deleteReleasedSnapshots"
label="Delete Released Snapshots"/>
+<s:checkbox name="repository.stagingRequired" value="repository.stagingRequired" label="Require staging repository"/>
</p>
<div class="infobox">
- <table class="infotable">
+<c:choose>
+ <c:when test="${empty (conflictSourceArtifactsToBeDisplayed)}">
+ <h1>No conflicting artifacts</h1>
- <c:choose>
- <c:when test="${empty (conflictSourceArtifacts)}">
- <h1>No conflicting artifacts</h1>
-
- <c:if test="${!repository.snapshots and repository.releases}">
- <div class="warningbox">
- <p>
- <strong>WARNING: Repository "${repoid}" does not allow to merge snapshots</strong>
- </p>
- </div>
- </c:if>
-
- <s:form method="post" action="merge" namespace="/admin" validate="false" theme="simple">
- <s:hidden name="repoid"/>
- <div class="buttons">
- <s:submit value="Merge All" method="doMerge"/>
- </div>
- </s:form>
- </c:when>
- <c:otherwise>
- <div class="warningbox">
- <c:if test="${!repository.snapshots and repository.releases}">
- <p>
- <strong>WARNING: Repository "${repoid}" does not allow to merge snapshots</strong>
- </p>
- </c:if>
- <p>
- <strong>WARNING: The following are the artifacts in conflict.</strong>
- </p>
- </div>
- <c:forEach items="${conflictSourceArtifactsToBeDisplayed}" var="artifact">
- <tr>
- <td>Artifact Id :</td>
- <%--<td><code>${artifact.id}</code></td>--%>
- <td align="left"> <code>${artifact.namespace} ${" "} ${artifact.project} ${" "} ${artifact.version}</code></td>
- </tr>
- </c:forEach>
+ <s:form method="post" action="merge" namespace="/admin" validate="false" theme="simple">
+ <s:hidden name="repoid"/>
+ <div class="buttons">
+ <s:submit value="Merge All" method="doMerge"/>
+ </div>
+ </s:form>
+ </c:when>
+ <c:otherwise>
+ <div class="warningbox">
+ <p><strong>WARNING! The following are the artifacts in conflict:</strong></p>
+ </div>
+ <table class="infotable">
+ <c:forEach items="${conflictSourceArtifactsToBeDisplayed}" var="artifact">
<tr>
- <td>
- <s:form action="merge" method="post" namespace="/admin" validate="false">
- <s:hidden name="repoid"/>
- <div class="buttons">
- <table>
- <tr>
- <td>
- <table>
- <tr>
- <td>
- <s:submit value="Merge All" method="doMerge"/>
- </td>
- </tr>
- </table>
- </td>
- <td>
- <table>
- <tr>
- <td>
- <s:submit value="Merge With Skip" method="mergeBySkippingConflicts"/>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </div>
- </s:form>
- </td>
+ <td>Artifact Id :</td>
+ <td align="left"> <code>${artifact.namespace} : ${artifact.project} : ${artifact.version}</code></td>
</tr>
- </c:otherwise>
- </c:choose>
- </table>
+ </c:forEach>
+ </table>
+ <s:form action="merge" method="post" namespace="/admin" validate="false">
+ <s:hidden name="repoid"/>
+ <div class="buttons">
+ <s:submit value="Merge and Overwrite Conflicts" method="doMerge"/>
+ <s:submit value="Merge and Skip Conflicts" method="mergeBySkippingConflicts"/>
+ </div>
+ </s:form>
+ </c:otherwise>
+</c:choose>
</div>
</body>
</html>
<archiva:copy-paste-snippet object="${repository}" wrapper="toggle" />
</td>
</tr>
-
-
- <c:set var="str" value="${repository.id}" />
- <jsp:useBean id="str" type="java.lang.String" scope="page"/>
- <c:set var="location" value="${repository.location}"/>
- <jsp:useBean id="location" type="java.lang.String" scope="page"/>
-
- <%-- 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
- </th>
+<c:if test="${repository.stagingRequired}">
+ <tr>
+ <th>
+ Stage repository location
+ </th>
<td>
- ${repository.location}${'-stage'}
+ ${repository.stagingLocation}
</td>
</tr>
<redback:ifAuthorized permission="archiva-merge-repository" resource="${repository.id}">
<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:submit id="Merge" value="Merge"/>
</s:form>
</td>
</tr>
</redback:ifAuthorized>
-
-
- </c:if>
-
-
-
+</c:if>
</table>
</div>
+++ /dev/null
-<%--
- ~ Licensed to the Apache Software Foundation (ASF) under one
- ~ or more contributor license agreements. See the NOTICE file
- ~ distributed with this work for additional information
- ~ regarding copyright ownership. The ASF licenses this file
- ~ to you under the Apache License, Version 2.0 (the
- ~ "License"); you may not use this file except in compliance
- ~ with the License. You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing,
- ~ software distributed under the License is distributed on an
- ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- ~ KIND, either express or implied. See the License for the
- ~ specific language governing permissions and limitations
- ~ under the License.
- --%>
-
-<%-- http://www.opensymphony.com/webwork/wikidocs/File%20Upload%20Interceptor.html --%>
-
-<%@ page contentType="text/html; charset=UTF-8" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-
-<s:hidden name="repository.id"/>
- <s:label label="ID" name="repository.id" />
-
-<s:textfield name="repository.name" label="Name" size="50" required="true"/>
-<s:textfield name="repository.location" label="Directory" size="50" required="true"/>
-<s:textfield name="repository.indexDir" label="Index Directory" size="50"/>
-<s:select list="#@java.util.LinkedHashMap@{'default' : 'Maven 2.x Repository', 'legacy' : 'Maven 1.x Repository'}"
- name="repository.layout" label="Type"/>
-<s:textfield name="repository.cronExpression" label="Cron" size="40" required="true"/>
-<s:textfield name="repository.daysOlder" label="Repository Purge By Days Older Than" size="5"/>
-<s:textfield name="repository.retentionCount" label="Repository Purge By Retention Count" size="5"/>
-<s:checkbox name="repository.releases" value="repository.releases" label="Releases Included"/>
-<s:checkbox name="repository.blockRedeployments" value="repository.blockRedeployments" label="Block Re-deployment of Released Artifacts"/>
-<s:checkbox name="repository.snapshots" value="repository.snapshots" label="Snapshots Included"/>
-<s:checkbox name="repository.scanned" value="repository.scanned" label="Scannable"/>
-<s:checkbox name="repository.deleteReleasedSnapshots" value="repository.deleteReleasedSnapshots"
- label="Delete Released Snapshots"/>
\ No newline at end of file
verifyProjectMetadataChecksums( repoLocation );
}
+ // FIXME STAGE: test staging pushes it to the right place
+
ManagedRepository getManagedRepository()
{
return new BeanReplicator().replicateBean( this.managedRepository, ManagedRepository.class );
archivaConfiguration.getConfiguration();
archivaConfigurationControl.setReturnValue( configuration );
- Configuration stageRepoConfiguration = new Configuration();
- stageRepoConfiguration.addManagedRepository( createStagingRepository() );
- archivaConfigurationControl.setReturnValue( stageRepoConfiguration );
-
-
- archivaConfiguration.getConfiguration();
- archivaConfigurationControl.setReturnValue( configuration );
-
-
archivaConfigurationControl.replay();
action.setRepoid( REPO_ID );
archivaConfiguration.getConfiguration();
archivaConfigurationControl.setReturnValue( configuration, expectCountGetConfig );
- Configuration stageRepoConfiguration = new Configuration();
- stageRepoConfiguration.addManagedRepository( createStagingRepository() );
- archivaConfigurationControl.setReturnValue( stageRepoConfiguration );
-
- archivaConfiguration.save( configuration );
-
- // save for staging repo delete
archivaConfiguration.save( configuration );
archivaConfigurationControl.replay();
return r;
}
- private ManagedRepositoryConfiguration createStagingRepository()
- {
- ManagedRepositoryConfiguration r = new ManagedRepositoryConfiguration();
- r.setId( REPO_ID + "-stage" );
- r.setName( "repo name" );
- r.setLocation( location.getAbsolutePath() );
- r.setLayout( "default" );
- r.setRefreshCronExpression( "* 0/5 * * * ?" );
- r.setDaysOlder( 0 );
- r.setRetentionCount( 0 );
- r.setReleases( true );
- r.setSnapshots( true );
- r.setScanned( false );
- r.setDeleteReleasedSnapshots( false );
- return r;
- }
-
private RemoteRepositoryConfiguration createRemoteRepository( String id, String url )
{
RemoteRepositoryConfiguration r = new RemoteRepositoryConfiguration();
archivaConfiguration.getConfiguration();
archivaConfigurationControl.setReturnValue( configuration );
- Configuration stageRepoConfiguration = new Configuration();
- stageRepoConfiguration.addManagedRepository( createStagingRepository() );
- archivaConfigurationControl.setReturnValue( stageRepoConfiguration );
archivaConfigurationControl.replay();
public void testEditRepository()
throws Exception
{
- String stageRepoId = REPO_ID + "-stage";
-
roleManager.templatedRoleExists( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, REPO_ID );
roleManagerControl.setReturnValue( false );
roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, REPO_ID );
roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, REPO_ID );
roleManagerControl.setVoidCallable();
- roleManager.templatedRoleExists( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, stageRepoId );
- roleManagerControl.setReturnValue( false );
- roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, stageRepoId );
- roleManagerControl.setVoidCallable();
-
- roleManager.templatedRoleExists( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, stageRepoId );
- roleManagerControl.setReturnValue( false );
- roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, stageRepoId );
- roleManagerControl.setVoidCallable();
-
roleManagerControl.replay();
registry.getString( "appserver.base", "${appserver.base}" );
repositoryTaskScheduler.queueTask( task );
repositoryTaskSchedulerControl.setVoidCallable();
- RepositoryTask stageTask = new RepositoryTask();
- stageTask.setRepositoryId( stageRepoId );
- repositoryTaskScheduler.isProcessingRepositoryTask( stageRepoId );
- repositoryTaskSchedulerControl.setReturnValue( false );
- repositoryTaskScheduler.queueTask( stageTask );
- repositoryTaskSchedulerControl.setVoidCallable();
-
repositoryTaskSchedulerControl.replay();
Configuration configuration = createConfigurationForEditing( createRepository() );
archivaConfigurationControl.setReturnValue( configuration );
archivaConfigurationControl.setReturnValue( configuration );
- Configuration stageRepoConfiguration = new Configuration();
- stageRepoConfiguration.addManagedRepository( createStagingRepository() );
- archivaConfigurationControl.setReturnValue( stageRepoConfiguration );
archivaConfigurationControl.setReturnValue( configuration );
archivaConfigurationControl.setReturnValue( configuration );
ManagedRepository repository = action.getRepository();
populateRepository( repository );
repository.setName( "new repo name" );
+ repository.setStagingRequired( true );
MockControl repositoryStatisticsManagerControl = MockControl.createControl( RepositoryStatisticsManager.class );
RepositoryStatisticsManager repositoryStatisticsManager =
// no deletion
repositoryStatisticsManagerControl.replay();
+ // STAGE FIXME: hardcoded ID
new File( "target/test/" + REPO_ID + "-stage" ).mkdirs();
action.setRepository( repository );
- action.setStageNeeded( true );
String status = action.commit();
assertEquals( Action.SUCCESS, status );
roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, REPO_ID );
roleManagerControl.setVoidCallable();
+ // STAGE FIXME: hardcoded ID
roleManager.templatedRoleExists( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, REPO_ID + "-stage" );
roleManagerControl.setReturnValue( false );
roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, REPO_ID + "-stage" );
archivaConfigurationControl.setReturnValue( buildEasyConfiguration() );
- Configuration stageRepoConfiguration = buildEasyConfiguration();
- stageRepoConfiguration.addManagedRepository( createStagingRepository() );
- archivaConfigurationControl.setReturnValue( stageRepoConfiguration );
-
- archivaConfigurationControl.setReturnValue( configuration );
archivaConfigurationControl.setReturnValue( configuration );
- archivaConfiguration.save( configuration );
- configuration.addManagedRepository( stageRepoConfiguration.getManagedRepositories().get( 0 ) );
archivaConfiguration.save( configuration );
archivaConfiguration.save( configuration );
repositoryStatisticsManager.deleteStatistics( metadataRepository, REPO_ID );
repositoryStatisticsManagerControl.replay();
+ // STAGE FIXME: hardcoded ID
new File( "target/test/location/" + REPO_ID + "-stage" ).mkdirs();
- action.setStageNeeded( true );
+ // FIXME: stage setting needed
+// action.setStageNeeded( true );
action.setRepoid( REPO_ID );
action.prepare();
assertEquals( REPO_ID, action.getRepoid() );
populateRepository( r );
return r;
}
-
- private ManagedRepositoryConfiguration createStagingRepository()
- throws IOException
- {
- ManagedRepositoryConfiguration r = new ManagedRepositoryConfiguration();
- r.setId( REPO_ID + "-stage" );
- populateStagingRepository( r );
- return r;
- }
-
- private void populateStagingRepository( ManagedRepositoryConfiguration repository )
- throws IOException
- {
- repository.setId( REPO_ID + "-stage" );
- repository.setName( "repo name" );
- repository.setLocation( "${appserver.base}/location" );
- repository.setLayout( "default" );
- repository.setRefreshCronExpression( "* 0/5 * * * ?" );
- repository.setDaysOlder( 31 );
- repository.setRetentionCount( 20 );
- repository.setReleases( true );
- repository.setSnapshots( true );
- repository.setScanned( false );
- repository.setDeleteReleasedSnapshots( true );
- }
}
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;
-import javax.annotation.PostConstruct;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.servlet.http.HttpServletResponse;
/**
*
}
else
{
- ManagedRepositoryContent managedRepository = null;
+ ManagedRepositoryContent managedRepository;
try
{
+ // STAGE FIXME: replace with pseudo staging repository when needed - good time to switch to new repository API, and probably only use config here
managedRepository = repositoryFactory.getManagedRepositoryContent( archivaLocator.getRepositoryId() );
}
catch ( RepositoryNotFoundException e )
}
else
{
- if ( resourcesInAbsolutePath != null && resourcesInAbsolutePath.size() > 1 )
+ if ( resourcesInAbsolutePath.size() > 1 )
{
// merge the metadata of all repos under group
ArchivaRepositoryMetadata mergedMetadata = new ArchivaRepositoryMetadata();
// check if target repo is enabled for releases
// we suppose that release-artifacts can be deployed only to repos enabled for releases
- if ( managedRepository.getRepository().isReleases() && !repositoryRequest.isMetadata( resourcePath )
- && !repositoryRequest.isSupportFile( resourcePath ) )
+ // also ignore flag for staging repositories, no harm in redeploying there
+ if ( managedRepository.getRepository().isReleases() && !repositoryRequest.isMetadata( resourcePath ) &&
+ !repositoryRequest.isSupportFile( resourcePath ) &&
+ !managedRepository.getRepository().isStagingRequired() )
{
- ArtifactReference artifact = null;
+ ArtifactReference artifact;
try
{
artifact = managedRepository.toArtifactReference( resourcePath );
if ( !VersionUtil.isSnapshot( artifact.getVersion() ) )
{
+ // STAGE FIXME: make sure staging was already considered
// check if artifact already exists and if artifact re-deployment to the repository is allowed
if ( managedRepository.hasContent( artifact )
&& managedRepository.getRepository().isBlockRedeployments() )
{
defaultManagedRepositoryAdmin.addManagedRepository(
createManagedRepository( RELEASES_REPO, new File( "target/test-classes/" + RELEASES_REPO ).getPath(),
- "default" ), false, null );
+ "default" ), null );
}
if ( defaultManagedRepositoryAdmin.getManagedRepository( INTERNAL_REPO ) == null )
{
defaultManagedRepositoryAdmin.addManagedRepository(
createManagedRepository( INTERNAL_REPO, new File( "target/test-classes/" + INTERNAL_REPO ).getPath(),
- "default" ), false, null );
+ "default" ), null );
}
RepositoryGroup repoGroupConfig = new RepositoryGroup();
repoGroupConfig.setId( LOCAL_REPO_GROUP );
defaultManagedRepositoryAdmin.addManagedRepository(
createManagedRepository( LOCAL_MIRROR_REPO, new File( "target/test-classes/local-mirror" ).getPath(),
- "default" ), false, null );
+ "default" ), null );
List<RepositoryGroupConfiguration> repoGroups = new ArrayList<RepositoryGroupConfiguration>();
RepositoryGroupConfiguration repoGroup = new RepositoryGroupConfiguration();
{
defaultManagedRepositoryAdmin.addManagedRepository(
createManagedRepository( LEGACY_REPO, new File( "target/test-classes/" + LEGACY_REPO ).getPath(),
- "legacy" ), false, null );
+ "legacy" ), null );
DavResourceLocator locator =
new ArchivaDavResourceLocator( "", "/repository/" + LEGACY_REPO + "/eclipse/maven-metadata.xml",
LEGACY_REPO, new ArchivaDavLocatorFactory() );
private RepositoryMerger repositoryMerger;
- private static final String STAGE = "-stage";
-
private AuditListener auditListener;
private RepositorySessionFactory repositorySessionFactory;
public Boolean addManagedRepository( String repoId, String layout, String name, String location,
boolean blockRedeployments, boolean releasesIncluded,
- boolean snapshotsIncluded, boolean stageRepoNeeded, String cronExpression,
+ boolean snapshotsIncluded, boolean stagingRequired, String cronExpression,
int daysOlder, int retentionCount, boolean deleteReleasedSnapshots )
throws Exception
{
snapshotsIncluded, releasesIncluded,
blockRedeployments, cronExpression, null, false,
daysOlder, retentionCount,
- deleteReleasedSnapshots, false );
- return managedRepositoryAdmin.addManagedRepository( repository, stageRepoNeeded, getAuditInformation() );
+ deleteReleasedSnapshots, stagingRequired );
+ return managedRepositoryAdmin.addManagedRepository( repository, getAuditInformation() );
}
public boolean merge( String repoId, boolean skipConflicts )
throws Exception
{
- String stagingId = repoId + STAGE;
org.apache.archiva.admin.model.beans.ManagedRepository repoConfig;
- org.apache.archiva.admin.model.beans.ManagedRepository stagingConfig;
repoConfig = managedRepositoryAdmin.getManagedRepository( repoId );
MetadataRepository metadataRepository = repositorySession.getRepository();
if ( repoConfig != null )
{
- stagingConfig = managedRepositoryAdmin.getManagedRepository( stagingId );
-
- if ( stagingConfig != null )
+ String stagingId = "foo";
+ if ( repoConfig.isStagingRequired() )
{
+ // STAGE FIXME: duplication with webapp - move all MergeAction to the staging module and have this
+ // use it - make sure this gets tested
List<ArtifactMetadata> sourceArtifacts = metadataRepository.getArtifacts( stagingId );
if ( repoConfig.isReleases() && !repoConfig.isSnapshots() )
if ( skipConflicts )
{
List<ArtifactMetadata> conflicts =
- repositoryMerger.getConflictingArtifacts( metadataRepository, repoId, stagingId );
+ repositoryMerger.getConflictingArtifacts( metadataRepository, repoId );
if ( log.isDebugEnabled() )
{
if ( skipConflicts )
{
List<ArtifactMetadata> conflicts =
- repositoryMerger.getConflictingArtifacts( metadataRepository, repoId, stagingId );
+ repositoryMerger.getConflictingArtifacts( metadataRepository, repoId );
if ( log.isDebugEnabled() )
{
repositoryMerger.merge( metadataRepository, sourceRepoId, repoid, artifactListWithOutSnapShots );
}
-
// FIXME find a way to get user id and adress
private AuditInformation getAuditInformation()
{
private Registry registry;
- private static final String STAGE = "-stage";
-
private DefaultManagedRepositoryAdmin managedRepositoryAdmin;
private DefaultRemoteRepositoryAdmin remoteRepositoryAdmin;
throws Exception
{
archivaConfigControl.expectAndReturn( archivaConfig.getConfiguration(), config, 1, 5 );
+ // STAGE FIXME: verify no staging
configControl.expectAndReturn( config.getManagedRepositories(),
Arrays.asList( createManagedRepo( "repo", "default", "repo", true, false ) ), 1,
ManagedRepositoryConfiguration merge = createManagedRepo( "merge", "default", "merge", true, true );
merge.setLocation( "target/test-repository/merge" );
- ManagedRepositoryConfiguration staging = createStagingRepo( merge );
RepositoryTask task = new RepositoryTask();
task.setScanAll( true );
archivaConfigControl.expectAndReturn( archivaConfig.getConfiguration(), config, 1, 5 );
- configControl.expectAndReturn( config.getManagedRepositories(), Arrays.asList( merge, staging ), 1, 5 );
+ configControl.expectAndReturn( config.getManagedRepositories(), Arrays.asList( merge ), 1, 5 );
+ // STAGE FIXME: verify no staging
- metadataRepositoryControl.expectAndReturn( metadataRepository.getArtifacts( staging.getId() ), sources );
+// metadataRepositoryControl.expectAndReturn( metadataRepository.getArtifacts( staging.getId() ), sources );
repositoryMergerControl.expectAndDefaultReturn(
- repositoryMerger.getConflictingArtifacts( metadataRepository, staging.getId(), merge.getId() ), sources );
- repositoryMerger.merge( metadataRepository, staging.getId(), merge.getId() );
+ repositoryMerger.getConflictingArtifacts( metadataRepository, merge.getId() ), sources );
+// repositoryMerger.merge( metadataRepository, staging.getId(), merge.getId() );
repositoryMergerControl.setVoidCallable();
repositoryTaskSchedulerControl.expectAndReturn( repositoryTaskScheduler.isProcessingRepositoryTask( "merge" ),
false );
ManagedRepositoryConfiguration repo = createManagedRepo( "repo", "default", "repo", true, true );
repo.setLocation( "target/test-repository/one" );
- ManagedRepositoryConfiguration staging = createStagingRepo( repo );
- configControl.expectAndReturn( config.getManagedRepositories(), Arrays.asList( repo, staging ), 1, 5 );
+ configControl.expectAndReturn( config.getManagedRepositories(), Arrays.asList( repo ), 1, 5 );
archivaConfigControl.expectAndReturn( archivaConfig.getConfiguration(), config, 1, 5 );
- metadataRepositoryControl.expectAndReturn( metadataRepository.getArtifacts( staging.getId() ), sources );
+ // FIXME STAGE: get sources
repositoryMergerControl.expectAndDefaultReturn(
- repositoryMerger.getConflictingArtifacts( metadataRepository, staging.getId(), repo.getId() ), conflicts );
- repositoryMerger.merge( metadataRepository, staging.getId(), repo.getId(), artifactsWithOutConflicts );
+ repositoryMerger.getConflictingArtifacts( metadataRepository, repo.getId() ), conflicts );
+ repositoryMerger.merge( metadataRepository, null, repo.getId(), artifactsWithOutConflicts );
repositoryMergerControl.setMatcher( MockControl.ALWAYS_MATCHER );
repositoryMergerControl.setVoidCallable();
repositoryTaskSchedulerControl.expectAndReturn( repositoryTaskScheduler.isProcessingRepositoryTask( "repo" ),
String layout = "default";
String name = projId + " Releases";
String releaseLocation = "target/test-repository/" + projId + ".releases";
+ // STAGE FIXME: hardcoded ID
String stageLocation = releaseLocation + "-stage";
String appserverBase = "target";
roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, repoId );
roleManagerControl.setVoidCallable();
+ // STAGE FIXME: hardcoded ID
roleManager.templatedRoleExists( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, repoId + "-stage" );
roleManagerControl.setReturnValue( false );
roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, repoId + "-stage" );
repositoryTaskScheduler.queueTask( task );
repositoryTaskSchedulerControl.setVoidCallable();
- //staged repo
+ //STAGE FIXME: hardcoded id
+ String STAGE="-stage";
repositoryTaskSchedulerControl.expectAndReturn(
repositoryTaskScheduler.isProcessingRepositoryTask( repoId + STAGE ), false );
task = new RepositoryTask();
return repoConfig;
}
- private ManagedRepositoryConfiguration createStagingRepo( ManagedRepositoryConfiguration repoConfig )
- {
- ManagedRepositoryConfiguration stagingRepo = new ManagedRepositoryConfiguration();
- stagingRepo.setId( repoConfig.getId() + STAGE );
- stagingRepo.setLayout( repoConfig.getLayout() );
- stagingRepo.setName( repoConfig + STAGE );
- stagingRepo.setReleases( repoConfig.isReleases() );
- stagingRepo.setSnapshots( repoConfig.isSnapshots() );
- stagingRepo.setLocation( repoConfig.getLocation() );
-
- return stagingRepo;
- }
-
private AuditEvent createAuditEvent( ManagedRepositoryConfiguration repoConfig )
{
AuditEvent auditEvent = new AuditEvent();
// pom file copying
String fileName = artifactMetadata.getProject() + "-" + artifactMetadata.getVersion() + ".pom";
+ // STAGE FIXME: don't re-parse and construct the path - use the filename we already have
// pom file copying
// TODO need to use path translator to get the pom file path
// String fileName = artifactMetadata.getProject() + "-" + artifactMetadata.getVersion() + ".pom";
String index = artifactPath.substring( lastIndex + 1 );
int last = index.lastIndexOf( '.' );
- File sourcePomFile = new File( sourceRepoPath, artifactPath.substring( 0, lastIndex ) + "/"
- + artifactPath.substring( lastIndex + 1 ).substring( 0, last ) + ".pom" );
- File targetPomFile = new File( targetRepoPath, artifactPath.substring( 0, lastIndex ) + "/"
- + artifactPath.substring( lastIndex + 1 ).substring( 0, last ) + ".pom" );
+ File sourcePomFile = new File( sourceRepoPath, artifactPath.substring( 0, lastIndex ) + "/" +
+ artifactPath.substring( lastIndex + 1 ).substring( 0, last ) + ".pom" );
+ File targetPomFile = new File( targetRepoPath, artifactPath.substring( 0, lastIndex ) + "/" +
+ artifactPath.substring( lastIndex + 1 ).substring( 0, last ) + ".pom" );
if ( !targetPomFile.exists() && sourcePomFile.exists() )
{
{
// updating version metadata files
- File versionMetaDataFileInSourceRepo =
- pathTranslator.toFile( new File( sourceRepoPath ), artifactMetadata.getNamespace(),
- artifactMetadata.getProject(), artifactMetadata.getVersion(),
- METADATA_FILENAME );
+ File versionMetaDataFileInSourceRepo = pathTranslator.toFile( new File( sourceRepoPath ),
+ artifactMetadata.getNamespace(),
+ artifactMetadata.getProject(),
+ artifactMetadata.getVersion(),
+ METADATA_FILENAME );
if ( versionMetaDataFileInSourceRepo.exists() )
{
- String relativePathToVersionMetadataFile =
- versionMetaDataFileInSourceRepo.getAbsolutePath().split( sourceRepoPath )[1];
+ String relativePathToVersionMetadataFile = versionMetaDataFileInSourceRepo.getAbsolutePath().split(
+ sourceRepoPath )[1];
File versionMetaDataFileInTargetRepo = new File( targetRepoPath, relativePathToVersionMetadataFile );
if ( !versionMetaDataFileInTargetRepo.exists() )
if ( projectMetadataFileInSourceRepo.exists() )
{
- String relativePathToProjectMetadataFile =
- projectMetadataFileInSourceRepo.getAbsolutePath().split( sourceRepoPath )[1];
+ String relativePathToProjectMetadataFile = projectMetadataFileInSourceRepo.getAbsolutePath().split(
+ sourceRepoPath )[1];
File projectMetadataFileInTargetRepo = new File( targetRepoPath, relativePathToProjectMetadataFile );
if ( !projectMetadataFileInTargetRepo.exists() )
}
+ // TODO: replace with another copy method
private void copyFile( File sourceFile, File targetFile )
throws IOException
{
return metadata;
}
- public List<ArtifactMetadata> getConflictingArtifacts( MetadataRepository metadataRepository, String sourceRepo,
- String targetRepo )
+ public List<ArtifactMetadata> getConflictingArtifacts( MetadataRepository metadataRepository, String targetRepo )
throws Exception
{
List<ArtifactMetadata> targetArtifacts = metadataRepository.getArtifacts( targetRepo );
- List<ArtifactMetadata> sourceArtifacts = metadataRepository.getArtifacts( sourceRepo );
+ List<ArtifactMetadata> sourceArtifacts = Collections.emptyList(); // STAGE FIXME: metadataRepository.getArtifacts( sourceRepo );
List<ArtifactMetadata> conflictsArtifacts = new ArrayList<ArtifactMetadata>();
for ( ArtifactMetadata targetArtifact : targetArtifacts )
}
}
- sourceArtifacts.removeAll( conflictsArtifacts );
- Filter<ArtifactMetadata> artifactsWithOutConflicts = new IncludesFilter<ArtifactMetadata>( sourceArtifacts );
-// merge( sourceRepo, targetRepo, artifactsWithOutConflicts );
return conflictsArtifacts;
}
{
boolean isSame = false;
- if ( ( sourceArtifact.getNamespace().equals( targetArtifact.getNamespace() ) )
- && ( sourceArtifact.getProject().equals( targetArtifact.getProject() ) )
- && ( sourceArtifact.getId().equals( targetArtifact.getId() ) )
- && ( sourceArtifact.getProjectVersion().equals( targetArtifact.getProjectVersion() ) ) )
+ if ( ( sourceArtifact.getNamespace().equals( targetArtifact.getNamespace() ) ) &&
+ ( sourceArtifact.getProject().equals( targetArtifact.getProject() ) ) && ( sourceArtifact.getId().equals(
+ targetArtifact.getId() ) ) && ( sourceArtifact.getProjectVersion().equals(
+ targetArtifact.getProjectVersion() ) ) )
{
isSame = true;
Filter<ArtifactMetadata> filter )
throws Exception;
- List<ArtifactMetadata> getConflictingArtifacts( MetadataRepository metadataRepository, String sourceRepo,
- String targetRepo )
+ List<ArtifactMetadata> getConflictingArtifacts( MetadataRepository metadataRepository, String targetRepo )
throws Exception;
}
\ No newline at end of file
when( metadataRepository.getArtifacts( sourceRepoId ) ).thenReturn( sourceRepoArtifactsList );
when( metadataRepository.getArtifacts( TEST_REPO_ID ) ).thenReturn( targetRepoArtifactsList );
- assertEquals( 1, repositoryMerger.getConflictingArtifacts( metadataRepository, sourceRepoId,
- TEST_REPO_ID ).size() );
+ // STAGE FIXME: not testing the right thing
+ assertEquals( 1, repositoryMerger.getConflictingArtifacts( metadataRepository, TEST_REPO_ID ).size() );
verify( metadataRepository ).getArtifacts( TEST_REPO_ID );
}