clean up the "TODO" list, and mark those that are more important as "FIXME"

git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1051810 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Brett Porter 2010-12-22 10:20:14 +00:00
parent c63e2a3f77
commit 34638d4e67
14 changed files with 95 additions and 102 deletions

View File

@ -33,7 +33,6 @@ import java.util.Set;
/**
* Base class for all repository purge tasks.
*
*/
public abstract class AbstractRepositoryPurge
implements RepositoryPurge
@ -41,11 +40,11 @@ public abstract class AbstractRepositoryPurge
protected Logger log = LoggerFactory.getLogger( AbstractRepositoryPurge.class );
protected final ManagedRepositoryContent repository;
protected final List<RepositoryListener> listeners;
protected final List<RepositoryListener> listeners;
private Logger logger = LoggerFactory.getLogger( "org.apache.archiva.AuditLog" );
private static final char DELIM = ' ';
public AbstractRepositoryPurge( ManagedRepositoryContent repository, List<RepositoryListener> listeners )
@ -56,27 +55,28 @@ public abstract class AbstractRepositoryPurge
/**
* Purge the repo. Update db and index of removed artifacts.
*
*
* @param references
*/
protected void purge( Set<ArtifactReference> references )
{
if( references != null && !references.isEmpty() )
{
if ( references != null && !references.isEmpty() )
{
for ( ArtifactReference reference : references )
{
{
File artifactFile = repository.toFile( reference );
// TODO: looks incomplete, might not delete related metadata?
// FIXME: looks incomplete, might not delete related metadata?
for ( RepositoryListener listener : listeners )
{
listener.deleteArtifact( repository.getId(), reference.getGroupId(), reference.getArtifactId(),
reference.getVersion(), artifactFile.getName() );
}
// TODO: this needs to be logged
artifactFile.delete();
triggerAuditEvent( repository.getRepository().getId(), ArtifactReference.toKey( reference ), AuditEvent.PURGE_ARTIFACT );
triggerAuditEvent( repository.getRepository().getId(), ArtifactReference.toKey( reference ),
AuditEvent.PURGE_ARTIFACT );
purgeSupportFiles( artifactFile );
}
}
@ -89,7 +89,7 @@ public abstract class AbstractRepositoryPurge
* <p>
* Support Files are things like ".sha1", ".md5", ".asc", etc.
* </p>
*
*
* @param artifactFile the file to base off of.
*/
private void purgeSupportFiles( File artifactFile )
@ -116,12 +116,13 @@ public abstract class AbstractRepositoryPurge
}
}
}
private void triggerAuditEvent( String repoId, String resource, String action )
{
String msg = repoId + DELIM + "<system-purge>" + DELIM + "<system>" + DELIM + '\"' + resource + '\"' +
DELIM + '\"' + action + '\"';
String msg =
repoId + DELIM + "<system-purge>" + DELIM + "<system>" + DELIM + '\"' + resource + '\"' + DELIM + '\"' +
action + '\"';
logger.info( msg );
}
}

View File

