Author: jdumay
Date: Wed Feb 25 05:59:22 2009
New Revision: 747671
URL: http://svn.apache.org/viewvc?rev=747671&view=rev
Log:
RepositoryGroups almost working
Modified:
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository/src/main/java/org/apache/archiva/repository/DefaultRepositoryManager.java
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository/src/main/java/org/apache/archiva/repository/GroupRepositoryManager.java
Modified:
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository/src/main/java/org/apache/archiva/repository/DefaultRepositoryManager.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/DefaultRepositoryManager.java?rev=747671&r1=747670&r2=747671&view=diff
==============================================================================
---
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository/src/main/java/org/apache/archiva/repository/DefaultRepositoryManager.java
(original)
+++
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository/src/main/java/org/apache/archiva/repository/DefaultRepositoryManager.java
Wed Feb 25 05:59:22 2009
@@ -69,7 +69,10 @@
FileInputStream fis = null;
try
{
- fis = new FileInputStream(new File(repository.getLocalPath(),
context.getLogicalPath()));
+ final File localResource = new File(repository.getLocalPath(),
context.getLogicalPath());
+ if (!localResource.exists())
+ return false;
+ fis = new FileInputStream(localResource);
IOUtils.copyLarge(fis, os);
return true;
}
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=747671&r1=747670&r2=747671&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
Wed Feb 25 05:59:22 2009
@@ -98,23 +98,9 @@
public boolean read(ResourceContext context, OutputStream os)
{
- if (!isMetadataRequest(context))
- {
- final RepositoryGroupConfiguration groupConfiguration =
getGroupConfiguration(context.getRepositoryId());
- for (final String repositoryId :
groupConfiguration.getRepositories() )
- {
- final MutableResourceContext resourceContext = new
MutableResourceContext(context);
- resourceContext.setRepositoryId(repositoryId);
- if (systemRepositoryManager.read(context, os))
- {
- return true;
- }
- }
- return false;
- }
- else if (isProjectReference(context.getLogicalPath()))
+ final RepositoryGroupConfiguration groupConfiguration =
getGroupConfiguration(context.getRepositoryId());
+ if (isMetadataRequest(context) && isProjectReference(context))
{
- final RepositoryGroupConfiguration groupConfiguration =
getGroupConfiguration(context.getRepositoryId());
ArchivaRepositoryMetadata mainMetadata = null;
for (final String repositoryId :
groupConfiguration.getRepositories() )
{
@@ -122,7 +108,7 @@
final MutableResourceContext resourceContext = new
MutableResourceContext(context);
resourceContext.setRepositoryId(repositoryId);
- if (systemRepositoryManager.read(context, baos))
+ if (systemRepositoryManager.read(resourceContext, baos))
{
try
{
@@ -159,6 +145,7 @@
RepositoryMetadataWriter.write(mainMetadata, writer);
}
writer.flush();
+ writer.close();
return true;
}
catch (IOException e)
@@ -170,16 +157,10 @@
throw new RepositoryManagerException("Could complete request
in repository " + context.getRepositoryId() + " for " +
context.getLogicalPath(), e);
}
}
- return false;
- }
-
- private byte[] getMetadataAsByteArray(ArchivaRepositoryMetadata metadata)
- throws RepositoryMetadataException
- {
- final ByteArrayOutputStream baos = new ByteArrayOutputStream();
- final OutputStreamWriter writer = new OutputStreamWriter(baos);
- RepositoryMetadataWriter.write(metadata, writer);
- return baos.toByteArray();
+ else
+ {
+ return readFromGroup(groupConfiguration, context, os);
+ }
}
public boolean write(ResourceContext context, InputStream is)
@@ -190,7 +171,7 @@
public List<Status> stat(ResourceContext context)
{
final RepositoryGroupConfiguration groupConfiguration =
getGroupConfiguration(context.getRepositoryId());
-
+
final LinkedHashMap<String, Status> statusMap = new
LinkedHashMap<String, Status>();
for (final String repositoryId : groupConfiguration.getRepositories())
{
@@ -230,6 +211,29 @@
}
}
+ private boolean readFromGroup(final RepositoryGroupConfiguration
groupConfiguration, ResourceContext context, OutputStream os)
+ {
+ for (final String repositoryId : groupConfiguration.getRepositories())
+ {
+ final MutableResourceContext resourceContext = new
MutableResourceContext(context);
+ resourceContext.setRepositoryId(repositoryId);
+ if (systemRepositoryManager.read(resourceContext, os))
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private byte[] getMetadataAsByteArray(ArchivaRepositoryMetadata metadata)
+ throws RepositoryMetadataException
+ {
+ final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ final OutputStreamWriter writer = new OutputStreamWriter(baos);
+ RepositoryMetadataWriter.write(metadata, writer);
+ return baos.toByteArray();
+ }
+
private RepositoryGroupConfiguration getGroupConfiguration(final String
repositoryId)
{
return
archivaConfiguration.getConfiguration().getRepositoryGroupsAsMap().get(
repositoryId );
@@ -237,14 +241,14 @@
private boolean isMetadataRequest(ResourceContext context)
{
- return repositoryRequest.isMetadata(context.getLogicalPath()) &&
context.getLogicalPath().endsWith( "metadata.xml.sha1" ) &&
context.getLogicalPath().endsWith( "metadata.xml.md5" );
+ return repositoryRequest.isMetadata(context.getLogicalPath()) ||
context.getLogicalPath().endsWith( "metadata.xml.sha1" ) ||
context.getLogicalPath().endsWith( "metadata.xml.md5" );
}
- private boolean isProjectReference( String requestedResource )
+ private boolean isProjectReference( ResourceContext context )
{
try
{
- metadataTools.toVersionedReference( requestedResource );
+ metadataTools.toVersionedReference( context.getLogicalPath() );
return false;
}
catch ( RepositoryMetadataException re )