Author: brett
Date: Thu Dec 24 04:02:11 2009
New Revision: 893691
URL: http://svn.apache.org/viewvc?rev=893691&view=rev
Log:
[MRM-1283] keep track of incomplete metadata so that it can self correct and
show a meaningful message to the user
Modified:
archiva/branches/MRM-1025/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/ArchivaMetadataCreationConsumer.java
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/showArtifact.jsp
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/site.css
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/ProjectVersionMetadata.java
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/DefaultMetadataResolver.java
archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/src/main/java/org/apache/archiva/metadata/repository/file/FileMetadataRepository.java
archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/src/test/java/org/apache/archiva/metadata/repository/file/FileMetadataRepositoryTest.java
Modified:
archiva/branches/MRM-1025/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/ArchivaMetadataCreationConsumer.java
URL:
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/ArchivaMetadataCreationConsumer.java?rev=893691&r1=893690&r2=893691&view=diff
==============================================================================
---
archiva/branches/MRM-1025/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/ArchivaMetadataCreationConsumer.java
(original)
+++
archiva/branches/MRM-1025/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/ArchivaMetadataCreationConsumer.java
Thu Dec 24 04:02:11 2009
@@ -166,8 +166,9 @@
ProjectVersionMetadata versionMetadata = null;
try
{
- versionMetadata = storageResolver.getProjectVersion(
repository.getId(), artifact.getGroupId(), artifact.getArtifactId(),
- projectVersion );
+ versionMetadata =
+ storageResolver.getProjectVersion( repository.getId(),
artifact.getGroupId(), artifact.getArtifactId(),
+ projectVersion );
}
catch ( MetadataResolutionException e )
{
@@ -180,6 +181,7 @@
log.warn( "Missing or invalid POM for artifact: " + path + ";
creating empty metadata" );
versionMetadata = new ProjectVersionMetadata();
versionMetadata.setId( projectVersion );
+ versionMetadata.setIncomplete( true );
createVersionMetadata = true;
}
Modified:
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java
URL:
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java?rev=893691&r1=893690&r2=893691&view=diff
==============================================================================
---
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java
(original)
+++
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java
Thu Dec 24 04:02:11 2009
@@ -121,7 +121,11 @@
}
catch ( MetadataResolutionException e )
{
- errorMsg = e.getMessage();
+ addIncompleteModelWarning();
+
+ // TODO: need a consistent way to construct this - same in
ArchivaMetadataCreationConsumer
+ versionMetadata = new ProjectVersionMetadata();
+ versionMetadata.setId( version );
}
if ( versionMetadata != null )
{
@@ -161,11 +165,22 @@
addActionError( errorMsg != null ? errorMsg : "Artifact not found"
);
return ERROR;
}
+
+ if ( versionMetadata.isIncomplete() )
+ {
+ addIncompleteModelWarning();
+ }
+
model = versionMetadata;
return SUCCESS;
}
+ private void addIncompleteModelWarning()
+ {
+ addActionMessage( "The model may be incomplete due to a previous error
in resolving information. Refer to the repository problem reports for more
information." );
+ }
+
/**
* Show the artifact information tab.
*/
Modified:
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/showArtifact.jsp
URL:
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/showArtifact.jsp?rev=893691&r1=893690&r2=893691&view=diff
==============================================================================
---
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/showArtifact.jsp
(original)
+++
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/showArtifact.jsp
Thu Dec 24 04:02:11 2009
@@ -225,6 +225,12 @@
<%@ include file="/WEB-INF/jsp/include/artifactInfo.jspf" %>
</c:otherwise>
</c:choose>
+
+ <s:if test="hasActionMessages()">
+ <div id="messages">
+ <s:actionmessage />
+ </div>
+ </s:if>
</div>
</div>
Modified:
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/site.css
URL:
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/site.css?rev=893691&r1=893690&r2=893691&view=diff
==============================================================================
---
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/site.css
(original)
+++
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/site.css
Thu Dec 24 04:02:11 2009
@@ -338,4 +338,15 @@
div.versions a.expand {
font-size: 7pt;
color: gray;
-}
\ No newline at end of file
+}
+
+#messages {
+ background-color: yellow;
+ border: 1px solid orange;
+ margin-top: 2em;
+}
+
+#messages ul {
+ list-style-image: url(../images/icon_warning_sml.gif)
+}
+
Modified:
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/ProjectVersionMetadata.java
URL:
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/ProjectVersionMetadata.java?rev=893691&r1=893690&r2=893691&view=diff
==============================================================================
---
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/ProjectVersionMetadata.java
(original)
+++
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/ProjectVersionMetadata.java
Thu Dec 24 04:02:11 2009
@@ -51,6 +51,8 @@
private List<Dependency> dependencies = new ArrayList<Dependency>();
+ private boolean incomplete;
+
public String getId()
{
return id;
@@ -205,4 +207,14 @@
{
this.dependencies.add( dependency );
}
+
+ public boolean isIncomplete()
+ {
+ return incomplete;
+ }
+
+ public void setIncomplete( boolean incomplete )
+ {
+ this.incomplete = incomplete;
+ }
}
Modified:
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/DefaultMetadataResolver.java
URL:
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/DefaultMetadataResolver.java?rev=893691&r1=893690&r2=893691&view=diff
==============================================================================
---
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/DefaultMetadataResolver.java
(original)
+++
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/DefaultMetadataResolver.java
Thu Dec 24 04:02:11 2009
@@ -68,7 +68,10 @@
metadataRepository.getProjectVersion( repoId, namespace,
projectId, projectVersion );
// TODO: do we want to detect changes as well by comparing timestamps?
isProjectVersionNewerThan(updated)
// in such cases we might also remove/update stale metadata,
including adjusting plugin-based facets
- if ( metadata == null )
+ // This would also be better than checking for completeness - we
can then refresh only when fixed (though
+ // sometimes this has an additional dependency - such as a
parent - requesting the user to force an update
+ // may then work here and be more efficient than always trying
again)
+ if ( metadata == null || metadata.isIncomplete() )
{
metadata = storageResolver.getProjectVersion( repoId, namespace,
projectId, projectVersion );
if ( metadata != null )
Modified:
archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/src/main/java/org/apache/archiva/metadata/repository/file/FileMetadataRepository.java
URL:
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/src/main/java/org/apache/archiva/metadata/repository/file/FileMetadataRepository.java?rev=893691&r1=893690&r2=893691&view=diff
==============================================================================
---
archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/src/main/java/org/apache/archiva/metadata/repository/file/FileMetadataRepository.java
(original)
+++
archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/src/main/java/org/apache/archiva/metadata/repository/file/FileMetadataRepository.java
Thu Dec 24 04:02:11 2009
@@ -131,6 +131,7 @@
setProperty( properties, "name", versionMetadata.getName() );
setProperty( properties, "description",
versionMetadata.getDescription() );
setProperty( properties, "url", versionMetadata.getUrl() );
+ setProperty( properties, "incomplete", String.valueOf(
versionMetadata.isIncomplete() ) );
if ( versionMetadata.getScm() != null )
{
setProperty( properties, "scm.connection",
versionMetadata.getScm().getConnection() );
@@ -653,6 +654,7 @@
versionMetadata.setName( properties.getProperty( "name" ) );
versionMetadata.setDescription( properties.getProperty(
"description" ) );
versionMetadata.setUrl( properties.getProperty( "url" ) );
+ versionMetadata.setIncomplete( Boolean.valueOf(
properties.getProperty( "incomplete", "false" ) ) );
String scmConnection = properties.getProperty( "scm.connection" );
String scmDeveloperConnection = properties.getProperty(
"scm.developerConnection" );
Modified:
archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/src/test/java/org/apache/archiva/metadata/repository/file/FileMetadataRepositoryTest.java
URL:
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/src/test/java/org/apache/archiva/metadata/repository/file/FileMetadataRepositoryTest.java?rev=893691&r1=893690&r2=893691&view=diff
==============================================================================
---
archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/src/test/java/org/apache/archiva/metadata/repository/file/FileMetadataRepositoryTest.java
(original)
+++
archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/src/test/java/org/apache/archiva/metadata/repository/file/FileMetadataRepositoryTest.java
Thu Dec 24 04:02:11 2009
@@ -39,6 +39,9 @@
import org.apache.commons.io.FileUtils;
import org.codehaus.plexus.spring.PlexusInSpringTestCase;
+/**
+ * @todo should this be a generic MetadataRepository implementation test?
+ */
public class FileMetadataRepositoryTest
extends PlexusInSpringTestCase
{
@@ -113,6 +116,17 @@
repository.updateProjectVersion( TEST_REPO_ID, TEST_NAMESPACE,
TEST_PROJECT, metadata );
}
+ public void testUpdateProjectVersionMetadataIncomplete()
+ {
+ ProjectVersionMetadata metadata = new ProjectVersionMetadata();
+ metadata.setId( TEST_PROJECT_VERSION );
+ metadata.setIncomplete( true );
+ repository.updateProjectVersion( TEST_REPO_ID, TEST_NAMESPACE,
TEST_PROJECT, metadata );
+
+ metadata = repository.getProjectVersion( TEST_REPO_ID, TEST_NAMESPACE,
TEST_PROJECT, TEST_PROJECT_VERSION );
+ assertEquals( true, metadata.isIncomplete() );
+ }
+
public void testUpdateProjectVersionMetadataWithExistingFacets()
{
ProjectVersionMetadata metadata = new ProjectVersionMetadata();