@ -48,7 +48,7 @@ import java.util.List;
* This will look in a single managed repository, and purge any snapshots that are present
* that have a corresponding released version on the same repository.
* </p>
*
*
* <p>
* So, if you have the following (presented in the m2/default layout form) ...
* <pre>
@ -71,9 +71,9 @@ public class CleanupReleasedSnapshotsRepositoryPurge
extends AbstractRepositoryPurge
{
private MetadataTools metadataTools;
private ArchivaConfiguration archivaConfig;
private RepositoryContentFactory repoContentFactory;
public CleanupReleasedSnapshotsRepositoryPurge( ManagedRepositoryContent repository, MetadataTools metadataTools,
@ -111,25 +111,26 @@ public class CleanupReleasedSnapshotsRepositoryPurge
ProjectReference reference = new ProjectReference();
reference.setGroupId( artifactRef.getGroupId() );
reference.setArtifactId( artifactRef.getArtifactId() );
// Gather up all of the versions.
List<String> allVersions = new ArrayList<String>( repository.getVersions( reference ) );
List<ManagedRepositoryConfiguration> repos = archivaConfig.getConfiguration().getManagedRepositories();
for( ManagedRepositoryConfiguration repo : repos )
{
if( repo.isReleases() && !repo.getId().equals( repository.getId() ) )
{
for ( ManagedRepositoryConfiguration repo : repos )
{
if ( repo.isReleases() && !repo.getId().equals( repository.getId() ) )
{
try
{
ManagedRepositoryContent repoContent = repoContentFactory.getManagedRepositoryContent( repo.getId() );
{
ManagedRepositoryContent repoContent = repoContentFactory.getManagedRepositoryContent(
repo.getId() );
allVersions.addAll( repoContent.getVersions( reference ) );
}
catch( RepositoryNotFoundException e )
catch ( RepositoryNotFoundException e )
{
// swallow
}
catch( RepositoryException e )
catch ( RepositoryException e )
{
// swallow
}
@ -141,7 +142,7 @@ public class CleanupReleasedSnapshotsRepositoryPurge
List<String> snapshotVersions = new ArrayList<String>();
for ( String version : allVersions )
{
{
if ( VersionUtil.isSnapshot( version ) )
{
snapshotVersions.add( version );
@ -155,36 +156,36 @@ public class CleanupReleasedSnapshotsRepositoryPurge
Collections.sort( allVersions, VersionComparator.getInstance() );
Collections.sort( releasedVersions, VersionComparator.getInstance() );
Collections.sort( snapshotVersions, VersionComparator.getInstance() );
// Now clean out any version that is earlier than the highest released version.
boolean needsMetadataUpdate = false;
VersionedReference versionRef = new VersionedReference();
versionRef.setGroupId( artifactRef.getGroupId() );
versionRef.setArtifactId( artifactRef.getArtifactId() );
ArchivaArtifact artifact =
new ArchivaArtifact( artifactRef.getGroupId(), artifactRef.getArtifactId(), artifactRef.getVersion(),
artifactRef.getClassifier(), artifactRef.getType(), repository.getId() );
ArchivaArtifact artifact = new ArchivaArtifact( artifactRef.getGroupId(), artifactRef.getArtifactId(),
artifactRef.getVersion(), artifactRef.getClassifier(),
artifactRef.getType(), repository.getId() );
for ( String version : snapshotVersions )
{
if( releasedVersions.contains( VersionUtil.getReleaseVersion( version ) ) )
{
{
if ( releasedVersions.contains( VersionUtil.getReleaseVersion( version ) ) )
{
versionRef.setVersion( version );
repository.deleteVersion( versionRef );
// TODO: looks incomplete, might not delete related metadata?
// FIXME: looks incomplete, might not delete related metadata?
for ( RepositoryListener listener : listeners )
{
listener.deleteArtifact( repository.getId(), artifact.getGroupId(), artifact.getArtifactId(),
artifact.getVersion(), artifactFile.getName() );
}
needsMetadataUpdate = true;
}
}
}
if ( needsMetadataUpdate )
{
updateMetadata( artifactRef );

View File

@ -86,7 +86,8 @@ public class ArchivaMetadataCreationConsumer
private MetadataRepository metadataRepository;
/**
* FIXME: this needs to be configurable based on storage type
* FIXME: this needs to be configurable based on storage type - and could also be instantiated per repo. Change to a
* factory.
*
* @plexus.requirement role-hint="maven2"
*/
@ -148,7 +149,7 @@ public class ArchivaMetadataCreationConsumer
project.setId( artifact.getProject() );
String projectVersion = VersionUtil.getBaseVersion( artifact.getVersion() );
// TODO: maybe not too efficient since it may have already been read and stored for this artifact
// FIXME: maybe not too efficient since it may have already been read and stored for this artifact
ProjectVersionMetadata versionMetadata = null;
try
{
@ -172,7 +173,7 @@ public class ArchivaMetadataCreationConsumer
try
{
// TODO: transaction
// FIXME: transaction
// read the metadata and update it if it is newer or doesn't exist
artifact.setWhenGathered( whenGathered );
metadataRepository.updateArtifact( repoId, project.getNamespace(), project.getId(), projectVersion,

View File

@ -28,15 +28,14 @@ import org.slf4j.LoggerFactory;
/**
* Default implementation of a scheduling component for archiva.
*
* @todo FIXME - consider just folding in, not really scheduled
*
* @todo TODO - consider just folding in, not really scheduled
* @plexus.component role="org.apache.archiva.scheduler.ArchivaTaskScheduler" role-hint="indexing"
*/
public class IndexingArchivaTaskScheduler
implements ArchivaTaskScheduler<ArtifactIndexingTask>
{
private Logger log = LoggerFactory.getLogger( IndexingArchivaTaskScheduler.class );
/**
* @plexus.requirement role-hint="indexing"
*/

View File

@ -148,7 +148,7 @@ public class ArchivaRepositoryScanningTaskExecutorTest
RepositoryStatistics newStats = repositoryStatisticsManager.getLastStatistics( TEST_REPO_ID );
assertEquals( 0, newStats.getNewFileCount() );
assertEquals( 31, newStats.getTotalFileCount() );
// TODO: can't test these as they weren't stored in the database, move to tests for RepositoryStatisticsManager implementation
// FIXME: can't test these as they weren't stored in the database, move to tests for RepositoryStatisticsManager implementation
// assertEquals( 8, newStats.getTotalArtifactCount() );
// assertEquals( 3, newStats.getTotalGroupCount() );
// assertEquals( 5, newStats.getTotalProjectCount() );
@ -179,7 +179,7 @@ public class ArchivaRepositoryScanningTaskExecutorTest
RepositoryStatistics updatedStats = repositoryStatisticsManager.getLastStatistics( TEST_REPO_ID );
assertEquals( 2, updatedStats.getNewFileCount() );
assertEquals( 33, updatedStats.getTotalFileCount() );
// TODO: can't test these as they weren't stored in the database, move to tests for RepositoryStatisticsManager implementation
// FIXME: can't test these as they weren't stored in the database, move to tests for RepositoryStatisticsManager implementation
// assertEquals( 8, newStats.getTotalArtifactCount() );
// assertEquals( 3, newStats.getTotalGroupCount() );
// assertEquals( 5, newStats.getTotalProjectCount() );
@ -223,7 +223,7 @@ public class ArchivaRepositoryScanningTaskExecutorTest
RepositoryStatistics newStats = repositoryStatisticsManager.getLastStatistics( TEST_REPO_ID );
assertEquals( 2, newStats.getNewFileCount() );
assertEquals( 33, newStats.getTotalFileCount() );
// TODO: can't test these as they weren't stored in the database, move to tests for RepositoryStatisticsManager implementation
// FIXME: can't test these as they weren't stored in the database, move to tests for RepositoryStatisticsManager implementation
// assertEquals( 8, newStats.getTotalArtifactCount() );
// assertEquals( 3, newStats.getTotalGroupCount() );
// assertEquals( 5, newStats.getTotalProjectCount() );
@ -267,7 +267,7 @@ public class ArchivaRepositoryScanningTaskExecutorTest
RepositoryStatistics newStats = repositoryStatisticsManager.getLastStatistics( TEST_REPO_ID );
assertEquals( 2, newStats.getNewFileCount() );
assertEquals( 33, newStats.getTotalFileCount() );
// TODO: can't test these as they weren't stored in the database, move to tests for RepositoryStatisticsManager implementation
// FIXME: can't test these as they weren't stored in the database, move to tests for RepositoryStatisticsManager implementation
// assertEquals( 8, newStats.getTotalArtifactCount() );
// assertEquals( 3, newStats.getTotalGroupCount() );
// assertEquals( 5, newStats.getTotalProjectCount() );

View File

@ -23,7 +23,7 @@ import java.util.Collections;
import java.util.List;
/**
* UserRepositories stub used for testing.
* UserRepositories stub used for testing.
*
* @version $Id$
*/
@ -35,37 +35,33 @@ public class UserRepositoriesStub
public void createMissingRepositoryRoles( String repoId )
throws ArchivaSecurityException
{
// TODO Auto-generated method stub
}
public List<String> getObservableRepositoryIds( String principal )
throws PrincipalNotFoundException, AccessDeniedException, ArchivaSecurityException
throws ArchivaSecurityException
{
return repoIds;
}
public void setObservableRepositoryIds( List<String> repoIds )
{
this.repoIds = repoIds;
this.repoIds = repoIds;
}
public boolean isAuthorizedToUploadArtifacts( String principal, String repoId )
throws PrincipalNotFoundException, ArchivaSecurityException
throws ArchivaSecurityException
{
// TODO Auto-generated method stub
return false;
}
public boolean isAuthorizedToDeleteArtifacts( String principal, String repoId )
{
return false;
}
public List<String> getManagableRepositoryIds( String principal )
throws PrincipalNotFoundException, AccessDeniedException, ArchivaSecurityException
throws ArchivaSecurityException
{
// TODO Auto-generated method stub
return null;
}

View File

@ -19,11 +19,6 @@ package org.apache.maven.archiva.web.rss;
* under the License.
*/
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.codehaus.plexus.redback.authentication.AuthenticationDataSource;
import org.codehaus.plexus.redback.authentication.AuthenticationException;
import org.codehaus.plexus.redback.authentication.AuthenticationResult;
@ -40,8 +35,13 @@ import org.codehaus.plexus.redback.users.UserManager;
import org.codehaus.plexus.redback.users.UserNotFoundException;
import org.codehaus.plexus.redback.users.jdo.JdoUser;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* SecuritySystem stub used for testing.
* SecuritySystem stub used for testing.
*
* @version $Id$
*/
@ -94,58 +94,50 @@ public class SecuritySystemStub
public AuthorizationResult authorize( SecuritySession arg0, Object arg1, Object arg2 )
throws AuthorizationException
{
AuthorizationResult result = new AuthorizationResult( true, arg1, null);
AuthorizationResult result = new AuthorizationResult( true, arg1, null );
return result;
}
public String getAuthenticatorId()
{
// TODO Auto-generated method stub
return null;
}
public String getAuthorizerId()
{
// TODO Auto-generated method stub
return null;
}
public KeyManager getKeyManager()
{
// TODO Auto-generated method stub
return null;
}
public UserSecurityPolicy getPolicy()
{
// TODO Auto-generated method stub
return null;
}
public String getUserManagementId()
{
// TODO Auto-generated method stub
return null;
}
public UserManager getUserManager()
{
// TODO Auto-generated method stub
return null;
}
public boolean isAuthenticated( AuthenticationDataSource arg0 )
throws AuthenticationException, UserNotFoundException, AccountLockedException
{
// TODO Auto-generated method stub
return false;
}
public boolean isAuthorized( SecuritySession arg0, Object arg1 )
throws AuthorizationException
{
// TODO Auto-generated method stub
return false;
}

View File

@ -44,7 +44,10 @@ public class DefaultMetadataResolver
private MetadataRepository metadataRepository;
/**
* FIXME: this needs to be configurable based on storage type, and availability of proxy module
* FIXME: this needs to be configurable based on storage type - and could also be instantiated per repo. Change to a
* factory.
*
* TODO: Also need to accommodate availability of proxy module
* ... could be a different type since we need methods to modify the storage metadata, which would also allow more
* appropriate methods to pass in the already determined repository configuration, for example, instead of the ID
*

View File

@ -27,6 +27,7 @@ import org.apache.archiva.metadata.repository.filter.Filter;
import java.util.Collection;
// FIXME: we should drop the repoId parameters and attach this to an instance of a repository storage
public interface RepositoryStorage
{
ProjectMetadata readProjectMetadata( String repoId, String namespace, String projectId )
@ -47,6 +48,6 @@ public interface RepositoryStorage
Collection<ArtifactMetadata> readArtifactsMetadata( String repoId, String namespace, String projectId,
String projectVersion, Filter<String> filter );
// TODO: reconsider this API, do we want to expose storage format in the form of a path?
// FIXME: reconsider this API, do we want to expose storage format in the form of a path?
ArtifactMetadata readArtifactMetadataFromPath( String repoId, String path );
}

View File

@ -19,18 +19,17 @@ package org.apache.archiva.metadata.repository.storage.maven2;
* under the License.
*/
import java.io.File;
import org.apache.commons.lang.math.NumberUtils;
import org.apache.maven.archiva.xml.XMLException;
import org.apache.maven.archiva.xml.XMLReader;
import org.dom4j.Element;
import java.io.File;
/**
* RepositoryMetadataReader - read maven-metadata.xml files.
*
* TODO: we should improve on this, ideally using the Maven standard libraries (which are unfortunately baked into
* maven-core now)
* TODO: we should improve on this, ideally using the Maven standard library
*/
public final class MavenRepositoryMetadataReader
{
@ -44,6 +43,7 @@ public final class MavenRepositoryMetadataReader
* @param metadataFile the maven-metadata.xml file to read.
* @return the archiva repository metadata object that represents the provided file contents.
* @throws org.apache.maven.archiva.xml.XMLException
*
*/
public static MavenRepositoryMetadata read( File metadataFile )
throws XMLException

View File

@ -18,14 +18,14 @@
~ under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>plugins</artifactId>
<groupId>org.apache.archiva</groupId>
<version>1.4-SNAPSHOT</version>
</parent>
<!-- TODO: Rename to metadata-store-file -->
<!-- FIXME: Rename to metadata-store-file -->
<artifactId>metadata-repository-file</artifactId>
<name>File System Backed Metadata Repository</name>
<dependencies>

View File

@ -50,7 +50,7 @@
<artifactId>plexus-spring</artifactId>
<scope>test</scope>
</dependency>
<!-- TODO: dependency management -->
<!-- FIXME: dependency management -->
<dependency>
<groupId>javax.jcr</groupId>
<artifactId>jcr</artifactId>

View File

@ -102,11 +102,11 @@ public class JcrMetadataRepository
public void login()
{
// TODO: need to close this at the end - do we need to add it in the API?
// FIXME: need to close this at the end - do we need to add it in the API?
try
{
// TODO: shouldn't do this in constructor since it's a singleton
// FIXME: shouldn't do this in constructor since it's a singleton
session = repository.login( new SimpleCredentials( "username", "password".toCharArray() ) );
Workspace workspace = session.getWorkspace();
@ -118,12 +118,12 @@ public class JcrMetadataRepository
}
catch ( LoginException e )
{
// TODO
// FIXME
throw new RuntimeException( e );
}
catch ( RepositoryException e )
{
// TODO
// FIXME
throw new RuntimeException( e );
}
}
@ -199,7 +199,7 @@ public class JcrMetadataRepository
n.setProperty( entry.getKey(), entry.getValue() );
}
}
// TODO: need some context around this so it can be done only when needed
// FIXME: need some context around this so it can be done only when needed
session.save();
}
catch ( RepositoryException e )
@ -224,7 +224,7 @@ public class JcrMetadataRepository
versionNode.setProperty( "url", versionMetadata.getUrl() );
versionNode.setProperty( "incomplete", versionMetadata.isIncomplete() );
// TODO: decide how to treat these in the content repo
// FIXME: decide how to treat these in the content repo
if ( versionMetadata.getScm() != null )
{
versionNode.setProperty( "scm.connection", versionMetadata.getScm().getConnection() );
@ -703,7 +703,7 @@ public class JcrMetadataRepository
versionMetadata.setIncomplete( node.hasProperty( "incomplete" ) && node.getProperty(
"incomplete" ).getBoolean() );
// TODO: decide how to treat these in the content repo
// FIXME: decide how to treat these in the content repo
String scmConnection = getPropertyString( node, "scm.connection" );
String scmDeveloperConnection = getPropertyString( node, "scm.developerConnection" );
String scmUrl = getPropertyString( node, "scm.url" );
@ -1001,12 +1001,12 @@ public class JcrMetadataRepository
{
try
{
// TODO: this shouldn't be here! Repository may need a context
// FIXME: this shouldn't be here! Repository may need a context
session.save();
}
catch ( RepositoryException e )
{
// TODO
// FIXME
throw new RuntimeException( e );
}
session.logout();
@ -1016,9 +1016,8 @@ public class JcrMetadataRepository
{
this.metadataFacetFactories = metadataFacetFactories;
// TODO: check if actually called by normal injection
// TODO: consider using namespaces for facets instead of the current approach:
// (if used, check if actually called by normal injection)
// for ( String facetId : metadataFacetFactories.keySet() )
// {
// session.getWorkspace().getNamespaceRegistry().registerNamespace( facetId, facetId );

View File

@ -205,9 +205,9 @@ public class DuplicateArtifactsConsumer
problem.setProject( originalArtifact.getProject() );
problem.setVersion( originalArtifact.getVersion() );
problem.setId( id );
// TODO: need to get the right storage resolver for the repository the dupe artifact is in, it might be
// FIXME: need to get the right storage resolver for the repository the dupe artifact is in, it might be
// a different type
// TODO: we need the project version here, not the artifact version
// FIXME: we need the project version here, not the artifact version
problem.setMessage( "Duplicate Artifact Detected: " + path + " <--> " + pathTranslator.toPath(
dupArtifact.getNamespace(), dupArtifact.getProject(), dupArtifact.getVersion(),
dupArtifact.getId() ) );