Author: jdumay
Date: Thu Feb 26 01:57:39 2009
New Revision: 747984
URL: http://svn.apache.org/viewvc?rev=747984&view=rev
Log:
RepositoryGroup metadata merge and checksum now works
Modified:
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository/src/main/java/org/apache/archiva/repository/GroupRepositoryManager.java
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-web/archiva-repository-servlet/src/main/java/org/apache/archiva/web/servlet/RepositoryServlet.java
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-web/archiva-repository-servlet/src/test/java/org/apache/archiva/web/servlet/RepositoryServletRepositoryGroupTest.java
Modified:
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository/src/main/java/org/apache/archiva/repository/GroupRepositoryManager.java
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository/src/main/java/org/apache/archiva/repository/GroupRepositoryManager.java?rev=747984&r1=747983&r2=747984&view=diff
==============================================================================
---
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository/src/main/java/org/apache/archiva/repository/GroupRepositoryManager.java
(original)
+++
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository/src/main/java/org/apache/archiva/repository/GroupRepositoryManager.java
Thu Feb 26 01:57:39 2009
@@ -96,6 +96,16 @@
return null;
}
+ private MutableResourceContext
getMetadataLogicalPathWithoutChecksum(ResourceContext resourceContext)
+ {
+ MutableResourceContext context = new
MutableResourceContext(resourceContext);
+ if (context.getLogicalPath().endsWith(".md5") ||
context.getLogicalPath().endsWith(".sha1"))
+ {
+ context.setLogicalPath(context.getLogicalPath().substring(0,
context.getLogicalPath().lastIndexOf('.')));
+ }
+ return context;
+ }
+
public boolean read(ResourceContext context, OutputStream os)
{
final RepositoryGroupConfiguration groupConfiguration =
getGroupConfiguration(context.getRepositoryId());
@@ -105,7 +115,7 @@
for (final String repositoryId :
groupConfiguration.getRepositories() )
{
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
- final MutableResourceContext resourceContext = new
MutableResourceContext(context);
+ final MutableResourceContext resourceContext =
getMetadataLogicalPathWithoutChecksum(context);
resourceContext.setRepositoryId(repositoryId);
if (systemRepositoryManager.read(resourceContext, baos))
@@ -129,6 +139,11 @@
}
}
+ if (mainMetadata == null)
+ {
+ throw new RepositoryManagerException("Could not merge
repository metadata for path " + context.getLogicalPath() + " in repository
group " + context.getRepositoryId());
+ }
+
try
{
final OutputStreamWriter writer = new OutputStreamWriter(os);
@@ -175,7 +190,7 @@
final LinkedHashMap<String, Status> statusMap = new
LinkedHashMap<String, Status>();
for (final String repositoryId : groupConfiguration.getRepositories())
{
- final MutableResourceContext resourceContext = new
MutableResourceContext(context);
+ final MutableResourceContext resourceContext =
getMetadataLogicalPathWithoutChecksum(context);
resourceContext.setRepositoryId(repositoryId);
ResourceContext rc =
proxyRepositoryManager.handles(resourceContext);
@@ -207,6 +222,12 @@
{
for (final Status status : repositoryManager.stat(resourceContext))
{
+ //Metadata requests do not have determinable response lengths
+ if (isMetadataRequest(resourceContext) &&
isProjectReference(resourceContext))
+ {
+ status.setContentLength(-1);
+ }
+
statusMap.put(status.getName(), status);
}
}
Modified:
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-web/archiva-repository-servlet/src/main/java/org/apache/archiva/web/servlet/RepositoryServlet.java
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-web/archiva-repository-servlet/src/main/java/org/apache/archiva/web/servlet/RepositoryServlet.java?rev=747984&r1=747983&r2=747984&view=diff
==============================================================================
---
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-web/archiva-repository-servlet/src/main/java/org/apache/archiva/web/servlet/RepositoryServlet.java
(original)
+++
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-web/archiva-repository-servlet/src/main/java/org/apache/archiva/web/servlet/RepositoryServlet.java
Thu Feb 26 01:57:39 2009
@@ -209,7 +209,11 @@
else
{
resp.setStatus(HttpServletResponse.SC_OK);
- resp.setContentLength((int)status.getContentLength());
+
+ if (status.getContentLength() >= 0)
+ {
+ resp.setContentLength((int)status.getContentLength());
+ }
resp.setContentType(status.getContentType());
resp.setDateHeader(LAST_MODIFIED, status.getLastModified());
Modified:
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-web/archiva-repository-servlet/src/test/java/org/apache/archiva/web/servlet/RepositoryServletRepositoryGroupTest.java
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-web/archiva-repository-servlet/src/test/java/org/apache/archiva/web/servlet/RepositoryServletRepositoryGroupTest.java?rev=747984&r1=747983&r2=747984&view=diff
==============================================================================
---
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-web/archiva-repository-servlet/src/test/java/org/apache/archiva/web/servlet/RepositoryServletRepositoryGroupTest.java
(original)
+++
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-web/archiva-repository-servlet/src/test/java/org/apache/archiva/web/servlet/RepositoryServletRepositoryGroupTest.java
Thu Feb 26 01:57:39 2009
@@ -260,15 +260,6 @@
assertTrue( "Versions list contains version 2.0",
metadata.getAvailableVersions().contains( "2.0" ) );
assertTrue( "Versions list contains version 2.5",
metadata.getAvailableVersions().contains( "2.5" ) );
- //check if the checksum files were generated
- File checksumFileSha1 = new File( repoRootFirst, resourceName +
".sha1" );
- checksumFileSha1.getParentFile().mkdirs();
- FileUtils.writeStringToFile( checksumFileSha1, "3290853214d3687134",
null );
-
- File checksumFileMd5 = new File( repoRootFirst, resourceName + ".md5"
);
- checksumFileMd5.getParentFile().mkdirs();
- FileUtils.writeStringToFile( checksumFileMd5,
"98745897234eda12836423", null );
-
// request the sha1 checksum of the metadata
request =
new GetMethodWebRequest( "http://machine.com/repository/" +
REPO_GROUP_WITH_VALID_REPOS + "/dummy/" +
@@ -276,7 +267,7 @@
response = sc.getResource( request );
assertResponseOK( response );
- assertEquals( "add113b0d7f8c6adb92a5015a7a3701081edf998
maven-metadata-group-with-valid-repos.xml", response.getText() );
+ assertEquals( "add113b0d7f8c6adb92a5015a7a3701081edf998",
response.getText() );
// request the md5 checksum of the metadata
request =
@@ -285,7 +276,7 @@
response = sc.getResource( request );
assertResponseOK( response );
- assertEquals( "5b85ea4aa5f52bb76760041a52f98de8
maven-metadata-group-with-valid-repos.xml", response.getText().trim() );
+ assertEquals( "5b85ea4aa5f52bb76760041a52f98de8",
response.getText().trim() );
}
protected void assertResponseMethodNotAllowed( WebResponse response )