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 )


Reply via email to